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.

Example XML-RPC Call
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).
 * channel - Nom du viewer / client connecté.
 * version - Numéro de version du viewer/client connecté.
 * platform - (Lin,Mac,Win) - Actuellement ignoré par OpenSimulator.
 * platform_string - La description/version du système d'exploitation (par exemple, "Linux 5.8", "Fedora 32", etc.).
 * platform_version
 * mac - Adresse MAC de la carte réseau utilisée par le client/viewer pour se connecter.
 * id0 - Un hachage matériel basé sur le numéro de série du premier disque dur de l'utilisateur. Utilisé par Second Life pour identifier de manière unique les ordinateurs et suivre les utilisateurs. Actuellement inutilisé par OpenSimulator.
 * agree_to_tos - Booléen ( true|false). L'utilisateur a-t-il accepté les conditions de service sur Second Life ? Actuellement inutilisé par OpenSimulator.
 * read_critical - Booléen ( true|false). L'utilisateur a-t-il lu les conditions de service et autres documents sur Second Life ? Actuellement inutilisé par OpenSimulator.
 * viewer_digest - Hachage MD5 de l'exécutable du viewer. Actuellement inutilisé par OpenSimulator.
 * address_size
 * extended_errors
 * last_exec_event  - Un nombre entier. Fonction inconnue. Actuellement inutilisé par OpenSimulator.
 * '''last_exec_duration'
 * skipoptional - Booléen (true|false). Sauter les options ? 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.

Paramètres d'option (actuellement inutilisés par OpenSimulator)
 * adult_compliant
 * advanced_mode
 * avatar_picker_url
 * buddy-list
 * classified_categories
 * currency
 * destination_guide_url
 * display_names
 * event_categories
 * event_notifications
 * gestures
 * global-textures
 * inventory-root
 * inventory-skeleton
 * inventory-lib-root
 * inventory-lib-owner
 * inventory-skel-lib
 * login-flags
 * max-agent-groups
 * max_groups
 * map-server-url
 * newuser-config
 * search
 * tutorial_setting
 * ui-config
 * voice-config

Pour plus d'informations au sujet des paramètres des options, voir la page |Réponses optionnelles du wiki Second Life.

Exemple de réponse XML-RPC
Voici un exemple de réponse à l'exemple d'appel ci-dessus. Si vous cherchez à utiliser ces informations dans le code, je vous recommande de commencer par n'utiliser que les paramètres dont vous avez réellement besoin. Il y a probablement de nombreux paramètres ici qui sont historiques et qui ne sont en fait plus ou jamais utilisés par les téléspectateurs (et qui devraient un jour être nettoyé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
Processus de connexion d'OpenSimulator et problèmes de connexion courants - Article de blog avec des diagrammes qui illustrent le processus de connexion.