Skip to content

feat(irc): irc.profullstack.com, OS-user (tilde.town) gate, premium channels#13

Merged
ralyodio merged 2 commits into
mainfrom
feat/irc-profullstack-tilde
Jun 14, 2026
Merged

feat(irc): irc.profullstack.com, OS-user (tilde.town) gate, premium channels#13
ralyodio merged 2 commits into
mainfrom
feat/irc-profullstack-tilde

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Three changes to the co-located IRC network.

A — hostname irc.profullstack.com

New IRC_DOMAIN var (default irc.<root-of-DOMAIN>); Ergo server.name + 6697 cert use it. Caddy serves an irc.profullstack.com site for the LE cert; ergo-refresh-certs copies it into Ergo. Needs A record irc.profullstack.com → box (self-signed until it resolves).

B — members are OS users (tilde.town)

setup.sh §9a2 reconciles a real OS account per member dir (root-side, every deploy + 15-min timer; nologin, identity-only — no shell access). IRC auth-script now gates on getent passwd uid≥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

  • Verified locally: bash -n, gofmt, auth-script vs real OS users, rendered ircd.yaml parses. Go not built locally (sandbox lacks go1.26) — this PR's CI is the build check.
  • Branch also carries d4ada98 (one-login hub) since 5eb1e96 builds on it; the main.go canCreate wiring landed there.

🤖 Generated with Claude Code

ralyodio and others added 2 commits June 14, 2026 15:22
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>
@github-actions

Copy link
Copy Markdown

vu1nz Security Review

0 finding(s) in PR #?

No security issues found.

@ralyodio
ralyodio merged commit 5eb1e96 into main Jun 14, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant