\begin{frame}
 \frametitle{Création de patch}
 \begin{itemize}
  \item Génération normal : /usr/share/eole/creole/distrib => /etc
  \item Génération avec patch : /usr/share/eole/creole/distrib + /usr/share/eole/creole/patch => /var/lib/creole => /etc
  \item Créer un patch :
  \begin{itemize}
   \item copie du fichier original /usr/share/eole/creole/distrib => /usr/share/eole/creole/modif ;
   \item modification du fichier dans /usr/share/eole/creole/modif ;
   \item exécution "gen\_patch" ;
   \item reconfiguration.
  \end{itemize}
  \item Désactiver un patch : supprimer le fichier dans /usr/share/eole/creole/patch.
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Pratique}
  \begin{itemize}
   \item ClamAV à le paramètre suivant : LogFileMaxSize 2M ;
   \item il faut la valeur 10M.
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Ajout de dictionnaires locaux}
  \begin{itemize}
   \item Permet d'ajouter des spécificités ou de nouveau template ;
   \item les dictionnaires locaux sont dans /usr/share/eole/creole/dicos/local/ ;
   \item les templates locaux sont dans /usr/share/eole/creole/distrib/ ;
   \item un dictionnaire est un fichier XML Creole ;
   \item un template utilise le langage de template Creole.
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Syntaxe XML Creole}
 \begin{itemize}
  \item Entête XML : <?xml version="1.0" encoding="utf-8"?> ;
  \item Première balise <creole></creole>
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Syntaxe XML Creole : conteneur}
 \begin{itemize}
  \item master : <files>, slave <containers><container name='\ldots' id='\ldots' groupe='\ldots'> ;
  \item fichier template : <file name="\ldots" \ldots/> :
  \begin{itemize}
   \item name (obligatoire) : nom du fichier template ;
   \item source : si le nom de fichier source est différent de la destination ;
   \item mode, owner, group : droits sur fichier appliquer au fichier ;
   \item mkdir : création du répertoire de destination si nécessaire.
  \end{itemize}
  \item service : <service method='service|upstart|apache'>\ldots</service> ;
  \item package : <package>\ldots</package>.
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Syntaxe XML Creole : variable}
 \begin{itemize}
  \item Ensemble de famille et séparateur : <variables></variables> ;
  \begin{itemize}
   \item Famille de variables : <family name='' [mode=''] [hidden='']></family> :
   \begin{itemize}
    \item Les variables <variable name='' type='' description='' [multi='True'] [hidden='True']/> :
    \item Les variables <variable name='' type='' description='' [multi='True'] [hidden='True']><value> ... </value></variable> :
   \end{itemize}
   \item Les séparateurs <separator></separator> :
   \begin{itemize}
    \item name : nom de variable en dessous du séparateur ;
    \item description affiché à l'intérieur de la balise.
   \end{itemize}
  \end{itemize}
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Syntaxe XML Creole : contrainte}
 \begin{itemize}
  \item Le contraintes : <constraints></constraints> : pour tester/remplir/grouper/conditionner des variables ;
  \begin{itemize}
   \item calcul automatique avec fonction personnalisé : <fill><param></param>...</fill> ;
   \item calcul automatique non modifiable <auto></auto> ;
   \item choix de réponse <check name='valid\_enum' target='var'><param>...</param></check> ;
   \item cacher des variables suivant des contraintes <condition name='hidden\_if\_in|hidden\_if\_not\_in' source='var'>...</condition> :
   \begin{itemize}
    \item valeur de la variable testé : <param>...</param> ;
    \item affecte <target type='family|filelist|servicelist|...'>nom</target> :
   \end{itemize}
   \item Lien entre variable : <group master='var'>...</group> :
   \begin{itemize}
    \item si le maître à une valeur, les autres aussi ;
    \item si le maître est multi-évalué, les autres aussi ;
    \item les esclaves : <slave></slave>.
   \end{itemize}
  \end{itemize}
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Syntaxe XML Creole : aide}
  \begin{itemize}
   \item Afficher de l'aide dans l'interface : <help></help>.
  \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Pratique}
 \begin{itemize}
  \item Installer le paquet ircd-irc2 ;
  \item ajouter un service ;
  \item dans la famille "services" ajouter la variable "activate\_ircd" ayant pour valeur possible "oui" et "non" ;
  \item tester gen\_config.
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Langague de template Creole}
  \begin{itemize}
   \item Variable Creole préfixé par \begin{semiverbatim}\%\%\end{semiverbatim}
   \item Test : \begin{semiverbatim}\%if EXPRESSION   code if   \%else   code else   \%end if\end{semiverbatim}
   \item Boucle : \begin{semiverbatim}\%for \%\%i in EXPRESSION    hello \%\%i  \%end for\end{semiverbatim}
   \item Boucle pour variable multi évolué avec esclave : \begin{semiverbatim}\%for \%\%var in \%\%variablemaitre\end{semiverbatim}\begin{semiverbatim}\%\%var, \%\%var.esclave1, \%\%var.esclave2\end{semiverbatim}\begin{semiverbatim}\%end for\end{semiverbatim}
  \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Langague de template Creole}
  \begin{itemize}
   \item Test existance : \begin{semiverbatim}\%if \%\%is\_defined('variable')    code if   \%end if\end{semiverbatim}
   \item valeur vide : \begin{semiverbatim}\%if \%\%is\_empty(\%\%variable)    code if   \%end if\end{semiverbatim}
   \item nom de variable dans une variable : \begin{semiverbatim}\%set \%\%var='adresse\_ip\_eth0' \%\%getVar(\%\%var)\end{semiverbatim}
  \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Pratique 1}
 \begin{itemize}
  \item Installer phpldapadmin ;
  \item créer un dicos pour demander l'activation ou non (variable "activate\_phpldapadmin") ;
  \item si oui, activer une nouvelle famille "phpldapadmin" ;
  \item demander l'adresse IP (phpldapadmin\_host) et le nom du serveur (phpldapadmin\_name) ;
  \item copier les templates /etc/phpldapadmin/config.php et /etc/phpldapadmin/apache.conf dans /usr/share/eole/creole/distrib/ ;
  \item le template config.php sera renommé en phpldapadmin.php ;
  \item si le nom n'est pas spécifié, le serveur : "Serveur LDAP" ;
  \item tester sans reconfigurer : CreoleCat -o config.php /usr/share/eole/creole/distrib/phpldapadmin.php
 \end{itemize}
\end{frame}

\begin{frame}
 \frametitle{Pratique 2}
 \begin{itemize}
  \item Ajouter la possibilité d'activer ou non le TLS ;
  \item possibilité d'ajouter plusieurs serveurs.
 \end{itemize}
\end{frame}

