[Dev OpenGP] [113] Report almost finished

[ Thread Index | Date Index | More opengp.tuxfamily.org/development Archives ]


Revision: 113
Author:   nicolaf
Date:     2009-03-26 20:16:22 +0100 (Thu, 26 Mar 2009)

Log Message:
-----------
Report almost finished

Modified Paths:
--------------
    externals/Com/Rapport/tex/rapport.tex

Removed Paths:
-------------
    externals/Com/Rapport/figures/arch/globalFunc.svg


Deleted: externals/Com/Rapport/figures/arch/globalFunc.svg
===================================================================
--- externals/Com/Rapport/figures/arch/globalFunc.svg	2009-03-26 16:47:19 UTC (rev 112)
+++ externals/Com/Rapport/figures/arch/globalFunc.svg	2009-03-26 19:16:22 UTC (rev 113)
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/";
-   xmlns:cc="http://creativecommons.org/ns#";
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
-   xmlns:svg="http://www.w3.org/2000/svg";
-   xmlns="http://www.w3.org/2000/svg";
-   xmlns:xlink="http://www.w3.org/1999/xlink";
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
-   width="410"
-   height="150"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   version="1.0"
-   sodipodi:docname="globalFunc.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mstart"
-       style="overflow:visible">
-      <path
-         id="path3437"
-         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(0.4,0,0,0.4,4,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible">
-      <path
-         id="path3440"
-         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
-    </marker>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.979899"
-     inkscape:cx="125.50011"
-     inkscape:cy="47.22289"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1280"
-     inkscape:window-height="728"
-     inkscape:window-x="-3"
-     inkscape:window-y="-4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g7339"
-       transform="matrix(1.0128766,0,0,1.0085291,-8.8704779,-92.843712)">
-      <g
-         transform="matrix(1.0690168,0,0,1.0690168,-60.380882,35.205923)"
-         id="g3228">
-        <rect
-           transform="scale(1,-1)"
-           y="-99.425774"
-           x="183.01453"
-           height="45.77195"
-           width="141.97102"
-           id="rect3175"
-           style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.92553526;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-        <text
-           id="text3177"
-           y="85.652351"
-           x="253.20657"
-           style="font-size:6px;font-style:italic;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Italic"
-           xml:space="preserve"><tspan
-             style="font-size:20px;font-style:normal;fill:#000000"
-             y="85.652351"
-             x="253.20657"
-             id="tspan3179"
-             sodipodi:role="line">AC</tspan></text>
-      </g>
-      <g
-         transform="matrix(1.0690168,0,0,1.0690168,-17.642309,-25.582539)"
-         id="g3223">
-        <rect
-           style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.92553526;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect2383"
-           width="141.97102"
-           height="45.77195"
-           x="25.157379"
-           y="-248.71149"
-           transform="scale(1,-1)" />
-        <text
-           xml:space="preserve"
-           style="font-size:6px;font-style:italic;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Italic"
-           x="95.349426"
-           y="234.93806"
-           id="text3171"><tspan
-             sodipodi:role="line"
-             id="tspan3173"
-             x="95.349426"
-             y="234.93806"
-             style="font-size:20px;font-style:normal;fill:#000000">LDAP</tspan></text>
-      </g>
-      <g
-         transform="matrix(1.0690168,0,0,1.0690168,-47.377869,-16.419541)"
-         id="g3214">
-        <rect
-           style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.92553526;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3183"
-           width="141.97102"
-           height="45.77195"
-           x="288.72882"
-           y="-240.14006"
-           transform="scale(1,-1)" />
-        <text
-           xml:space="preserve"
-           style="font-size:6px;font-style:italic;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Italic"
-           x="359.39694"
-           y="224.71014"
-           id="text3185"><tspan
-             sodipodi:role="line"
-             id="tspan3187"
-             x="359.39694"
-             y="224.71014"
-             style="font-size:20px;font-style:normal;fill:#000000">Client</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.5231446,0,0,0.5231446,23.538645,90.801629)"
-         id="g3209">
-        <rect
-           style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.89127958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="rect3191"
-           width="70.695114"
-           height="45.77195"
-           x="454.44308"
-           y="-237.99721"
-           transform="scale(1,-1)" />
-        <text
-           xml:space="preserve"
-           style="font-size:6px;font-style:italic;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans Italic"
-           x="490.31311"
-           y="222.39151"
-           id="text3193"><tspan
-             sodipodi:role="line"
-             id="tspan3195"
-             x="490.31311"
-             y="222.39151"
-             style="font-size:20px;font-style:normal;fill:#000000">Cert.</tspan></text>
-      </g>
-      <path
-         inkscape:connection-end="#g3223"
-         inkscape:connector-type="polyline"
-         id="path3370"
-         d="M 260.74358,217.44275 L 161.52076,216.53079"
-         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.98941278px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-      <path
-         inkscape:connection-end="#g3209"
-         inkscape:connection-start="#g3228"
-         inkscape:connector-type="polyline"
-         id="path4724"
-         d="M 230.99872,141.99375 L 269.85334,190.86323"
-         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.98941278px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-      <text
-         transform="translate(4,0)"
-         id="text5244"
-         style="font-size:10px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Sans"
-         xml:space="preserve"><textPath
-           id="textPath5248"
-           startOffset="50%"
-           xlink:href="#path4724"><tspan
-   id="tspan5246">Signe</tspan></textPath></text>
-      <path
-         inkscape:connection-end="#g3223"
-         inkscape:connection-start="#g3228"
-         inkscape:connector-type="polyline"
-         id="path6816"
-         d="M 179.30762,141.99375 L 116.97786,190.86324"
-         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.98941278px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" />
-    </g>
-  </g>
-</svg>

