Commit graph

227 commits

Author SHA1 Message Date
Valentin Samir
ad83a5aaa3 [attributs] Plus nazi sur qui peut modifier les attributs userPassword, mail, homeDirectory 2014-03-15 22:33:59 +01:00
Daniel STAN
f1aeaf59aa ipsec modifiable par proprio
Ou alors trouvez-moi une autre façon d'instancier les machines wifi.
2014-03-04 18:50:02 +01:00
Valentin Samir
4ea10076ca [attributs] Changement de permissions sur des attributs
Pour historique il faudrait faire quelque chose pour que soi, parent,
cableur ne puissent que ajouter de nouvelles lignes, mais en attendant, il peuvent
"en théorie" le modifier.
2014-03-03 10:52:30 +01:00
Valentin Samir
79149ebb4f [attributs.certificat] Belle erreur sur les certificats mal formaté 2014-03-02 01:17:24 +01:00
Valentin Samir
8fd2be80c8 [attributs.sshFingerprint] On se débarrasse des espaces inutiles
Ça "normalise" plus ou moins une clef ssf
2014-02-26 10:26:00 +01:00
Valentin Samir
2c1edaa310 [attributs] Ajout de legends 2014-02-26 10:25:43 +01:00
Daniel STAN
68587e3ebb attributs: allow macAddress "<automatique>" 2014-02-23 19:25:11 +01:00
Valentin Samir
fefad357fc [attributs, objets] Affinage des permissions sur les certificats 2014-02-23 16:06:11 +01:00
Valentin Samir
f5347106c7 [attributs] Fonctions de test d'egalité des attributs 2014-02-23 15:30:04 +01:00
Valentin Samir
626851baca [objets, attributs] Vérifications de contraintes liées au certificats d'un machine 2014-02-23 15:29:26 +01:00
Valentin Samir
f6620a2643 [attributs/hostCert] join veut absoluement des strings 2014-02-22 23:14:27 +01:00
Valentin Samir
44936fde9d Ajout d'objets certifcats comme enfant des objets machine 2014-02-22 23:01:56 +01:00
Valentin Samir
78b50415fe [attributs] Des test sur la correction syntaxique de ce qu'on met dans un sshFingerprint
En gros de ce que le script qui génère le dns s'attend à trouver :
la clef publique en entière sous la forme
type base64 commentaire
2014-02-21 18:02:34 +01:00
Valentin Samir
b882c41683 Ajout des méthodes __ne__ sur les cransLdapObjet et Attr pour tester le non égalité 2014-02-21 18:02:02 +01:00
Valentin Samir
592cd16357 Fonction de hash pour les cransLdapObject. Seulement en ro. En rw on lève une exception.
En effet, python n'aime pas que les objets multables soient utilisé dans des sets
ou comme clef de dictionnaire, du coup, on va essayer de ne pas le contrarier.
De toute façon, c'est logique vu que la valeur du hash change si on édite l'objet.
2014-02-21 18:00:19 +01:00
Valentin Samir
fe14eb9d4b [attributs] __getattr__ ce que je pensais mettre dans le commit 838c4e9a73 2014-02-19 19:59:05 +01:00
Valentin Samir
838c4e9a73 [attributs] ajout d'un __getattr__ sur Attr renvoyant vers getattr(self.value)
À noter que __getattr__ n'est appelé que si l'attribut n'existe pas déjà.
Ça permet d'utiliser l'objet Attr comme sa valeur pour la plupart des opération
de lecture simple.
J'ai fait exprès de ne pas surcharger __setattr__, parce que sinon, on ne sait
plus trop ce qui va être affecté. J'estime que les écriture doivent être traités au
cas par cas comme pour blacklist ou pour article.
2014-02-19 18:52:01 +01:00
Valentin Samir
6e6f87bf40 [attributs] Ajout d'une methode __hash__ à la classe Attrs 2014-02-18 21:37:51 +01:00
Valentin Samir
45947b1871 [attributs] sshFingerping : représentation ldap comme in dict {type, clef, commentaire} 2014-02-17 22:08:07 +01:00
Valentin Samir
7b7511e493 [attributs] Possibilité de donner à manger un dicrionnaire à une blackliste 2014-02-17 22:07:42 +01:00
Valentin Samir
525d7941ff [attributs] Pitit problème de parenthesage logique 2014-02-17 22:07:19 +01:00
Valentin Samir
012895ca0b [attributs] Les listes ne sont pas shashable du coup on n'ajoute pas de [] dans le set modifiables de la classe droits 2014-02-17 22:06:34 +01:00
Valentin Samir
a17f7ca133 [attributs] Ajout de __delitem__ à AttrsList 2014-02-17 22:05:59 +01:00
Valentin Samir
6fffbd7bd3 [attributs] Type python à int pour la classe responsable 2014-02-14 02:20:10 +01:00
Valentin Samir
03c45b8889 [attributs, objets] Possibilité d'utiliser directement les methodes sur les liste renvoyé par __getitems__ sur un cransLdapObjet
Au lieu d'être obligé de faire à chaque fois obj[attr] = obj[attr] + [val]
on peut faire directement obj[attr].append(val).
Si on affecte obj[attr] à une variable (l=obj[attr])
et que l'on modifie la variable (l.append(val)), a la fois la variable et obj[attr] sont modifié
et maintenue à jour.
Attention toutefois :
 l1 = obj[attr]
 l2 = obj[attr]
 l1 == l2 <=> True

 l1.append(val)
 l1 == obj[attr] <=> True
 l1 == l2 <=> False
 l2 == obj[attr] <=> False

