\section{Erweiterung der Mapping-Einstellungen}
\label{ad-connector:mapping-einstellungen}

Die Definition der zu synchronisierenden Objekte und Attribute wird in
der Datei \ucsURL{/etc/univention/connector/ad/mapping.py}
angegeben. Die Datei ist direkt in der Skriptsprache Python
geschrieben, wodurch sehr flexible Definitionen möglich sind. Die
Verwaltung dieser Datei erfolgt über \ucsUCR{},
so dass Änderung grundsätzlich am zugehörigen Template
(\ucsURL{/etc/univention/connector/ad/mapping}) vorgenommen
werden sollten. Das Template wertet für einige
Standardoptionen \ucsUCR{-Variablen} aus, so dass ein direkter
Eingriff nicht immer notwendig ist. Die
existierenden \ucsUCR{-Variablen} werden in
Kapitel \ref{ad-connector:baseconfig-variablen:mapping} beschrieben.

Mit der Variable \ucsCommand{global\_ignore\_subtree} wird eine Liste von zu
ignorierenden Bereichen angegeben. Dabei können die
\ucsUCR{-Variablen} gemäß dem Template Mechanismus verwendet werden,
z.B.:
\begin{ucsConsoleInput}
global_ignore_subtree=[ 'cn=univention,@\%@ldap/base@\%@', 
                    'cn=System,@\%@connector/ad/ldap/base@\%@' ]
\end{ucsConsoleInput}

Durch diese Angaben wird der Container \ucsCommand{cn=univention} auf
UCS Seite und auf Active Directory Seite der Container
\ucsCommand{cn=System} mit allen Unterobjekten ignoriert.

In dem Dictonary \emph{ad\_mapping} werden alle weiteren Mapping-Optionen
definiert. Dabei wird als Key immer ein eindeutiger Name vergeben,
z.B. \emph{user}. Als Wert wird diesem Key ein
\emph{univention.connector.property} Objekt übergeben. Dieses
Objekt hat die folgenden Eigenschaften:

\paragraph{ucs\_module}
Das \ucsUDM{} Modul, welches für die Bearbeitung des Objektes
verwendet wird. Eine Liste aller möglichen Module kann mit dem Befehl
\ucsCommand{univention-directory-manager modules} ausgegeben werden.

\paragraph{sync\_mode}
Der zu verwendene Synchronisationsmodus. Mögliche Werte sind
\emph{read, write, sync} und
\emph{none}. Bei \emph{read} werden die Objekte vom Active
Directory zum UCS repliziert. Bei \emph{write} werden Objekte
vom UCS zum Active Directory repliziert, mit \emph{sync} werden
die Daten bidirektional synchronisiert und mit \emph{none} werden keine
Änderungen durchgeführt.
Im vordefinierten Mapping wird der globale Sync-Mode aus
der \ucsUCRV{connector/ad/mapping/syncmode} verwendet.

\paragraph{scope}
Scope gibt die Suchtiefe für die LDAP Suchen an. Mögliche Werte sind
\emph{sub}, \emph{one}, \emph{base}.

\paragraph{con\_search\_filter}
Der LDAP Suchfilter, mit dem die Objekte im Active Directory
identifiziert werden.

\paragraph{match\_filter}
Der LDAP Suchfilter, mit dem die Objekte im UCS identifiziert werden.

\paragraph{ignore\_filter}
Hier kann ein Filter für Objekte angegeben werden, die ignoriert
werden sollen.

\paragraph{ignore\_subtree}
Diese Liste von Containern wird ignoriert, die Unterobjekte werden
ebenfalls nicht beachtet.

\paragraph{con\_create\_objectclass}
Eine Liste von Objektklasse, die auf Active Directory Seite verwendet
wird.

\paragraph{dn\_mapping\_function}
Eine Liste von Funktionen, die bei der Umwandlung der DN von Active
Directory nach UCS und umgekehrt aufgerufen werden. Benötigt wird
diese Einstellung z.B. bei Benutzern, da auf UCS Seite mit dem
Attribut \emph{uid} und auf Active Directory Seite mit dem
Attribut \emph{cn} in der DN gearbeitet wird.

\paragraph{attributes}
Ein Dictionary mit \emph{univention.connector.attribute}-Objekten, die bei der
Erzeugung und bei einer Änderung direkt abgearbeitet werden.

\paragraph{ucs\_create\_functions}
Eine Liste von Funktionen, die nach dem Anlegen eines Objekts in UCS ausgeführt
werden.

\paragraph{post\_con\_modify\_function}
Eine Liste von Funktionen, die nach dem Modifizieren eines Objektes im
Active Directory ausgeführt werden.

\paragraph{post\_ucs\_modify\_functions}
Eine Liste von Funktionen, die nach dem Modifizieren eines Objektes im
UCS-Verzeichnisdienst ausgeführt werden.

\paragraph{post\_attributes}
Ein Dictionary von Attributen, die nicht während des Anlegens eines
Objekts, sondern erst in einem zweiten Schritt geändert werden können.

\paragraph{mapping\_table}
Ein Dictionary, dessen Keys den attribut-Keys entsprechen. Dem Key wird
eine Liste von String-Tupeln zugeordnet, die jeweils UCS und AD
Bezeichner enthalten. Wird während der Synchronisation ein UCS-Objekt
aus dieser Liste gefunden, wird das entsprechende AD-Attribut gesetzt und
umgekehrt. Wird z.B. beim Mapping der Gruppennamen verwendet. 

\paragraph{position\_mapping}
Weist einem Untercontainer in UCS einen Unterordner in AD zu. Sollte
mit Sorgfalt verwendet werden, falls es gleichnamige Container auf der
jeweils anderen Seite gibt. Z.B. sollte für Gruppen der UCS-Container
\emph{cn=groups} nicht auf den Standard-AD-Container \emph{cn=users} gemappt werden,
da dieser Container unter UCS bereits existiert. Gruppen, die unter
UCS unter \emph{cn=users} angelegt werden liegen dann nicht innerhalb dieses
Bezuges und können Fehler verursachen.
