27.10.2021, 11:28
(Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2021, 11:32 von Manfred Aabye.)
Heute entdeckt und direkt ausprobiert 
admin_acl_add ermöglicht aus der Ferne das Hinzufügen einer Liste von Benutzern zur Zugriffskontrollliste.
admin_acl_remove entfernt diesen wieder.
PHP7
test.php
RemoteAdmin.php

admin_acl_add ermöglicht aus der Ferne das Hinzufügen einer Liste von Benutzern zur Zugriffskontrollliste.
admin_acl_remove entfernt diesen wieder.
PHP7
test.php
Code:
<?php
// ** Beispiel:
// * Einschließlich der RemoteAdmin PHP-Klasse.
include('RemoteAdmin.php');
// * Klassen Parameter.
$myRemoteAdmin = new RemoteAdmin('127.0.0.1', 9000, 'secret');
// * admin_acl aufrufen (mit mehreren Parametern)
$parameters = array('region_name' => 'My Plaza', 'users' => 'John Doe');
// ** admin_acl_add ermöglicht aus der Ferne das Hinzufügen einer Liste von Benutzern zur Zugriffskontrollliste.
// * Benutzer hinzufuegen:
$myRemoteAdmin->SendCommand('admin_acl_add', $parameters);
// * Benutzer entfernen
//$myRemoteAdmin->SendCommand('admin_acl_remove', $parameters);
?>
RemoteAdmin.php
Code:
<?php
class RemoteAdmin
{
function __construct($sURL, $sPort, $pass)
{
$this->simulatorURL = $sURL;
$this->simulatorPort = $sPort;
$this->password = $pass;
}
function SendCommand($command, $params=array())
{
$paramsNames = array_keys($params);
$paramsValues = array_values($params);
$xml = '
<methodCall>
<methodName>'.htmlspecialchars($command).'</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>password</name>
<value><string>'.htmlspecialchars($this->password).'</string></value>
</member>';
if (count($params) != 0)
{
for ($p = 0; $p < count($params); $p++)
{
$xml .= '<member><name>'.htmlspecialchars($paramsNames[$p]).'</name>';
$xml .= is_int($paramsValues[$p]) ? '<value><int>'.$paramsValues[$p].'</int></value></member>' : '<value><string>'.htmlspecialchars($paramsValues[$p]).'</string></value></member>';
}
}
$xml .= '</struct>
</value>
</param>
</params>
</methodCall>';
$host = $this->simulatorURL;
$port = $this->simulatorPort;
$timeout = 5;
error_reporting(0);
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp)
{
return FALSE;
}
else
{
fputs($fp, "POST / HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: text/xml\r\n");
fputs($fp, "Content-length: ". strlen($xml) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $xml);
$res = "";
while(!feof($fp))
{
$res .= fgets($fp, 128);
}
fclose($fp);
$response = substr($res, strpos($res, "\r\n\r\n"));
$result = array();
if (preg_match_all('#<name>(.+)</name><value><(string|int|boolean|i4)>(.*)</\2></value>#U', $response, $regs, PREG_SET_ORDER))
{
foreach($regs as $key => $val)
{
$result[$val[1]] = $val[3];
}
}
return $result;
}
}
}
?>
Ein Metaversum sind viele kleine Räume, die nahtlos aneinander passen,
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.
sowie direkt sichtbar und begehbar sind, als wäre es aus einem Guss.