<?xml version="1.0" encoding="utf-8"?>
<creole>

    <files>
        <file filelist='ad-files' name='/etc/logrotate.d/samba'
            source='samba.logrotate'/>
        <file filelist='ad-recycle-files' name='/etc/samba/recycle.conf' rm='True'/>
        <file filelist='ad_share_clamscan' name='/etc/eole/avscan.d/samba.yaml' source='avscan-samba.yaml' mkdir='True' rm='True'/>
        <file filelist='ad-files' name='/etc/samba/smb.conf'
            source='smb-ad.conf' mkdir='True' rm='True'/>
        <file filelist='ad-files' name='/etc/eole/samba4-vars.conf'
            rm='True'/>
        <file filelist='ad-files' name='/etc/krb5.conf' mkdir='True' rm='True'/>
        <file filelist='ad-dc-files' name='/var/lib/samba/private/krb5.conf' mkdir='True' rm='True'/>
        <file filelist='ad-dc-files' name='/usr/share/samba/setup/krb5.conf' mkdir='True' rm='True'/>
        <file filelist='ad-files'
            name='/usr/share/eole/bastion/data/90-samba_dynamic_rules'
            mode='0755'
            rm='True'/>
        <file name='/etc/nsswitch.conf'/>
        <file filelist='bind9' name='/etc/bind/named.conf' rm='True'/>
        <file filelist='bind9' name='/etc/bind/named.conf.options' rm='True'/>
        <file name='/etc/apparmor.d/local/usr.sbin.named' source='named.apparmor.conf'/>
        <service servicelist='samba' >samba-ad-dc</service>
        <service servicelist='samba-membre' >smbd</service>
        <service servicelist='samba-membre' >nmbd</service>
        <service servicelist='samba-membre' >winbind</service>
        <service_restriction service='sshd'>
            <ip interface='auto' netmask='255.255.255.255' ip_type='SymLinkOption'>ad_additional_dc_ip</ip>
        </service_restriction>
        <service servicelist='bind9'>bind9</service>
    </files>

    <variables>

        <family name='Interface-0'>
            <variable name='eth0_method' hidden='True' redefine='True'/>
            <!--
            <variable name='adresse_ip_eth0' auto_freeze='True' redefine='True'/>
            <variable name='adresse_netmask_eth0' auto_freeze='True' redefine='True'/>
            -->
        </family>

        <family name='général'>
            <variable name='nom_machine' auto_freeze='True' redefine='True'/>
            <variable name='nom_domaine_local' redefine="True" auto_freeze='True' description='Nom DNS du réseau local et du Realm'/>
        </family>

        <family name='services'>
            <variable name='activer_ad_smb' type='oui/non' description='Activer Samba Active Directory' hidden='True'>
                <value>oui</value>
            </variable>
            <variable name='activer_clam' redefine='True'>
                <value>non</value>
            </variable>

        </family>

        <family name='Active Directory' icon='group'>

            <!-- Rôle du serveur -->

            <variable name='ad_server_netbios_name' type='netbios' description="Nom NetBIOS du serveur" auto_freeze='True' mandatory='True'/>

            <variable name="ad_realm" type="domain_strict" description="Nom complet du domaine racine de la forêt"
                mandatory='True'/>

            <variable name="ad_domain" type="string" description="Nom du domaine"
                mandatory="True" />

            <variable name="ad_server_role" type="string"
                description="Rôle du serveur"
                auto_freeze="True">
                <value>controleur de domaine</value>
            </variable>

            <variable name="ad_additional_dc" type="oui/non"
                description="Définir le contrôleur de domaine comme additionnel" mode="basic" >
                <value>non</value>
            </variable>

            <variable name='ad_force_domain_sid' type='oui/non' description="Imposer le SID du domaine AD à son initialisation" auto_freeze='True' mode='expert'>
                <value>non</value>
            </variable>
            <variable name="ad_domain_sid" type="string" description='SID du domaine AD' auto_freeze='True' mandatory='True'/>

            <variable name="ad_ro_dc" type="oui/non" mode="expert" auto_freeze='True' description="Paramétrer le contrôleur de domaine en lecture seule (RODC)">
                <value>non</value>
            </variable>

            <variable name="ad_additional_dc_force_site" type="oui/non" description="Forcer le positionnement de ce contrôleur de domaine dans un site existant" auto_freeze='True'>
                <value>non</value>
            </variable>
            <variable name="ad_additional_dc_site" type="string" description="Site de destination de ce contrôleur de domaine" mandatory='True' auto_freeze='True'/>

            <variable name='ad_idmap_config_auto' type='oui/non' description='Utiliser la méthode par défaut de calcul des uid-gid' mode='expert'>
                <value>oui</value>
            </variable>
            <variable name='ad_idmap_config_domain' type='string' description='Domaine cible' mode='expert' multi='True' mandatory='True'/>
            <variable name='ad_idmap_config_backend' type='string' description='Méthode de calcul des uid-gid' mode='expert' mandatory='True'/>
            <variable name='ad_idmap_config_low' type='number' description='Limite basse de la plage d’id' mode='expert' mandatory='True'/>
            <variable name='ad_idmap_config_high' type='number' description='Limite haute de la plage d’id' mode='expert' mandatory='True'/>
            <variable name='ad_idmap_config_tdb_low' type='number' description='Limite basse de la plage d’id pour le backend tdb' mode='expert' mandatory='True'/>
            <variable name='ad_idmap_config_tdb_high' type='number' description='Limite haute de la plage d’id pour le backend tdb' mode='expert' mandatory='True'/>

            <!-- Services -->
            <variable name='ad_internal_dns_backend' type='oui/non' description='Utiliser le service DNS interne de Samba' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_allow_transfer_network' type='network' description='Réseau autorisé à transférer la zone' mode='expert' multi='True'/>
            <variable name='ad_allow_transfer_netmask' type='netmask' description='Masque du réseau' mode='expert' multi='True'/>

            <!-- Gestion des empreintes python -->
            <variable name='ad_hash_sha_256' type='oui/non' description='Générer une empreinte de mot de passe de type SHA256' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_hash_sha_256_rounds' type='number' description='Nombre d’itération de la fonction de hash' mode='expert'/>
            <variable name='ad_hash_sha_512' type='oui/non' description='Générer une empreinte de mot de passe de type SHA512' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_hash_sha_512_rounds' type='number' description='Nombre d’itération de la fonction de hash' mode='expert'/>
            <!-- Environnement -->

            <variable name='ad_additional_dc_ip' type='ip'
                description="Adresse IP des contrôleurs de domaine en relation avec ce contrôleur de domaine Active Directory"
                multi='True'>
            </variable>
            <variable name='ad_additional_dc_kdc' type='oui/non' description='Le contrôleur a le rôle de kdc'>
                <value>oui</value>
            </variable>
            <variable name='ad_additional_dc_dns' type='oui/non' description='Le contrôleur a le rôle de DNS'>
                <value>oui</value>
            </variable>
            <variable name='ad_dc_sysvol_ref' type='ip'
                description="Adresse IP du contrôleur de référence pour le volume SYSVOL" />
            <variable name='ad_dc_sysvol_type' type="string"
                description="Type du contrôleur de référence pour le volume SYSVOL" mode='expert' >
                <value>seth</value>
            </variable>
            <variable name='ad_dc_sysvol_post_join_cmd' type="filename"
                description="Script distant à exécuter après la jonction sur le contrôleur de référence" mode='expert' >
            </variable>

            <!-- pour les DC primaires et secondaires (cas Site) -->
            <variable name='activer_ad_zones' type='oui/non' description='Créer les zones de résolutions DNS Inversées'>
                <value>non</value>
            </variable>
            <variable name='ad_zones_defaut' type='oui/non' description="Créer les zones de résolutions DNS Inversées d'après la configuration réseau">
                <value>oui</value>
            </variable>
            <variable name='ad_zones' type='string' description='Liste des zones à créer' multi='True'>
            </variable>

            <variable name='ad_filter_network' type='oui/non' description='Restreindre aux adresses réseau renseignées les accès aux services du serveur' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_peer_ip' type='ip' description='Adresses IP autorisées à se connecter aux services de l’AD' mandatory='True' multi='True' mode='expert' />
            <variable name='ad_peer_netmask' type='netmask' description='Masque de sous-réseau' mandatory='True' mode='expert' />

            <variable name='ad_ldap_clients_ip' type='ip' description='Adresses IP autorisées à se connecter uniquement au service LDAP' multi='True' mode='expert'/>
            <variable name='ad_ldap_clients_netmask' type='netmask' description='Masque de sous-réseau' mode='expert'/>

            <variable name='autoriser_netbios_ports' type='oui/non' description='Autoriser la connexion pour les protocoles NetBIOS' mode='expert' >
                <value>non</value>
            </variable>

            <variable name='ad_custom_rpc_port' type='number' description='Port personnalisé pour RPC' mode='expert'/>
            <variable name='ad_custom_netlogon_port' type='number' description='Port personnalisé pour NetLogon' mode='expert'/>

            <!-- Partages -->
            <variable name='ad_utiliser_xattr' type='oui/non' description='Utiliser le vfs_object acl_xattr' mode='expert'>
                <value>oui</value>
            </variable>
            <variable name='ad_recycle_bin' type='oui/non' description='Charger le module recycle pour la prise en charge des corbeilles' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_recycle_bin_dir' type='filename' description='Nom du répertoire corbeille' mode='expert'>
                <value>.corbeille</value>
            </variable>
            <variable name='ad_recycle_bin_purge' type='number' description='Durée de conservation des fichiers dans la corbeille' mode='expert' mandatory='True'>
                <value>8</value>
            </variable>

            <variable name="activer_ad_homes_share" type="oui/non" description='Créer localement le partage "homes" ("\\serveur\&lt; login&gt;)' mode="basic">
                <value>oui</value>
            </variable>
            <variable name='ad_homes_share_host' type='hostname' description='Nom de l’hôte hébergeant les répertoires utilisateurs'/>
            <variable name='ad_home_share_path' type='filename'
                description="Chemin des répertoires personnels des utilisateurs" mode='expert'>
                <value>/home/adhomes</value>
            </variable>
            <variable name='ad_homes_share_recycle' type='oui/non' description='Activer la corbeille pour le partage "homes"' mode='expert'>
                <value>non</value>
            </variable>

            <variable name="activer_ad_profiles_share" type="oui/non" description='Créer localement le partage "profiles" ("\\serveur\profiles")' mode="basic">
                <value>oui</value>
            </variable>
            <variable name='ad_profiles_share_host' type='hostname' description='Nom de l’hôte hébergeant les profils utilisateurs'/>
            <variable name='ad_profile_share_path' type='filename'
                description="Chemin des répertoires contenant les profils des utilisateurs" mode='expert'>
                <value>/home/adprofiles</value>
            </variable>

            <variable name='ad_additional_share' type='oui/non' description='Configurer des répertoires partagés' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_additional_share_name' type='string' description='Nom du répertoire partagé' mandatory='True' mode='expert' multi='True'/>
            <variable name='ad_additional_share_path' type='string' description='Chemin du partage' mandatory='True' mode='expert'/>
            <variable name='ad_additional_share_comment' type='string' description='Description du partage' mode='expert'/>
            <variable name='ad_additional_share_writeable' type='oui/non' description='Le partage peut être écrit' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_additional_share_browseable' type='oui/non' description='Le partage peut être parcouru' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_additional_share_create_mask' type='string' description='Masque de permissions pour les fichiers' mode='expert'/>
            <variable name='ad_additional_share_directory_mask' type='string' description='Masque de permissions pour les répertoires' mode='expert'/>
            <variable name='ad_additional_share_recycle' type='oui/non' description='Activer la corbeille pour le partage' mode='expert'>
                <value>non</value>
            </variable>

            <variable name='activer_ad_share_scan' type='oui/non' description='Activer l’analyse antivirale des répertoires partagés' mode='expert'>
                <value>non</value>
            </variable>
            <variable name='ad_share_scan_when' type='string' description="Périodicité de l'analyse (Lancement tous les ...)" mode='expert'>
                <value>jours</value>
            </variable>
            <variable name='ad_share_scan_hour' type='string' description="Heure du lancement (format HH:MM)" mode='expert'>
                <value>1:00</value>
            </variable>
            <variable name='ad_share_scan_min' type='number' description="Minute du lancement" mode='expert'>
                <value>10</value>
            </variable>
            <variable name='ad_share_scan_week_day' type='string' description="Jour du lancement" mode='expert'>
                <value>samedi</value>
            </variable>
            <variable name='ad_share_scan_monthday' type='number' description="Numéro du jour du lancement dans le mois" mode='expert'>
                <value>1</value>
            </variable>
            <variable name='ad_share_scan_when_custom' type='string' description="Configuration brute format CRONTAB" mode='expert' mandatory='True'/>

            <!-- Options de journalisation -->
            <variable name='ad_log_global_level' type='number' description='Niveau de journalisation global' mode='expert'>
                <value>0</value>
            </variable>
            <variable name='ad_log_specific_event' type='string' description='Catégorie d’événements à journaliser' mode='expert' multi='True'/>
            <variable name='ad_log_specific_level' type='number' description='Niveau de journalisation de la catégorie d’événements' mode='expert' multi='True'>
                <value>0</value>
            </variable>

            <!-- Options avancées -->
            <variable name='ad_backend_store' type='string' description='Format de la base interne de Samba' mode='expert' auto_freeze='True'>
                <value>tdb</value>
            </variable>
            <variable name='ad_plaintext_secrets' type='oui/non' description='Désactiver le chiffrement des mots de passe' mode='expert' auto_freeze='True'>
                <value>non</value>
            </variable>

            <!-- Compatibilité -->
            <variable name='activer_winbind' exists='False' hidden='True'>
                <value>oui</value>
            </variable>
        </family>

        <separators>
            <separator name='ad_server_role'>Rôle du serveur Active Directory</separator>
            <separator name='ad_internal_dns_backend'>Gestion des services de Samba</separator>
            <separator name='ad_additional_dc_ip'>Environnement réseau</separator>
            <separator name='ad_utiliser_xattr'>Partages</separator>
            <separator name='ad_log_global_level'>Options de journalisation</separator>
            <separator name='ad_backend_store'>Options avancées</separator>
        </separators>

    </variables>

    <constraints>

        <fill name='calc_val' target='ad_server_netbios_name'>
            <param type='eole'>nom_machine</param>
        </fill>

        <!--
        par défaut, le realm est initialisé avec le nom de domaine local de l'onglet général
        -->
        <auto name='calc_val' target='ad_realm'>
            <param type='eole' name='valeur'>nom_domaine_local</param>
        </auto>

        <auto name='extract_ad_domain_from_realm' target='ad_domain'>
            <param type='eole' name='realm'>ad_realm</param>
        </auto>

        <check name="valid_enum" target="ad_server_role">
            <param>["controleur de domaine", "membre"]</param>
        </check>

        <check name="valid_enum" target="ad_dc_sysvol_type">
            <param>["seth", "samba", "windows" ]</param>
        </check>

        <check name='valid_enum' target='ad_idmap_config_backend'>
            <param>['rid', 'autorid', 'ad', 'ldap', 'tdb', 'nss']</param>
        </check>

        <check name='valid_enum' target='ad_backend_store'>
            <param>['tdb', 'mdb']</param>
        </check>

        <check name='valid_regexp' target='ad_home_share_path'>
            <param>^/</param>
            <param name='err_msg'>Le chemin doit être absolu</param>
        </check>

        <check name='valid_regexp' target='ad_profile_share_path'>
            <param>^/</param>
            <param name='err_msg'>Le chemin doit être absolu</param>
        </check>

        <condition name='disabled_if_in' source='ad_filter_network'>
            <param>non</param>
            <target type='variable'>ad_peer_ip</target>
            <target type='variable'>ad_ldap_clients_ip</target>
        </condition>
        <group master='ad_peer_ip'>
            <slave>ad_peer_netmask</slave>
        </group>
        <group master='ad_additional_dc_ip'>
            <slave>ad_additional_dc_kdc</slave>
            <slave>ad_additional_dc_dns</slave>
        </group>

        <condition name='disabled_if_not_in' source='activer_ad_zones'>
            <param>oui</param>
            <target type='variable'>ad_zones_defaut</target>
            <target type='variable'>ad_zones</target>
        </condition>

        <condition name='disabled_if_not_in' source='ad_hash_sha_256'>
            <param>oui</param>
            <target type='variable'>ad_hash_sha_256_rounds</target>
        </condition>
        <condition name='disabled_if_not_in' source='ad_hash_sha_512'>
            <param>oui</param>
            <target type='variable'>ad_hash_sha_512_rounds</target>
        </condition>

        <check name='valid_entier' target='ad_hash_sha_256_rounds'>
            <param name="mini">1000</param>
            <param name="maxi">999999999</param>
        </check>
        <check name='valid_entier' target='ad_hash_sha_512_rounds'>
            <param name="mini">1000</param>
            <param name="maxi">999999999</param>
        </check>
        <check name='valid_networknetmask' target='ad_peer_netmask'>
            <param type='eole'>ad_peer_ip</param>
        </check>

        <group master='ad_ldap_clients_ip'>
            <slave>ad_ldap_clients_netmask</slave>
        </group>

        <check name='valid_networknetmask' target='ad_ldap_clients_netmask'>
            <param type='eole'>ad_ldap_clients_ip</param>
        </check>

        <group master='ad_additional_share_name'>
            <slave>ad_additional_share_path</slave>
            <slave>ad_additional_share_comment</slave>
            <slave>ad_additional_share_browseable</slave>
            <slave>ad_additional_share_writeable</slave>
            <slave>ad_additional_share_create_mask</slave>
            <slave>ad_additional_share_directory_mask</slave>
            <slave>ad_additional_share_recycle</slave>
        </group>

        <condition name='disabled_if_in' source='activer_clam' fallback='True'>
            <param>non</param>
            <target type='variable'>activer_ad_share_scan</target>
        </condition>

        <condition name='disabled_if_in' source='activer_ad_share_scan'>
            <param>non</param>
            <target type='filelist'>ad_share_clamscan</target>
            <target type='variable'>ad_share_scan_when</target>
            <target type='variable'>ad_share_scan_hour</target>
            <target type='variable'>ad_share_scan_min</target>
            <target type='variable'>ad_share_scan_week_day</target>
            <target type='variable'>ad_share_scan_monthday</target>
            <target type='variable'>ad_share_scan_when_custom</target>
        </condition>
        <check name='valid_enum' target='ad_share_scan_when'>
            <param>['heures','jours', 'semaines', 'mois', 'personnalisé']</param>
        </check>
        <condition name='disabled_if_in' source='ad_share_scan_when'>
            <param>personnalisé</param>
            <target>ad_share_scan_hour</target>
            <target>ad_share_scan_min</target>
            <target>ad_share_scan_week_day</target>
            <target>ad_share_scan_monthday</target>
        </condition>
        <condition name='disabled_if_in' source='ad_share_scan_when'>
            <param>heures</param>
            <target>ad_share_scan_hour</target>
            <target>ad_share_scan_week_day</target>
            <target>ad_share_scan_monthday</target>
            <target>ad_share_scan_when_custom</target>
        </condition>
        <condition name='disabled_if_in' source='ad_share_scan_when'>
            <param>jours</param>
            <target>ad_share_scan_week_day</target>
            <target>ad_share_scan_min</target>
            <target>ad_share_scan_monthday</target>
            <target>ad_share_scan_when_custom</target>
        </condition>
        <condition name='disabled_if_in' source='ad_share_scan_when'>
            <param>semaines</param>
            <target>ad_share_scan_min</target>
            <target>ad_share_scan_monthday</target>
            <target>ad_share_scan_when_custom</target>
        </condition>
        <condition name='disabled_if_in' source='ad_share_scan_when'>
            <param>mois</param>
            <target>ad_share_scan_week_day</target>
            <target>ad_share_scan_min</target>
            <target>ad_share_scan_when_custom</target>
        </condition>
        <check name='valid_regexp' target='ad_share_scan_when_custom'>
            <param>^\s*((((\*/[0-9]+)|([0-9]+-[0-9]+/[0-9]+)|([0-9]+-[0-9]+)|([0-9]+(,[0-9]+)*)|(\*))(\s+(((\*/[0-9]+)|([0-9]+-[0-9]+/[0-9]+)|([0-9]+-[0-9]+)|([0-9]+(,[0-9]+)*)|(\*)))){4})|(@(reboot)|(yearly)|(annually)|(monthly)|(weekly)|(daily)|(midnight)|(hourly)))$</param>
            <param name='err_msg'>La programmation ne respecte pas le format accepté par cron</param>
        </check>

        <group master='ad_idmap_config_domain'>
            <slave>ad_idmap_config_backend</slave>
            <slave>ad_idmap_config_low</slave>
            <slave>ad_idmap_config_high</slave>
        </group>

        <group master='ad_allow_transfer_network'>
            <slave>ad_allow_transfer_netmask</slave>
        </group>

        <condition name='disabled_if_in' source='activer_ad_smb'>
            <param>non</param>
            <target type='filelist'>ad-files</target>
            <target type='filelist'>ad-dc-files</target>
            <target type='servicelist'>samba</target>
            <target type='family'>Active Directory</target>
        </condition>

        <!--
        Si serveur est n'est pas un DC alors les options additionnel (dc, ip, rodc, site) doivent être cachée.
        -->
        <condition name='disabled_if_not_in' source='ad_server_role'>
            <param>controleur de domaine</param>
            <target type='filelist'>ad-dc-files</target>
            <target type='variable'>ad_additional_dc</target>
            <target type='variable'>ad_additional_dc_ip</target>
        </condition>

        <condition name='disabled_if_in' source='ad_server_role'>
            <param>membre</param>
            <target type='servicelist'>samba</target>
            <target type='variable'>ad_internal_dns_backend</target>
            <target type='variable'>ad_backend_store</target>
            <target type='variable'>ad_plaintext_secrets</target>
        </condition>

        <condition name='disabled_if_in' source='ad_server_role'>
            <param>controleur de domaine</param>
            <target type='servicelist'>samba-membre</target>
            <target type='variable'>ad_idmap_config_auto</target>
        </condition>

        <condition name='disabled_if_in' source='ad_idmap_config_auto'>
            <param>oui</param>
            <target type='variable'>ad_idmap_config_domain</target>
            <target type='variable'>ad_idmap_config_tdb_low</target>
            <target type='variable'>ad_idmap_config_tdb_high</target>
        </condition>

        <condition name='disabled_if_in' source='ad_internal_dns_backend'>
            <param>oui</param>
            <target type='variable'>ad_allow_transfer_network</target>
        </condition>

        <fill name='extract_ad_domain_from_realm' target='ad_idmap_config_domain'>
            <param type='eole' name='realm'>ad_realm</param>
        </fill>
        <check name='valid_enum' target='ad_idmap_config_backend'>
            <param>['rid', 'autorid', 'ad', 'ldap', 'tdb', 'nss']</param>
        </check>

        <!--
        Si serveur additionnel alors on doit saisir un serveur de référence pour Sysvol.
        Il est nécessaire de connaitre le type de serveur distant
        -->
        <condition name='disabled_if_in' source="ad_additional_dc">
            <param>non</param>
            <target type='variable'>ad_dc_sysvol_ref</target>
            <target type='variable'>ad_dc_sysvol_type</target>
            <target type='variable'>ad_additional_dc_force_site</target>
            <target type='variable'>ad_ro_dc</target>
        </condition>

        <condition name='disabled_if_in' source="ad_additional_dc">
            <param>oui</param>
            <target type='variable'>ad_force_domain_sid</target>
        </condition>

        <condition name='disabled_if_in' source='ad_force_domain_sid'>
            <param>non</param>
            <target type='variable'>ad_domain_sid</target>
        </condition>

        <condition name='disabled_if_in' source='ad_internal_dns_backend'>
            <param>oui</param>
            <target type='servicelist'>bind9</target>
            <target type='filelist'>bind9</target>
        </condition>

        <condition name='disabled_if_in' source="ad_additional_dc_force_site">
            <param>non</param>
            <target type='variable'>ad_additional_dc_site</target>
        </condition>
        <fill name='calc_val' target='ad_additional_dc_site'>
            <param type='eole' name='valeur'>libelle_etab</param>
        </fill>

        <!--
        Si serveur additionnel et de type 'samba' (non eole) alors l'admin peut saisir une commande à executer sur le DC de référence (ad_dc_sysvol_post_join_cmd)
        -->
        <condition name='disabled_if_not_in' source="ad_dc_sysvol_type">
            <param>samba</param>
            <target type='variable'>ad_dc_sysvol_post_join_cmd</target>
        </condition>

        <fill name='calc_multi_condition' target='global_adresse_ip_dns_dhcp'>
            <param>membre</param>
            <param type="eole" name="condition_1" optional="True">ad_server_role</param>
            <param name='default_match'>None</param>
            <param type='eole' name='mismatch'>adresse_ip_eth0</param>
        </fill>

        <condition name='disabled_if_in' source='activer_ad_homes_share' fallback='True'>
            <param>non</param>
            <target type='variable'>ad_home_share_path</target>
            <target type='variable'>ad_homes_share_recycle</target>
        </condition>
        <condition name='disabled_if_in' source='activer_ad_homes_share'>
            <param>oui</param>
            <target type='variable'>ad_homes_share_host</target>
        </condition>

        <condition name='disabled_if_in' source='activer_ad_profiles_share' fallback='True'>
            <param>non</param>
            <target type='variable'>ad_profile_share_path</target>
        </condition>
        <condition name='disabled_if_in' source='activer_ad_profiles_share'>
            <param>oui</param>
            <target type='variable'>ad_profiles_share_host</target>
        </condition>

        <condition name='disabled_if_in' source='ad_additional_share' fallback='True'>
            <param>non</param>
            <target type='variable'>ad_additional_share_name</target>
        </condition>

        <condition name='disabled_if_in' source='ad_recycle_bin'>
            <param>non</param>
            <target type='filelist'>ad-recycle-files</target>
            <target type='variable'>ad_recycle_bin_dir</target>
            <target type='variable'>ad_recycle_bin_purge</target>
            <target type='variable'>ad_homes_share_recycle</target>
            <target type='variable'>ad_additional_share_recycle</target>
        </condition>

        <check name='valid_entier' target='ad_log_global_level'>
            <param name='mini'>0</param>
            <param name='maxi'>9</param>
        </check>
        <check name='valid_enum' target='ad_log_specific_event'>
            <param>['all','tdb','printdrivers','lanman','smb','smb2','mb2_credits','rpc_parse','rpc_srv','rpc_cli','passdb','sam','auth','winbind','vfs','idmap','quota','acls','locking','msdfs','dmapi','registry','scavenger','dns','ldb','tevent','auth_audit','auth_json_audit','kerberos','dsdb_json_audit','dsdb_password_json_audit','dsdb_transaction_audit','dsdb_transaction_json_audit']</param>
            </check>
        <check name='valid_entier' target='ad_log_specific_level'>
            <param name='mini'>0</param>
            <param name='maxi'>9</param>
        </check>
        <group master='ad_log_specific_event'>
            <slave>ad_log_specific_level</slave>
        </group>

    </constraints>

    <help>
        <family name='Active Directory'>Configuration du serveur Active Directory</family>
        <variable name='activer_ad_smb'>Faire de votre serveur un contrôleur de domaine ou un membre d'un domaine Active Directory</variable>
        <variable name="ad_realm">Nom complètement qualifié de la racine de la forêt Active Directory</variable>
        <variable name="ad_domain">Nom du domaine Active Directory</variable>
        <variable name="ad_server_netbios_name">Le nom NetBIOS est de type alphanumérique, excepté le premier caractère qui doit être de type alphabétique. Il doit comprendre entre 2 et 15 caractères</variable>
        <variable name="ad_server_role">Rôle du serveur (contrôleur de domain, serveur membre)</variable>
        <variable name="ad_additional_dc">Le serveur est un contrôleur de domaine qui sera joint à un domaine existant</variable>
        <variable name='ad_additional_dc_ip'>Selon la topologie de l'architecture AD, citer un ou deux contrôleurs de domaine qui auront des relations privilégiées avec ce contrôleur dans le cadre de la résolution DNS, du fonctionnent Kerberos et de la réplication AD.</variable>
        <variable name='ad_additional_dc_kdc'>Si le contrôleur identifié par l’adresse IP joue le rôle de serveur d’authentification, il servira dans le configuration de Kerberos.</variable>
        <variable name='ad_additional_dc_dns'>Si le contrôleur identifié par l’adresse IP joue le rôle de serveur DNS, il servira dans le configuration du service DNS.</variable>
        <variable name='ad_internal_dns_backend'>Utiliser le service interne de résolution de nom. Utiliser BIND sinon.</variable>
        <variable name='ad_allow_transfer_network'>Renseigner des IP ou sous-réseaux pour restreindre les machines autorisées à demander un transfert de zone auprès du serveur DNS BIND.</variable>
        <variable name='ad_additional_dc_force_site'>Forcer le positionnement dans un site Active Directory déclaré au préalable dans le contrôleur de domaine principal</variable>
        <variable name='ad_additional_dc_site'>Si cette variable est renseignée, alors ce contrôleur de domain sera placé dans le site correspondant. Ce site doit exister dans l'AD.</variable>
        <variable name='ad_filter_network'>Passer à oui pour permettre l’accès aux services AD aux seules IP déclarées (sinon, l’accès aux services AD n’est pas restreint).</variable>
        <variable name='ad_peer_ip'>Adresses réseau identifiant les clients et serveurs autorisées à se connecter aux services principaux de l’AD (LDAP excepté).</variable>
        <variable name='ad_ldap_clients_ip'>Le service LDAP peut être accessible à des postes autres que les serveurs et postes clients du domaine. Leur adresse IP est nécessaire pour ouvrir le pare-feu.</variable>
        <variable name='ad_custom_rpc_port'>Si aucun port n’est spécifié, le premier port libre de la plage 1024-5000 est utilisé.</variable>
        <variable name='ad_custom_netlogon_port'>Si aucun port n’est spécifié, le premier port libre de la plage 1024-5000 est utilisé.</variable>
        <variable name='ad_dc_sysvol_ref'>Adresse IP d’un contrôleur de domaine utilisé comme référence SYSVOL</variable>
        <variable name='ad_dc_sysvol_type'>Type de contrôleur de domaine utilisé comme référence SYSVOL</variable>
        <variable name='ad_dc_sysvol_post_join_cmd'>Saisir le chemin complet du script 'distant' à exécuter aprés la jonction sur le DC de référence</variable>
        <variable name='ad_idmap_config_auto'>Utiliser la configuration par défaut du calcul des identifiants à partir du rid (idmap config *:backend = autorid)</variable>
        <variable name='ad_idmap_config_domain'>Domaine pour lequel configurer la méthode de calcul des identifiants</variable>
        <variable name='ad_idmap_config_backend'>Méthode de calcul des identifiants</variable>
        <variable name='ad_idmap_config_low'>Limite basse de la plage des ID réservés pour le domaine</variable>
        <variable name='ad_idmap_config_high'>Limite haute de la plage des ID réservés pour le domaine</variable>
        <variable name='ad_idmap_config_tdb_low'>Limite basse de la plage des ID réservés pour le backend idmap tdb</variable>
        <variable name='ad_idmap_config_tdb_high'>Limite haute de la plage des ID réservés pour le backend idmap tdb</variable>
        <variable name='ad_force_domain_sid'>Forcer le SID est utile dans le cas d’une migration Samba NT vers AD</variable>
        <variable name='ad_domain_sid'>Dans le cas d'une migration Samba NT, cette valeur permet d'initialiser l'AD avec le SID choisi</variable>
        <variable name='ad_home_share_path'>Répertoire de destination des dossiers personnels des utilisateurs de l'AD</variable>
        <variable name='activer_ad_zones'>Créer les zones de DNS Inverse dans l'AD</variable>
        <variable name='ad_zones_defaut'>Créer les zones de résolutions DNS Inversées d'après la configuration réseau</variable>
        <variable name='ad_zones'>Liste des zones à créer (sans in-addr.arpa, ex.: 0.168.192)</variable>
        <variable name="activer_ad_homes_share">Créer le partage hébergeant les dossiers personnels (Home Directory) des utilisateurs</variable>
        <variable name="activer_ad_profiles_share">Créer les partages hébergeant le dossiers contenant les profils Windows (Profile Path) des utilisateurs</variable>
        <variable name="ad_recycle_bin">Charger le module VFS recycle pour permettre d’utiliser les fonctionnalités de corbeilles dans les partages (activées au cas par cas)</variable>
        <variable name='activer_ad_share_scan'>L’activation de l’analyse antivirale des répertoires partagés configure ClamAV pour l’analyse programmée de tous les répertoires partagés par Samba.</variable>
        <variable name='ad_share_scan_when'>Périodicité de l’analyse anti-virus des répertoires partagés (horaire, quotidien, hebdomadaire, mensuel, personnalisée)</variable>
        <variable name='ad_share_scan_hour'>Heure de début de l’analyse anti-virus des répertoires partagés au format H:MM</variable>
        <variable name='ad_share_scan_min'>Minute de début des analyses anti-virus des répertoires partagés</variable>
        <variable name='ad_share_scan_week_day'>Jour de la semaine pendant lequel l'analyse anti-virus des répertoires partagés doit être lancée</variable>
        <variable name='ad_share_scan_monthday'>Jour du mois pendant lequel l'analyse anti-virus des répertoires partagés doit être lancée</variable>
        <variable name='ad_share_scan_when_custom'>Configuration crontab brute (attention si la configuration n'est pas valide la ligne ne sera pas écrite)</variable>
        <variable name='ad_hash_sha_256'>Les empreintes seront générées après le prochain changement de mot de passe</variable>
        <variable name='ad_hash_sha_512'>Les empreintes seront générées après le prochain changement de mot de passe</variable>
        <variable name='ad_backend_store'>Le backend TDB est le format par défaut de Samba. Le backend MDB est expérimental mais permet de gérer plus d'objets dans l’AD</variable>
        <variable name='ad_plaintext_secrets'>Les attributs sensibles doivent être chiffrés. Cependant, certains outils externes (synchronisation) nécessitent des mots de passe en clair.</variable>

    </help>

</creole>
