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

<creole>

    <containers>
        <all>
            <host hostlist='web' name='web_url' ip='adresse_ip_br0' instance_mode='when_container'
                  comment='Serveur web sur l’IP eth0' />
        </all>

        <container name='web' id='15'>
            <package>eole-web-pkg</package>
            <service servicelist='apache'>apache2</service>
            <!-- si eole-reverseproxy c'est eole-reverseproxy qui à raison -->
            <service_access service="nil">
                <port>80</port>
                <port>443</port>
            </service_access>
            <!-- gestion des sites apache attention pas de 000-default comme pour a2ensite -->
            <service method='apache' servicelist='apache'>default</service>
            <service method='apache' servicelist='apache'>Vhost</service>
            <service method='apache' servicelist='apache'>Vhost-ssl</service>
            <service method='apache' servicelist='apache'>eole</service>
            <!-- fichiers de configuration apache -->
            <file name='/etc/apache2/ports.conf'/>
            <file filelist='apache' name='/etc/apache2/apache2.conf'/>
            <file filelist='apache' name='/etc/apache2/conf-available/security.conf' source='apache-security'/>
            <file name='/etc/apache2/sites-available/default' source='apache-default'/>
            <file name='/etc/apache2/sites-available/eole' source='apache-eole.conf'/>
            <file name='/etc/apache2/sites-available/Vhost' source='Vhost.conf'/>
            <file name='/etc/apache2/sites-available/Vhost-ssl' source='Vhost-ssl.conf'/>
            <file filelist='apache' name='/etc/php/8.1/apache2/php.ini' del_comment=';'/>
            <file filelist='apache' name='/etc/php/8.1/cli/php.ini' source='php-cli.ini' del_comment=';'/>
            <file filelist='apache' name='/etc/php/8.1/mods-available/eole.ini' source='php-eole.ini'/>
            <file filelist='apache' name='/etc/apache2/mods-available/mpm_prefork.conf'/>
            <!-- apache derrière un reverseproxy-->
            <file filelist='remoteip' name='/etc/apache2/mods-available/remoteip.conf'/>
            <file filelist='ssoclient' name='/usr/share/php/configCAS/cas.inc.php' source='cas.inc.php.tmpl' mkdir='True'/>
            <file filelist='ssoclient' name='/usr/share/php/CAS/eoleCASConfig.php' source='eoleCASConfig.php.tmpl' mkdir='True'/>
        </container>
    </containers>

    <variables>
        <family name='général'>
            <variable name='envole_update_mirrors' type='domain' description='Serveur de mise à jour Envole' multi='True' mandatory='True' mode='expert' />
        </family>
        <family name='services'>
            <variable name='activer_apache' type='oui/non' description="Activer le serveur web Apache" >
                <value>oui</value>
            </variable>
        </family>
        <family name='applications web' icon='php-alt'>
            <variable name='envole_version' type='string' description="Numéro de version majeure d’Envole" hidden="True" />
            <variable name='default_php_version' type='string' description="Version de PHP par défaut" hidden="True">
                <value>8.1</value>
            </variable>
            <variable name='web_url' type='domain_strict' description="Nom de domaine des applications web (sans http://)" mandatory='True' auto_freeze='True'/>
            <!-- pré-déclaration pour ordonnancement des variables -->
            <variable name='force_envole' type='oui/non' description='Utiliser Envole comme application par défaut en frontal' hidden='True'>
                <value>non</value>
            </variable>
            <variable name='web_redirection' type='filename' description='Application web par défaut (redirection)' mandatory='True' />
            <variable name='activer_web_behind_revproxy' type='oui/non' description="Le serveur web est derrière un reverse proxy">
                <value>non</value>
            </variable>
            <variable name='web_behind_revproxy_ip' type='ip' description="Adresse IP du serveur reverse proxy" mandatory='True'/>
            <variable name='activer_web_valider_ca' type='oui/non' mode='expert' description="Activer la vérification de l'autorité de certification pour les applications web cassifiées">
                <value>non</value>
            </variable>
            <variable name='apache_cert' type='filename' mode='expert' description="Certificat utilisé par apache"/>
        </family>
        <family name='apache' mode='expert' icon='apache'>
            <variable name='apache_plus' type='oui/non' description="Déclarer des applications web supplémentaires" >
                <value>non</value>
            </variable>
            <variable name='apache_dir' type='filename' description="Chemin complet l'application (exemple : /var/www/html/appli)" multi='True' mandatory='True'/>
            <variable name='apache_alias' type='filename' description="Alias de l'application (exemple : /appli)" mandatory='True'/>
            <variable name='apache_directory_index' type='filename' description="Fichier à rechercher lorsqu'un client envoie une requête pour l'index d'un répertoire">
                <value>index.php</value>
            </variable>

            <variable name='apache_lister_repertoires' type='oui/non' description="Permettre de lister les répertoires et leur contenu">
                <value>non</value>
            </variable>
            <variable name='apache_timeout' type='number' description="Temps en secondes pendant lequel le serveur va attendre des entrées/sorties avant de considérer qu'une requête a échoué">
                <value>300</value>
            </variable>
            <variable name='apache_keepalive' type='string' description="Autoriser les connexions persistantes">
                <value>On</value>
            </variable>

            <variable name='mpm_startservers' type='number' description="Nombre de processus enfants du serveur créés au démarrage">
                <value>5</value>
            </variable>
            <variable name='mpm_minspareservers' type='number' description="Nombre minimum de processus serveurs enfants inactifs">
                <value>5</value>
            </variable>
            <variable name='mpm_maxspareservers' type='number' description="Nombre maximum de processus serveurs enfants inactifs">
                <value>10</value>
            </variable>
            <variable name='mpm_maxrequestworkers' type='number' description="Nombre maximum de connexions pouvant être traitées simultanément">
                <value>150</value>
            </variable>
            <variable name='mpm_maxconnectionsperchild' type='number' description="Nombre maximum de connexions qu'un processus enfant va traiter au cours de son fonctionnement">
                <value>0</value>
            </variable>

            <variable name='php_post_max_size' type='number' description="Taille maximale des données reçues par la méthode POST (en Mo)">
                <value>32</value>
            </variable>
            <variable name='php_upload_max_filesize' type='number' description="Taille maximale d'un fichier à charger (en Mo)">
                <value>16</value>
            </variable>
            <variable name='php_max_execution_time' type='number' description="Temps maximal d'exécution d'un script (en secondes)">
                <value>30</value>
            </variable>
            <variable name='php_max_input_time' type='number' description="Durée maximale pour analyser les données d'entrée (en secondes)">
                <value>60</value>
            </variable>
            <variable name='php_memory_limit' type='number' description="Taille mémoire maximale qu'un script est autorisé à allouer (en Mo)">
                <value>512</value>
            </variable>
            <variable name='php_display_errors' type='string' description="Affichage des erreurs à l'écran">
                <value>Off</value>
            </variable>
            <variable name='php_session_gc_maxlifetime' type='number' description="Durée de vie des données sur le serveur (en secondes)">
                <value>3600</value>
            </variable>
            <variable name='php_browscap' type='oui/non' description="Activer la directive de configuration browscap" >
                <value>non</value>
            </variable>
        </family>
        <separators>
            <separator name='apache_plus'>Applications supplementaires</separator>
            <separator name='apache_lister_repertoires'>Configuration Apache</separator>
            <separator name='php_post_max_size'>Configuration PHP</separator>
        </separators>
    </variables>

    <constraints>

        <auto name='get_version' target='envole_version'>
            <param>ENVOLE_VERSION</param>
        </auto>

        <fill name='auto_copy_val' target='envole_update_mirrors'>
          <param type='eole'>serveur_maj</param>
        </fill>

        <fill name='calc_webredirection' target='web_redirection'>
          <param type='eole' name="roundcube" optional="True" hidden="False">activer_roundcube</param>
          <param type='eole' name="force_envole" optional="True" hidden="False">force_envole</param>
        </fill>
        <check name='check_file_size_limit' target='exim_message_size_limit' level='warning'>
            <param type='eole' hidden='False'>php_upload_max_filesize</param>
        </check>
        <check name='valid_enum' target='apache_keepalive'>
            <param>['On','Off']</param>
        </check>
        <check name='valid_enum' target='php_display_errors'>
            <param>['On','Off']</param>
        </check>
        <check name='valid_regexp' target='web_redirection'>
            <param>^/</param>
            <param name='err_msg'>Les alias doivent débuter par un "/"</param>
        </check>
        <check name='valid_regexp' target='apache_alias'>
            <param>^/</param>
            <param name='err_msg'>Les alias doivent débuter par un "/"</param>
        </check>
        <check name='valid_enum' target='apache_directory_index'>
            <param>['index.php', 'index.html']</param>
            <param name="checkval">False</param>
        </check>

        <group master='apache_dir'>
            <slave>apache_alias</slave>
            <slave>apache_directory_index</slave>
        </group>

        <condition name='disabled_if_in' source='activer_web_behind_revproxy'>
            <param>non</param>
            <target type="filelist">remoteip</target>
            <target type='variable'>web_behind_revproxy_ip</target>
        </condition>
        <condition name='disabled_if_in' source='activer_apache'>
            <param>non</param>
            <target type='servicelist'>apache</target>
            <target type='filelist'>apache</target>
            <target type='family'>apache</target>
            <target type='family'>applications web</target>
            <target type='hostlist'>web</target>
        </condition>
        <condition name='disabled_if_in' source='apache_plus'>
            <param>non</param>
            <target type='variable'>apache_dir</target>
            <target type='variable'>apache_alias</target>
        </condition>
        <fill name='calc_val' target='apache_cert'>
            <param type='eole' name='valeur'>server_full_chain_pem</param>
        </fill>

    </constraints>

    <help>
        <family name='applications web'>Paramètrage et gestion des applications web</family>
        <family name='apache'>Paramètrage avancé du serveur web Apache</family>
        <variable name='activer_apache'>Apache un serveur HTTP</variable>
        <variable name='web_redirection'>Application proposée par défaut lors de l'accès du serveur web</variable>
        <variable name='web_url'>Nom de domaine de votre établissement ex : etablissement.ac-acad.fr</variable>
        <variable name='default_php_version'>Version de PHP appelée via la commande php et configurée via update-alternatives</variable>
        <variable name='mpm_maxrequestworkers'>Si la limite MaxRequestWorkers est atteinte, toute tentative de connexion sera normalement mise dans une file d'attente</variable>
        <variable name='mpm_maxspareservers'>S'il y a plus de MaxSpareServers processus inactifs, le processus parent arrêtera les processus excédentaires</variable>
        <variable name='mpm_maxconnectionsperchild'>Si MaxConnectionsPerChild est définie à 0, il n'y a plus aucune limite sur le nombre de connexions que le processus pourra traiter</variable>
        <variable name='php_browscap'>La directive de configuration browscap permet d'obtenir plus d'information sur les capacités du navigateur client grâce à la fonction get_browser()</variable>
    </help>

</creole>
<!-- vim: ts=4 sw=4 expandtab
-->
