-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Salut,
Actuellement le contrôle de la configuration est plutôt "minimum" (connexion + version) De plus la configuration TRACE_DELETED est forcée à chaque passage. Voici une petite proposition d'amélioration. 1/ TRACE_DELETED Lire la valeur avant et essayer de la changer uniquement si besoin. Cela évite d'avoir besoin des droits d'écriture sur cette table. 2/ hardware.CHECKSUM Contrôle des droits d'écriture lors de la configuration d'un serveur OCS 3/ deleted_equiv Contrôle des droits de suppression lors de la configuration d'un serveur OCS Bien sûr avec quelques messages très utiles (enfin j'espère) pour l'administrateur lors de l'installation. Pour cela j'ai crée une fonction ocsCheckConfig (argument = champ de bits des éléments à contrôler) qui est appelée depuis le formulaire de configuration et depuis la fonction ocsManageDeleted. Sujet de reflexion : - - intégrer checkOCSconnexion dans ocsCheckConfig ? - - lors de l'appel depuis ocsManageDeleted, que doit-on vérifier ? (j'ai mis uniquement le contrôle de la configuration, ce qui correspond au fonctionnement actuel) Patch en P.J. (version SVN du 24/6) Par contre je n'ai pas modifié toutes les "locales". Bon dimanche et à bientôt. Remi. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Remi - http://enigmail.mozdev.org iD8DBQFGfiRWYUppBSnxahgRArgDAKCOfMwA2i2VZsGanKKZYNKmrdZ17wCePMDG KTERaKGZcfWFtCE0iEVg8Sg= =T1XE -----END PGP SIGNATURE-----
--- ./inc/ocsng.function.php.orig 2007-06-24 08:33:23.000000000 +0200 +++ ./inc/ocsng.function.php 2007-06-24 09:43:28.000000000 +0200 @@ -270,14 +270,46 @@ function ocsLink($ocs_id, $ocs_server_id } } +function ocsCheckConfig($what=1) { + global $DBocs; + + # Check OCS version + if ($what & 1) { + $result = $DBocs->query("SELECT TVALUE FROM config WHERE NAME='GUI_VERSION'"); + if ($DBocs->numrows($result) != 1 || $DBocs->result($result, 0, 0) < 4020) { + return false; + } + } + # Check TRACE_DELETED in CONFIG + if ($what & 2) { + $result = $DBocs->query("SELECT IVALUE FROM config WHERE NAME='TRACE_DELETED'"); + if ($DBocs->numrows($result) != 1 || $DBocs->result($result, 0, 0) != 1) { + $query = "UPDATE config SET IVALUE='1' WHERE NAME='TRACE_DELETED'"; + + if (!$DBocs->query($query)) return false; + } + } + # Check write access on hardware.CHECKSUM + if ($what & 4) { + if (!$DBocs->query("UPDATE hardware SET CHECKSUM = CHECKSUM LIMIT 1")) { + return false; + } + } + # Check delete access on deleted_equiv + if ($what & 8) { + if (!$DBocs->query("DELETE FROM deleted_equiv LIMIT 0")) { + return false; + } + } + + return true; +} function ocsManageDeleted($ocs_server_id) { global $DB, $DBocs; - checkOCSconnection($ocs_server_id); - - // Activate TRACE_DELETED : ALSO DONE IN THE CONFIG - $query = "UPDATE config SET IVALUE='1' WHERE NAME='TRACE_DELETED'"; - $DBocs->query($query); + if (!(checkOCSconnection($ocs_server_id) && ocsCheckConfig(1))) { + return false; + } $query = "SELECT * FROM deleted_equiv"; $result = $DBocs->query($query); --- ./inc/ocsng.class.php.orig 2007-06-24 08:34:49.000000000 +0200 +++ ./inc/ocsng.class.php 2007-06-24 09:30:03.000000000 +0200 @@ -449,25 +449,30 @@ function showForm($target, $ID,$withtemp echo "<div align='center'>"; if ($ID != -1) { - checkOCSconnection($ID); - - if (!$DBocs->error) { - echo $LANG["ocsng"][18] . "<br>"; - $result = $DBocs->query("SELECT TVALUE FROM config WHERE NAME='GUI_VERSION'"); - if ($DBocs->numrows($result) == 1 && $DBocs->result($result, 0, 0) >= 4020) { - $query = "UPDATE config SET IVALUE='1' WHERE NAME='TRACE_DELETED'"; - $DBocs->query($query); - - echo $LANG["ocsng"][19]; - if ($withtemplate == 2) - $this->ocsFormConfig($target,$ID,$withtemplate,$templateid); - else - $this->ocsFormConfig($target, $ID,$withtemplate); - } else - echo $LANG["ocsng"][20]; - } else { + if (!checkOCSconnection($ID)){ echo $LANG["ocsng"][21]; } + else if (!ocsCheckConfig(1)) { + echo $LANG["ocsng"][20]; + } + else if (!ocsCheckConfig(2)) { + echo $LANG["ocsng"][42]; + } + else if (!ocsCheckConfig(4)) { + echo $LANG["ocsng"][43]; + } + else if (!ocsCheckConfig(8)) { + echo $LANG["ocsng"][44]; + } + else { + echo $LANG["ocsng"][18] . "<br>"; + echo $LANG["ocsng"][19]; + + if ($withtemplate == 2) + $this->ocsFormConfig($target,$ID,$withtemplate,$templateid); + else + $this->ocsFormConfig($target, $ID,$withtemplate); + } } echo "</div>"; --- ./locales/fr_FR.php.orig 2007-06-24 08:35:50.000000000 +0200 +++ ./locales/fr_FR.php 2007-06-24 09:32:05.000000000 +0200 @@ -964,7 +964,7 @@ $LANG["ocsng"][14]="Date dernière mise $LANG["ocsng"][15]="Aucun champ verrouillé"; $LANG["ocsng"][16]="Champs verrouillés"; $LANG["ocsng"][18]="Connexion à la base de données OCS réussie"; -$LANG["ocsng"][19]="Version OCS NG valide"; +$LANG["ocsng"][19]="Version et Configuration OCS NG valide"; $LANG["ocsng"][20]="Version d'OCS NG non valide : nécessite RC3"; $LANG["ocsng"][21]="Echec de connexion à la base de données OCS NG"; $LANG["ocsng"][22]="Attention ! Les données importées (voir votre configuration) écraseront les données existantes"; @@ -985,6 +985,9 @@ $LANG["ocsng"][37]="Activer la prévisua $LANG["ocsng"][38]="Désactiver la prévisualisation"; $LANG["ocsng"][40]="Match règle ?"; $LANG["ocsng"][41]="Mode d'import manuel"; +$LANG["ocsng"][42]="Configuration OCS NG invalide (TRACE_DELETED doit être activé)"; +$LANG["ocsng"][43]="Accès refusé sur la base OCS (Droit d'écriture sur hardware.CHECKSUM nécessaire)"; +$LANG["ocsng"][44]="Accès refusé sur la base OCS (Droit de suppression sur deleted_equiv nécessaire)"; $LANG["ocsconfig"][0]="Configuration du module d'import OCS NG -> GLPI"; --- ./locales/en_GB.php.orig 2007-06-24 08:35:34.000000000 +0200 +++ ./locales/en_GB.php 2007-06-24 09:31:41.000000000 +0200 @@ -990,7 +990,7 @@ $LANG["ocsng"][14]="Last update date in $LANG["ocsng"][15]="No field locked"; $LANG["ocsng"][16]="Locked Fields"; $LANG["ocsng"][18]="Connection to OCS database successful"; -$LANG["ocsng"][19]="Valid OCS NG version"; +$LANG["ocsng"][19]="Valid OCS NG version and configuration"; $LANG["ocsng"][20]="Invalid OCS NG Version: require RC3"; $LANG["ocsng"][21]="Connection to the OCS NG database failed"; $LANG["ocsng"][22]="Caution! The imported data (see your configuration) will overwrite the existing data"; @@ -1011,6 +1011,9 @@ $LANG["ocsng"][37]="Activate the preview $LANG["ocsng"][38]="Désactiver la prévisualisation"; $LANG["ocsng"][40]="Match règle ?"; $LANG["ocsng"][41]="Mode d'import manuel"; +$LANG["ocsng"][42]="Invalid OCS configuration (TRACE_DELETED must be ON)"; +$LANG["ocsng"][43]="Access denied on OCS database (write privilege on hardware.CHECKSUM required)"; +$LANG["ocsng"][44]="Access denied on OCS database (delete privilege on deleted_equiv required)"; $LANG["pager"][1]="to"; $LANG["pager"][2]="from"; @@ -1625,4 +1628,4 @@ $LANG["update"][135]="Root location"; $LANG["update"][136]="This is the new hierarchy. If it's OK, you can validate it."; $LANG["update"][137]="New hierarchy"; $LANG["update"][138]="Actual locations"; -?> \ Pas de fin de ligne à la fin du fichier. +?> --- ./scripts/ocsng_mass_import.php.orig 2007-06-24 09:40:31.000000000 +0200 +++ ./scripts/ocsng_mass_import.php 2007-06-24 09:41:01.000000000 +0200 @@ -60,9 +60,7 @@ if (isset($_GET["limit"])) $limit=$_GET[ $DBocs = new DBocs($ocs_server_id); $cfg_ocs=getOcsConf($ocs_server_id); -// PREREQUISITE : activate trace_deleted -$query = "UPDATE config SET IVALUE='1' WHERE NAME='TRACE_DELETED'"; -$DBocs->query($query); +// PREREQUISITE : activate trace_deleted (check done in ocsManageDeleted) // Clean links ocsManageDeleted($ocs_server_id); ocsCleanLinks($ocs_server_id);
_______________________________________________ Glpi-dev mailing list Glpi-dev@gna.org https://mail.gna.org/listinfo/glpi-dev