runv-server

server tooling for runv.club
Log | Files | Refs | README

commit 0a4f78bd4cac00040834c59e532ac3f0e4f36cf0
parent f1eb95d73819f3bdcbc8ef55e962d3129181f743
Author: Pablo Murad <pblmrd@gmail.com>
Date:   Wed, 13 May 2026 21:46:33 -0300

shadowbook

Diffstat:
Mdocs/05-tools-and-system-experience.md | 4++--
Mdocs/admin.md | 8++++----
Mpatches/patch_irc.py | 2+-
Mtools/tools.py | 4++--
4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/docs/05-tools-and-system-experience.md b/docs/05-tools-and-system-experience.md @@ -31,8 +31,8 @@ Flags úteis: `--force`, `--skip-apt`, `--reconcile-existing-users` (ver `--help - **Utilizador:** no servidor, use apenas o comando `chat` (wrapper em `/usr/local/bin/chat` após `tools/tools.py` ou `patches/patch_irc.py`). O cliente gráfico no terminal é `weechat` / `weechat-curses` (pacote `chat` no manifesto APT). - **Por omissão** (após `patches/patch_irc.py`): o WeeChat fica com um único servidor com autoconnect no arranque — nome interno **`runv`**, endereço **`irc.tilde.chat`**, porta **6697**, **TLS ligado**, autojoin só **`#runv`**. Outras redes que o utilizador adicionar manualmente **não** autoconectam por defeito (o patch desliga `autoconnect` nos outros servidores já existentes, sem apagar redes). -- **Provisionamento:** o patch corre com `weechat-headless -a -r '…' --stdout` (o `-a` evita auto-connect durante o batch). O launcher **`chat` não usa `-a`**. Novas contas Unix criadas com `scripts/admin/create_runv_user.py` invocam o patch automaticamente para esse utilizador. O `tools/tools.py` também aplica o backfill IRC ao final da execução. -- **Backfill / admin:** `sudo python3 patches/patch_irc.py --all-users` (ou `--user NOME`). Requer `weechat-headless` no sistema. +- **Provisionamento:** o patch corre com `weechat-headless -a -r '…' --stdout` (o `-a` evita auto-connect durante o batch). O launcher **`chat` não usa `-a`**. Novas contas Unix criadas com `scripts/admin/create_runv_user.py` invocam o patch automaticamente para esse utilizador. O `tools/tools.py --reconcile-existing-users` aplica o backfill IRC com `--force`. +- **Backfill / admin:** `sudo python3 patches/patch_irc.py --all-users --force` (ou `--user NOME --force`). Requer `weechat-headless` no sistema. ## Isolamento e permissões diff --git a/docs/admin.md b/docs/admin.md @@ -424,19 +424,19 @@ sudo sh REPO/email/scripts/send_test_mail.sh Aplicar/reaplicar a configuração IRC em todos os usuários: ```bash -sudo python3 REPO/patches/patch_irc.py --all-users +sudo python3 REPO/patches/patch_irc.py --all-users --force ``` Aplicar a um único usuário: ```bash -sudo python3 REPO/patches/patch_irc.py --user USER +sudo python3 REPO/patches/patch_irc.py --user USER --force ``` Simular: ```bash -sudo python3 REPO/patches/patch_irc.py --all-users --dry-run --verbose +sudo python3 REPO/patches/patch_irc.py --all-users --force --dry-run --verbose ``` Padrão atual: @@ -548,7 +548,7 @@ sudo python3 REPO/site/genlanding.py --sync-public-only \ ### Corrigir IRC de todos os usuários ```bash -sudo python3 REPO/patches/patch_irc.py --all-users +sudo python3 REPO/patches/patch_irc.py --all-users --force ``` ### Banir tecnicamente uma conta diff --git a/patches/patch_irc.py b/patches/patch_irc.py @@ -718,7 +718,7 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace: ) p.add_argument("--dry-run", action="store_true", help="só mostrar o plano") p.add_argument("--verbose", action="store_true", help="log detalhado") - p.add_argument("--force", action="store_true", help="reconfigurar mesmo se existir servidor divergente") + p.add_argument("--force", action="store_true", help="recriar o servidor runv mesmo se já parecer conforme") p.add_argument("--skip-launcher", action="store_true", help="não instalar /usr/local/bin/chat") p.add_argument("--skip-backfill", action="store_true", help="não aplicar config por utilizador") p.add_argument("--users-json", type=Path, default=DEFAULT_USERS_JSON, metavar="PATH") diff --git a/tools/tools.py b/tools/tools.py @@ -507,7 +507,7 @@ def apply_irc_patch( log.error("%s", msg) return - cmd = [sys.executable, str(PATCH_IRC_PATH), "--all-users"] + cmd = [sys.executable, str(PATCH_IRC_PATH), "--all-users", "--force"] if dry_run: log.info("[dry-run] %s", " ".join(cmd)) summary.copied.append(f"patch IRC (simulado): {' '.join(cmd)}") @@ -522,7 +522,7 @@ def apply_irc_patch( log.error("%s", msg) return - summary.copied.append("patch IRC aplicado a todos os utilizadores") + summary.copied.append("patch IRC aplicado a todos os utilizadores (--force)") if r.stdout.strip(): log.info("patch IRC: %s", r.stdout.strip().splitlines()[-1])