feat: import existing smb.conf and /etc/exports on first boot
Adds auto-detection of pre-existing Samba shares and NFS exports when nasctl is installed on a host that already has these configs. New package internal/importer parses smb.conf (INI-style) and /etc/exports (line-based) and imports them into SQLite. Imported shares/exports are marked dirty so the user must review and apply manually before any file is overwritten. Backup: before the first Apply, each module backs up the original config to <path>.nasctl.bak.<timestamp> (one time only). New CLI flag --import-on-boot / NASCTL_IMPORT_ON_BOOT env var (default false, opt-in). New API endpoints: GET /api/import/status POST /api/import/samba POST /api/import/nfs New DB methods ReplaceSambaShares/ReplaceNFSExports (transactional replace-all), guarded by import.samba.done / import.nfs.done settings flags.
This commit is contained in:
@@ -46,6 +46,7 @@ Variables de entorno útiles:
|
||||
| `NASCTL_ALLOWED_ROOTS` | (vacío) | Directorios raíz permitidos para paths de shares/exports, separados por coma |
|
||||
| `NASCTL_ADMIN_USER` | `admin` | Usuario admin inicial (solo si no existe ninguno) |
|
||||
| `NASCTL_ADMIN_PASSWORD` | `admin` | Contraseña admin inicial (solo si no existe ninguno) |
|
||||
| `NASCTL_IMPORT_ON_BOOT` | `false` | `true` para importar `smb.conf` y `/etc/exports` existentes al primer arranque |
|
||||
|
||||
En desarrollo, `make run` usa `./.data/` y `NASCTL_EXEC_SYSTEM=false` (no toca el sistema real).
|
||||
|
||||
@@ -66,6 +67,9 @@ El resto de endpoints requieren sesión válida:
|
||||
- `GET/POST/PUT/DELETE /api/samba/shares` — CRUD de shares Samba
|
||||
- `GET/POST/PUT/DELETE /api/nfs/exports` — CRUD de exports NFS
|
||||
- `GET/POST/PUT/DELETE /api/users` — CRUD de usuarios del sistema
|
||||
- `GET /api/import/status` — estado del import (done, counts)
|
||||
- `POST /api/import/samba` — re-importa shares desde `smb.conf`
|
||||
- `POST /api/import/nfs` — re-importa exports desde `/etc/exports`
|
||||
|
||||
Todos los cambios marcan el módulo como dirty y NO se aplican al sistema hasta `POST /api/apply`.
|
||||
|
||||
@@ -76,6 +80,27 @@ Todos los cambios marcan el módulo como dirty y NO se aplican al sistema hasta
|
||||
3. El usuario pulsa "Aplicar cambios" (`POST /api/apply`).
|
||||
4. El motor regenera archivos de configuración desde templates y recarga servicios.
|
||||
|
||||
## Importar configuración existente
|
||||
|
||||
Si el host ya tiene `smb.conf` o `/etc/exports` configurados, nasctl puede importarlos al primer arranque:
|
||||
|
||||
```bash
|
||||
NASCTL_IMPORT_ON_BOOT=true ./nasctl
|
||||
```
|
||||
|
||||
El import:
|
||||
1. Detecta shares en `smb.conf` y exports en `/etc/exports`.
|
||||
2. Los importa a SQLite (marca el módulo como dirty).
|
||||
3. **No sobreescribe** los archivos automáticamente — el usuario revisa y pulsa Apply.
|
||||
4. Antes del primer Apply, hace backup de los archivos originales en `<path>.nasctl.bak.<timestamp>`.
|
||||
5. Los flags `import.samba.done`/`import.nfs.done` en la base de datos evitan re-importar en cada arranque.
|
||||
|
||||
Para re-escanear manualmente después de editar los archivos en disco:
|
||||
|
||||
- `POST /api/import/samba` — reimporta shares desde `smb.conf`
|
||||
- `POST /api/import/nfs` — reimporta exports desde `/etc/exports`
|
||||
- `GET /api/import/status` — estado del import
|
||||
|
||||
## Empaquetado
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user