SLIS

Notice: Undefined index: tasklist_type in /usr/local/flyspray-0.9.9.7/includes/class.tpl.php(128) : eval()'d code on line 85 Notice: Undefined index: tasklist_type in /usr/local/flyspray-0.9.9.7/includes/class.tpl.php(128) : eval()'d code on line 90
  • Etat Nécessite des tests
  • Pourcentage achevé:
    50%
  • Type de tâche Bug
  • Catégorie SLIS → slis-core
  • Assignée à Personne
  • Système d'exploitation All
  • Sévérité Moyenne
  • Priorité Normale
  • Basée sur la version 4.1.3
  • Due pour la version Non décidé
  • Date d'échéance Non décidé
  • Votes 0
  • Privée Non
Concerne le projet: SLIS
Ouverte par Auteur anonyme - 2012-01-23
Dernière édition par Auteur anonyme - 2012-12-27

FS#536 - la suppression d'une règle prédéfinie dans Predefined.pl n'est pas traitée en base

Si on ajoute une règle prédéfinie dans /etc/slis/slis-firewall/Predefined.pl, on la retrouve bien dans la base de données et dans l'interface.
En revanche, si l'on veut revenir à l'état précédent et qu'on la supprime du fichier, la règle reste présente dans la base, malgré la commande slis-firewall --initdb

This task does not depend on any other tasks.

Auteur anonyme
mercredi, 25 janvier 2012, 16:25 GMT
  • Champ changé: Etat (Assignée → En cours)
C'est dû au fait que le fichier Predefined.pl et la base de données utilisent les valeurs 't' et 'f' pour 'vrai' et 'faux', tandis que Perl voit des valeurs '1' et '0'.

C'est peut-être relié à une mise à jour de PostGreSQL ? (Cf discussion sur ce problème, sur http://archives.postgresql.org/pgsql-general/2002-12/msg01198.php .)
Auteur anonyme
mercredi, 25 janvier 2012, 16:53 GMT
Extrait du manuel de DBD::Pg

« Datatype bool

The current implementation of PostgreSQL returns ’t’ for true and ’f’ for false. From the Perl point of view, this is a rather unfortunate
choice. DBD::Pg therefore translates the result for the "BOOL" data type in a Perlish manner: ’f’ -> ’0’ and ’t’ -> ’1’. This way the
application does not have to check the database-specific returned values for the data-type "BOOL" because Perl treats ’0’ as false and ’1’
as true. You may set the "pg_bool_tf" attribute to a true value to change the values back to ’t’ and ’f’ if you wish.

Boolean values can be passed to PostgreSQL as TRUE, ’t’, ’true’, ’y’, ’yes’ or ’1’ for true and FALSE, ’f’, ’false’, ’n’, ’no’ or ’0’ for
false.
»

Donc changer la configuration en valorisant l'attribut pg_bool_tf à vrai pour lire dans la base (ce qui ne modifie pas la façon d'écrire dans la base).
Laurent COOPER (swirly)
mercredi, 25 janvier 2012, 20:00 GMT
Alors là, bien vu !
Auteur anonyme
jeudi, 26 janvier 2012, 10:49 GMT
  • Champ changé: Catégorie (slis-firewall → slis-core)
L'accès à la base de données est défini dans /usr/share/perl5/Interfacedu/Slis.pm fourni par slis-common (paquet source slis-core).
Auteur anonyme
vendredi, 27 janvier 2012, 10:02 GMT
Implémenté dans slis-core version 4.1.36~1. Le paquet est dans le dépôt 4.1-experimental pour tests.

/!\ Il peut y avoir des répercutions sur les autres accès et comparaisons des booléens de la base de données ! /!\
Auteur anonyme
vendredi, 23 novembre 2012, 10:25 GMT
Ce bug est utile car il respecte le fait de ne pas changer les règles mises en place sur un slis.

Néanmoins, un administrateur local devrait pouvoir supprimer une règle qui n'est plus prédéfinie (cf FS#708) et il faut corriger le mode d'accès à la base tel que décrit ici pour rester cohérents avec les évolutions de postgresql.

Auteur anonyme
jeudi, 19 décembre 2013, 15:00 GMT
Le correctif casse effectivement pas mal d'autres choses.
Laurent COOPER (swirly)
jeudi, 19 décembre 2013, 21:48 GMT
Tu peux préciser ? Je ne serais pas là demain matin :( et visiblement, il y a urgence...
Auteur anonyme
vendredi, 20 décembre 2013, 09:00 GMT
Ça change tous les trucs qui se basaient sur le fait qu'un boolean était 0 ou 1. Maintenant que c'est 't' ou 'f', un if (machin) renvoie toujours vrai.

Plus particulièrement, ça casse les règles de pare-feu de la dmz. Je pense que le plus simple est de revert le commit dans un premier temps.

Chargement...