<?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-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-files'
            name='/usr/share/eole/bastion/data/90-samba_dynamic_rules'
            mode='0755'
            rm='True'/>
        <file name='/etc/nsswitch.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>

    </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' auto_freeze='True' redefine='True'/>
        </family>

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

        </family>

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

            <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_domain_sid" type="string" mode="expert"
                description="Imposer le SID du domaine AD à son initialisation">
            </variable>

            <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">
                <value>non</value>
            </variable>

            <variable name="ad_ro_dc" type="oui/non" mode="expert"
                description="Paramétrer le contrôleur en lecture seule">
                <value>non</value>
            </variable>

            <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'/>
            <variable name='ad_additional_dc_ip' type='ip'
                description="Adresse IP des contrôleurs de domaine faisant partie du même domaine Active Directory"
                multi='True'>
            </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_servers_ip' type='ip' description='Adresses IP des serveurs autorisés à se connecter' multi='True' mode='expert'/>
            <variable name='ad_servers_netmask' type='netmask' description='Masque de sous-réseau' multi='True' mode='expert'/>

            <variable name='ad_clients_ip' type='ip' description='Réseaux autorisés à se connecter aux services Samba' multi='True' mode='expert'/>
            <variable name='ad_clients_netmask' type='netmask' description='Masque de sous-réseau' mode='expert'/>

            <variable name='ad_ldap_clients_ip' type='ip' description='Adresses IP autorisées à se connecter 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'>
                <value>non</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>

        </family>

        <separators>
            <separator name='ad_server_role'>Rôle du serveur Active Directory</separator>
            <separator name='ad_additional_dc_ip'>Environnement réseau</separator>
            <separator name='ad_recycle_bin'>Partages</separator>
        </separators>

    </variables>

    <constraints>

        <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>

        <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>

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

        <condition name='disabled_if_not_in' source='ad_server_role'>
            <param>controleur de domaine</param>
            <target type='variable'>ad_additional_dc</target>
            <!--Cette variable est hidden pour l'instant...
            <target type='variable'>ad_ro_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>
        </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>
        <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>

        <condition name='disabled_if_in' source="ad_additional_dc">
            <param>non</param>
            <target type='variable'>ad_dc_sysvol_ref</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_domain_sid</target>
        </condition>

        <fill name='calc_multi_condition' target='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>

        <group master='ad_clients_ip'>
            <slave>ad_clients_netmask</slave>
        </group>

        <group master='ad_servers_ip'>
            <slave>ad_servers_netmask</slave>
        </group>

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

        <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>
        <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>
        <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>

    </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_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'>Les contrôleurs de domaine (DC) doivent connaitre les adresses IP des autres DC faisant partie du même domaine AD pour avoir une liste bien ordonnée des DNS</variable>
        <variable name='ad_servers_ip'>Les adresses IP des serveurs sont nécessaires pour l’ouverture des ports sur le pare-feu</variable>
        <variable name='ad_clients_ip'>Les adresses IP des postes sont nécessaires pour l’ouverture des ports sur le pare-feu</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_dc_sysvol_ref'>Adresse IP d’un contrôleur de domaine utilisé comme référence SYSVOL</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_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_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>
    </help>

</creole>
