UserManipulation/de
From OpenSimulator
Line 33: | Line 33: | ||
=Verwendung= | =Verwendung= | ||
+ | |||
+ | Die nachfolgenden Python Skripte sind auch einfach mit einem kleinen PHP Skript vom Web aus aufzurufen. | ||
+ | |||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | //Python Code in PHP | ||
+ | $code = escapeshellcmd('python /var/www/meinPYskript.py'); | ||
+ | $ergebnis = shell_exec($code); | ||
+ | echo $ergebnis; | ||
+ | ?> | ||
+ | </source> | ||
==Benutzer erstellen== | ==Benutzer erstellen== |
Revision as of 06:53, 6 April 2022
Contents |
Languages: |
English Deutsch |
Einführung
Normalerweise werden Benutzer in OpenSimulator über den Befehl "Benutzer erstellen" auf der Regionskonsole (in der Standalone-Konfiguration) oder auf der ROBUST-Servicekonsole (in der Grid-Konfiguration) erstellt. Benutzer können jedoch auch erstellt werden, indem ein XMLRPC-Aufruf direkt an den ROBUST-Dienst gesendet wird. Diese Funktion ist seit OpenSimulator 0.7.3 verfügbar. Es kann derzeit nur in Grid-Konfiguration verwendet werden. Im Standalone-Modus können Benutzer über den anderen create user-Aufruf im RemoteAdmin Modul erstellt werden.
Setup
Die Listener für einige der XMLRPC-Aufrufe auf ROBUST müssen explizit aktiviert werden. Legen Sie im Abschnitt [UserAccountService] von Robust.ini fest
[UserAccountService] AllowCreateUser = true AllowSetAccount = true
und in [AuthenicationService]
[AuthenticationService] AllowSetPassword = true
Bitte beachten Sie, dass dadurch der Aufruf von UserAccountServiceConnector und AuthenticationServiceConnector verfügbar gemacht wird, wie im ServiceConnectiors-Parameter im Abschnitt [Startup] oben in der Datei aufgeführt. Der verwendete Standardport (8003) sollte anderen Benutzern nicht offengelegt werden. Um sich bei OpenSimulator anzumelden, müssen Sie nur den Port verfügbar machen, auf dem der LLLoginServiceInConnector ausgeführt wird (standardmäßig 8002).
Dies bedeutet auch, dass diese Einrichtungen derzeit nicht in einem offenen Netz (einem Netz, in dem nicht vertrauenswürdige Dritte Simulatoren anschließen können) aktiviert werden sollten.
Standard Avatar Einträge
Wenn Sie möchten, dass ein neuer Benutzer das anfängliche minimale Körperteil / Kleidungsset (Haut, Form, Augen, Haare, Hose, Hemd) hat, das erforderlich ist, damit er als etwas anderes als eine Wolke erscheint, dann stellen Sie sicher
[UserAccountService] CreateDefaultAvatarEntries = true
in der Robust.ini. Diese Einstellung gilt bereits in der Robust.ini.example von OpenSimulator 0.7.4 und höher.
Verwendung
Die nachfolgenden Python Skripte sind auch einfach mit einem kleinen PHP Skript vom Web aus aufzurufen.
<?php //Python Code in PHP $code = escapeshellcmd('python /var/www/meinPYskript.py'); $ergebnis = shell_exec($code); echo $ergebnis; ?>
Benutzer erstellen
Hier ist ein Beispiel-Python-Programm, um dies aufzurufen. Es wird davon ausgegangen, dass Ihre ROBUST Dienste auf localhost ausgeführt werden.
#!/usr/bin/python import httplib import urllib params = urllib.urlencode({'METHOD':'createuser', 'FirstName':'Jon', 'LastName':'Snow', 'Password':'test', 'PrincipalID':'3a1c8128-908f-4455-8157-66c96a46f75e'}) conn = httplib.HTTPConnection("localhost", 8003); conn.request("POST", "/accounts", params) response = conn.getresponse() print response.read();
PrincipalID ist die eindeutige ID des Benutzers.
Wenn alles gut geht, sollten Sie zurückkommen
<?xml version="1.0"?> <ServerResponse> <result type="List"> <FirstName>Jon</FirstName> <LastName>Snow</LastName> <Email/> <PrincipalID>3a1c8128-908f-4455-8157-66c96a46f75e</PrincipalID> <ScopeID>00000000-0000-0000-0000-000000000000</ScopeID> <Created>1318974501</Created> <UserLevel>0</UserLevel> <UserFlags>0</UserFlags> <ServiceURLs>HomeURI*;GatekeeperURI*;InventoryServerURI*;AssetServerURI*;</ServiceURLs> </result> </ServerResponse>
Machen Sie sich keine Sorgen um ScopeID, dies wird verwendet, um zu ermöglichen, dass mehrere Grids in einer einzigen Datenbank koexistieren. Erstellt ist ein Unix-Zeitstempel der Zeit, zu der der Benutzer erstellt wurde. UserLevel bestimmt, ob der Benutzer ein Gott ist (>= 200) oder sich überhaupt anmelden kann (<0). ServiceURLs sind HyperGrid bezogen und betreffen uns hier nicht.
Wenn der Anruf fehlschlägt, erhalten Sie folgende Antwort
<?xml version="1.0"?> <ServerResponse> <result>Failure</result> </ServerResponse>
Konto einrichten setaccount
Hier ist ein Beispiel-Python-Programm, um dies aufzurufen. Es wird davon ausgegangen, dass Ihre ROBUST-Dienste auf localhost ausgeführt werden.
#!/usr/bin/python import httplib import urllib params = urllib.urlencode({'METHOD':'setaccount', 'FirstName':'Tyrion', 'PrincipalID':'3a1c8128-908f-4455-8157-66c96a46f75e'}) conn = httplib.HTTPConnection("localhost", 8003); conn.request("POST", "/accounts", params) response = conn.getresponse() print response.read();
PrincipalID ist die eindeutige ID des Benutzers. Hier wird es verwendet, um den Benutzer zu identifizieren, den wir zuvor eingerichtet haben.
Wenn alles gut geht, sollten Sie folgendes zurückkommen
<?xml version="1.0"?> <ServerResponse> <result type="List"> <FirstName>Tyrion</FirstName> <LastName>Snow</LastName> <Email/> <PrincipalID>3a1c8128-908f-4455-8157-66c96a46f75e</PrincipalID> <ScopeID>00000000-0000-0000-0000-000000000000</ScopeID> <Created>1318974501</Created> <UserLevel>0</UserLevel> <UserFlags>0</UserFlags> <ServiceURLs>HomeURI*;GatekeeperURI*;InventoryServerURI*;AssetServerURI*;</ServiceURLs> </result> </ServerResponse>
Beachten Sie, dass sich der Vorname jetzt von Jon zu Tyrion geändert hat.
Wenn der Anruf fehlschlägt, erhalten Sie folgende Antwort
<?xml version="1.0"?> <ServerResponse> <result>Failure</result> </ServerResponse>
Passwort festlegen setpassword
Das Ändern eines Kennworts erfolgt über den Authentifizierungsdienst und nicht über den Benutzerkontodienst. Leider unterscheiden sich die erforderlichen Parameter geringfügig von denen, die vom Benutzerkontodienst verwendet werden. In diesem Fall müssen wir http://<robust-services-address>/auth/plain with METHOD = setpassword, PRINCIPAL = <principalID> und PASSWORD = <new-password>. aufrufen.
Hier ist ein Beispiel
#!/usr/bin/python import httplib import urllib params = urllib.urlencode({'METHOD':'setpassword', 'PRINCIPAL' : '3a1c8128-908f-4455-8157-66c96a46f75e', 'PASSWORD':'bing'}) conn = httplib.HTTPConnection("localhost", 8003); conn.request("POST", "/auth/plain", params) response = conn.getresponse() print response.read();
Dies zielt darauf ab, Wilma Flintstones Passwort auf bing zu setzen und sie mit der PrincipalID zu identifizieren, die wir zuvor erhalten haben.
Bei Erfolg wird dies zurückgegeben
<?xml version="1.0"?> <ServerResponse> <Result>Success</Result> </ServerResponse>
Bei Misserfolg,
<?xml version="1.0"?> <ServerResponse> <Result>Failure</Result> </ServerResponse>
Einen Benutzer löschen
Dies ist derzeit wohl nicht möglich. Oder besser gesagt, niemand hat es getan und zurückgemeldet, ob noch alles funktioniert oder ob es viele Probleme gibt. Der normale Weg, einen Benutzer zu „löschen“, besteht darin, seinen Benutzerlevel auf -1 zu setzen. Dadurch wird verhindert, dass sie sich anmelden. Wenn Sie einen Benutzer mit demselben Namen erstellen müssen, benennen Sie zuerst den gelöschten Benutzer um (z. B. in Wilma Flintstone_<RANDOM-UUID>), bevor Sie einen mit dem alten Namen erstellen.