et l2.append(val) lèvera une exception.
2014-02-14 02:14:44 +01:00
Valentin Samir
8739640687 [attributs] Compare methode entre les attributs 2014-02-14 02:06:22 +01:00
Valentin Samir
aea8e9d974 [attributs] assert value is not only unicode but can also be of the specified python type 2014-02-14 00:45:12 +01:00
Valentin Samir
ca170c19f4 Ajout de methodes pour tester l'égalité d'objets ou d'attributs,
possibilité de fournir une valeur du bon type python à un attribut
test booléen sur s'attribut propagée à sa valeur.

Le teste d'égalité sur un attribut peut se faire avec la sérialisation de
l'attribut ou le type python qui le représente.
Le teste d'égalité sur les cransLdapObjet se fait sur le dn et ses attributs.
De plus, on peut aussi le testé avec un chaine de caractère :
 "host=freebox.crans.org" == MachineCrans(...) renvoie True ssi
MachineCrans(...) a l'attribut host, qu'il est globalement unique et vaut
freebox.crans.org

vala vala
2014-02-13 22:34:00 +01:00
Valentin Samir
39635670e0 [attributs] Ajout de l'attribut rewriteMailHeaders comme boolAttr 2014-02-03 18:43:22 +01:00
Valentin Samir
25476fd42d [attributs] canonicalAlias est optionnel dans la base ldap 2014-02-03 18:42:50 +01:00
Pierre-Elliott Bécue
d2aebebd2a [attributs] Si on oublie les parenthèses… 2014-01-29 00:53:49 +01:00
Pierre-Elliott Bécue
8ef8ba04a0 [attributs] On ajoute un attribut gpgMail spécifique
* On ne peut pas utiliser mailExt, car on souhaite que cet attribut ne
 soit pas en conflit avec les autres attributs de mails (oui, on accepte
 la redondance)
