first cut at a GridInfo plugin (mantis #1825). Currently just spits

out everything in the [GridInfo] section :-D Also, not yet LLSD but
XmlRpc, LLSD via GET will follow. OpenSim.ini.example contains sample
values and explanation. Oh, and default values provided are 

       platform: OpenSim
       mode: standalone | grid

have fun.
0.6.0-stable
Dr Scofield 2008-07-25 16:56:46 +00:00
parent ddd2581d8c
commit b5f23b4c9c
4 changed files with 186 additions and 0 deletions

View File

@ -0,0 +1,121 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSim Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Reflection;
using System.Timers;
using libsecondlife;
using log4net;
using Nini.Config;
using Nwc.XmlRpc;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Region.Environment.Modules.World.Terrain;
using OpenSim.Region.Environment.Scenes;
namespace OpenSim.ApplicationPlugins.GridInfo
{
public class GridInfoPlugin : IApplicationPlugin
{
private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private OpenSimBase _app;
private BaseHttpServer _httpd;
private string _name = "GridInfoPlugin";
private string _version = "0.1";
private Hashtable _info = new Hashtable();
public string Version { get { return _version; } }
public string Name { get { return _name; } }
public void Initialise()
{
_log.Info("[GridInfo]: " + Name + " cannot be default-initialized!");
throw new PluginNotInitialisedException (Name);
}
public void Initialise(OpenSimBase openSim)
{
try
{
_log.Info("[GridInfo]: Grid Info Plugin Enabled");
_app = openSim;
_httpd = openSim.HttpServer;
IConfig startupConfig = _app.ConfigSource.Source.Configs["Startup"];
if (!startupConfig.GetBoolean("gridmode", false))
{
_info["mode"] = "standalone";
}
else
{
_info["mode"] = "grid";
}
_info["platform"] = "OpenSim";
IConfig gridInfoConfig = _app.ConfigSource.Source.Configs["GridInfo"];
foreach (string k in gridInfoConfig.GetKeys())
{
_info[k] = gridInfoConfig.GetString(k);
}
_httpd.AddXmlRPCHandler("get_grid_info", XmlRpcGridInfoMethod);
}
catch (NullReferenceException)
{
// Ignore.
}
}
public XmlRpcResponse XmlRpcGridInfoMethod(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable();
_log.Info("[GridInfo]: Request for grid info");
foreach (string k in _info.Keys)
{
responseData[k] = _info[k];
}
response.Value = responseData;
return response;
}
public void Dispose()
{
}
}
}

View File

@ -1,3 +1,23 @@
[GridInfo]
; login uri
login = http://127.0.0.1:9000/
; login page
welcome = http://127.0.0.1/welcome
; helper uri
economy = http://127.0.0.1:9000/
; web page of grid
about = http://127.0.0.1/about/
; account creation
register = http://127.0.0.1/register
; help
help = http://127.0.0.1/help
; password help
password = http://127.0.0.1/password
; long grid name
gridname = "the lost continent of hippo"
; short grid name
gridnick = "hippogrid"
[Startup]
; Set this to true if you are connecting your OpenSimulator regions to a grid

View File

@ -1103,6 +1103,39 @@
</Files>
</Project>
<Project name="OpenSim.ApplicationPlugins.GridInfo" path="OpenSim/ApplicationPlugins/GridInfo" type="Library">
<Configuration name="Debug">
<Options>
<OutputPath>../../../bin/</OutputPath>
</Options>
</Configuration>
<Configuration name="Release">
<Options>
<OutputPath>../../../bin/</OutputPath>
</Options>
</Configuration>
<ReferencePath>../../../bin/</ReferencePath>
<Reference name="Mono.Addins.dll" />
<Reference name="System"/>
<Reference name="System.Xml"/>
<Reference name="libsecondlife.dll" />
<Reference name="Nini.dll" />
<Reference name="XMLRPC.dll" />
<Reference name="OpenSim"/>
<Reference name="OpenSim.Region.ClientStack"/>
<Reference name="OpenSim.Region.Environment"/>
<Reference name="OpenSim.Framework.Communications"/>
<Reference name="OpenSim.Framework"/>
<Reference name="OpenSim.Framework.Servers"/>
<Reference name="OpenSim.Framework.Console"/>
<Reference name="log4net.dll"/>
<Files>
<Match pattern="*.cs" recurse="true"/>
</Files>
</Project>
<!-- REST plugins -->
<Project name="OpenSim.ApplicationPlugins.Rest"
path="OpenSim/ApplicationPlugins/Rest" type="Library">

12
share/python/grid_info.py Normal file
View File

@ -0,0 +1,12 @@
#!/usr/bin/python
# -*- encoding: utf-8 -*-
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
print gridServer.get_grid_info({})