UserManipulation/de

From OpenSimulator

Jump to: navigation, search

Contents

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 [AuthenticationService]

[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();
#!/usr/bin/python3
 
### Benutzer erstellen createuser
 
import http.client
import urllib.request, urllib.parse, urllib.error
 
params = urllib.parse.urlencode({'METHOD':'createuser', 'FirstName':'Jon', 'LastName':'Snow', 'Password':'test', 'PrincipalID':'3a1c8128-908f-4455-8157-66c96a46f75e'})
conn = http.client.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();
#!/usr/bin/python3
 
### Konto einrichten setaccount
 
import http.client
import urllib.request, urllib.parse, urllib.error
 
params = urllib.parse.urlencode({'METHOD':'setaccount', 'FirstName':'Tyrion', 'PrincipalID':'3a1c8128-908f-4455-8157-66c96a46f75e'})
conn = http.client.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();
#!/usr/bin/python3
 
### Passwort festlegen setpassword
 
import http.client
import urllib.request, urllib.parse, urllib.error
 
params = urllib.parse.urlencode({'METHOD':'setpassword', 'PRINCIPAL' : '3a1c8128-908f-4455-8157-66c96a46f75e', 'PASSWORD':'bing'})
conn = http.client.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.

Personal tools
General
About This Wiki