07-public-members-directory.md (2422B)
1 # Directório público de membros 2 3 [← Índice](README.md) 4 5 ## Script: `site/build_directory.py` 6 7 - **Entrada:** `--users-json` (default `/var/lib/runv/users.json`) — deve ser uma **lista** JSON de objectos. 8 - **Saída:** `-o` / `--output` (default no repo: `site/public/data/members.json`; em produção típico: `DocumentRoot/data/members.json`). 9 10 ## Schema público (campos escritos) 11 12 Cada elemento do array gerado contém: 13 14 | Campo | Origem / notas | 15 |-------|------------------| 16 | `username` | De `users.json` | 17 | `since` | `created_at` se for string; senão `""` | 18 | `path` | `"/~username/"` | 19 | `homepage_mtime` | Opcional; só com `--homes-root` (ex. `/home`) | 20 21 **Privacidade:** o script **não** copia email, fingerprint SSH, quotas nem outros campos internos (**evidência:** lógica em `build_directory.py`, função `main`). 22 23 ## Consumo no browser 24 25 - `site/public/assets/app.js`: `validMembers()` exige `username` e `path` (strings); `since` opcional para brilho visual. 26 27 ## Quando regenerar 28 29 1. **Hook em `create_runv_user.py`:** se `--landing-document-root` existir como directório e **não** usar `--no-refresh-landing-members`, o script invoca `site/genlanding.py --sync-public-only` — copia `site/public/` para o DocumentRoot, `chown www-data` e corre `build_directory.py` para `data/members.json` (equivalente a sincronizar landing + bolhas num único passo). 30 2. **`genlanding.py` completo** (primeira instalação / Apache): após `copy_landing`, por omissão também regenera `members.json` (a menos de `--no-refresh-members`). 31 3. **Cron (opcional):** adequado para alinhar `members.json` com `users.json` periodicamente, mesmo sem novos provisionamentos. 32 4. **Manual — só `members.json` (sem recopiar `public/`):** 33 34 ```bash 35 python3 REPO/site/build_directory.py \ 36 --users-json /var/lib/runv/users.json \ 37 -o /var/www/runv.club/html/data/members.json 38 ``` 39 40 5. **Manual — `public/` + `members.json` (sem reconfigurar Apache):** 41 42 ```bash 43 sudo python3 REPO/site/genlanding.py --sync-public-only \ 44 --document-root /var/www/runv.club/html \ 45 --members-users-json /var/lib/runv/users.json 46 ``` 47 48 ## Cron vs hooks (sem contradição) 49 50 - **Hooks** actualizam quando corres `create_runv_user` (sync-only) ou `genlanding` (completo ou sync-only). 51 - **Cron** com `build_directory.py` é **opcional** para alinhar só o JSON sem tocar no resto do DocumentRoot. 52 53 Próximo: [08-email.md](08-email.md).