|
12
|
12
|
|
|
13
|
13
|
## Rol
|
|
14
|
14
|
|
|
15
|
|
-`config/hosts.yaml` este registrul editabil și trebuie menținut în git. Aplicația îl expune read-only pentru servicii și, cu autentificare OTP, permite modificări controlate în working tree.
|
|
|
15
|
+`config/hosts.yaml` este registrul editabil și trebuie menținut în git. Aplicația este complet în spatele autentificării OTP pentru orice date de registru, exporturi sau modificări.
|
|
16
|
16
|
|
|
17
|
17
|
Git rămâne mecanismul de audit, istoric și rollback. Aplicația nu înlocuiește repo-ul și nu devine o bază de date separată.
|
|
18
|
18
|
|
|
19
|
|
-Endpoint-uri publice read-only:
|
|
|
19
|
+Endpoint-uri publice:
|
|
20
|
20
|
|
|
21
|
|
-- `/download/hosts.yaml` — registrul complet
|
|
22
|
|
-- `/download/local-hosts.tsv` — manifest DNS local derivat
|
|
23
|
|
-- `/download/monitoring.json` — listă pentru monitorizare
|
|
24
|
|
-- `/api/hosts` — JSON cu hosturi și probleme detectate
|
|
|
21
|
+- `/` — pagina de login/aplicație, fără date de host până la autentificare
|
|
|
22
|
+- `/api/session` — status boolean al sesiunii
|
|
|
23
|
+- `/api/login`
|
|
|
24
|
+- `/api/logout`
|
|
|
25
|
+- `/healthz` — healthcheck minimal, fără path-uri sau date interne
|
|
25
|
26
|
|
|
26
|
27
|
Endpoint-uri cu OTP:
|
|
27
|
28
|
|
|
|
29
|
+- `/api/hosts`
|
|
|
30
|
+- `/download/hosts.yaml`
|
|
|
31
|
+- `/download/local-hosts.tsv`
|
|
|
32
|
+- `/download/monitoring.json`
|
|
28
|
33
|
- `POST /api/hosts/upsert`
|
|
29
|
34
|
- `POST /api/hosts/delete`
|
|
30
|
35
|
- `POST /api/render/local-hosts-tsv`
|
|
66
|
71
|
|
|
67
|
72
|
## OTP
|
|
68
|
73
|
|
|
69
|
|
-`HOST_MANAGER_TOTP_SECRET` trebuie să fie un secret Base32 compatibil TOTP. Fără această variabilă, download-urile read-only funcționează, dar login-ul și scrierile nu.
|
|
|
74
|
+`HOST_MANAGER_TOTP_SECRET` trebuie să fie un secret Base32 compatibil TOTP. Fără această variabilă, healthcheck-ul și pagina de login funcționează, dar login-ul, API-ul, download-urile și scrierile nu.
|
|
70
|
75
|
|
|
71
|
76
|
Secretul nu se comite în repo. Dacă avem nevoie de integrare cu un manager de secrete sau systemd environment file, se definește separat pe host.
|
|
72
|
77
|
|
|
73
|
78
|
## Flux
|
|
74
|
79
|
|
|
75
|
80
|
1. Hosturile se editează în aplicație sau direct în `config/hosts.yaml`.
|
|
76
|
|
-2. Serviciile externe descarcă `/download/hosts.yaml`, `/download/local-hosts.tsv` sau `/download/monitoring.json`.
|
|
|
81
|
+2. Operatorii autentificați pot descărca `/download/hosts.yaml`, `/download/local-hosts.tsv` sau `/download/monitoring.json`.
|
|
77
|
82
|
3. Pentru DNS local, butonul `Write local-hosts.tsv` regenerează `config/local-hosts.tsv`.
|
|
78
|
83
|
4. Sincronizarea efectivă către is-vpn-gw și as01 rămâne:
|
|
79
|
84
|
|
|
83
|
88
|
|
|
84
|
89
|
## Git și managementul cheilor
|
|
85
|
90
|
|
|
86
|
|
-Varianta preferată pentru servicii automate este să citească `config/hosts.yaml` din git, nu să depindă direct de sesiunea web. Serviciile care sincronizează DNS, monitorizare sau inventare primesc chei dedicate, cu acces minim.
|
|
|
91
|
+Varianta obligatorie pentru servicii automate este să citească `config/hosts.yaml` din git, nu să depindă de HTTP neautentificat. Serviciile care sincronizează DNS, monitorizare sau inventare primesc chei dedicate, cu acces minim.
|
|
87
|
92
|
|
|
88
|
93
|
Reguli:
|
|
89
|
94
|
|
|
106
|
111
|
sync_local_hosts.sh aplică DNS după review/verificare
|
|
107
|
112
|
|
|
108
|
113
|
servicii consumatoare
|
|
109
|
|
- git pull read-only citesc hosts.yaml/monitoring.json/local-hosts.tsv
|
|
|
114
|
+ git pull read-only citesc hosts.yaml/local-hosts.tsv
|
|
110
|
115
|
```
|
|
111
|
116
|
|
|
112
|
117
|
Pentru etapa MVP, aplicația nu face commit/push automat. După o modificare, schimbarea rămâne vizibilă în working tree și se comite explicit după review. Automatizarea commit/push poate fi adăugată ulterior, dar numai cu cheie separată și reguli clare de semnare/audit.
|