Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Kleines Problm große Wirkung
#1
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
Zitieren
#2
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]);
                    } 
Zitieren
#3
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
Zitieren
#4
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_rand00xffff ), mt_rand00xffff ),
        
                
// 16 bits for "time_mid"
                
mt_rand00xffff ),
        
                
// 16 bits for "time_hi_and_version",
                // four most significant bits holds version number 4
                
mt_rand00x0fff ) | 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_rand00x3fff ) | 0x8000,
        
                
// 48 bits for "node"
                
mt_rand00xffff ), mt_rand00xffff ), mt_rand00xffff )
            );
        } 

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.
Zitieren
#5
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.



Zitieren
#6
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.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste