feat(irc): irc.profullstack.com, OS-user (tilde.town) gate, premium channels#13
Merged
Conversation
The join@ output and hub previously pushed members to ssh into separate servers (ssh pod@, ssh irc@, ssh news@, ssh tor@). Members now reach everything from one `ssh <name>@bbs.profullstack.com` login: - hub: new SessionApp entries (Pod, IRC, News, Tor shell) run as terminal-takeover features via tea.Exec, then return to the menu. Gated by membership/email-verification/plan; shown locked otherwise. - main: build the session apps in teaHandler; extract runIRC/runNews so the irc@/news@ routes and the hub share one path. The old pod@/irc@/ news@/tor@ routes stay as aliases (handy for bots). - onboarding: rewrite the "You're in" and Founding-Member copy to present ONE login and stop advertising separate servers. - email: member mailboxes move to mail.profullstack.com (apex reserved for corporate mail); webmail shown at https://mail.profullstack.com. - username: harden the default handle to a safe /home/<name> token. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ium channels Hostname: serve the network as irc.profullstack.com (new IRC_DOMAIN var, default irc.<root-of-DOMAIN>). Caddy serves an irc.profullstack.com site so it gets a Let's Encrypt cert; ergo-refresh-certs copies that into Ergo for 6697. Needs an A record irc.profullstack.com -> the box (self-signed until it resolves). Members are OS users (tilde.town model): setup.sh reconciles a real OS account per member dir (root-side, on each deploy + the 15-min timer; nologin shell, so identity-only — no shell access). The IRC auth-script now gates on `getent passwd` with uid>=1000 instead of the member dir, so "OS user" == member. Premium channels: free members may /join; creating channels is a premium perk. The ssh irc@ client gains /create #name (premium-gated via ensurePremium): it joins the fresh channel and registers it with ChanServ as the member's founder. v1 gate is route-level (operator-only-creation left off); external-client creation hardening is a 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.
Three changes to the co-located IRC network.
A — hostname
irc.profullstack.comNew
IRC_DOMAINvar (defaultirc.<root-of-DOMAIN>); Ergoserver.name+ 6697 cert use it. Caddy serves anirc.profullstack.comsite for the LE cert;ergo-refresh-certscopies it into Ergo. Needs A recordirc.profullstack.com → box(self-signed until it resolves).B — members are OS users (tilde.town)
setup.sh §9a2reconciles a real OS account per member dir (root-side, every deploy + 15-min timer;nologin, identity-only — no shell access). IRCauth-scriptnow gates ongetent passwduid≥1000.C — premium members create channels
Free members
/join;ssh irc@'s new/create #name(premium-gated) creates+registers a channel with the member as founder. v1 gate is route-level; external-client hardening is a follow-up. See docs/irc.md.Notes
d4ada98(one-login hub) since5eb1e96builds on it; themain.gocanCreatewiring landed there.🤖 Generated with Claude Code