diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs
index 14f5b1ef94..f6d1a826c7 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs
@@ -30,21 +30,29 @@ using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Security;
+using System.Text;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
+using OpenSim.Framework.Console;
+using OpenSim.Region.CoreModules.Framework.InterfaceCommander;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.World.Estate
{
+ ///
+ /// Estate management console commands.
+ ///
public class EstateManagementCommands
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected EstateManagementModule m_module;
+ protected Commander m_commander = new Commander("estate");
+
public EstateManagementCommands(EstateManagementModule module)
{
m_module = module;
@@ -52,20 +60,60 @@ namespace OpenSim.Region.CoreModules.World.Estate
public void Initialise()
{
- m_module.Scene.AddCommand(this, "set terrain texture",
+ m_log.DebugFormat("[ESTATE MODULE]: Setting up estate commands for region {0}", m_module.Scene.RegionInfo.RegionName);
+
+ m_module.Scene.AddCommand(m_module, "set terrain texture",
"set terrain texture [] []",
"Sets the terrain to , if or are specified, it will only " +
"set it on regions with a matching coordinate. Specify -1 in or to wildcard" +
" that coordinate.",
consoleSetTerrainTexture);
- m_module.Scene.AddCommand(this, "set terrain heights",
+ m_module.Scene.AddCommand(m_module, "set terrain heights",
"set terrain heights [] []",
"Sets the terrain texture heights on corner # to /, if or are specified, it will only " +
"set it on regions with a matching coordinate. Specify -1 in or to wildcard" +
" that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.",
consoleSetTerrainHeights);
- }
+
+ Command showCommand
+ = new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowEstatesCommand, "Shows all estates on the simulator.");
+
+ m_commander.RegisterCommand("show", showCommand);
+
+ m_module.Scene.RegisterModuleCommander(m_commander);
+
+ m_module.Scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
+ }
+
+ public void Close()
+ {
+ m_module.Scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole;
+ m_module.Scene.UnregisterModuleCommander(m_commander.Name);
+ }
+
+ ///
+ /// Processes commandline input. Do not call directly.
+ ///
+ /// Commandline arguments
+ protected void EventManagerOnPluginConsole(string[] args)
+ {
+ if (args[0] == "estate")
+ {
+ if (args.Length == 1)
+ {
+ m_commander.ProcessConsoleCommand("help", new string[0]);
+ return;
+ }
+
+ string[] tmpArgs = new string[args.Length - 2];
+ int i;
+ for (i = 2; i < args.Length; i++)
+ tmpArgs[i - 2] = args[i];
+
+ m_commander.ProcessConsoleCommand(args[1], tmpArgs);
+ }
+ }
protected void consoleSetTerrainTexture(string module, string[] args)
{
@@ -152,5 +200,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
}
}
}
+
+ protected void ShowEstatesCommand(Object[] args)
+ {
+ StringBuilder report = new StringBuilder();
+ RegionInfo ri = m_module.Scene.RegionInfo;
+ EstateSettings es = ri.EstateSettings;
+
+ report.AppendFormat("Estate information for region {0}\n", ri.RegionName);
+ report.AppendFormat(
+ "{0,-20} {1,-7} {2,-20}\n",
+ "Estate Name",
+ "ID",
+ "Owner");
+
+ report.AppendFormat(
+ "{0,-20} {1,-7} {2,-20}\n",
+ es.EstateName, es.EstateID, m_module.UserManager.GetUserName(es.EstateOwner));
+
+ MainConsole.Instance.Output(report.ToString());
+ }
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 54d3c6126d..57ab13550a 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -31,6 +31,7 @@ using System.IO;
using System.Reflection;
using System.Security;
using log4net;
+using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework;
@@ -39,15 +40,17 @@ using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.CoreModules.World.Estate
{
- public class EstateManagementModule : IEstateModule
+ [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "EstateManagementModule")]
+ public class EstateManagementModule : IEstateModule, INonSharedRegionModule
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private delegate void LookupUUIDS(List uuidLst);
public Scene Scene { get; private set; }
+ public IUserManagement UserManager { get; private set; }
- protected EstateManagementCommands m_commands;
+ protected EstateManagementCommands m_commands;
private EstateTerrainXferHandler TerrainUploader;
@@ -895,9 +898,15 @@ namespace OpenSim.Region.CoreModules.World.Estate
#endregion
#region IRegionModule Members
+
+ public string Name { get { return "EstateManagementModule"; } }
+
+ public Type ReplaceableInterface { get { return null; } }
- public void Initialise(Scene scene, IConfigSource source)
- {
+ public void Initialise(IConfigSource source) {}
+
+ public void AddRegion(Scene scene)
+ {
Scene = scene;
Scene.RegisterModuleInterface(this);
Scene.EventManager.OnNewClient += EventManager_OnNewClient;
@@ -906,26 +915,21 @@ namespace OpenSim.Region.CoreModules.World.Estate
m_commands = new EstateManagementCommands(this);
m_commands.Initialise();
}
-
- public void PostInitialise()
+
+ public void RemoveRegion(Scene scene) {}
+
+ public void RegionLoaded(Scene scene)
{
// Sets up the sun module based no the saved Estate and Region Settings
// DO NOT REMOVE or the sun will stop working
- Scene.TriggerEstateSunUpdate();
+ scene.TriggerEstateSunUpdate();
+
+ UserManager = scene.RequestModuleInterface();
}
- public void Close()
+ public void Close()
{
- }
-
- public string Name
- {
- get { return "EstateManagementModule"; }
- }
-
- public bool IsSharedModule
- {
- get { return false; }
+ m_commands.Close();
}
#endregion
diff --git a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
index c850f7fd81..721f0eedea 100644
--- a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs
@@ -32,7 +32,7 @@ namespace OpenSim.Region.Framework.Interfaces
public delegate void ChangeDelegate(UUID regionID);
public delegate void MessageDelegate(UUID regionID, UUID fromID, string fromName, string message);
- public interface IEstateModule : IRegionModule
+ public interface IEstateModule
{
event ChangeDelegate OnRegionInfoChange;
event ChangeDelegate OnEstateInfoChange;