UrBackup Plugin - Memoria di Sviluppo
Informazioni Plugin
- Nome: UrBackup
- Versione: 0.5.0
- Compatibilità: GLPI 11.0.6+, PHP 8.3+
- Namespace:
GlpiPlugin\Urbackup
Struttura File
Classi Principali
| Classe |
Descrizione |
Config |
Configurazione plugin, isItemtypeEnabled |
Profile |
Diritti utente, permessi |
Server |
CRUD server UrBackup |
ServerAsset |
Linking asset-server |
AssetTab |
Tab UrBackup su asset |
MassiveAction |
Azioni massive connect/disconnect |
UrbackupApiClient |
Client API UrBackup (PBKDF2 auth) |
LocationHelper |
Assegnazione server per location |
Capacity/UrBackupCapacity |
Capacity per Asset Definition (cleanup + tracking) |
Controller/ServerController |
Route Symfony per server |
Controller/AssetController |
Route Symfony per azioni asset |
Command/TestApiCommand |
CLI test API |
Interfacce GLPI
- Menu: Amministrazione → Server UrBackup
- Tab UrBackup su Computer (sempre) + tutti gli Asset Definition
- Config: Computer sempre attivo; Asset Definition gestiti via native Capacities UI
Architettura Capacities (v0.5.0)
Flusso
Separazione responsabilità
- Registrazione tab:
UrBackupCapacity::onClassBootstrap() — chiamata da bootDefinitions() per ogni definizione con capacità abilitata
- Visibilità tab:
Config::isItemtypeEnabled() — sempre true per Asset subclasses
- Pulizia:
UrBackupCapacity::onCapacityDisabled() — quando admin disabilita la capacità
- Config: Computer sempre attivo; Capacities gestite dalla UI nativa GLPI
Bug risolto: tab non registrato su Asset Definition nuovi
- Causa:
setup.php iterava getDefinitions() durante plugin_init_urbackup(), ma bootDefinitions() (che carica le definizioni dal DB) gira DOPO (priority 100 vs 110), quindi getDefinitions() tornava sempre array vuoto
- Fix: La registrazione del tab è stata spostata in
UrBackupCapacity::onClassBootstrap(), chiamata da bootstrapDefinition() durante bootDefinitions(), quando le definizioni sono già caricate e la classe dinamica è disponibile
- Rimosso: loop
foreach ($defs ...) e debug logging da setup.php
- Rimosso: debug logging da
AssetTab.php
Tabella glpi_plugin_urbackup_assettypes
- Colonna
is_default rimossa (non serve più con capacities)
- Tabella vestigiale — non più usata per la logica applicativa
- Migrazione:
plugin_urbackup_install_convert_assettypes_to_capacities() abilita capacità su tutte le definizioni
Comandi Utili
Checklist Pre-Consegna
Da Completare
- Test funzionalità lista server e form
- AJAX endpoint comunicazione API
Verifiche Post-Migrazione Capacity
API UrBackup - Riferimenti
Endpoint API
| Metodo |
Descrizione |
login |
Autenticazione username/password |
get_status |
Lista client con stato backup |
get_backups |
Lista backup per client |
start_backup |
Avvia backup (file/image) |
get_progress |
Monitora progresso backup |
get_clients |
Lista clienti |
get_groups |
Lista gruppi |
Problemi Noti
- JSON Parse Error: API restituisce HTML invece di JSON con credenziali errate
- Timeout: Verificare raggiungibilità server UrBackup
- SSL: Se
ignore_ssl attivo, accettare certificati self-signed
- AJAX 403: Funziona solo da browser con sessione GLPI attiva
Cronologia Modifiche
v0.4.2 — Refactoring server.form.php e tab laterali
- Side tabs a sinistra con nav-pills
- 4 tab: Server, Linked, Unlinked, Missing clients
- Missing clients con search/sort, location/AIP/group/state
- Navigazione server sopra i tab, indipendente
- Breadcrumb admin
- Fix namespace
getCachedName(), Gruppo da glpi_groups_items
- Permessi: READ per accesso form, Connect/API nascosti per READ
- i18n: 17 stringhe nuove (it, en, de)
- Bug fix: ServerAsset colonne, asset.form.php disconnectAsset(), strict_types in 11 file
v0.4.6 — Funzionalità API completate
- Salvataggio Internet Mode su server UrBackup
- Salvataggio Default Dirs
- Backup file (incremental/full)
- Backup immagine (incremental/full)
- Recupero version client da API
v0.4.5 — Tabella semplificata serverassets
- Rimossi campi: client_name, client_ip, client_version, is_active, last_file_backup, last_image_backup, last_sync, date_creation, date_mod, urbackup_client_id
- Solo: id, plugin_urbackup_servers_id, itemtype, items_id
v0.4.4 — Tab Linked/Unlinked Clients
- Dati da API UrBackup invece che da DB
- Nome tabella corretto:
glpi_plugin_urbackup_serverassets
- Campo:
plugin_urbackup_servers_id
v0.4.3 — Test API Connection automatico
- Rimosso pulsante manuale
- Rimosse righe last status/message/check
- Stati: verde OK, rosso fallito, giallo irraggiungibile
v0.5.0 — Capacity System per Asset Definition GLPI 11
- Rimpiazzata tabella custom
glpi_plugin_urbackup_assettypes con Capacities native
- Computer: legacy (sempre attivo, fuori capacities)
- Asset Definition: tab sempre registrato, capacità gestisce cleanup
isItemtypeEnabled() = true per tutti gli Asset
onClassBootstrap() rimosso (poi reintrodotto in v0.5.1)
- File:
src/Capacity/UrBackupCapacity.php
- Migration: auto-enable capacità su tutte le definizioni + drop is_default
v0.5.1 — Fix registrazione tab su Asset Definition nuovi
- Bug: Tab UrBackup non appariva su Asset Definition nuovi (es.
testnas)
- Causa:
getDefinitions() tornava 0 in plugin_init_urbackup() perché bootDefinitions() gira dopo (priority 100 vs 110)
- Fix: Spostata registrazione tab in
UrBackupCapacity::onClassBootstrap() — chiamata durante bootDefinitions() per ogni definizione con capacità abilitata
- Rimossi debug logging superflui da
setup.php e AssetTab.php