feat(irc): gate IRC on the BBS user store; remove ssh irc@; external clients only#15
Merged
Conversation
Rework the IRC access model to the user-level source of truth — the
bbs.profullstack.com user store — per the agreed design:
- Auth via the store, not OS users. New loopback endpoint /irc-auth (on the
/verify server) answers {member,premium} from the store via UserByName. Ergo's
auth-script now curls it instead of `getent passwd`; the OS-user (tilde.town)
reconcile in setup.sh is reverted. require-sasl on, registration off.
- Remove the in-BBS `ssh irc@` route: delete internal/irc (in-process client +
TUI), handleIRC/runIRC, the hub IRC menu entry, and the dispatch case. Members
connect with an external client (or web) at irc.profullstack.com:6697 / wss.
IRCNames kept only to reserve the "irc" name (IsIRCName removed).
- Keep external clients; keep the irc.profullstack.com hostname + cert work.
Premium channel creation: /irc-auth already returns each account's premium
status, but enforcement is NOT yet wired (the old irc@ /create was removed with
the route; Ergo can't gate creation per-account natively). operator-only-creation
stays off for now; server-side premium gating (a ChanServ-style bot) is a
documented follow-up. See docs/irc.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vu1nz Security Review0 finding(s) in PR #? No security issues found. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reworks the IRC access model to the agreed design: the bbs.profullstack.com user store is the single user-level source of truth. Supersedes #13.
Changes
/irc-auth?account=<name>(served on the/verifyserver) returns{member,premium}from the store (UserByName). Ergo'sauth-scriptcurls it instead ofgetent passwd. The OS-user (tilde.town)useraddreconcile insetup.shis reverted.require-saslon,registrationoff.ssh irc@removed. Deletedinternal/irc(in-process client + TUI),handleIRC/runIRC, the hub IRC menu entry, and the dispatch case. Members use an external client (or web) atirc.profullstack.com:6697/wss://…/irc.IRCNameskept only to reserve the name.irc.profullstack.comhostname + cert work retained.Premium channels — not yet enforced
/irc-authalready returns each account'spremium, but creation-gating isn't wired (the oldirc@ /createwent away with the route, and Ergo can't gate creation per-account natively).operator-only-creationstays off; the planned server-side mechanism (a ChanServ-style bot keyed onpremium) is a documented follow-up.Verified locally
bash -n+gofmtclean; renderedircd.yamlparses (auth-script.args=[<url>]).auth-scriptagainst a mock store endpoint: members→success, non-member→deny, bad-chars/no-account→deny, fail-closed on curl error.🤖 Generated with Claude Code