RemoteAdmin:RemoteAdmin Examples

From OpenSimulator

Revision as of 05:05, 11 January 2019 by Djphil (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Below are a view Examples on how to send commands from a remote enviroment.



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);
public void NativeUserRegistrationTest()
 CreateUser(new Uri(""), "secret", "Test2", "user2", "apassword", "", 0, 0);

Example 2 - "admin_create_user"

//Author Ottalese complements of 
//This example needs the CookComputing.XmlRpc library, this can be downloaded from 
//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;
 public interface RemoteOpensim&nbsp;: IXmlRpcProxy
 //Create new user
 XmlRpcStruct admin_create_user(XmlRpcStruct Parameters);
 public partial class _Default&nbsp;: 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.
 RemoteOpensim Admin = XmlRpcProxyGen.Create&lt;RemoteOpensim&gt;();
 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() + "&nbsp;: " + d.Value.ToString());//Returns if the user was added or not
 catch (Exception ex)


Example 1 - admin_broadcast

# Author : DrScofield 
# Source :
# License : BSD License
import xmlrpclib 
# XML-RPC URL (http_listener_port) 
simulatorUrl = ""
# instantiate server object 
simulator = xmlrpclib.Server(simulatorUrl) 
# invoke admin_alert: requires password and message 
simulator.admin_broadcast({'password': 'secret', 'message': 'the answer is 42'})

Python 3.6 Example - admin_create_user

# OpenSim Remoteadmin createuser
# Python 3.6 - 2018 by Manfred Aabye Version  0.5.29
# import library
from appJar import gui
import xmlrpc.client
import configparser
from tkinter import *
import tkinter as tk
import sys
import os
import gettext
gettext.bindtextdomain('OpenSimRemote', '/language')
_ = gettext.gettext
# gettext einfügen funktioniert so:
# print(_('This is a translatable string.'))
# -----------------------------   createuser   ---------------------------------------------
def createuser():
	# Button Auswertung
	def createuserbutton(button):
		if button == "Ende":
		if button == "Hilfe":
			app.infoBox("Hilfe", "Bitte Ihre Server Daten in die OpenSimAdmin.ini eintragen.")
		if button == "Senden":
			config = configparser.ConfigParser()
			SimulatorAdress = config['DEFAULT']['SimulatorAdress']
			ConsoleUser = config['DEFAULT']['ConsoleUser']
			ConsolePass = config['DEFAULT']['ConsolePass']
			user_firstname = app.getEntry('user_firstname')
			user_lastname = app.getEntry('user_lastname')
			user_password = app.getEntry('user_password')
			start_region_x = app.getEntry('start_region_x')
			start_region_y = app.getEntry('start_region_y')
			user_email = app.getEntry('user_email')
			Simulator = xmlrpc.client.Server(SimulatorAdress)
			Simulator.admin_create_user({'password': ConsolePass, 'user_firstname': user_firstname, 'user_lastname': user_lastname, 'user_password': user_password, 'start_region_x': start_region_x, 'start_region_y': start_region_y, 'user_email': user_email})
	# Erstelle GUI Variablen Aufruf mit app
	app = gui("create user", "355x260") # Fenster erstellen mit Namen und Groesse
	app.setFont(12) # Textgroesse
	app.startLabelFrame("create user")
	# Nachrichten Text Abfragen
	# Buttons ruft die Function createuserbutton auf
	app.addButtons(["Senden", "Hilfe", "Ende"], createuserbutton)
	# start GUI

Create file: OpenSimAdmin.ini

SimulatorAdress =
ConsoleUser = Test
ConsolePass = secret

XML-RPC string

Example 1 - "create user"

(used with first C#.NET method above)

POST admin_create_user HTTP/1.0
Content-type: text/xml
Content-Length: 993

<?xml version="1.0"?>

RemoteAdmin executable for Windows

The RemoteAdmin executable for Windows is a command line tool based on the RemoteAdmin PHP Class.


Example 1

This example needs the RemoteAdmin PHP Class file available here (Original) or here (Revisited).

// Author : Olish Newman
// Source :
// Licence : BSD License
// Including the RemoteAdmin PHP class. It can be downloaded from the link above.
// Instantiate the class with parameters identical to the Python example above
$myRemoteAdmin = new RemoteAdmin('', 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)
// 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
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);
 return xmlrpc_decode($result);

Example 3

Another example provided by MarcelEdward (triplehx3) can be found here. (Tested with OpenSimulator v0.9.1.0 Dev).


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.


Thanks to DrScofield for the Python Script Sources :

Personal tools
About This Wiki