Modified: externals/Com/Rapport/tex/rapport.tex
===================================================================
--- externals/Com/Rapport/tex/rapport.tex	2009-03-26 16:47:19 UTC (rev 112)
+++ externals/Com/Rapport/tex/rapport.tex	2009-03-26 19:16:22 UTC (rev 113)
@@ -247,35 +247,39 @@
 \part{Conception}\label{part:conception}
 
 \chapter{Architecture de l'application}
-%TODO: architecture de l'appli (chapter)
-%% Structure en couches
-%% Explications
-%% Interactions prévues ?
+L'architecture retenue est donnée à la figure \ref{fig:layers} (page \pageref{fig:layers}) :
+\begin{itemize}
+	\item au plus bas niveau, le \emph{core} fournit une abstraction de l'annuaire LDAP ;
+	\item au dessus viennent les \emph{plugins}, dont le rôle est fournir un moyen simple de gérer et d'installer la configuration d'une application. Ils utilisent le \emph{core} pour récupérer et stocker leurs données ;
+	\item enfin, au plus haut, se trouve soit l'\emph{interface}, qui permet à l'administrateur de gérer son parc, soit le \emph{démon} qui est chargé de mettre à jour périodiquement la configuration de la machine sur laquelle il tourne.
+\end{itemize}
 
-\begin{figure}
+
+\begin{figure}[ht!]
+	%TODO mettre à jour :
+	% rajouter etree en parallèle : merge passe dedans, et il faudra mettre toString
+	% les pushFull* et pushPartial* ne font plus qu'un push*
 	\centering
 	\includegraphics[width=.8\textwidth]{../figures/arch/layers}
 	\caption{Architecture de l'application}
+	\label{fig:layers}
 \end{figure}
 
-\begin{figure}
-	\centering
-	%TODO:SUPPRIMER ?
-	\includegraphics[width=.7\textwidth]{../figures/arch/globalFunc}
-	\caption{Fonctionnement global}
-\end{figure}
-
 \section{Authentification}
 Plusieurs méthodes d'authentification sont envisageables avec un niveau de sécurité plus ou moins élevé. 
 \begin{itemize}
 	\item Une authentification de type \og{}login / mot de passe\fg{} (en associant un mot de passe à un nom distingué) présente l'avantage d'être le plus simple à mettre en place (presque aucune configuration nécessaire) mais propose un niveau de sécurité très faible. 
 	\item Une authentification de type TLS assure une meilleure sécurité mais sa mise en \oe uvre est plus délicate. En effet la mise en place d'une autorité de certification associée à LDAP n'est pas triviale. Cette technique impose en outre de déployer des certificats sur toutes les machines. 
-	%TODO: autre ?
 \end{itemize}
 
 \section{Client}
-%TODO: [MICHEL]-client / démon : pourquoi il est là, comment on le conçoit (PAS comment il est implémenté)
+La partie \emph{cliente} du système est un démon, chargé de récupérer périodiquement la configuration stockée dans l'annuaire LDAP et de l'installer sur la machine. Ce démon dispose d'un plugin particulier permettant d'en modifier la configuration de manière distante :
+\begin{itemize}
+	\item Le fichier local \url{/etc/ogpdaemon.conf} contient le minimum de configuration, i.e. les informations de connexion ;
+	\item l'annuaire LDAP fournit le temps entre les mises à jours de la configration, et si le démon est actif ou non. S'il fournit également des informations de connexion, \url{/etc/ogpdaemon.conf} sera mis à jour et le démon se reconnectera sur la base de ces informations.
+\end{itemize}
 
+
 \chapter{Annuaire}
 \section{Existant}
 On souhaite autant que possible conserver la compatibilité avec le monde Windows. Pour celà, on base le schéma d'annuaire sur le schéma \emph{Active Directory}. On retiendra notamment les classes d'objets \texttt{OrganizationalUnit} et \texttt{Computer}. 
@@ -287,8 +291,157 @@
 L'objectif est de représenter la configuration de manière homogène au niveau de l'annuaire et de la conserver sous cette forme \og{}le plus longtemps possible\fg{}. On se propose donc de gérer celle-ci au format XML et de ne la convertir au format natif que lorsque cela est nécessaire (au moment de l'écriture du fichier de configuration sur machine). 
 
 \section{Structuration de la configuration : schéma XML}
-%TODO: [MICHEL]-schéma XML 
+Le schéma XML retenu est donné à la figure \ref{verb:xmlschema} (page \pageref{verb:xmlschema})
 
+\begin{center}
+\label{verb:xmlschema}
+\begin{tiny}\begin{boxedverbatim}
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+  <!-- Root element -->
+  <xs:element name="ogp">
+    <xs:complexType>
+      <xs:sequence>
+        <!-- "plugin" elements : one entry for each plugin affecting the OU or machine
+             The "name" attribute specifies the plugin name. This attribute must be
+             unique among all the "plugin" elements.
+        -->
+        <xs:element name="plugin" minOccurs="0" maxOccurs="unbounded">
+          <xs:complexType>
+            <xs:all minOccurs="1" maxOccurs="1">
+              <xs:element name="files">
+                <xs:complexType>
+                  <xs:sequence>
+                    <!-- "file" elements : files affected by the plugin
+                         The "name" attribute specifies a logical name (not necessary the "real" file name) to be
+                         used by the plugin. This attribute must be unique among all the "file" elements.
+                    -->
+                    <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
+                      <xs:complexType>
+                        <xs:all minOccurs="1" maxOccurs="1">
+                          <!-- "security" element : standard unix security attributes + ACL. -->
+                          <xs:element name="security">
+                            <xs:complexType>
+                              <xs:all minOccurs="0" maxOccurs="1">
+                                <!-- User and group IDs. If not specified, inherited from the last parent OU which
+                                     specifies it or 0 (root) by default
+                                -->
+                                <xs:element name="uid" type="xs:nonNegativeInteger"/>
+                                <xs:element name="gid" type="xs:nonNegativeInteger"/>
+                                <!-- Standard Unix Permissions. If not specified, inherited from the last parent
+                                     conf which specifies it or 0644 by default.
+                                     See man chmod for more details.
+                                -->
+                                <xs:element name="us" type="xs:boolean"/>
+                                <xs:element name="gs" type="xs:boolean"/>
+                                <xs:element name="t" type="xs:boolean"/>
+                                <xs:element name="ur" type="xs:boolean"/>
+                                <xs:element name="uw" type="xs:boolean"/>
+                                <xs:element name="ux" type="xs:boolean"/>
+                                <xs:element name="gr" type="xs:boolean"/>
+                                <xs:element name="gw" type="xs:boolean"/>
+                                <xs:element name="gx" type="xs:boolean"/>
+                                <xs:element name="or" type="xs:boolean"/>
+                                <xs:element name="ow" type="xs:boolean"/>
+                                <xs:element name="ox" type="xs:boolean"/>
+                                
+                                <!-- ACL, as dumped by getfacl -->
+                                <xs:element name="acl" minOccurs="0" maxOccurs="1">
+                                  <xs:complexType>
+                                    <xs:choice minOccurs="1" maxOccurs="unbounded">
+                                      <!-- One "ace" element for each access control entry.
+                                           The unique attribute "id" specifies the position in the list.
+                                           -->
+                                      <xs:element name="ace">
+                                        <xs:complexType>
+                                            <xs:attribute name="id" type="xs:nonNegativeInteger" use="required"/>
+                                            <xs:attribute name="value" type="xs:string" use="required"/>
+                                        </xs:complexType>
+                                      </xs:element>
+                                    </xs:choice>
+                                  </xs:complexType>
+                                  <!-- Unicity of the ace's id attribute -->
+                                  <xs:unique name="ace_id">
+                                    <xs:selector xpath="ace"/>
+                                    <xs:field xpath="@id"/>
+                                  </xs:unique>
+                                </xs:element>
+                              </xs:all>
+                            </xs:complexType>
+                          </xs:element>
+\end{boxedverbatim}
+
+\begin{boxedverbatim}
+                          <xs:element name="conf">
+                            <xs:complexType>
+                              <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                                <xs:any processContents="skip"/>
+                              </xs:sequence>
+                            </xs:complexType>
+                          </xs:element>
+                        </xs:all>
+                        <xs:attribute name="name" type="xs:string" use="required"/>
+                      </xs:complexType>
+                    </xs:element>
+                  </xs:sequence>
+                </xs:complexType>
+                <!-- Unicity of the file's name attribute -->
+                <xs:unique name="file_name">
+                  <xs:selector xpath="file"/>
+                  <xs:field xpath="@name"/>
+                </xs:unique>
+              </xs:element>
+              <xs:element name="conf">
+                <xs:complexType>
+                  <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                    <xs:any processContents="skip"/>
+                  </xs:sequence>
+                </xs:complexType>
+              </xs:element>
+            </xs:all>
+            <xs:attribute name="name" type="xs:string" use="required"/>
+          </xs:complexType>
+        </xs:element>
+      </xs:sequence>
+    </xs:complexType>
+    <!-- Unicity of the plugin's name attribute -->
+    <xs:unique name="plugin_name">
+      <xs:selector xpath="plugin"/>
+      <xs:field xpath="@name"/>
+    </xs:unique>
+  </xs:element>
+</xs:schema>
+\end{boxedverbatim}
+\end{tiny}
+\captionof{figure}{\caption{Schéma XML de la configuration}}
+\end{center}
+Celà donne des arbres de la forme :
+
+\begin{center}
+\begin{boxedverbatim}
+<ogp>
+  <plugin name="motd>
+    <files>
+      <file name="motd">
+        <security/>
+        <conf>Unix VAINCRA !</conf>
+      </file>
+      <file name="motd.tail">
+        <security/>
+        <conf/>
+      </file>
+    </files>
+    <conf>
+      <distro>debian</distro>
+  </plugin>
+  <plugin name="ogpdaemon">
+    ...
+  </plugin>
+</ogp>
+\end{boxedverbatim}}
+\end{center}
+
+Où l'attribut \texttt{name} des balises \texttt{plugin} doit être unique, et l'attribut \texttt{name} des balises \texttt{file} doit être unique à l'intérieur d'une balise \texttt{plugin}.
+
 \section{Manipulation de la configuration}
 Deux cas sont à distinguer dans le cadre de la manipulation de la configuration : 
 \begin{itemize}
@@ -315,8 +468,39 @@
 	\item \label{hyp:noorrder}l'ordre des balises n'a pas d'importance pour l'union.
 \end{enumerate}
 \emph{Remarque} : si un ordre est nécessaire d'un point de vue sémantique, on utilise l'attribut particulier \texttt{id}. Cet attribut sera modifié afin que les balises de l'arbre père soient placées (avec les \texttt{id} dans le même ordre) après celles du fils (avec les \texttt{id} dans le même ordre).
-%TODO: exemple
+\emph{Exemple} : la fusion de
 
+\begin{center}
+\begin{boxedverbatim}
+<racine>
+  <fille id="0">pere<fille/>
+  <fille id="1">pere<fille/>
+  <fille id="2">pere<fille/>
+</racine>
+\end{boxedverbatim}
+\ avec\ 
+\begin{boxedverbatim}
+<racine>
+  <fille id="0">fils</fille>
+  <fille id="1">fils</fille>
+  <fille id="2">fils</fille>
+</racine>
+\end{boxedverbatim}
+\end{center}
+donne :
+\begin{center}
+\begin{boxedverbatim}
+<racine>
+  <fille id="0">fils</fille>
+  <fille id="1">fils</fille>
+  <fille id="2">fils</fille>
+  <fille id="3">pere</fille>
+  <fille id="4">pere</fille>
+  <fille id="5">pere</fille>
+</racine>
+\end{boxedverbatim}
+\end{center}
+
 \subsubsection{Définitions}
 \begin{definition}
 On note $\mathcal{B}$ l'ensemble des balises : 
@@ -465,7 +649,6 @@
 À titre indicatif, le projet \href{http://simpleparse.sourceforge.net}{\emph{SimpleParse}}\footnote{Voir \url{http://simpleparse.sourceforge.net}} semble souple et adapté à la plupart des besoins. Il est néanmoins possible d'utiliser d'autres API de \emph{parsing} ou d'en développer une nouvelle. 
 
 \part{Réalisation}
-%TODO: réalisation (part)
 
 \chapter{Environnement de développement}
 \section{Dépôt}
@@ -504,22 +687,28 @@
         |       |-- etree
         |       `-- plugins
         |           |-- plugin1
-        |           `-- plugin2
+        |           |-- plugin2
+        |           `-- ...
         `-- tests
 		\end{boxedverbatim}
 	\caption{Arborescence du projet}\label{fig:arboProjet}
 \end{figure}
 \chapter{Annuaire}
 \section{Schéma LDAP}
-%TODO: schéma LDAP
+Le schéma LDAP fournit trois nouveaux attributs pour les classes \emph{Organizational Unit} et \emph{Computer} :
+\begin{description}
+	\item[\texttt{oGPXMLConfig}] permet de stocker la configuration associée à l'objet (sous forme d'un arbre XML) ;
+	\item[\texttt{oGPSOA}] est incrémenté à chaque modification de \texttt{oGPXMLConfig} et permet au \emph{démon} de savoir si la configuration a été modifiée.
+	\item[\texttt{oGPMachineCertificate}] n'est pas utilisé actuellement, mais permettra à terme de stocker le certificat associé à la machine.
+\end{description}
 
-\section{Configuration}
-%TODO: configuration LDAP
 
+\section{Configuration LDAP}
+La configuration par défaut devrait fonctionner, il suffit juste d'inclure les schémas et de positionner des ACLs décentes. \emph{Cf}. paragraphe \ref{sec:slapd} (page \pageref{sec:slapd}) pour plus de détails.
+
 \chapter{Plugins}
 \section{Enregistrement des plugins}
-%TODO: scan des modules Python dans un répertoire donné et enregistrement
-Les plugins sont stockés sous forme de modules Python dans le répertoire \url{./ogp/lib/plugins}. 
+Les plugins sont stockés sous-modules Python de \texttt{ogp.plugins}. Chaque plugin doit s'enregistrer dans son \texttt{\_\_init\_\_.py} auprès de la classe \texttt{Plugin} à l'aide de la commande \texttt{Plugin.registerPlugin([classe du plugin])}. Le \texttt{\_\_init\_\_.py} de ogp.plugins se chargeant d'importer les sous-modules, la commande Python \texttt{from ogp.plugins import *} permet d'avoir accès à tout les plugins disponibles.
 
 \section{Initialisation d'un plugin}
 
@@ -575,7 +764,7 @@
 \end{itemize}
 
 \section{Installation du démon}
-%TODO: Installation du démon
+Cette procédure est automatisée par le fichier \emph{Makefile} : \texttt{make install-daemon}. L'exécutable est installé dans \url{(prefix)/sbin}, et le script de démarrage dans \url{/etc/init.d}.
 
 \addcontentsline{toc}{chapter}{Table des figures}
 \listoffigures
@@ -734,9 +923,16 @@
 \end{figure}
 
 \section{Gestion des modules}
-%TODO: différence package / module ?
+Il est ici important de faire la différence entre un package et un module : 
+\begin{itemize}
+	\item un module est un simple \emph{fichier}, un package est un \emph{dossier} ;
+	\item \texttt{from package import *} importe tous les modules contenus dans le package, mais pas les sous-packages.
+\end{itemize}
+
 \subsection{Structure d'un module}
-%TODO
+Un module est un dossier contenant des scripts python. Le fichier \texttt{\_\_init\_\_.py} est obligatoire, doit se trouver à la racine du package et sera exécuté à l'import du package.
+
+Un package peut contenir aussi bien des modules que des packages.
 \subsection{Import d'un module}
 
 \chapter{API}
@@ -771,6 +967,12 @@
 	\item \texttt{certs}, non implémenté (forme à déterminer). 
 \end{itemize}
 
+\subsubsection{\_\_del\_\_()}
+\paragraph{Description}
+Appelée à la destruction de l'instance. : Réinitialise \texttt{OgpCore.\_\_instance} à \texttt{None}.
+\paragraph{Paramètres}
+Aucun.
+
 \subsubsection{\_\_getattr\_\_()}
 \paragraph{Description}
 Redéfinition du \emph{getter} des attributs pour déléguer l'accès à \texttt{\_\_ogpcore}. 
@@ -916,7 +1118,7 @@
 \paragraph{Paramètres}
 \begin{itemize}
 	\item \texttt{dn} (str), nom distingué (\emph{distinguished name}) de l'entrée ;
-	\item \texttt{attrs} %TODO [MICHEL]-???
+	\item \texttt{attrs} (dict) les valeurs des attributs indexées par leur nom LDAP. \emph{Cf.} la documentation de \texttt{ldap.LDAPObject.add\_s}.
 \end{itemize}
 
 \subsubsection{\_\_modify()}
@@ -925,7 +1127,7 @@
 \paragraph{Paramètres}
 \begin{itemize}
 	\item \texttt{dn} (str), nom distingué (\emph{distinguished name}) de l'entrée ;
-	\item \texttt{mods} %TODO [MICHEL]-??? 
+	\item \texttt{mods} (list) liste de triplets \emph{(type\_modification, nom\_attribut, valeur)}. \emph{Cf.} la documentation de \texttt{ldap.LDAPObject.modify\_s}.
 \end{itemize}
 
 \subsubsection{\_\_delete()}
@@ -933,7 +1135,7 @@
 Supprime une entrée de l'annuaire (non récursif). 
 \paragraph{Paramètres}
 \begin{itemize}
-	\item \texttt{dn} (str), nom distingué (\emph{distinguished name}) de l'entrée à supprimer. 
+	\item \texttt{dn} (str), nom distingué (\emph{distinguished name}) de l'entrée à supprimer.
 \end{itemize}
 
 \subsubsection{\_\_pullSOA()}
@@ -1412,7 +1614,7 @@
 \caption[Définition des objets LDAP spécifiques à OGP]{Définition des objets LDAP spécifiques à OGP (fichier \url{/etc/ldap/schema/ogp.schema})}\label{fig:defLDAPOGP}
 \end{figure}
 
-\subsection{Configuration de slapd}
+\subsection{Configuration de slapd}\label{sec:slapd}
 
 L'inclusion des schémas est réalisée à partir des deux lignes de la figure \ref{fig:utilLDAPOGP} dans le fichier \url{/etc/ldap/slapd.conf}. En dehors des schémas, la configuration par défaut suffit à faire fonctionner OGP. Pour une utilisation sécurisée, le TLS reste cependant à mettre en place (non réalisé à ce jour). À titre informatif, le fichier complet utilisé pour les développements est donné en figure \ref{fig:exSlapdConf} (page \pageref{fig:exSlapdConf}).
 


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/