diff --git a/Cfg/etc/ldap/schema/crans.schema/crans.schema b/Cfg/etc/ldap/schema/crans.schema/crans.schema
new file mode 100644
index 0000000..a4495dc
--- /dev/null
+++ b/Cfg/etc/ldap/schema/crans.schema/crans.schema
@@ -0,0 +1,326 @@
+#
+# Définitions des attributs et objets pour le Crans
+#
+# Géré par BCfg2 (plugin Cfg)
+#
+# L'OID 1.3.6.1.4.1.25368 a été attribuée au Crans par l'IANA
+# * OID attributs : 1.3.6.1.4.1.25368.2.*
+# * OID classes : 1.3.6.1.4.1.25368.3.*
+#
+
+# Les attributs
+
+attributetype ( 1.3.6.1.4.1.25368.2.1 NAME 'aid'
+ DESC 'Adhérent Identifier'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.2 NAME 'nom'
+ DESC 'Nom adhérent'
+ SUP name )
+
+attributetype ( 1.3.6.1.4.1.25368.2.3 NAME 'prenom'
+ DESC 'Prénom adhérent'
+ SUP name )
+
+attributetype ( 1.3.6.1.4.1.25368.2.4 NAME 'tel'
+ DESC 'Numéro de téléphone adhérent'
+ EQUALITY telephoneNumberMatch
+ SUBSTR telephoneNumberSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
+
+attributetype ( 1.3.6.1.4.1.25368.2.5 NAME 'paiement'
+ DESC 'Année de paiement adhérent'
+ EQUALITY integerMatch
+ ORDERING integerOrderingMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+attributetype ( 1.3.6.1.4.1.25368.2.6 NAME 'carteEtudiant'
+ DESC 'Année de carte étudiant fournie'
+ EQUALITY integerMatch
+ ORDERING integerOrderingMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+attributetype ( 1.3.6.1.4.1.25368.2.7 NAME 'mailAlias'
+ DESC 'Alias mail'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.8 NAME 'canonicalAlias'
+ DESC 'Alias mail canonique'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.9 NAME 'etudes'
+ DESC 'Études adhérent'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.10 NAME 'chbre'
+ DESC 'Chambre adhérent'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.11 NAME 'historique'
+ DESC 'Historique de modifications'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.12 NAME 'droits'
+ DESC 'Droits adhérent'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.13 NAME 'ipsec'
+ DESC 'Clef IPsec machine'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.14 NAME 'blacklist'
+ DESC 'Services bloqués à un adhérent ou une machine'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.15 NAME 'mid'
+ DESC 'Machine Identifier'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.16 NAME 'hostAlias'
+ DESC 'Alias nom de machine'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.17 NAME 'cid'
+ DESC 'Club Identifier'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.18 NAME 'responsable'
+ DESC 'Aid du responsable club'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.19 NAME 'puissance'
+ DESC 'Puissance borne wifi'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.20 NAME 'canal'
+ DESC 'Canal borne wifi'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.21 NAME 'lockid'
+ DESC 'Id du lock : machine-pid'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{512} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.22 NAME 'args'
+ DESC 'Arguments du service à redémarrer'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.23 NAME 'portTCPout'
+ DESC 'Ports TCP spécifiques à ouvrir dans le firewall vers extérieur'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.24 NAME 'portTCPin'
+ DESC 'Ports TCP spécifiques à ouvrir dans le firewall vers crans'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.25 NAME 'portUDPout'
+ DESC 'Ports UPD spécifiques à ouvrir dans le firewall vers extérieur'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.26 NAME 'portUDPin'
+ DESC 'Ports UDP spécifiques à ouvrir dans le firewall vers crans'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.27 NAME 'prise'
+ DESC 'Chambre adhérent'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.28 NAME 'solde'
+ DESC 'Solde du compte'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.29 NAME 'exempt'
+ DESC 'Réseau vers lequel le trafic est exempté'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.30 NAME 'start'
+ DESC 'Date de démarrage service'
+ EQUALITY integerMatch
+ ORDERING integerOrderingMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+attributetype ( 1.3.6.1.4.1.25368.2.31 NAME 'controle'
+ DESC 'Controle trésorier'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.32 NAME 'contourneGreylist'
+ DESC 'Contourne le greylisting (OK/absent)'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.33 NAME 'rewriteMailHeaders'
+ DESC 'Réécriture de l\27adresse mail avec l\27alias canonique (TRUE/absent)'
+ EQUALITY booleanMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.34 NAME 'hotspot'
+ DESC 'Borne partagée avec l\27ENS (TRUE/FALSE)'
+ EQUALITY booleanMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.35 NAME 'positionBorne'
+ DESC 'Coordonnées d\27une borne wifi'
+ EQUALITY caseIgnoreMatch
+ SUBSTR caseIgnoreSubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{32} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.37 NAME 'nvram'
+ DESC 'Configuration spéciale d\27une borne'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.38 NAME 'derniereConnexion'
+ DESC 'Date de dernière connexion'
+ EQUALITY integerMatch
+ ORDERING integerOrderingMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.39 NAME 'fid'
+ DESC 'Facture Identifier'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.40 NAME 'modePaiement'
+ DESC 'Mode de paiement de la facture'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.41 NAME 'article'
+ DESC 'Article'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.42 NAME 'recuPaiement'
+ DESC 'Definit si la facture a été payée (valeur absente = facture non payée)'
+ EQUALITY caseIgnoreMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.43 NAME 'homepageAlias'
+ DESC 'Alias pour la page perso'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+attributetype ( 1.3.6.1.4.1.25368.2.44 NAME 'mailInvalide'
+ DESC 'Adresse mail invalide (TRUE/absent)'
+ EQUALITY booleanMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.45 NAME 'charteMA'
+ DESC 'Charte des membres actifs signee (TRUE : signee)'
+ EQUALITY booleanMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.46 NAME 'adherentPayant'
+ DESC 'Adhérent payant son adhésion (TRUE : il paye)'
+ EQUALITY booleanMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
+
+attributetype ( 1.3.6.1.4.1.25368.2.47 NAME 'imprimeurClub'
+ DESC 'Imprimeur pour le club'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+# Les classes
+
+objectclass ( 1.3.6.1.4.1.25368.3.1 NAME 'proprio' SUP top ABSTRACT
+ DESC 'Propriétaire (classe abstraite)'
+ MUST ( nom $ chbre $ historique )
+ MAY ( paiement $ info $ blacklist $ controle) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.2 NAME 'adherent' SUP proprio
+ DESC 'Adhérent'
+ MUST ( aid $ prenom $ tel $ mail )
+ MAY ( carteEtudiant $ etudes $ postalAddress $ mailInvalide $ charteMA $
+ adherentPayant ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.3 NAME 'club' SUP proprio
+ DESC 'Club'
+ MUST ( cid $ responsable )
+ MAY ( imprimeurClub ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.10 NAME 'machine' SUP top ABSTRACT
+ DESC 'Machine (classe abstraite)'
+ MUST ( mid $ macAddress $ host $ ipHostNumber $ historique )
+ MAY ( info $ blacklist $ hostAlias $ exempt $
+ portTCPin $ portTCPout $ portUDPin $ portUDPout ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.11 NAME 'machineCrans' SUP machine
+ DESC 'Machine appartenant au Crans'
+ MAY ( prise ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.12 NAME 'borneWifi' SUP machine
+ DESC 'Borne wifi'
+ MUST ( canal $ puissance $ hotspot )
+ MAY ( prise $ positionBorne $ nvram ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.13 NAME 'machineWifi' SUP machine
+ DESC 'Machine wifi'
+ MUST ( ipsec ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.14 NAME 'machineFixe' SUP machine
+ DESC 'Machine adhérent fixe' )
+
+objectclass ( 1.3.6.1.4.1.25368.3.20 NAME 'cransAccount' SUP top AUXILIARY
+ DESC 'Compte Crans'
+ MAY ( mailAlias $ canonicalAlias $ droits $ solde $
+ contourneGreylist $ rewriteMailHeaders $ derniereConnexion $
+ homepageAlias ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.21 NAME 'lock'
+ DESC 'Système de lock pour édition'
+ MUST ( lockid )
+ MAY ( aid $ chbre $ mail $ mailAlias $ canonicalAlias $ uidNumber $
+ mid $ macAddress $ host $ hostAlias $ ipHostNumber $
+ cid $ fid ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.22 NAME 'service'
+ DESC 'Service à redémarrer'
+ MUST ( cn )
+ MAY ( args $ start ) )
+
+objectclass ( 1.3.6.1.4.1.25368.3.23 NAME 'facture'
+ DESC 'Facture'
+ MUST ( fid $ modePaiement )
+ MAY ( article $ recuPaiement $ historique ) )
diff --git a/Cfg/etc/ldap/schema/crans.schema/info.xml b/Cfg/etc/ldap/schema/crans.schema/info.xml
new file mode 100644
index 0000000..642d8ac
--- /dev/null
+++ b/Cfg/etc/ldap/schema/crans.schema/info.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Metadata/groups.xml b/Metadata/groups.xml
index 77294f0..5a28c35 100644
--- a/Metadata/groups.xml
+++ b/Metadata/groups.xml
@@ -722,8 +722,8 @@
-
+ comment="serveur de base de données ldap">
+