GridTalk.de
Kleines Problm große Wirkung - Druckversion

+- GridTalk.de (https://www.gridtalk.de)
+-- Forum: Werkstatt (https://www.gridtalk.de/forumdisplay.php?fid=4)
+--- Forum: Technik (https://www.gridtalk.de/forumdisplay.php?fid=25)
+---- Forum: Linux (https://www.gridtalk.de/forumdisplay.php?fid=26)
+---- Thema: Kleines Problm große Wirkung (/showthread.php?tid=4262)



Kleines Problm große Wirkung - soundi1972 - 05.04.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


RE: Kleines Problm große Wirkung - Gubbly - 05.04.2022

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]);
                    } 



RE: Kleines Problm große Wirkung - soundi1972 - 06.04.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


RE: Kleines Problm große Wirkung - Gubbly - 06.04.2022

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.


RE: Kleines Problm große Wirkung - Manfred Aabye - 06.04.2022

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;
?>



RE: Kleines Problm große Wirkung - soundi1972 - 06.04.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.