2016-04-21 17:00:48 +02:00
\documentclass [a4paper,11pt] { report}
\usepackage { ifxetex}
\ifxetex
%\usepackage{fontspec}
%\usepackage{xunicode}
\usepackage { xltxtra}
\defaultfontfeatures { Mapping=tex-text} % To support LaTeX quoting style
\setmainfont { Caviar Dreams}
\else
\usepackage [utf8] { inputenc}
\usepackage [T1] { fontenc}
\usepackage { amsfonts}
\fi
\usepackage { pifont}
\usepackage { geometry}
\usepackage { fancybox}
\usepackage { verbatim}
\usepackage { eurosym}
\usepackage [english, francais] { babel}
\usepackage { listings}
\usepackage { color}
\usepackage { graphicx}
\usepackage { hyperref}
\usepackage { titlesec}
\usepackage { fancyhdr}
\usepackage { lastpage}
2016-04-27 11:54:37 +02:00
\usepackage { minted}
2016-04-21 17:00:48 +02:00
\setlength { \hoffset } { -18pt}
\setlength { \oddsidemargin } { 0pt} % Marge gauche sur pages impaires
\setlength { \evensidemargin } { 9pt} % Marge gauche sur pages paires
\setlength { \marginparwidth } { 54pt} % Largeur de note dans la marge
\setlength { \textwidth } { 481pt} % Largeur de la zone de texte (17cm)
\setlength { \voffset } { -18pt} % Bon pour DOS
\setlength { \marginparsep } { 7pt} % Séparation de la marge
\setlength { \topmargin } { 0pt} % Pas de marge en haut
\setlength { \headheight } { 13pt} % Haut de page
\setlength { \headsep } { 10pt} % Entre le haut de page et le texte
\setlength { \footskip } { 27pt} % Bas de page + séparation
\setlength { \textheight } { 708pt} % Hauteur de la zone de texte (25cm)
2016-04-27 11:54:37 +02:00
\definecolor { bg} { rgb} { 0.9,0.9,0.9}
2016-04-21 17:00:48 +02:00
% TITRE DU DOCUMENT !
2016-04-27 11:54:37 +02:00
\title { Corrigé des exercices : intégration de ircd-irc2 dans EOLE}
2016-04-21 17:00:48 +02:00
%\date{}
\begin { document}
\maketitle
\normalsize
\vspace { 2cm}
\textbf { Rédacteurs :}
\begin { itemize}
\item Emmanuel Garette (egarette@cadoles.com)
\item Vincent Febvre (vfebvre@cadoles.com) \newline
\end { itemize}
\vspace { 2cm}
\textbf { Version} : 1.0 \newline
\chapter { Création d'un dictionnaire vierge}
Le répertoire des dictionnaires personnalisés local est dans /usr/share/eole/creole/local.
Créé un fichier en suivant les conventions suivantes :
\begin { itemize}
\item deux chiffres en préfix
\item le séparateur \_
\item le nom du projet
\item l'extention .xml
\end { itemize}
Créer le fichier 00\_ ircd.xml avec la structure de base suivante :
2016-04-27 11:54:37 +02:00
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
</files>
<variables>
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Installation du paquet et gestion du service}
Le logiciel doit s'installer à l'instanciation du serveur et le service doit être géré par EOLE :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<package>ircd-irc2</package>
<service>ircd-irc2</service>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</files>
<variables>
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Ouverture du firewall et tcpwrapper}
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
<service>ircd-irc2</service>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</files>
<variables>
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Activation/désactivation du service}
Ajouter une variable pour activer/désactiver le service :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
<service>ircd-irc2</service>
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
</files>
<variables>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<family name='services'>
2016-04-27 11:54:37 +02:00
<variable name='activer_ ircd' type='oui/non'
description="Activer le serveur IRC" >
2016-04-21 17:00:48 +02:00
<value>oui</value>
</variable>
</family>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Ajout du template}
Le fichier de configuration du service doit être "templatiser" par EOLE :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
<service>ircd-irc2</service>
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<file name='/etc/ircd/ircd.conf'/>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</files>
<variables>
<family name='services'>
2016-04-27 11:54:37 +02:00
<variable name='activer_ ircd' type='oui/non'
description="Activer le serveur IRC" >
2016-04-21 17:00:48 +02:00
<value>oui</value>
</variable>
</family>
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Ajout des variables}
Dans le template nous allons utiliser des variables définis dans le dictionnaire. Nous allons ajouter les variable pour configurer les M line et les K line :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
<service>ircd-irc2</service>
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
<file name='/etc/ircd/ircd.conf'/>
</files>
<variables>
<family name='services'>
2016-04-27 11:54:37 +02:00
<variable name='activer_ ircd' type='oui/non'
description="Activer le serveur IRC" >
2016-04-21 17:00:48 +02:00
<value>oui</value>
</variable>
</family>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<family name='ircd'>
<variable name='ircd_ domaine' type='domain'
2016-04-27 11:54:37 +02:00
description="Nom de domaine utilisé pour accéder au serveur IRC"/>
<variable name='ircd_ libelle' type='string'
description="Libellé du serveur IRC"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ port' type='port' description="Port du serveur IRC"
2016-04-27 11:54:37 +02:00
mode='expert'>
2016-04-21 17:00:48 +02:00
<value>6667</value>
</variable>
<variable name='ircd_ banned_ hostname' type='domain'
2016-04-27 11:54:37 +02:00
description="Hote banni sur le serveur IRC" multi="True"
mandatory="True"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ banned_ comment' type='string'
2016-04-27 11:54:37 +02:00
description="Motif du bannissement du serveur IRC">
2016-04-21 17:00:48 +02:00
<value>Vous êtes banni, contacter votre administrateur</value>
</variable>
</family>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</variables>
<constraints>
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
\chapter { Désactivation des éléments}
Si "activer\_ ircd" est à "non" le service ne devrait plus être démarré, la famille ne doit plus être accessible et le fichier de configuration ne doit plus être généré :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<service servicelist="ircd">ircd-irc2</service>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<file filelist="ircd" name='/etc/ircd/ircd.conf'/>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</files>
<variables>
<family name='services'>
2016-04-27 11:54:37 +02:00
<variable name='activer_ ircd' type='oui/non'
description="Activer le serveur IRC" >
2016-04-21 17:00:48 +02:00
<value>oui</value>
</variable>
</family>
<family name='ircd'>
<variable name='ircd_ domaine' type='domain'
2016-04-27 11:54:37 +02:00
description="Nom de domaine utilisé pour accéder au serveur IRC"/>
<variable name='ircd_ libelle' type='string'
description="Libellé du serveur IRC"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ port' type='port' description="Port du serveur IRC"
2016-04-27 11:54:37 +02:00
mode='expert'>
2016-04-21 17:00:48 +02:00
<value>6667</value>
</variable>
<variable name='ircd_ banned_ hostname' type='domain'
2016-04-27 11:54:37 +02:00
description="Hote banni sur le serveur IRC" multi="True"
mandatory="True"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ banned_ comment' type='string'
2016-04-27 11:54:37 +02:00
description="Motif du bannissement du serveur IRC">
2016-04-21 17:00:48 +02:00
<value>Vous êtes banni, contacter votre administrateur</value>
</variable>
</family>
</variables>
<constraints>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<condition name='disabled_ if_ in' source='activer_ ircd'>
<param>non</param>
<target type='filelist'>ircd</target>
<target type='servicelist'>ircd</target>
<target type='family'>ircd</target>
</condition>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</constraints>
<help>
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
2016-04-21 17:00:48 +02:00
2016-04-27 11:54:37 +02:00
\chapter { Test du dictionnaire}
2016-04-21 17:00:48 +02:00
Lancer gen\_ config.Dans l'onglet service tester si l'onglet "Ircd" disparait bien si "Activer le serveur IRC" est à "non" et réapparait si la valeur est à "oui".
Renseigner la valeur de la variable "Nom de domaine utilisé pour accéder au serveur IRC" à "localhost.localdomaine".
2016-04-27 11:54:37 +02:00
\chapter { Ajout d'aide à la variable d'activation}
2016-04-21 17:00:48 +02:00
Ajouter de l'aide sur la variable activer\_ ircd :
2016-04-27 11:54:37 +02:00
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<package>ircd-irc2</package>
<service servicelist="ircd">ircd-irc2</service>
<service_ access service='ircd-irc2'>
<port port_ type="SymLinkOption">ircd_ port</port>
</service_ access>
<file filelist="ircd" name='/etc/ircd/ircd.conf'/>
</files>
<variables>
<family name='services'>
2016-04-27 11:54:37 +02:00
<variable name='activer_ ircd' type='oui/non'
description="Activer le serveur IRC" >
2016-04-21 17:00:48 +02:00
<value>oui</value>
</variable>
</family>
<family name='ircd'>
<variable name='ircd_ domaine' type='domain'
2016-04-27 11:54:37 +02:00
description="Nom de domaine utilisé pour accéder au serveur IRC"/>
<variable name='ircd_ libelle' type='string'
description="Libellé du serveur IRC"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ port' type='port' description="Port du serveur IRC"
2016-04-27 11:54:37 +02:00
mode='expert'>
2016-04-21 17:00:48 +02:00
<value>6667</value>
</variable>
<variable name='ircd_ banned_ hostname' type='domain'
2016-04-27 11:54:37 +02:00
description="Hote banni sur le serveur IRC" multi="True"
mandatory="True"/>
2016-04-21 17:00:48 +02:00
<variable name='ircd_ banned_ comment' type='string'
2016-04-27 11:54:37 +02:00
description="Motif du bannissement du serveur IRC">
2016-04-21 17:00:48 +02:00
<value>Vous êtes banni, contacter votre administrateur</value>
</variable>
</family>
</variables>
<constraints>
<condition name='disabled_ if_ in' source='activer_ ircd'>
<param>non</param>
<target type='filelist'>ircd</target>
<target type='servicelist'>ircd</target>
<target type='family'>ircd</target>
</condition>
</constraints>
<help>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} [bgcolor=bg]{ xml}
2016-04-21 17:00:48 +02:00
<variable name="activer_ ircd">Cette variable permet d'activer un serveur IRC</variable>
2016-04-27 11:54:37 +02:00
\end { minted}
\begin { minted} { xml}
2016-04-21 17:00:48 +02:00
</help>
</creole>
2016-04-27 11:54:37 +02:00
\end { minted}
\chapter { Création du template}
Si le variable pour activer le serveur est maintenant bien présente, le service n'est toujours pas fonctionnel.
En effet, il faut configurer l'application avec les informations fournis par l'utilisateur.
Pour cela, nous allons créé le template /usr/share/eole/creole/distrib/ircd.conf :
\begin { otherlanguage} { english}
\begin { minted} { cpp}
# This is ircd's config-file. Look at
# /usr/share/doc/ircd-irc2/ircd.conf.example.gz and
# and /usr/share/doc/ircd-irc2/INSTALL.* for more detailled information
# and instructions
# A-Line
A:Default:Default file:Welcome::ExampleNet
# Y-Lines
Y:1:90::100:512000:5.5:100.100
Y:2:90::300:512000:5.5:250.250
# I-Line
I:*:::0:1
I:127.0.0.1/32:::0:1
# P-Line
P::::6667:
\end { minted}
\end { otherlanguage}
\chapter { Configuration général du service}
L'utilisateur a renseigner un domaine, un label et un port pour IRCD. Il faut maintenant en tenir compte :
\begin { otherlanguage} { english}
\begin { minted} { cpp}
# This is ircd's config-file. Look at
# /usr/share/doc/ircd-irc2/ircd.conf.example.gz and
# and /usr/share/doc/ircd-irc2/INSTALL.* for more detailled information
# and instructions
\end { minted}
\begin { minted} [bgcolor=bg]{ cpp}
# M-Line
M:%%ircd_domaine::%%ircd_libelle:%%ircd_port:000A
\end { minted}
\begin { minted} { cpp}
# A-Line
A:Default:Default file:Welcome::ExampleNet
# Y-Lines
Y:1:90::100:512000:5.5:100.100
Y:2:90::300:512000:5.5:250.250
# I-Line
I:*:::0:1
I:127.0.0.1/32:::0:1
# P-Line
P::::6667:
\end { minted}
\end { otherlanguage}
\chapter { Ajout des bannissements}
L'administrateur a la possibilité d'ajouté plusieurs lignes de bannissement. Il est donc nécessaire de récupérer les informations avec une boucle :
\begin { otherlanguage} { english}
\begin { minted} { cpp}
# This is ircd's config-file. Look at
# /usr/share/doc/ircd-irc2/ircd.conf.example.gz and
# and /usr/share/doc/ircd-irc2/INSTALL.* for more detailled information
# and instructions
# M-Line
M:%%ircd_domaine::%%ircd_libelle:%%ircd_port:000A
%for %%hostname in %%ircd_banned_hostname
\end { minted}
\begin { minted} [bgcolor=bg]{ cpp}
# K-Line
K:%%hostname:%%hostname.ircd_banned_comment:*:0:
%end for
\end { minted}
\begin { minted} { cpp}
# A-Line
A:Default:Default file:Welcome::ExampleNet
# Y-Lines
Y:1:90::100:512000:5.5:100.100
Y:2:90::300:512000:5.5:250.250
# I-Line
I:*:::0:1
I:127.0.0.1/32:::0:1
# P-Line
P::::6667:
\end { minted}
\end { otherlanguage}
\chapter { Configuration et démarrage le service}
Il est maintenant possible de vérifier le fonctionnement du service.
Le service doit être démarré après le reconfigure si on active IRCD.
Le service doit être arrêté après le reconfigure si on désactive IRCD.
2016-04-21 17:00:48 +02:00
\end { document}