2014-01-29 00:37:11 +01:00
Valentin Samir
aebe4613e4 [attributs, ...] __getitem__ et __setitem__ pour les attibut dont la valeur est un dictionnaire
donc pour blacklist et pour article pour le moment
2013-11-22 16:51:40 +01:00
Valentin Samir
ad58564193 [attributs] Valeurs par defaut en unicode 2013-11-19 19:00:00 +01:00
Valentin Samir
ba3898f26d [attributs, objets, lc_ldap] Création de factures 2013-10-11 18:46:26 +02:00
Daniel STAN
f199947a5d clubs: regex moins chiante sur les noms 2013-10-07 01:02:47 +02:00
Valentin Samir
4af481aeef host est unique et check_uniqness a la creation 2013-08-26 13:33:51 +02:00
Valentin Samir
c38d693d76 [attributs] Valeur par defaut pour ip et mdp wifi 2013-08-26 13:33:24 +02:00
Pierre-Elliott Bécue
c2968c6b15 [lc_ldap] On met en place un système de propagation de certaines modifications.
* Quand on modifie un attribut qui devrait en modifier d'autres, on peut
 invoquer check_changes pour voir ce qui devrait être changé, puis
 validate_changes pour rendre ces changements effectifs. Il ne reste plus
 qu'à appeler save pour enregistrer le tout.
 * Correction de petits problèmes sur les locks : quand save réussissait,
 ils n'étaient pas virés.
2013-07-04 02:06:13 +02:00
Valentin Samir
9540bc572c Search by unicode 2013-07-02 14:42:59 +02:00
Pierre-Elliott Bécue
e18e5222b7 [Oops] J'ai oublié de commiter un de mes débugs. 2013-06-13 20:34:59 +02:00
Daniel STAN
2bf07035ab [historique.get_datetime] inversion des args
args !
2013-06-06 00:46:11 +02:00
Daniel STAN
66be47e496 [attributs] méthode de conversion en datetime
Parce que ça fait plusieurs fois que j'en ai besoin donc je pense que ça sera
handy !
2013-06-06 00:22:14 +02:00
Pierre-Elliott Bécue
616acdbb7a [global] On diminue le risque de lock résiduel, et on corrige une faille des fonctions new[A-Z]*
* En cas d'erreur au create ou au save, on supprime les locks malgré tout
    * Les fonctions new* modifiaient directement le dico qu'on leur passait en
    argument, on fait désormais une copie de celui-ci, de façon à ce que test.py
    n'instancie pas toujours le même objet en croyant instancier des objets
    différents à chaque fois
    * Cela permet de trouver une typo dans services.py
    * crans_utils a été un peu corrigé.
2013-05-30 18:44:15 +02:00
Pierre-Elliott Bécue
d6efff30de [ldap_locks] Mise en place des locks. Cf commentaires pour les détails.
* Malheureusement lc_ldap._create_entity et objet.create sont un peu
 sales, mais j'ai pas trouvé mieux.
 * L'historique contient désormais les secondes.
2013-05-30 15:22:11 +02:00
Pierre-Elliott Bécue
cd75ed7bd4 [global/rid] Commit associé à http://git.crans.org/?p=usr-scripts.git;a=commit;h=a442fd6b22c400800e7c5bd870e83e4027a1d76f
* Maintenant, on va pouvoir identifier formellement les machines v6-only et les autres, sans perdre
 la possibilité de passer de l'une à l'autre rapidement (avec les changements qui vont bien)
2013-05-30 01:20:49 +02:00
Pierre-Elliott Bécue
60ded9f830 [global] Passage à tout unicode et quelques corrections mineures.
* Typos
 * Docstrings unicode
 * Erreurs unicode
 * Ajout de _post_delete et _post_create
 * ?
2013-05-27 23:26:53 +02:00
Vincent Le Gallic
db7d41d967 Split de lc_ldap.py en lc_ldap.py et objets.py + création du wrapper shortcuts.py
Ça permet de faire les choses sales du genre os.getenv("SUDO_USER") ou import_secrets
dans le wrapper et pas dans le binding même.
2013-05-16 07:00:47 +02:00
Vincent Le Gallic
ec5de5834b On surcharge pas __repr__ comme des gros sales. 2013-05-16 02:45:44 +02:00
Vincent Le Gallic
c392a2a986 On utilise un champ ldap_name pour savoir quelle classe doit être utilisée pour instancier quel objet/attribut LDAP.
Et comme ça on fiche à la poubelle le dégueulasse globals() et on décorrelle les noms
des classes des noms LDAP.
2013-05-15 23:00:17 +02:00