RemoteAdmin:RemoteAdmin Examples
From OpenSimulator
(→Python) |
(→Example 2 - admin_broadcast - Python 3.6) |
||
Line 132: | Line 132: | ||
<source lang="python"> | <source lang="python"> | ||
#!/usr/bin/python3 | #!/usr/bin/python3 | ||
− | + | ||
# admin_broadcast senden einer Nachricht an alle in einer Region. | # admin_broadcast senden einer Nachricht an alle in einer Region. | ||
# Python 3.6 - 21.04.2018 by Manfred Aabye | # Python 3.6 - 21.04.2018 by Manfred Aabye | ||
− | + | ||
# Module laden | # Module laden | ||
import xmlrpc.client | import xmlrpc.client | ||
− | # | + | # Information |
− | SimulatorAdress = | + | print('---------------------------------------------------------------------') |
− | ConsoleUser = | + | print('Setup: Opensim.ini - Del ; - ConsoleUser - ConsolePass') |
− | ConsolePass = | + | print('---------------------------------------------------------------------') |
− | RegionMessage = | + | print('Example:') |
+ | print('---------------------------------------------------------------------') | ||
+ | print('SimulatorAdress = http://127.0.0.1:9000/ or http://myserver.com:9000/') | ||
+ | print('ConsoleUser = Test') | ||
+ | print('ConsolePass = secret') | ||
+ | print('RegionMessage = This is a beautiful text on a beautiful day.') | ||
+ | print('---------------------------------------------------------------------') | ||
+ | # Abfragen | ||
+ | SimulatorAdress = input('SimulatorAdress:') | ||
+ | ConsoleUser = input('ConsoleUser:') | ||
+ | ConsolePass = input('ConsolePass:') | ||
+ | RegionMessage = input('RegionMessage:') | ||
+ | |||
# Funktion admin_broadcast | # Funktion admin_broadcast | ||
def admin_broadcast(): | def admin_broadcast(): | ||
Line 151: | Line 163: | ||
# Password und Nachricht senden RegionMessage | # Password und Nachricht senden RegionMessage | ||
Simulator.admin_broadcast({'password': ConsolePass, 'message': RegionMessage}) | Simulator.admin_broadcast({'password': ConsolePass, 'message': RegionMessage}) | ||
− | + | ||
# admin_broadcast Aufruf | # admin_broadcast Aufruf | ||
admin_broadcast() | admin_broadcast() | ||
− | + | ||
# Ende admin_broadcast | # Ende admin_broadcast | ||
</source> | </source> |
Revision as of 05:07, 22 April 2018
Below are a view Examples on how to send commands from a remote enviroment.
Contents |
C# .NET
Example 1 - "admin_create_user"
This example needs the Nwc.XmlRpc library, located in your OpenSimulator bin folder.
public void CreateUser(Uri url, string adminPassword, string firstName, string lastName, string password, string email, int regionX, int regionY) { var address = Dns.GetHostEntry(url.DnsSafeHost).AddressList[0]; var ht = new Hashtable(); ht["password"] = adminPassword; ht["user_firstname"] = firstName; ht["user_lastname"] = lastName; ht["user_password"] = password; ht["user_email"] = email; ht["start_region_x"] = regionX; ht["start_region_y"] = regionY; var parameters = new List<Hashtable> { ht }; var rpc = new XmlRpcRequest("admin_create_user", parameters); rpc.Invoke(url.ToString()); } [Test] public void NativeUserRegistrationTest() { CreateUser(new Uri("http://yourgrid.com:9000/"), "secret", "Test2", "user2", "apassword", "email@address.com", 0, 0); }
Example 2 - "admin_create_user"
//Author Ottalese complements of yoursimspot.com //This example needs the CookComputing.XmlRpc library, this can be downloaded from http://www.xml-rpc.net/. //Recently updated code I originally posted, this can be secured using SSL. using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using CookComputing.XmlRpc; [XmlRpcUrl("http://ServerIpAddress:9000/")] public interface RemoteOpensim : IXmlRpcProxy { //Create new user [XmlRpcMethod("admin_create_user")] XmlRpcStruct admin_create_user(XmlRpcStruct Parameters); } public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void SubmitButton_Click(object sender, EventArgs e) { XmlRpcStruct NewUser = new XmlRpcStruct(); //Will contain return results. XmlRpcStruct Parameters = new XmlRpcStruct();//Parameters passed. try { RemoteOpensim Admin = XmlRpcProxyGen.Create<RemoteOpensim>(); Parameters.Add("password", "RemotePassword"); //Password you set in the .ini file for the RemoteAdmin Parameters.Add("user_firstname", SomeStringWithFirstName); Parameters.Add("user_lastname", SomeStringWithLastName); Parameters.Add("user_password", SomePassword); Parameters.Add("start_region_x", 0); Parameters.Add("start_region_y", 0); NewUser = Admin.admin_create_user(Parameters); foreach (DictionaryEntry ReturnResults in NewUser) { Response.Write(ReturnResults.Key.ToString() + " : " + d.Value.ToString());//Returns if the user was added or not } } catch (Exception ex) { Response.Write(ex.Message); } } }
Python
Example 1 - admin_broadcast
# Author : DrScofield # Source : http://xyzzyxyzzy.net/2008/01/23/using-pythons-xmlrpclib-with-opensim/ # License : BSD License #!/usr/bin/python import xmlrpclib # XML-RPC URL (http_listener_port) simulatorUrl = "http://127.0.0.1:9000" # instantiate server object simulator = xmlrpclib.Server(simulatorUrl) # invoke admin_alert: requires password and message simulator.admin_broadcast({'password': 'secret', 'message': 'the answer is 42'})
Example 2 - admin_broadcast - Python 3.6
#!/usr/bin/python3 # admin_broadcast senden einer Nachricht an alle in einer Region. # Python 3.6 - 21.04.2018 by Manfred Aabye # Module laden import xmlrpc.client # Information print('---------------------------------------------------------------------') print('Setup: Opensim.ini - Del ; - ConsoleUser - ConsolePass') print('---------------------------------------------------------------------') print('Example:') print('---------------------------------------------------------------------') print('SimulatorAdress = http://127.0.0.1:9000/ or http://myserver.com:9000/') print('ConsoleUser = Test') print('ConsolePass = secret') print('RegionMessage = This is a beautiful text on a beautiful day.') print('---------------------------------------------------------------------') # Abfragen SimulatorAdress = input('SimulatorAdress:') ConsoleUser = input('ConsoleUser:') ConsolePass = input('ConsolePass:') RegionMessage = input('RegionMessage:') # Funktion admin_broadcast def admin_broadcast(): # Server Initialisieren Simulator = xmlrpc.client.Server(SimulatorAdress) # Password und Nachricht senden RegionMessage Simulator.admin_broadcast({'password': ConsolePass, 'message': RegionMessage}) # admin_broadcast Aufruf admin_broadcast() # Ende admin_broadcast
XML-RPC string
Example 1 - "create user"
(used with first C#.NET method above)
POST admin_create_user HTTP/1.0
Host: http://10.0.0.12:16384/
Content-type: text/xml
Content-Length: 993
<?xml version="1.0"?>
<methodCall>
<methodName>admin_create_user</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>password</name>
<value><string>password</string></value>
</member>
<member>
<name>user_firstname</name>
<value><string>male</string></value>
</member>
<member>
<name>user_lastname</name>
<value><string>9999</string></value>
</member>
<member>
<name>user_password</name>
<value><string>password</string></value>
</member>
<member>
<name>user_email</name>
<value><string>none@email.com</string></value>
</member>
<member>
<name>start_region_x</name>
<value><int>128</int></value>
</member>
<member>
<name>start_region_y</name>
<value><int>128</int></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
RemoteAdmin executable for Windows
The RemoteAdmin executable for Windows is a command line tool based on the RemoteAdmin PHP Class.
PHP
Example 1
This example needs the RemoteAdmin PHP Class file available here.<?php // Author : Olish Newman // Source : http://code.google.com/p/opensimtools/wiki/RemoteAdminPHPClass // Licence : BSD License // Including the RemoteAdmin PHP class. It can be downloaded from the link above. include('RemoteAdmin.php'); // Instantiate the class with parameters identical to the Python example above $myRemoteAdmin = new RemoteAdmin('127.0.0.1', 9000, 'secret'); // Invoke admin_broadcast $parameters = array('message' => 'the answer is 42'); $myRemoteAdmin->SendCommand('admin_broadcast', $parameters); // Invoke admin_shutdown (example for use without parameters) $myRemoteAdmin->SendCommand('admin_shutdown'); // Invoke admin_create_user (multiple parameters) $parameters = array('user_firstname' => 'Ruth', 'user_lastname' => 'OpenSim', 'user_password' => 'MyPassword', 'start_region_x' => '1000', 'start_region_y' => '1000'); $myRemoteAdmin->SendCommand('admin_create_user', $parameters); ?>
Note: This script does not appear to work for create user because it tries to pass the start region x and y as a string when the RemoteAdmin needs a string. The class needs to be edited to pass it as a number or edit the remoteadmin source to convert the string to a unsigned int.
Example 2
Another example in PHP5, using CURL.//This is the slightly modified RPC-class of the BSD-licensed WiXTD webportal <?php class RemotePC { function __construct() { $this->serveruri = "http://myhost"; $this->serverport ="9000"; $this->password ="foobar"; } function call($command,$parameters) { $parameters['password'] = $this->password; $request = xmlrpc_encode_request($command, $parameters); $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $this->serveruri); curl_setopt( $ch, CURLOPT_PORT, $this->serverport]); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $request); curl_setopt ( $ch, CURLOPT_TIMEOUT, 5); $result = curl_exec($ch); curl_close($ch); return xmlrpc_decode($result); } } ?>
Example 3
Another example provided by MarcelEdward (triplehx3) can be found here. (Tested with OpenSimulator v0.9.1.0 Dev).
Perl
Because the OpenSimulator internal web server just accepts HTTP/1.0 requests, it's worth to give a perl example. It's not a daily thing to do HTTP/1.0 within the LWP environment. You can get the Perl example here.
Credits
Thanks to DrScofield for the Python Script Sources : http://xyzzyxyzzy.net/2008/01/23/using-pythons-xmlrpclib-with-opensim/