SimulatorLoginProtocol/fr

(Cette page est en cours de construction).

Processus
La connexion du viewer se fait en 4 étapes de base.

Étape 1
Le viewer contacte le service de connexion de la grille. Sur un viewer, cela peut être spécifié par -loginuri dans la ligne de commande ou en choisissant une grille dans le gestionnaire de grille proposé par le viewer.

Le viewer envoie un message XMLRPC login_to_simulator (se connecter au simulateur) au loginuri. Il fournit :
 * "first" - Prénom de l'utilisateur
 * "last" - Nom de l'utilisateur
 * "passwd" - Mot de passe haché
 * "version" - Version du viewer
 * "start" - Localisation de départ. "home" sera le "home" de l'utilisateur, "last" pour l'emplacement de l'utilisateur à sa dernière déconnexion. "Start" peut aussi être le nom d'une région et une localisation (voir la section data ci-dessous pour plus d'informations à ce sujet).

Étape 2
Si l'utilisateur est authentifié, le simulateur de connexion est contacté. Le viewer dit que l'utilisateur va venir. Un code de circuit est passé pour ce viewer.

Étape 3
Si le simulateur accepte l'utilisateur, alors les détails du simulateur sont passés à l'utilisateur (principalement, l'URI à utiliser ainsi que le code du circuit).

Étape 4
Le viewer se connecte directement au simulateur et d'authentifie à l'aide du code de circuit.

Détails
Le simulateur expose une méthide XML-RPC appelée login_to_simulator à l'adresse loginuri. Cela nécessite un certain nombre de paramètres fournis par le viewer. Ci-dessous un exemple d'appel.  Les paramètres sont les suivants :
 * first - Prénom de l'utilisateur.
 * last - Nom de l'utilisateur.
 * passwd - MD5 hash du mot de passe de l'utilisateur avec le préfixe de chaîne "$1$".
 * start - La région sur laquelle l'utilisateur désire arriver après sa connexion. Cela peut être
 * "home" - arrivée sur le "home" de l'utilisateur.
 * "last" - arrivée à l'endroit où l'utilisateur était à sa dernière déconnexion.
 * Une localisation spécifique. Elle prend le format "uri:&amp;&amp;&amp;". Par exemple, la chaîne ci-dessous "uri:test&amp;128&amp;128&amp;0"  signale que l'utilisateur devrait se connecter au centre de la région appelée test (l'avatar est placé sur le sol si la coordonnées z-coordinate se situe en dessous du terrain).
 * version - Numéro de version du viewer/client connecté.
 * channel - Nom du viewer / client connecté.
 * platform - Probablement, la plate-forme du client-viewer. Actuellement ignoré par OpenSimulator. De toute façon ça ne doit pas être particulièrement important - Singularity 1.8.5.5617, par exemple, a ce paramètre défini à "Win" même pour une plate-forme Linux.
 * mac - Adresse MAC de la carte réseau utilisée par le client/viewer pour se connecter.
 * id0 - Un GUID. Fonction inconnue. Actuellement inutilisé par OpenSimulator.
 * skipoptional - Un boolean. Fonction inconnue. Actuellement inutilisé par OpenSimulator.
 * last_exec_event - Un entier. Fonction inconnue. Actuellement inutilisé par OpenSimulator.
 * options - Un liste de chaînes. Fonction inconnue, mais probablement utilisé dans de nombreux cas pour contrôler les données envoyées par le service de connexion. Actuellement, inutilisé par OpenSimulator qui renvoie simplement toutes les données à chaque fois.

Ci-dessous, un exemple de réponse à l'exemple d'appel proposé précédemment. Si vous cherchez à utiliser ces informations dans un code, je vous recpmmande de commencer par utiliser les paramètres dont vous avez réellement besoin. Il y a probablement de nombreux paramètres historiques qui ne sont plus ou qui n'ont jamais été utilisés par les viewers (et qui devraient un jour être supprimés).

login-flags message Welcome, Avatar! inventory-lib-root first_name Justin ui-config event_categories seconds_since_epoch 1411075065 inventory-skeleton sim_ip 192.168.1.2            map-server-url http://192.168.1.2:8002/ buddy-list gestures initial-outfit inventory-skel-lib session_id 6ac2e761-f490-4122-bf6c-7ad8fbb17002 region_size_x 256 region_size_y 256 agent_id f2f493c0-27d3-4cf2-be97-b44dfdad13b6 event_notifications login true agent_access M            secure_session_id fe210274-9056-467a-aff7-d95f60bacccc last_name Clark-Casey  Les paramètres sont les suivants : AddClassifiedCategory((Int32) 1, "Shopping"); AddClassifiedCategory((Int32) 2, "Land Rental"); AddClassifiedCategory((Int32) 3, "Property Rental"); AddClassifiedCategory((Int32) 4, "Special Attraction"); AddClassifiedCategory((Int32) 5, "New Products"); AddClassifiedCategory((Int32) 6, "Employment"); AddClassifiedCategory((Int32) 7, "Wanted"); AddClassifiedCategory((Int32) 8, "Service"); AddClassifiedCategory((Int32) 9, "Personal"); mais l'utilité du paramètre n'est pas connue.
 * home - La localisation home de l'utilisateur au format "{'region_handle':[r,r], 'position':[r,r,r<z-region-coord>], 'look_at':[r<x-coord>,r<y-coord>,r<z-coord>]}. Par exemple, "{'region_handle':[r256000,r256000], 'position':[r50,r100,r200], 'look_at':[r1,r0,r0]}".
 * region_handle donne les coordonnées de la grille (grid-coordinates) en mètres . Ausi pour une région qui se situe au coordonnées 1000,1000 sur la carte, cela correspond au coordonnées 256000, 256000.
 * position est la position dans la région.
 * look_at is est la direction à laquelle l'avatar fait face. Il s'agit d'un vecteur de sorte que (0, 1, 0) oriente l'avatar au nord,  (1, 0, 0) à l'est,  (0,-1, 0) au sud et (-1, 0, 0) à l'ouest.
 * look_at - Direction à laquelle l'avatar fait face à la connexion. Il s'agit d'un vecteur de sorte que (0, 1, 0) oriente l'avatar au nord,  (1, 0, 0) à l'est,  (0,-1, 0) au sud et (-1, 0, 0) à l'ouest.
 * agent_access - La niveau d'accès de maturité actuel de l'utilisateur. Actuellement, OpenSimulator définit toujours ce paramètre à "M" (probablement d'âge mur).  Probablement inutilisé.
 * agent_access_max - Niveau maximum d'une région à laquelle un utilisateur peut accéder. Actuellement, OpenSimulator définit toujours ce paramètre à "A" (probablement adulte). Probablement inutilisé.
 * seed_capability - URL que le viewer doit utiliser pour demander d'autres capacités.
 * first_name - Prénom de l'utilisateur.
 * last_name - Nom de l'utilisateur.
 * agent_id - ID de cet utilisateur.
 * sim_ip - IP utilisé pour communiquer avec le simulateur d'accueil.
 * sim_port - Port UDP utilisé pour communiquer avec le simulateur d'accueil.
 * http_port - Fonction inconnue. Actuellement, OpenSimulator définit toujours ce paramètre à 0. Le port donné directement pour les capacités est utilisé à la place.
 * start_location - Paramètres données dans les paramètres de départ dans la requête de connexion ("last", "home", ou un endroit particulier d'une région).
 * region_x - La coordonnée x de grille en mètres pour la région de départ. Ainsi, une région ayant la coordonnée 1000 sur une carte aura ma coordonnée de grille 256000.
 * region_y - La coordonnée y de grille en mètres pour la région de départ.
 * region_size_x - La dimension en mètre sur x de la région de départ. Habituellement elle dera de 256 mais avec les varregions elle peut prendre la valeur d'un multiple de 256.
 * region_size_y - La dimension en mètre sur y de la région de départ. Habituellement elle dera de 256 mais avec les varregions elle peut prendre la valeur d'un  multiple de 256.
 * circuit_code - Code de circuit utilisé pour toutes les connexions UDP.
 * session_id - UUID de la session.
 * secure_session_id - UUID sécurisé de la session.
 * inventory-root - ID du dossier racine de l'utilisateur (le dossier "My Inventory" dans l'inventaire de la plupart des viewers).
 * inventory-skeleton - Détails concernant les dossiers enfants du dossier racine. Chaque entrée présente les paramètres suivants :
 * folder_id - ID du dossier.
 * parent_id - ID du dossier parent.
 * name - Nom du dossier.
 * type_default - Type de dossier. Ces valeurs correspondent à la classe  InventoryType dans libopenmetaverse, où -1 correspond à un dossier ordinaire non typé.
 * version - Numéro de version du dossier. Il s'agit d'une incrémentation des opérations qui changent les contenus des dossiers. Un viewer peut mettre en cache ces numéros de version et d'autres information sur l'inventaire. Ainsi, cela peut réduire la quantité de données sur l'inventaire que doit demander.
 * inventory-lib-root - ID du dossier de la bibliothèque racine (le dossier "OpenSim Library" dans l'inventaire de la plupart des viewers).
 * inventory-skel-lib - Détails concernant les dossiers enfants du dossier racine de la bibliothèque. Présente le même format que le squelette de l'inventaire d'écrit plus haut.
 * inventory-lib-owner - ID de l'utilisateur à qui appartient la bibliothèque.
 * map-server-url - URL pour envoyer des requêtes au sujet des cartes de régions.
 * buddy-list - Liste des amis de l'utilisateur. Elle contient une entrée pour chaque ami(copain). Ces entrées présentent les paramètres suivants :
 * buddy_id -UUID de l'ami.
 * buddy_rights_given - Les droits que l'ami a accordés à cet utilisateur. La valeur correspond à l'énumération FriendsRights dans libopenmetaverse.
 * buddy_rights_has - Les droits que l'utilisateur a accordé à cet ami. La valeur correspond à l'énumération FriendsRights dans libopenmetaverse.
 * gestures - Gestes (gestures) activés par l'utilisateur.S'il y en a, chaque entrée présente les paramètres suivants :
 * item_id - ID de l'item de la gesture dans l'inventaire de l'utilisateur.
 * asset_id - ID de l'asset de la gesture.
 * initial-outfit - On pourrait penser que ce paramètre correspond à la tenue initiale de l'utilisateur. Cependant, OpenSimulator renvoie toujours une entrée avec folder_name "Nightclub Female" sexe "female" sans aucun effet négatif observable.  On peut probablement l'ignorer.
 * global-textures - On ne sait pas si c'est encore utilisé actuellement. OpenSimulator définit toujours :
 * cloud_texture_id à dc4b9f0b-d008-45c6-96a4-01dd947ac621.
 * sun_texture_id à cce0f112-878f-4586-a2e2-a8f104bba271.
 * moon_texture_id à ec4b9f0b-d008-45c6-96a4-01dd947ac621.
 * login - Fonction inconnue. OpenSimulator définit toujours ce paramètre à "true".
 * login-flags - Des informations supplémentaires concernant la connexion. Parmi lesquelles :
 * stipend_since_login - Montre probablement si un utilisateur a reçut de l'argent depuis sa dernière connexion. OpenSimulator définit toujours ce paramètre à  "N".
 * ever_logged_in - indique si le compte a déjà été connecté. Actuellement, OpenSimulator définit toujours ce paramètre à "Y" même si l'utilisateur n'a jamais été connecté auparavant.
 * seconds_since_epoch - heure du serveur en secondes Unix en format d'époque (c'est à dire en seconde depuis 1970).
 * daylight_savings - détermine si l'heure d'été doit être considéré pour définir l'heure de la grille. OpenSimulator peut définir ce paramètre à  "Y" ou "N".
 * gendered - Fonction inconnue, en relation possible avec les avatars. OpenSimulator définit toujours ce paramètre à "Y".
 * message - Message qui peut être affiché pour l'utilisateur à sa connexion.
 * ui-config - Fonction inconnue. OpenSimulator n'a qu'un seule réglage ici.
 * allow_first_life - toujours défini à "Y" par OpenSimulator. Probablement, contrôle si l'onglet "First Life" (Vie réelle) est affiché dans les profils utilisateur (actuellement, obsolète dans certaines conditions).
 * event_categories - Fonction inconnue, probablement en relation avec les événements. Actuellement, OpenSimulator ne définit pas ce paramètre.
 * classified_categories - Catégories classées. Actuellement,  OpenSimulator ajoute toujours les catégories

Code
Les parties d'OpenSimulator qui traîtent les étapes 1 et 2 peuvent être trouvées dans le paquet OpenSim.Services.LLLoginService.

Références
http://justincc.org/blog/2011/05/26/opensimulators-login-process-and-common-login-problems/ fournit quelques diagrammes qui illustrent le processus de connexion.