RemoteAdmin
From OpenSimulator
(→RemoteAdmin Commands) |
|||
Line 160: | Line 160: | ||
{| cellspacing="0" cellpadding="4" border="1" | {| cellspacing="0" cellpadding="4" border="1" | ||
|- | |- | ||
− | ! Name | + | ! Name |
− | ! Status | + | ! Status |
− | ! Description | + | ! Description |
! Parameters | ! Parameters | ||
|- | |- | ||
− | | [[Remoteadmin:admin create region|admin_create_region]] | + | | [[Remoteadmin:admin create region|admin_create_region]] |
− | | | + | | <br> |
− | | Create a new region | + | | Create a new region |
| region_name, region_id (optional), estate_owner_first (optional), estate_owner_last (optional), estate_owner_uuid (optional), listen_ip, listen_port (integer), external_address, region_x (integer), region_y (integer), persist (optional), estate_name (an estate owner must be specified if the estate does not already exist) | | region_name, region_id (optional), estate_owner_first (optional), estate_owner_last (optional), estate_owner_uuid (optional), listen_ip, listen_port (integer), external_address, region_x (integer), region_y (integer), persist (optional), estate_name (an estate owner must be specified if the estate does not already exist) | ||
|- | |- | ||
− | | [[Remoteadmin:admin delete region|admin_delete_region]] | + | | [[Remoteadmin:admin delete region|admin_delete_region]] |
− | | | + | | <br> |
− | | Delete a region | + | | Delete a region |
| region_name | | region_name | ||
|- | |- | ||
− | | [[Remoteadmin:admin close region|admin_close_region]] | + | | [[Remoteadmin:admin close region|admin_close_region]] |
− | | | + | | <br> |
− | | Close a region without deleting it. | + | | Close a region without deleting it. |
| region_name, region_id (optional) | | region_name, region_id (optional) | ||
|- | |- | ||
− | | [[Remoteadmin:admin modify region|admin_modify_region]] | + | | [[Remoteadmin:admin modify region|admin_modify_region]] |
− | | | + | | <br> |
− | | Modify a region | + | | Modify a region |
| region_name, region_id (optional), public, enable_voice | | region_name, region_id (optional), public, enable_voice | ||
|- | |- | ||
− | | [[Remoteadmin:admin region query|admin_region_query]] | + | | [[Remoteadmin:admin region query|admin_region_query]] |
− | | | + | | <br> |
− | | Query the 'health' of a region | + | | Query the 'health' of a region |
| region_uuid or region_name | | region_uuid or region_name | ||
|- | |- | ||
− | | [[Remoteadmin:admin shutdown|admin_shutdown]] | + | | [[Remoteadmin:admin shutdown|admin_shutdown]] |
− | | | + | | <br> |
− | | Shut down the simulator | + | | Shut down the simulator |
| shutdown (optional, expects 'delayed'), milliseconds | | shutdown (optional, expects 'delayed'), milliseconds | ||
|- | |- | ||
− | | [[Remoteadmin:admin broadcast|admin_broadcast]] | + | | [[Remoteadmin:admin broadcast|admin_broadcast]] |
− | | | + | | <br> |
− | | Send a general alert | + | | Send a general alert |
| message | | message | ||
|- | |- | ||
− | | [[Remoteadmin:admin restart|admin_restart]] | + | | [[Remoteadmin:admin restart|admin_restart]] |
− | | | + | | <br> |
− | | Restart Region | + | | Restart Region |
| regionid | | regionid | ||
|- | |- | ||
− | | [[Remoteadmin:admin load heightmap|admin_load_heightmap]] | + | | [[Remoteadmin:admin load heightmap|admin_load_heightmap]] |
− | | | + | | <br> |
− | | Load Height Map | + | | Load Height Map |
| filename, regionid | | filename, regionid | ||
|- | |- | ||
− | | [[Remoteadmin:admin save heightmap|admin_save_heightmap]] | + | | [[Remoteadmin:admin save heightmap|admin_save_heightmap]] |
− | | | + | | <br> |
− | | Execute the terrain save command | + | | Execute the terrain save command |
| filename, regionid | | filename, regionid | ||
|- | |- | ||
− | | [[Remoteadmin:admin create user|admin_create_user]] | + | | [[Remoteadmin:admin create user|admin_create_user]] |
− | | | + | | <br> |
− | | Create a new user | + | | Create a new user |
| user_firstname, user_lastname, user_password, start_region_x, start_region_y | | user_firstname, user_lastname, user_password, start_region_x, start_region_y | ||
|- | |- | ||
− | | [[Remoteadmin:admin create user email|admin_create_user_email]] | + | | [[Remoteadmin:admin create user email|admin_create_user_email]] |
− | | | + | | <br> |
− | | Create a new user (alias for admin_create_user) | + | | Create a new user (alias for admin_create_user) |
| user_firstname, user_lastname, user_password, start_region_x, start_region_y | | user_firstname, user_lastname, user_password, start_region_x, start_region_y | ||
|- | |- | ||
− | | [[Remoteadmin:admin exists user|admin_exists_user]] | + | | [[Remoteadmin:admin exists user|admin_exists_user]] |
− | | | + | | <br> |
− | | Check whether a certain user account exists | + | | Check whether a certain user account exists |
| user_firstname, user_lastname | | user_firstname, user_lastname | ||
|- | |- | ||
− | | [[Remoteadmin:admin update user|admin_update_user]] | + | | [[Remoteadmin:admin update user|admin_update_user]] |
− | | | + | | <br> |
− | | Update the password/home of a user account | + | | Update the password/home of a user account |
| user_firstname, user_lastname, user_password, start_region_x, start_region_y | | user_firstname, user_lastname, user_password, start_region_x, start_region_y | ||
|- | |- | ||
− | | [[Remoteadmin:admin load xml|admin_load_xml]] | + | | [[Remoteadmin:admin load xml|admin_load_xml]] |
− | | | + | | <br> |
− | | Execute the Load XML command | + | | Execute the Load XML command |
| filename, region_uuid (or region_name), xml_version | | filename, region_uuid (or region_name), xml_version | ||
|- | |- | ||
− | | [[Remoteadmin:admin save xml|admin_save_xml]] | + | | [[Remoteadmin:admin save xml|admin_save_xml]] |
− | | | + | | <br> |
− | | Execute the Save XML command | + | | Execute the Save XML command |
| filename, region_uuid (or region_name), xml_version | | filename, region_uuid (or region_name), xml_version | ||
|- | |- | ||
− | | [[Remoteadmin:admin load oar|admin_load_oar]] | + | | [[Remoteadmin:admin load oar|admin_load_oar]] |
− | | | + | | <br> |
− | | Load a saved OAR file into a region | + | | Load a saved OAR file into a region |
| filename, region_uuid (or region_name), merge (optional, use "true"), skip-assets (optional, use "true)<br> | | filename, region_uuid (or region_name), merge (optional, use "true"), skip-assets (optional, use "true)<br> | ||
|- | |- | ||
− | | [[Remoteadmin:admin save oar|admin_save_oar]] | + | | [[Remoteadmin:admin save oar|admin_save_oar]] |
− | | | + | | <br> |
− | | Saved an OAR file of a regions contents | + | | Saved an OAR file of a regions contents |
− | | filename, region_uuid (or region_name), profile (optinal, use profile url), noassets (optional, use "true")<br> | + | | filename, region_uuid (or region_name), profile (optinal, use profile url), noassets (optional, use "true"), perm(optinal, use C, T or CT),<br> |
|- | |- | ||
− | | [[Remoteadmin:admin acl list|admin_acl_list]] | + | | [[Remoteadmin:admin acl list|admin_acl_list]] |
− | | | + | | <br> |
− | | Retrieve a list of users who can access the region | + | | Retrieve a list of users who can access the region |
| region_uuid or region_name | | region_uuid or region_name | ||
|- | |- | ||
− | | [[Remoteadmin:admin acl clear|admin_acl_clear]] | + | | [[Remoteadmin:admin acl clear|admin_acl_clear]] |
− | | | + | | <br> |
− | | Clear the access list for the region | + | | Clear the access list for the region |
| region_uuid or region_name | | region_uuid or region_name | ||
|- | |- | ||
− | | [[Remoteadmin:admin acl add|admin_acl_add]] | + | | [[Remoteadmin:admin acl add|admin_acl_add]] |
− | | | + | | <br> |
− | | Add a list of users to the access control list | + | | Add a list of users to the access control list |
| region_uuid or region_name, users | | region_uuid or region_name, users | ||
|- | |- | ||
− | | [[Remoteadmin:admin acl remove|admin_acl_remove]] | + | | [[Remoteadmin:admin acl remove|admin_acl_remove]] |
− | | | + | | <br> |
− | | Remove a list of users from the access control list | + | | Remove a list of users from the access control list |
| region_uuid or region_name, users | | region_uuid or region_name, users | ||
|} | |} |
Revision as of 12:18, 12 September 2011
Caution ! The RemoteAdmin feature is unsecured at this time. For testing uses only.
How to Setup the Remote Admin
Setup OpenSim
First you should enable the remote admin interface to do so just add the following lines to your OpenSim.ini file Port should be set to a nonzero value to have the remote admin on a different port
[RemoteAdmin] enabled = true access_password = secret port = 0
Example in C# .NET
This example needs the Nwc.XmlRpc library, located in your OpenSim 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); }
Another Example in C# .NET
//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);
}
}
}
Example in Python
# 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) gridServerURL = ‘http://127.0.0.1:9000′ # instantiate server object gridServer = xmlrpclib.Server(gridServerURL) # invoke admin_alert: requires password and message gridServer.admin_broadcast({’password’: ’secret’, ‘message’: ‘the answer is 42′})
RemoteAdmin executable for Windows
The RemoteAdmin executable for Windows is a command line tool based on the RemoteAdmin PHP Class.
Downloads and documentation on the RemoteAdmin Executable webpage
Example in PHP
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.
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 in Perl
Because the OpenSim 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.
RemoteAdmin Commands
Name | Status | Description | Parameters |
---|---|---|---|
admin_create_region | |
Create a new region | region_name, region_id (optional), estate_owner_first (optional), estate_owner_last (optional), estate_owner_uuid (optional), listen_ip, listen_port (integer), external_address, region_x (integer), region_y (integer), persist (optional), estate_name (an estate owner must be specified if the estate does not already exist) |
admin_delete_region | |
Delete a region | region_name |
admin_close_region | |
Close a region without deleting it. | region_name, region_id (optional) |
admin_modify_region | |
Modify a region | region_name, region_id (optional), public, enable_voice |
admin_region_query | |
Query the 'health' of a region | region_uuid or region_name |
admin_shutdown | |
Shut down the simulator | shutdown (optional, expects 'delayed'), milliseconds |
admin_broadcast | |
Send a general alert | message |
admin_restart | |
Restart Region | regionid |
admin_load_heightmap | |
Load Height Map | filename, regionid |
admin_save_heightmap | |
Execute the terrain save command | filename, regionid |
admin_create_user | |
Create a new user | user_firstname, user_lastname, user_password, start_region_x, start_region_y |
admin_create_user_email | |
Create a new user (alias for admin_create_user) | user_firstname, user_lastname, user_password, start_region_x, start_region_y |
admin_exists_user | |
Check whether a certain user account exists | user_firstname, user_lastname |
admin_update_user | |
Update the password/home of a user account | user_firstname, user_lastname, user_password, start_region_x, start_region_y |
admin_load_xml | |
Execute the Load XML command | filename, region_uuid (or region_name), xml_version |
admin_save_xml | |
Execute the Save XML command | filename, region_uuid (or region_name), xml_version |
admin_load_oar | |
Load a saved OAR file into a region | filename, region_uuid (or region_name), merge (optional, use "true"), skip-assets (optional, use "true) |
admin_save_oar | |
Saved an OAR file of a regions contents | filename, region_uuid (or region_name), profile (optinal, use profile url), noassets (optional, use "true"), perm(optinal, use C, T or CT), |
admin_acl_list | |
Retrieve a list of users who can access the region | region_uuid or region_name |
admin_acl_clear | |
Clear the access list for the region | region_uuid or region_name |
admin_acl_add | |
Add a list of users to the access control list | region_uuid or region_name, users |
admin_acl_remove | |
Remove a list of users from the access control list | region_uuid or region_name, users |
Credits
Thanks to DrScofield for the Python Script Sources : http://xyzzyxyzzy.net/2008/01/23/using-pythons-xmlrpclib-with-opensim/