UserManipulation/de

From OpenSimulator

Jump to: navigation, search

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/python3
 
import http.client
import urllib.parse
 
params = urllib.parse.urlencode({
    'METHOD': 'setaccount', 
    'FirstName': 'Tyrion', 
    '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. 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/python3
 
import http.client
import urllib.parse
 
params = urllib.parse.urlencode({
    'METHOD': 'setpassword', 
    'PRINCIPAL': '3a1c8128-908f-4455-8157-66c96a46f75e', 
    'PASSWORD': 'bing'
})
headers = {"Content-type": "application/x-www-form-urlencoded"}
conn = http.client.HTTPConnection("localhost", 8003)
conn.request("POST", "/auth/plain", params, headers)
response = conn.getresponse()
print(response.read().decode())

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.

Personal tools
General
About This Wiki