RemoteAdmin
From OpenSimulator
(→RemoteAdmin Commands) |
(→RemoteAdmin Commands) |
||
Line 23: | Line 23: | ||
== RemoteAdmin Commands == | == RemoteAdmin Commands == | ||
− | + | ||
− | + | === Agent management === | |
− | + | *[[Remoteadmin:admin teleport agent|admin_teleport_agent]] | |
− | + | ||
− | + | === User management === | |
− | + | *[[Remoteadmin:admin create user|admin_create_user]] | |
− | + | *[[Remoteadmin:admin create user email|admin_create_user_email]] | |
− | + | *[[Remoteadmin:admin exists user|admin_exists_user]] | |
− | + | *[[Remoteadmin:admin update user|admin_update_user]] | |
− | + | ||
− | + | === Region management === | |
− | + | *[[Remoteadmin:admin broadcast|admin_broadcast]] | |
− | + | *[[Remoteadmin:admin close region|admin_close_region]] | |
− | + | *[[Remoteadmin:admin create region|admin_create_region]] | |
− | + | *[[Remoteadmin:admin delete region|admin_delete_region]] | |
− | + | *[[Remoteadmin:admin modify region|admin_modify_region]] | |
− | + | *[[Remoteadmin:admin region query|admin_region_query]] | |
− | + | *[[Remoteadmin:admin restart|admin_restart]] | |
− | + | *[[Remoteadmin:admin shutdown|admin_shutdown]] | |
− | + | ||
− | + | === Region file management === | |
− | + | {{multicol}} | |
− | + | *[[Remoteadmin:admin load heightmap|admin_load_heightmap]] | |
− | + | *[[Remoteadmin:admin load oar|admin_load_oar]] | |
− | + | *[[Remoteadmin:admin load xml|admin_load_xml]] | |
− | + | *[[Remoteadmin:admin save heightmap|admin_save_heightmap]] | |
− | + | *[[Remoteadmin:admin save oar|admin_save_oar]] | |
− | + | *[[Remoteadmin:admin save xml|admin_save_xml]] | |
− | + | ||
− | + | ||
− | + | === Region access management === | |
− | + | *[[Remoteadmin:admin acl list|admin_acl_list]] | |
− | + | *[[Remoteadmin:admin acl clear|admin_acl_clear]] | |
− | + | *[[Remoteadmin:admin acl add|admin_acl_add]] | |
− | + | *[[Remoteadmin:admin acl remove|admin_acl_remove]] | |
− | + | ||
− | + | === Administration === | |
− | + | *[[Remoteadmin:admin console command|console_command]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
− | + | ||
== Example code == | == Example code == |
Revision as of 14:36, 9 December 2011
How to Setup the Remote Admin interface
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
As of r/16843 you can limit access to remote admin to specific IP addresses by using the optional access_ip_addresses. You can list all IP's allowed to access remote admin by seperating each IP by a comma. If access_ip_addresses isn't set, then all IP addresses can access RemoteAdmin.
[RemoteAdmin] enabled = true access_password = secret enabled_methods = all
See OpenSim.ini.example in the OpenSim distribution for more details.
Further options
You can also specify a different port for the XMLRPCAdmin command listener from the default simulator HTTP port
[RemoteAdmin] port = <port-number>
RemoteAdmin Commands
Agent management
User management
Region management
- admin_broadcast
- admin_close_region
- admin_create_region
- admin_delete_region
- admin_modify_region
- admin_region_query
- admin_restart
- admin_shutdown
Region file management
Region access managementAdministrationExample codeExample in C# .NETThis 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) 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 XML-RPC string to "create user"(used with first C#.NET method above) POST admin_create_user HTTP/1.0 <?xml version="1.0"?> RemoteAdmin executable for WindowsThe 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 PHPThis 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 PerlBecause 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. CreditsThanks to DrScofield for the Python Script Sources : http://xyzzyxyzzy.net/2008/01/23/using-pythons-xmlrpclib-with-opensim/ |