From f849a069f8b2e8f008fdd13181d4c26e389bc429 Mon Sep 17 00:00:00 2001 From: test Date: Mon, 31 Aug 2026 12:19:24 +0200 Subject: [PATCH] fix client connet redirect to scheda on page - migrazione localization --- MEMORY.md | 6 ++++ README.md | 1 + front/server.form.php | 6 ++-- locales/de_DE.mo | Bin 14504 -> 14508 bytes locales/de_DE.po | 12 ++++---- locales/en_GB.mo | Bin 13539 -> 13545 bytes locales/en_GB.po | 12 ++++---- locales/it_IT.mo | Bin 14227 -> 14229 bytes locales/it_IT.po | 12 ++++---- src/Server.php | 68 +++++++----------------------------------- 10 files changed, 38 insertions(+), 79 deletions(-) diff --git a/MEMORY.md b/MEMORY.md index 927f318..37bea8f 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -2,6 +2,12 @@ ## Ultima modifica: 31/08/2026 +## 31/08/2026 — Rinominate le tab della scheda Server + grafica Missing (solo UI/testi) +- **Rinominazione tab** (`front/server.form.php:118,123,128`): "Linked clients"→**"Managed clients" / Clienti gestiti** (asset GLPI con agent installato e collegamento attivo); "Unlinked clients"→**"Linkable clients" / Clienti Collegabili** (asset con agent installato ma non collegato a un asset GLPI); "Missing clients"→**"Clients to manage" / Clienti da gestire** (asset GLPI nella sede del server SENZA agent installato — "Connect" crea il link ma va poi installato il client). Aggiornate le traduzioni it/de/en (`.po`+`.mo` ricompilati con msgfmt) e rimosse le vecchie stringhe "Linked/Unlinked/Missing clients" dal catalogo. +- **Grafica tab Missing** (`src/Server.php` `showMissingClientsTab`): rimossi il campo di ricerca `#missing-search`, gli header `class="sortable"`+`` (stile non definito in CSS), l'id `missing-table` e tutto il blocco JS ordinamento/filtro → la tabella ora usa lo stesso `` delle tab Linked/Unlinked. +- **Redirect "Connect"** (`front/server.form.php:31`): dopo il link_asset la pagina riapre sulla scheda "Clienti non collegati" (Unlinked/Clients to manage) aggiungendo `#tab-unlinked` al redirect (il JS già presente riattiva la tab dall'hash). +- Nessun bump versione (nessuna modifica DB, regola 6). Verifiche IA: `php -l` OK, msgfmt OK, git diff autorevisione OK. **Verifica UI utente OBBLIGATORIA**: controllare etichette traduczione, grafica Missing uniforme, redirect su scheda corretta. + ## 31/08/2026 — Audit statico: fix 7 bug (solo UI/codice, nessuna modifica DB) Audit statico (IA) + confronto contro sorgente C++ del backend UrBackup e core GLPI 11. Nessun bug di classe critico (crash/XSS/SQLi), ma diversi output errati corretti. 1. **Bug 1 — Livello log sempre vuoto** (`AssetTab.php:728`): l'API `livelog` restituisce `loglevel` (int 1=ERROR,2=WARNING,3=INFO,4=DEBUG), il codice leggeva `level`/`severity` (mai presenti). Aggiunto `formatLogLevel()` che mappa `loglevel`→stringa. diff --git a/README.md b/README.md index 46d2846..258dd3d 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ plugin_urbackup/ - Fixed the inverted IP lookup JOIN (`glpi_networknames` ↔ `glpi_ipaddresses`) so the IP column in Linked/Missing clients is correct - Made the missing/unlinked clients queries server-scoped (`plugin_urbackup_servers_id`) and the API data session cache key unique per asset (itemtype+id) - `server_test.ajax.php`: entity-aware `check()` authorization; added `public/js/urbackup.js` (registered via `ADD_JAVASCRIPT`) that sends the `X-Glpi-Csrf-Token` header on plugin AJAX POSTs; `dropdown_host.ajax.php` now requires READ right +- Renamed the server form client tabs to be clearer: "Linked clients" → "Managed clients", "Unlinked clients" → "Linkable clients", "Missing clients" → "Clients to manage"; removed the sort/search on the missing clients table to match the other tab layouts; updated it_IT/de_DE/en_GB translations and recompiled locales ### 0.7.2 - UrBackup on Computer is now configurable: new `enable_computer` setting on the plugin configuration page (previously always enabled, hardcoded) diff --git a/front/server.form.php b/front/server.form.php index ccc8df7..43654a1 100644 --- a/front/server.form.php +++ b/front/server.form.php @@ -115,17 +115,17 @@ if ($ID > 0) { diff --git a/locales/de_DE.mo b/locales/de_DE.mo index 30b89fbed6b8259a51ba2e76720a9c05e7336f21..e91829f67b186a19f3a081d6ba0e035b3793ee77 100644 GIT binary patch delta 3865 zcmY+`2~bs40LJkn2!gQ*2;|07kwpO|+_QX2qUKVTxnLMic@jz>f})mQ%{Id#dzri0 zVlIJc&!uA0aZ1ZZvt=xG%4T$?vdO8OvSBRi|Gjst=?vfdopaZ7&pG$%j_SthJ!!3+ zcE*@d3C2WVk#!~}(yqWZxEynEB_`oP?1`UXIJV%;sFO0G14d&3#^VIc#Zv5sK5UH# z5{+Xx*EF+17dmAR_!8UFZb5ahb$eraV-m8-6k4ZYN7{3-FRnse=Ln|bN7w~_M%_4u z-gm-0ya~rAImVPwDPlt$HluEM0@cIw7={;7Pjm^@u|F^wL->ip4yX%eptk4plY(PV z$CsiyT7|k!J!)juJ5+STMpOq5p?Z1>WAF;bVk@qu8?-|m*BRMma#80OB7bHIKRT`& zvv3LO0k)&gYeIG4kkvUsMNfJTHFw{lZWzIYYVK1|J$0du%SS!&K-(UHA++yA-C!IJ z!|B)ox1xr;86)uw@@Fpa)7>!te^Tkk1{X)`0+TQU%TPUSuVn&`EAB=e_o>}~+V1}r zb;IxM{y%U5?LTe1hR0Wj7ox7W4b|aBEav`ZAC;*X-#K_-1*XwnkEwVFU3eZfGJm5w zlEKn0#B9{m)gXgnHlc2C5Ou@Ds3$*$+{&CnJVGe4=_b zM6uyz)Cs#$J$wf>bRVN$qc4zYHD^&b{2lcG6PPdU_h1f|;bL5a`e4N|ym}pbpw`x1 zsI@lLp`um(Aoj-vw%vs4aWkqzCs92*48Z~D6jITgEJe-ni}rx`QFD3{^+Z3SMkIxmrZtd-Lvbi-zk^}eWcT|qg7$G_ zkj&@U2Ct$zdL4Unnu%sy)U(@=Z;zRROsAx?a3&h8~HOe{OHTK z1sCBi)OFKX5Sp@~*czvyI$DC!djDrpY0HLM)JQm}wXoLu8tOuOQ5QOa8i^l}*)T1r zDM+Pvn(G|va8$=9BM)n4q5iRJKz+zw)qd`84%i(>QBQsrb)jp>!ZmS>uZBDy`{HQS z6D+mcA46Sm1L_7%cK;FN66Qm@|2K@J-6l79y>{qmNHVBIVK#>2Ak=m@sv{$C1QwwS zx1u_F1a;m;)ExhU{Fy{1b|e;{-ursw&ursI9X*Yjx*vKo{u=U*Oz1Go#}J&4S}Y4u z9a@HQ_#|pku0uEO$H1aOJ=t~C2t?!sN2n9V(C&s2m}eb~fe%(5GVGWu$?4$x7lPDjJDhME@ovkW9kc7AVEO>Zk;# zn)-gCF*r!J5|tXFaZ^bq&yY&8ji`8nm|CmYO-7K7YEbr&Cj+(MKN_koAU=|-hQ@gg zzxs@6mE1<|BE5);mZZv5Qc9}Su*Hq6dNY=cCbP+_2Pu5o8 zzXpA9F?oeNK%OW1wsj;~WHPx?Hc^Qr`D7V+i3}lwiAsO+6uFjBSs^*KGY|EYzUgYc~kq z_WzZ2w1(R)`)~~zW!q2S+qV8DK4R+?7)sicwRYP)YYC1g*|r^+h;cOPNCfFZrjv4# zNamAa{xz}tLgOmRy_K~!uG%WsL!L@cnb$uuVM$E6y80t?kA?d$^*tQ=4_DTZumAu6 delta 3879 zcmY+_2~gBk0LSr{fUd}8fM}Ym=;Dz;C>|6lXrdWf9${c;>aL35qAqHn_SY^o&D702 zy7LOLOev+tu1PzrtenYmCMUbbqozaCnlkG9+kH*;hTneP|Je85|Gl?=cFlQq&I?_x za9qZi;fcn`(U^p#*aE9C0~cT$+=e~y05-={*baZhZs_96v6zil;vme#F_?x+F%q{T zUomw_#tAj_s=eVLMswj5w#IXqg^|hOf#q0l#P*z@h&fn`8qjV`$9>olPoO%!gdH%I zr)Y(Fcn1z|;~0}brH&Ko@D~fgDtag?#9~N!T4L zP!F&k)$yaKcI)hMBkDn&x2b6D-bbzZuc#4TLJc6E1=fwJs3-1XkF&8E$9+))%f$j5 zfmh)w)RgbQmUs~PGe`L7jHj^={hJu>Rs(~vD~?5tc%eOBff~>r?1=|a9sh!%0i)Lb z5~`gD=36tAgx6wE)aEX;PD9O16-Ls(nMXxaQ;Qnu3RHtZ?1Y<9GjPCOf74!nAJySe zd;J@n&+%z{Jc-BGfW4^p)}jWy5zFu?ETMnXL`65=b~V$B_hBmTL^mEr&CK_xfh4lE z3$ZO~=_Vl$ZB@Y7dayI-sH0YVc<>q=hoeyqY)3Y_*^e6F z5#*O-{HC#fiW^Zs!}F+LOA|7QCV?GTf|;G2@DnZP zL<}dMKz*SeHNt(Use1>tX+B1l*BnE2cn`Vbq8}#Z1gf=e3LzQQtp?YVcbOJuzzFO{gVk!3I*t zY1j{YqL#w(QqkHjvNzPB*0KThBp;(@q6xM3@$9%k=s{igVH5^Y*EgXHcO#Qy8nFd_ zfuR9n7RTq2fjOo#^TNBv3`CaEj7N1)gZjeDr~$r<*Wv~2h3P%Q|BOmdZ@zo62G^jT zIGT;1rSf1T7N7=Nh?=n?jMneJl!~UphuQ;+tq-6Y+JI_kFKQ-^Agf@$L^Tw}=(NU( z)^4bQ4?rH$6rujx%|pG&R@m#0={)_LdMbMI*HI09g=|!F5jCalnCBeKLOp>O)zC~- z!;7tJ?e%TQS4};(#LrRfe2sd5-%&HtGL!j_p%O=>Ikrb#NJ9;zD-OjxbmQHqfo?&4 z?+|K@k0O8OA|J!h!vgE~J`1(h%lOcM_oJ5XFlxsC%3}Tts3fzn&2T(wvy`F+GzAl| z9JMKHF&{Ue?)x0|geOrmaTYa0O&Euf+2PHYXzhS%$AkLb;B4k!l_E~4!(!A_m7xm* zxDpqkI&?AoA(()=f1Gs!mT^1<7vLM%2mAL9zq)ogke}Zb@0_y%KM%e~E);!epvDT@W!f^m|aV2U751|JBA+qF-IYwm| zCyt{wTPI%V`8XY~Ks~ieJ<+>vPm z*-SO&Ix3Y!8|P;7Z>gf9UA==`NwnUY%GHFgndQVyR5TMiNhwJrS^}-F%I(29F^SG> zYA+GZ!G7`-QJG6LZz?Hd6`4i05tTbapUk6GJWp;Qo5^G31#&-8X&uJQ!*zt;x{70F z@~PLEc1a!?MS2hw-ejS28=sF7fA}!;Ifzf~q?^caQcj*DHxiY-B$gx)5Al-qY|?=(ORUrJF4902+j9eO5m`Y>>^X5S(aszlJQ17Xq)`hJ746Sv zgdG)n|J2|!WD8kK^p4XTy&EYemzS0t^db&@am*fSF=Q<1 zOKv4giORFYM+WM^mIe3(*+uTL=WfATTNi6=eI*VdarU?nx7zyCI8?(OV^0X)3jZq` zI4U5M$cyA*GK{F)M;b#le(ku>)+;cAB$G$%xjEK}IMUWbXex@xeBvSo2*E;rhHNBPrOJ zkr!-{=}sv0&8YPGy*~F4^~J5}neQ}jH>!N@l{`~$D_ Bm<|8{ diff --git a/locales/de_DE.po b/locales/de_DE.po index bf7df9b..be13f82 100644 --- a/locales/de_DE.po +++ b/locales/de_DE.po @@ -306,8 +306,8 @@ msgstr "Stufe" msgid "Linked assets" msgstr "Verknüpfte Assets" -msgid "Linked clients" -msgstr "Verknüpfte Clients" +msgid "Managed clients" +msgstr "Verwaltete Clients" msgid "Linked server" msgstr "Verknüpfter Server" @@ -324,8 +324,8 @@ msgstr "Nachricht" msgid "Method not allowed" msgstr "Methode nicht erlaubt" -msgid "Missing clients" -msgstr "Fehlende Clients" +msgid "Clients to manage" +msgstr "Zu verwaltende Clients" msgid "Name" msgstr "Name" @@ -504,8 +504,8 @@ msgstr "cURL konnte nicht initialisiert werden." msgid "Unknown" msgstr "Unbekannt" -msgid "Unlinked clients" -msgstr "Nicht verknüpfte Clients" +msgid "Linkable clients" +msgstr "Verknüpfbare Clients" msgid "Update" msgstr "Aktualisieren" diff --git a/locales/en_GB.mo b/locales/en_GB.mo index 6a60c4497b114663658aca3839565a95e97b1b5f..40d6a26db36e85b10e186ebf0e64e6a21327372b 100644 GIT binary patch delta 3869 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 Tll8)-oIKMi-TVJ+ZM4U~NNtUL diff --git a/locales/en_GB.po b/locales/en_GB.po index 8b0bf11..d4c8b38 100644 --- a/locales/en_GB.po +++ b/locales/en_GB.po @@ -301,8 +301,8 @@ msgstr "Level" msgid "Linked assets" msgstr "Linked assets" -msgid "Linked clients" -msgstr "Linked clients" +msgid "Managed clients" +msgstr "Managed clients" msgid "Linked server" msgstr "Linked server" @@ -319,8 +319,8 @@ msgstr "Message" msgid "Method not allowed" msgstr "Method not allowed" -msgid "Missing clients" -msgstr "Missing clients" +msgid "Clients to manage" +msgstr "Clients to manage" msgid "Name" msgstr "Name" @@ -496,8 +496,8 @@ msgstr "Unable to initialize cURL." msgid "Unknown" msgstr "Unknown" -msgid "Unlinked clients" -msgstr "Unlinked clients" +msgid "Linkable clients" +msgstr "Linkable clients" msgid "Update" msgstr "Update" diff --git a/locales/it_IT.mo b/locales/it_IT.mo index ae65a1923db49aa05f313995c8e5d3d760937c07..27c8e2a38e7daa44f109be8971a5c3bb0df037e2 100644 GIT binary patch delta 3866 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'; - echo ''; - echo ''; - $formAction = PLUGIN_URBACKUP_WEB_DIR . '/front/server.form.php'; - echo '
'; + echo '
'; echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; if ($canWrite) { - echo ''; + echo ''; } echo ''; echo ''; @@ -1434,50 +1430,6 @@ class Server extends CommonDBTM echo ''; echo '
' . htmlspecialchars(__('Name')) . ' ' . htmlspecialchars(Entity::getTypeName(1)) . ' ' . htmlspecialchars(Location::getTypeName(1)) . ' ' . htmlspecialchars(__('Inventory number')) . ' ' . htmlspecialchars(__('IP address', 'urbackup')) . ' ' . htmlspecialchars(State::getTypeName(1)) . ' ' . htmlspecialchars(User::getTypeName(1)) . ' ' . htmlspecialchars(Group::getTypeName(1)) . ' ' . htmlspecialchars(__('Name')) . '' . htmlspecialchars(Entity::getTypeName(1)) . '' . htmlspecialchars(Location::getTypeName(1)) . '' . htmlspecialchars(__('Inventory number')) . '' . htmlspecialchars(__('IP address', 'urbackup')) . '' . htmlspecialchars(State::getTypeName(1)) . '' . htmlspecialchars(User::getTypeName(1)) . '' . htmlspecialchars(Group::getTypeName(1)) . '' . htmlspecialchars(__('Actions', 'urbackup')) . '' . htmlspecialchars(__('Actions', 'urbackup')) . '
'; - - echo <<<'JAVASCRIPT' - -JAVASCRIPT; } private static function getCachedName(string $classname, int $id, array &$cache): string