Beiträge: 3
Themen: 1
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Apr 2022
Hallo zusammen,
Ich bin neu hier aber arbeite schon seit Jahren mit OpenSim.
Nun habe ich mir die neue Version mal geholt und alles läuft einwandfrei, bis auf dass Registrieren.
entweder Standallone und Registrieren, oder Grid und Kein Registrieren aber dafür Landkauf möglich.
Ich nutze Debian Stretch
OpenSim 0.9.2.2 V4
Vielleicht kann mir hier jemand helfen, wie ich über PHP oder Html eine Registrierung hinbekomme da unter Robust ja die RemoteAdmin.php nicht funzt.
Vielen Dank im vorraus Soundi
Beiträge: 167
Themen: 4
Thanks Received: 83 in 41 posts
Thanks Given: 2
Registriert seit: Jan 2014
Das kannst du etwa so machen:
$RUNTIME['REGISTER']['PASS'] ist dabei das Passwort des neuen Users.
$RUNTIME['REGISTER']['Name'] ist der Vor und Nachname getrennt mit einem " "
$RUNTIME['REGISTER']['EMAIL'] ist die E-Mail des neuen Avatars
PHP-Code: $avatarUUID = $RUNTIME['OPENSIM']->gen_uuid(); $passwordSalt = md5($avatarUUID.time()); $passwordHash = md5(md5($RUNTIME['REGISTER']['PASS']).":".$passwordSalt); $avatarNameParts = explode(" ", $RUNTIME['REGISTER']['Name']); $statementAuth = $RUNTIME['PDO']->prepare('INSERT INTO `auth` (`UUID`, `passwordHash`, `passwordSalt`, `webLoginKey`, `accountType`) VALUES (:UUID, :HASHVALUE, :SALTVALUE, :WEBKEY, :ACCTYPE)'); $statementAuth->execute(['UUID' => $avatarUUID, 'HASHVALUE' => $passwordHash, 'SALTVALUE' => $passwordSalt, 'WEBKEY' => "00000000-0000-0000-0000-000000000000", 'ACCTYPE' => "UserAccount"]); $statementAccounts = $RUNTIME['PDO']->prepare('INSERT INTO `UserAccounts` (`PrincipalID`, `ScopeID`, `FirstName`, `LastName`, `Email`, `ServiceURLs`, `Created`, `UserLevel`, `UserFlags`, `UserTitle`, `active`) VALUES (:PrincipalID, :ScopeID, :FirstName, :LastName, :Email, :ServiceURLs, :Created, :UserLevel, :UserFlags, :UserTitle, :active )'); $statementAccounts->execute(['PrincipalID' => $avatarUUID, 'ScopeID' => "00000000-0000-0000-0000-000000000000", 'FirstName' => $avatarNameParts[0], 'LastName' => $avatarNameParts[1], 'Email' => $RUNTIME['REGISTER']['EMAIL'], 'ServiceURLs' => "HomeURI= GatekeeperURI= InventoryServerURI= AssetServerURI= ", 'Created' => time(), 'UserLevel' => 0, 'UserFlags' => 0, 'UserTitle' => "", 'active' => 1]); $statementProfile = $RUNTIME['PDO']->prepare('INSERT INTO `userprofile` (`useruuid`, `profilePartner`, `profileImage`, `profileFirstImage`) VALUES (:useruuid, :profilePartner, :profileImage, :profileFirstImage)'); $statementProfile->execute(['useruuid' => $avatarUUID, 'profilePartner' => "00000000-0000-0000-0000-000000000000", 'profileImage' => "00000000-0000-0000-0000-000000000000", 'profileFirstImage' => "00000000-0000-0000-0000-000000000000"]); $Inventory = array('Calling Cards' => 2, 'Objects' => 6, 'Landmarks' => 3, 'Clothing' => 5, 'Gestures' => 21, 'Body Parts' => 13, 'Textures' => 0, 'Scripts' => 10, 'Photo Album' => 15, 'Lost And Found' => 16, 'Trash' => 14, 'Notecards' => 7, 'My Inventory' => 8, 'Sounds' => 1, 'Animations' => 20); $InventoryRootFolder = $RUNTIME['OPENSIM']->gen_uuid(); foreach ($Inventory as $FolderName => $InventoryType) { $FolderUUID = $RUNTIME['OPENSIM']->gen_uuid(); if ($InventoryType == 8) { $FolderUUID = $InventoryRootFolder; $FolderParent = "00000000-0000-0000-0000-000000000000"; }else{ $FolderParent = $InventoryRootFolder; } $statementInventoryFolder = $RUNTIME['PDO']->prepare('INSERT INTO `inventoryfolders` (`folderName`, `type`, `version`, `folderID`, `agentID`, `parentFolderID`) VALUES (:folderName, :folderTyp, :folderVersion, :folderID, :agentID, :parentFolderID)'); $statementInventoryFolder->execute(['agentID' => $avatarUUID, 'folderName' => $FolderName, 'folderTyp' => $InventoryType, 'folderVersion' => 1, 'folderID' => $FolderUUID, 'parentFolderID' => $FolderParent]); }
Beiträge: 3
Themen: 1
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Apr 2022
Also ich hab es nun mal probiert und irgendwie klappt es nicht.
PHP-Code: require_once("inc/config.inc.php"); require_once("inc/functions.inc.php");
$fname = $_POST['fname']; $fname = $_POST['lname']; $fname = $_POST['password']; $fname = $_POST['email'];
$avatarUUID = '0292d6d3-60f4-4a0c-d99d-72f57bceb910';
$passwordSalt = md5($avatarUUID.time()); $passwordHash = md5(md5($RUNTIME[$password]).":".$passwordSalt); $avatarNameParts = explode(" ", $RUNTIME[$fname.' '.$lname]); $statementAuth = $pdo->prepare('INSERT INTO `auth` (`UUID`, `passwordHash`, `passwordSalt`, `webLoginKey`, `accountType`) VALUES (:UUID, :HASHVALUE, :SALTVALUE, :WEBKEY, :ACCTYPE)'); $statementAuth->execute(['UUID' => $avatarUUID, 'HASHVALUE' => $passwordHash, 'SALTVALUE' => $passwordSalt, 'WEBKEY' => "00000000-0000-0000-0000-000000000000", 'ACCTYPE' => "UserAccount"]); $statementAccounts = $pdo->prepare('INSERT INTO `UserAccounts` (`PrincipalID`, `ScopeID`, `FirstName`, `LastName`, `Email`, `ServiceURLs`, `Created`, `UserLevel`, `UserFlags`, `UserTitle`, `active`) VALUES (:PrincipalID, :ScopeID, :FirstName, :LastName, :Email, :ServiceURLs, :Created, :UserLevel, :UserFlags, :UserTitle, :active )'); $statementAccounts->execute(['PrincipalID' => $avatarUUID, 'ScopeID' => "00000000-0000-0000-0000-000000000000", 'FirstName' => $avatarNameParts[0], 'LastName' => $avatarNameParts[1], 'Email' => $RUNTIME['REGISTER'][$email], 'ServiceURLs' => "HomeURI= GatekeeperURI= InventoryServerURI= AssetServerURI= ", 'Created' => time(), 'UserLevel' => 0, 'UserFlags' => 0, 'UserTitle' => "", 'active' => 1]); $statementProfile = $pdo->prepare('INSERT INTO `userprofile` (`useruuid`, `profilePartner`, `profileImage`, `profileFirstImage`) VALUES (:useruuid, :profilePartner, :profileImage, :profileFirstImage)'); $statementProfile->execute(['useruuid' => $avatarUUID, 'profilePartner' => "00000000-0000-0000-0000-000000000000", 'profileImage' => "00000000-0000-0000-0000-000000000000", 'profileFirstImage' => "00000000-0000-0000-0000-000000000000"]); $Inventory = array('Calling Cards' => 2, 'Objects' => 6, 'Landmarks' => 3, 'Clothing' => 5, 'Gestures' => 21, 'Body Parts' => 13, 'Textures' => 0, 'Scripts' => 10, 'Photo Album' => 15, 'Lost And Found' => 16, 'Trash' => 14, 'Notecards' => 7, 'My Inventory' => 8, 'Sounds' => 1, 'Animations' => 20); $InventoryRootFolder = $RUNTIME['OPENSIM']->gen_uuid(); foreach ($Inventory as $FolderName => $InventoryType) { $FolderUUID = $RUNTIME['OPENSIM']->gen_uuid(); if ($InventoryType == 8) { $FolderUUID = $InventoryRootFolder; $FolderParent = "00000000-0000-0000-0000-000000000000"; }else{ $FolderParent = $InventoryRootFolder; } $statementInventoryFolder = $pdo->prepare('INSERT INTO `inventoryfolders` (`folderName`, `type`, `version`, `folderID`, `agentID`, `parentFolderID`) VALUES (:folderName, :folderTyp, :folderVersion, :folderID, :agentID, :parentFolderID)'); $statementInventoryFolder->execute(['agentID' => $avatarUUID, 'folderName' => $FolderName, 'folderTyp' => $InventoryType, 'folderVersion' => 1, 'folderID' => $FolderUUID, 'parentFolderID' => $FolderParent]); }
Das $RUNTIME['OPENSIM']->gen_uuid(); funzt bei mir garnicht
Danke aber für die schnelle Antwort, ich werde dass nochmal bissl umbasteln und schauen obs dann klappt
Beiträge: 167
Themen: 4
Thanks Received: 83 in 41 posts
Thanks Given: 2
Registriert seit: Jan 2014
Ja, das ist auch kein Wunder. $RUNTIME['OPENSIM'] ist eine Classe, die bei mir allerhand sachen rund um OpenSim erledigt. gen_uuid() ist dort eine Funktion, die OpenSim kompatible UUIDs generieren kann.
PHP-Code: public function gen_uuid() { return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), // 16 bits for "time_mid" mt_rand( 0, 0xffff ), // 16 bits for "time_hi_and_version", // four most significant bits holds version number 4 mt_rand( 0, 0x0fff ) | 0x4000, // 16 bits, 8 bits for "clk_seq_hi_res", // 8 bits for "clk_seq_low", // two most significant bits holds zero and one for variant DCE1.1 mt_rand( 0, 0x3fff ) | 0x8000, // 48 bits for "node" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); }
Generell hatte ich den Code auch nur als Beispiel gegeben. Ich gehe davon aus, dass jemand, der so fragt, mit so einem Code etwas funktionierendes bauen kann. Ansonsten solltest du lieber ein fertiges System nehmen wie jopensim oder etwas in der Art.
Beiträge: 960
Themen: 143
Thanks Received: 605 in 328 posts
Thanks Given: 77
Registriert seit: Feb 2015
06.04.2022, 15:41
(Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2022, 16:20 von Manfred Aabye.)
Und was ist mit createuser?
http://opensimulator.org/wiki/UserManipulation
(opensimulator.org/wiki/UserManipulation)
Python Code in PHP
Code: <?php
//Python Code in PHP
$code = escapeshellcmd('python /var/www/mein_skript.py');
$ergebnis = shell_exec($code);
echo $ergebnis;
?>
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
Beiträge: 3
Themen: 1
Thanks Received: 0 in 0 posts
Thanks Given: 0
Registriert seit: Apr 2022
Also die Idee mit pyton find ich gut aber damit kenn ich mich garned aus und alles was ich teste klappt ned.
Gibts denn keine möglichkeit im Standallone Mode den Landkauf zu machen ? hab da auch schon einiges getestet , aber klappt ned weil die Presence fehlt von Robust
Gruß Soundi und danke dass du dir soviel Arbeit machst.
|