# Configuration liée Une configuration liée est un ensemble d'élément partagé entre deux serveurs différents. ## Lier un client à un serveur ``` <check name="set_linked"> <param name="linked_provider">clients</param> <param name="linked_value" type="variable">service_variable</param> <target>service_variable_2</target> </check> ``` ## Lier un client à un serveur avec un nom d'utilisateur issu du nom de domaine Il faut commencer de créer une variable côté serveur : ``` <variable name="remotes" description="All clients" type="domainname" multi="True" provider="clients"/> ``` Le nom d'utilisateur sera ici le nom de domaine du serveur avec l'application de la fonction 'normalize_family'. Pour lier deux configurations il faut créer deux variables côté client : ``` <variable name='service_server_address' type='domainname' description="Nom DNS du serveur" mandatory='True'/> <variable name='service_remote_user' type='string' description="Remote username" mandatory='True' hidden="True"/> ``` Enfin il faut lier les deux configurations : ``` <fill name="set_linked"> <param name="linked_server" type="variable">service_server_address</param> <param name="linked_provider">clients</param> <param name="linked_value" type="information">server_name</param> <target>service_remote_user</target> </fill> ``` Ainsi, lorsque l'utilisateur renseignera la variable "service_server_address", cette valeur sera ajouter à la variable "remotes" du serveur. En retour la variable "service_remote_user" aura comme valeur "normalize_family(service_server_address)". ## Lier un client unique à un serveur avec un nom d'utilisateur calculé sur le serveur Il faut commencer de créer les variables côté serveur : ``` <variables> <variable name="remote" description="The client" type="domainname" provider="client"/> <variable name="username" hidden="True" provider="client_name"/> </variables> <constraints> <fill name="gen_user_name"> <target>username</target> </fill> </constraints> ``` Côté client : ``` <variable name='service_server_address' type='domainname' description="Nom DNS du serveur" mandatory='True'/> <variable name='service_remote_user' type='string' description="Remote username" mandatory='True' hidden="True"/> ``` ``` <fill name="set_linked"> <param name="linked_server" type="variable">service_server_address</param> <param name="linked_provider">clients</param> <param name="linked_value" type="information">server_name</param> <param name="linked_returns">client_name</param> <target>service_remote_user</target> </fill> ``` Ainsi, lorsque l'utilisateur renseignera la variable "service_server_address", cette valeur sera la variable "remote" du serveur. Un nom d'utilisateur sera alors généré côté serveur, la valeur de ce nom sera retourner au client comme valeur de 'service_remote_user'. ## Lier plusieurs clients à un serveur avec un nom d'utilisateur calculé sur le serveur Il faut commencer de créer les variables côté serveur : ``` <variables> <variable name="remotes" description="All clients" type="domainname" multi="True" provider="clients"/> <family name="remote_" description="Compte pour " dynamic="remotes"> <variable name="username_" hidden="True" provider="client_name"/> </family> </variables> <constraints> <fill name="gen_user_name"> <target>username_</target> </fill> </constraints> ``` Côté client : ``` <variable name='service_server_address' type='domainname' description="Nom DNS du serveur" mandatory='True'/> <variable name='service_remote_user' type='string' description="Remote username" mandatory='True' hidden="True"/> ``` ``` <fill name="set_linked"> <param name="linked_server" type="variable">service_server_address</param> <param name="linked_provider">clients</param> <param name="linked_value" type="information">server_name</param> <param name="linked_returns">client_name</param> <param name="dynamic" type="information">server_name</param> <target>service_remote_user</target> </fill> ``` Ainsi, lorsque l'utilisateur renseignera la variable "service_server_address", cette valeur sera ajouter à la variable "remotes" du serveur. Un nom d'utilisateur sera alors généré côté serveur, la valeur de ce nom sera retourner au client comme valeur de 'service_remote_user'. ## Caculer une variable d'un client par rapport à la valeur d'un serveur Il faut commencer de créer une nouvelle variables côté serveur par exemple dans une famille dynamique : ``` <variables> <family name="remote_" description="Compte pour " dynamic="remotes"> <variable name="password_" description="Password " auto_save="True" hidden="True" type="password" provider="client_password"/> </family> </variables> <constraints> <fill name="gen_password"> <target>password_</target> </fill> </constraints> ``` Côté client on veut récupérer ce mot de passe dans une variable : ``` <variable name='service_remote_user_password' type='password' description="Remote password" mandatory='True' hidden="True"/> ``` Et calculer cette valeur : ``` <fill name="get_linked_configuration"> <param name="linked_server" type="variable">service_server_address</param> <param name="linked_provider">client_password</param> <param name="dynamic" type="variable">service_remote_user</param> <target>service_remote_user_password</target> </fill> ``` ## Propoger la valeur d'une variable d'un client vers un serveur ``` <check name="set_linked_configuration"> <param name="linked_server" type="variable">service_server_address</param> <param name="linked_provider">client_var</param> <param name="dynamic" type="variable">service_remote_user</param> <target>service_variable</target> </check> ``` ## Propoger la valeur d'une variable d'un client vers un variable esclave du serveur ``` <check name="set_linked_configuration"> <param name="linked_server" type="variable">service_server_address</param> <param name="leader_provider">client_var</param> <param name="leader_value" type="variable">service_variable</param> <param name="linked_provider">slave</param> <param name="dynamic" type="variable">service_server_address</param> <target>service_variable_2</target> </check> ```