UserManipulation/de
From OpenSimulator
(→createuser) |
|||
Line 38: | Line 38: | ||
<source lang="python"> | <source lang="python"> | ||
− | #!/usr/bin/ | + | #!/usr/bin/python3 |
− | import | + | import http.client |
− | import urllib | + | import urllib.parse |
− | params = urllib.urlencode({'METHOD':'createuser', 'FirstName':'Jon', 'LastName':'Snow', 'Password':'test', 'PrincipalID':'3a1c8128-908f-4455-8157-66c96a46f75e'}) | + | params = urllib.parse.urlencode({ |
− | conn = | + | 'METHOD': 'createuser', |
− | conn.request("POST", "/accounts", params) | + | 'FirstName': 'Jon', |
+ | 'LastName': 'Snow', | ||
+ | 'Password': 'test', | ||
+ | 'PrincipalID': '3a1c8128-908f-4455-8157-66c96a46f75e' | ||
+ | }) | ||
+ | headers = {"Content-type": "application/x-www-form-urlencoded"} | ||
+ | conn = http.client.HTTPConnection("localhost", 8003) | ||
+ | conn.request("POST", "/accounts", params, headers) | ||
response = conn.getresponse() | response = conn.getresponse() | ||
− | print response.read() | + | print(response.read().decode()) |
</source> | </source> | ||
Revision as of 02:14, 2 September 2024
Contents |
Einleitung
Normalerweise werden Benutzer in OpenSimulator über den Befehl "create user" auf der Regionskonsole (in Standalone-Konfiguration) oder auf der ROBUST-Service-Konsole (in Grid-Konfiguration) erstellt. Benutzer können jedoch auch erstellt werden, indem ein XMLRPC-Aufruf direkt an den ROBUST-Service gemacht wird.
Diese Funktion ist seit OpenSimulator 0.7.3 verfügbar und kann derzeit nur in der Grid-Konfiguration verwendet werden. In Standalone-Konfiguration können Benutzer über den speziellen "create user"-Aufruf im Modul RemoteAdmin erstellt werden.
Setup
Die Listener für einige der XMLRPC-Aufrufe auf ROBUST müssen explizit aktiviert werden. In der [UserAccountService]-Sektion der Robust.ini setzen Sie:
[UserAccountService] AllowCreateUser = true AllowSetAccount = true
und in der [AuthenicationService]-Sektion:
[AuthenticationService] AllowSetPassword = true
Bitte beachten Sie, dass dadurch der Aufruf auf den UserAccountServiceConnector und AuthenticationServiceConnector freigelegt wird, wie im ServiceConnectors-Parameter in der [Startup]-Sektion oben in der Datei aufgelistet. Der Standardport (8003) ist einer, der nicht für andere Benutzer freigegeben werden sollte. Für die Anmeldung an OpenSimulator müssen Sie nur den Port freigeben, auf dem der LLLoginServiceInConnector läuft (standardmäßig 8002).
Dies bedeutet auch, dass diese Funktionen derzeit nicht auf einem offenen Grid aktiviert werden sollten (einem Grid, auf dem nicht vertrauenswürdige Dritte Simulator verbinden können).
Standard-Avatareinträge
Wenn Sie möchten, dass ein neuer Benutzer den initialen minimalen Körperteil-/Kleidungssatz (Haut, Form, Augen, Haare, Hose, Hemd) erhält, der erforderlich ist, damit er nicht nur als Gaswolke erscheint, stellen Sie sicher, dass
[UserAccountService] CreateDefaultAvatarEntries = true
in Robust.ini gesetzt ist. Diese Einstellung ist in der Robust.ini.example von OpenSimulator 0.7.4 und später bereits auf true gesetzt.
Nutzung
createuser
Hier ist ein Beispiel für ein Python-Programm, um diesen Aufruf zu machen. Es wird angenommen, dass Ihre ROBUST-Services auf localhost laufen.
#!/usr/bin/python3 import http.client import urllib.parse params = urllib.parse.urlencode({ 'METHOD': 'createuser', 'FirstName': 'Jon', 'LastName': 'Snow', 'Password': 'test', 'PrincipalID': '3a1c8128-908f-4455-8157-66c96a46f75e' }) headers = {"Content-type": "application/x-www-form-urlencoded"} conn = http.client.HTTPConnection("localhost", 8003) conn.request("POST", "/accounts", params, headers) response = conn.getresponse() print(response.read().decode())
PrincipalID ist die eindeutige ID des Benutzers.
Wenn alles gut läuft, erhalten Sie
<?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>
setaccount
Hier ist ein Beispiel für ein Python-Programm, um diesen Aufruf zu machen. Es wird angenommen, dass Ihre ROBUST-Services auf localhost laufen.
#!/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 sie verwendet, um den Benutzer zu identifizieren, den wir zuvor eingerichtet haben.
Wenn alles gut läuft, erhalten Sie
<?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.
setpassword
Eine Passwortänderung erfolgt über den Authentifizierungsservice und nicht über den Benutzerkontoservice. Die erforderlichen Parameter sind leider etwas anders als die des Benutzerkontoservices. In diesem Fall müssen wir einen Aufruf an http://<robust-services-adresse>/auth/plain mit METHOD = setpassword, PRINCIPAL = <principalID> und PASSWORD = <neues-passwort> machen. 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 soll das Passwort von Wilma Flintstone auf "bing" setzen, wobei sie mit der PrincipalID identifiziert wird, die wir zuvor erhalten haben.
Wenn erfolgreich, liefert der Aufruf
<?xml version="1.0"?> <ServerResponse> <Result>Success</Result> </ServerResponse>
Bei einem Fehler erhalten Sie
<?xml version="1.0"?> <ServerResponse> <Result>Failure</Result> </ServerResponse>
Benutzer löschen
Dies ist derzeit wahrscheinlich nicht möglich. Oder besser gesagt, es wurde noch nicht getan und zurückgemeldet, ob alles noch funktioniert oder ob es viele Probleme gibt.
Die normale Methode, einen Benutzer zu "löschen", besteht darin, seinen UserLevel auf -1 zu setzen. Dadurch wird verhindert, dass er sich anmelden kann.
Wenn Sie einen Benutzer mit demselben Namen erstellen müssen, benennen Sie den gelöschten Benutzer zuerst um (z.B. in Wilma Flintstone_<RANDOM-UUID>), bevor Sie einen mit dem alten Namen erstellen.