From b4932bda2aa5ad371174a544f90fc7a3d012e64a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 15 Nov 2013 00:16:33 +0000
Subject: If a local land ID is given to the "land show" command, then output
to console the full details of that parcel.
Using "land show" without a land ID still outputs a summary of parcels in the region
---
.../CoreModules/World/Land/LandManagementModule.cs | 180 ++++++++++++++-------
1 file changed, 126 insertions(+), 54 deletions(-)
(limited to 'OpenSim/Region/CoreModules')
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 1789d6d..73c4d6c 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -42,7 +42,6 @@ using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Console;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
-using OpenSim.Region.CoreModules.Framework.InterfaceCommander;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Physics.Manager;
@@ -70,7 +69,6 @@ namespace OpenSim.Region.CoreModules.World.Land
private LandChannel landChannel;
private Scene m_scene;
- protected Commander m_commander = new Commander("land");
protected IUserManagement m_userManager;
protected IPrimCountModule m_primCountModule;
@@ -140,14 +138,13 @@ namespace OpenSim.Region.CoreModules.World.Land
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
- m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
lock (m_scene)
{
m_scene.LandChannel = (ILandChannel)landChannel;
}
- InstallInterfaces();
+ RegisterCommands();
}
public void RegionLoaded(Scene scene)
@@ -159,10 +156,7 @@ namespace OpenSim.Region.CoreModules.World.Land
public void RemoveRegion(Scene scene)
{
- // TODO: Also release other event manager listeners here
-
- m_scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole;
- m_scene.UnregisterModuleCommander(m_commander.Name);
+ // TODO: Release event manager listeners here
}
// private bool OnVerifyUserConnection(ScenePresence scenePresence, out string reason)
@@ -170,30 +164,7 @@ namespace OpenSim.Region.CoreModules.World.Land
// ILandObject nearestParcel = m_scene.GetNearestAllowedParcel(scenePresence.UUID, scenePresence.AbsolutePosition.X, scenePresence.AbsolutePosition.Y);
// reason = "You are not allowed to enter this sim.";
// return nearestParcel != null;
-// }
-
- ///
- /// Processes commandline input. Do not call directly.
- ///
- /// Commandline arguments
- protected void EventManagerOnPluginConsole(string[] args)
- {
- if (args[0] == "land")
- {
- 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);
- }
- }
+// }
void EventManagerOnNewClient(IClientAPI client)
{
@@ -1872,44 +1843,84 @@ namespace OpenSim.Region.CoreModules.World.Land
m_Dialog.SendAlertToUser(remoteClient, "You are not allowed to set your home location in this parcel.");
}
-
- protected void InstallInterfaces()
+ protected void RegisterCommands()
{
- Command clearCommand
- = new Command("clear", CommandIntentions.COMMAND_HAZARDOUS, ClearCommand, "Clears all the parcels from the region.");
- Command showCommand
- = new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the region.");
+ ICommands commands = MainConsole.Instance.Commands;
- m_commander.RegisterCommand("clear", clearCommand);
- m_commander.RegisterCommand("show", showCommand);
+ commands.AddCommand(
+ "Land", false, "land clear",
+ "land clear",
+ "Clear all the parcels from the region.",
+ "Command will ask for confirmation before proceeding.",
+ HandleClearCommand);
- // Add this to our scene so scripts can call these functions
- m_scene.RegisterModuleCommander(m_commander);
+ commands.AddCommand(
+ "Land", false, "land show",
+ "land show []",
+ "Show information about the parcels on the region.",
+ "If no local land ID is given, then summary information about all the parcels is shown.\n"
+ + "If a local land ID is given then full information about that parcel is shown.",
+ HandleShowCommand);
}
- protected void ClearCommand(Object[] args)
+ protected void HandleClearCommand(string module, string[] args)
{
+ if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
+ return;
+
string response = MainConsole.Instance.CmdPrompt(
string.Format(
- "Are you sure that you want to clear all land parcels from {0} (y or n)",
- m_scene.RegionInfo.RegionName),
+ "Are you sure that you want to clear all land parcels from {0} (y or n)", m_scene.Name),
"n");
if (response.ToLower() == "y")
{
Clear(true);
- MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.RegionInfo.RegionName);
+ MainConsole.Instance.OutputFormat("Cleared all parcels from {0}", m_scene.Name);
}
else
{
- MainConsole.Instance.OutputFormat("Aborting clear of all parcels from {0}", m_scene.RegionInfo.RegionName);
+ MainConsole.Instance.OutputFormat("Aborting clear of all parcels from {0}", m_scene.Name);
}
}
- protected void ShowParcelsCommand(Object[] args)
+ protected void HandleShowCommand(string module, string[] args)
{
- StringBuilder report = new StringBuilder();
-
+ if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_scene))
+ return;
+
+ StringBuilder report = new StringBuilder();
+
+ if (args.Length <= 2)
+ {
+ AppendParcelsSummaryReport(report);
+ }
+ else
+ {
+ int landLocalId;
+
+ if (!ConsoleUtil.TryParseConsoleInt(MainConsole.Instance, args[2], out landLocalId))
+ return;
+
+ ILandObject lo;
+
+ lock (m_landList)
+ {
+ if (!m_landList.TryGetValue(landLocalId, out lo))
+ {
+ MainConsole.Instance.OutputFormat("No parcel found with local ID {0}", landLocalId);
+ return;
+ }
+ }
+
+ AppendParcelReport(report, lo);
+ }
+
+ MainConsole.Instance.Output(report.ToString());
+ }
+
+ private void AppendParcelsSummaryReport(StringBuilder report)
+ {
report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName);
report.AppendFormat(
"{0,-20} {1,-10} {2,-9} {3,-18} {4,-18} {5,-20}\n",
@@ -1931,8 +1942,69 @@ namespace OpenSim.Region.CoreModules.World.Land
ld.Name, ld.LocalID, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID));
}
}
-
- MainConsole.Instance.Output(report.ToString());
- }
+ }
+
+ private void AppendParcelReport(StringBuilder report, ILandObject lo)
+ {
+ LandData ld = lo.LandData;
+
+ ConsoleDisplayList cdl = new ConsoleDisplayList();
+ cdl.AddRow("Parcel name", ld.Name);
+ cdl.AddRow("Local ID", ld.LocalID);
+ cdl.AddRow("Description", ld.Description);
+ cdl.AddRow("Snapshot ID", ld.SnapshotID);
+ cdl.AddRow("Area", ld.Area);
+ cdl.AddRow("Starts", lo.StartPoint);
+ cdl.AddRow("Ends", lo.EndPoint);
+ cdl.AddRow("AABB Min", ld.AABBMin);
+ cdl.AddRow("AABB Max", ld.AABBMax);
+
+ cdl.AddRow("Owner", m_userManager.GetUserName(ld.OwnerID));
+ cdl.AddRow("Is group owned?", ld.IsGroupOwned);
+ cdl.AddRow("GroupID", ld.GroupID);
+
+ cdl.AddRow("Status", ld.Status);
+ cdl.AddRow("Flags", (ParcelFlags)ld.Flags);
+
+ cdl.AddRow("Landing Type", (LandingType)ld.LandingType);
+ cdl.AddRow("User Location", ld.UserLocation);
+ cdl.AddRow("User look at", ld.UserLookAt);
+
+ cdl.AddRow("Other clean time", ld.OtherCleanTime);
+
+ cdl.AddRow("Max Prims", lo.GetParcelMaxPrimCount());
+ IPrimCounts pc = lo.PrimCounts;
+ cdl.AddRow("Owner Prims", pc.Owner);
+ cdl.AddRow("Group Prims", pc.Group);
+ cdl.AddRow("Other Prims", pc.Others);
+ cdl.AddRow("Selected Prims", pc.Selected);
+ cdl.AddRow("Total Prims", pc.Total);
+
+ cdl.AddRow("Music URL", ld.MusicURL);
+ cdl.AddRow("Obscure Music", ld.ObscureMusic);
+
+ cdl.AddRow("Media ID", ld.MediaID);
+ cdl.AddRow("Media Autoscale", Convert.ToBoolean(ld.MediaAutoScale));
+ cdl.AddRow("Media URL", ld.MediaURL);
+ cdl.AddRow("Media Type", ld.MediaType);
+ cdl.AddRow("Media Description", ld.MediaDescription);
+ cdl.AddRow("Media Width", ld.MediaWidth);
+ cdl.AddRow("Media Height", ld.MediaHeight);
+ cdl.AddRow("Media Loop", ld.MediaLoop);
+ cdl.AddRow("Obscure Media", ld.ObscureMedia);
+
+ cdl.AddRow("Parcel Category", ld.Category);
+
+ cdl.AddRow("Claim Date", ld.ClaimDate);
+ cdl.AddRow("Claim Price", ld.ClaimPrice);
+ cdl.AddRow("Pass Hours", ld.PassHours);
+ cdl.AddRow("Pass Price", ld.PassPrice);
+
+ cdl.AddRow("Auction ID", ld.AuctionID);
+ cdl.AddRow("Authorized Buyer ID", ld.AuthBuyerID);
+ cdl.AddRow("Sale Price", ld.SalePrice);
+
+ cdl.AddToStringBuilder(report);
+ }
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From 7cab41f4223b7febd3fdd42fa7cfefef25e4a9c9 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 15 Nov 2013 21:45:08 +0000
Subject: refactor: replace verbose checks with String.IsNullOrEmpty where
applicable.
Thanks to Kira for this patch from http://opensimulator.org/mantis/view.php?id=6845
---
.../Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | 4 ++--
.../Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs | 2 +-
.../CoreModules/Framework/UserManagement/UserManagementModule.cs | 4 ++--
.../Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs | 6 +++---
.../Region/CoreModules/Scripting/LoadImageURL/LoadImageURLModule.cs | 4 ++--
OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs | 2 +-
.../CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs | 2 +-
OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | 4 ++--
8 files changed, 14 insertions(+), 14 deletions(-)
(limited to 'OpenSim/Region/CoreModules')
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index 31c42d8..f7057fe 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -421,7 +421,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
item.CreatorId = ospResolvedId.ToString();
item.CreatorData = string.Empty;
}
- else if (item.CreatorData == null || item.CreatorData == String.Empty)
+ else if (string.IsNullOrEmpty(item.CreatorData))
{
item.CreatorId = m_userInfo.PrincipalID.ToString();
// item.CreatorIdAsUuid = new UUID(item.CreatorId);
@@ -522,7 +522,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
foreach (SceneObjectGroup sog in sceneObjects)
foreach (SceneObjectPart sop in sog.Parts)
- if (sop.CreatorData == null || sop.CreatorData == "")
+ if (string.IsNullOrEmpty(sop.CreatorData))
sop.CreatorID = m_creatorIdForAssetId[assetId];
if (coa != null)
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
index 144895c..b7a4d1a 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
@@ -174,7 +174,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
private void AdjustIdentifiers(AssetMetadata meta)
{
- if (meta.CreatorID != null && meta.CreatorID != string.Empty)
+ if (!string.IsNullOrEmpty(meta.CreatorID))
{
UUID uuid = UUID.Zero;
UUID.TryParse(meta.CreatorID, out uuid);
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index d3926cc..3fb5195 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -466,7 +466,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
return userdata.ServerURLs[serverType].ToString();
}
- if (userdata.HomeURL != null && userdata.HomeURL != string.Empty)
+ if (!string.IsNullOrEmpty(userdata.HomeURL))
{
//m_log.DebugFormat(
// "[USER MANAGEMENT MODULE]: Did not find url type {0} so requesting urls from '{1}' for {2}",
@@ -552,7 +552,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
if (oldUser != null)
{
- if (creatorData == null || creatorData == String.Empty)
+ if (string.IsNullOrEmpty(creatorData))
{
//ignore updates without creator data
return;
diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
index 1a62405..c3a8afd 100644
--- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
+++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs
@@ -460,9 +460,9 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
Request.Headers.Add(HttpCustomHeaders[i],
HttpCustomHeaders[i+1]);
}
- if (proxyurl != null && proxyurl.Length > 0)
+ if (!string.IsNullOrEmpty(proxyurl))
{
- if (proxyexcepts != null && proxyexcepts.Length > 0)
+ if (!string.IsNullOrEmpty(proxyexcepts))
{
string[] elist = proxyexcepts.Split(';');
Request.Proxy = new WebProxy(proxyurl, true, elist);
@@ -483,7 +483,7 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
}
// Encode outbound data
- if (OutboundBody != null && OutboundBody.Length > 0)
+ if (!string.IsNullOrEmpty(OutboundBody))
{
byte[] data = Util.UTF8.GetBytes(OutboundBody);
diff --git a/OpenSim/Region/CoreModules/Scripting/LoadImageURL/LoadImageURLModule.cs b/OpenSim/Region/CoreModules/Scripting/LoadImageURL/LoadImageURLModule.cs
index 65737fa..baf9f2f 100644
--- a/OpenSim/Region/CoreModules/Scripting/LoadImageURL/LoadImageURLModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LoadImageURL/LoadImageURLModule.cs
@@ -161,9 +161,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
{
WebRequest request = HttpWebRequest.Create(url);
- if (m_proxyurl != null && m_proxyurl.Length > 0)
+ if (!string.IsNullOrEmpty(m_proxyurl))
{
- if (m_proxyexcepts != null && m_proxyexcepts.Length > 0)
+ if (!string.IsNullOrEmpty(m_proxyexcepts))
{
string[] elist = m_proxyexcepts.Split(';');
request.Proxy = new WebProxy(m_proxyurl, true, elist);
diff --git a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
index cbffca7..c6e05b1 100644
--- a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
@@ -677,7 +677,7 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
// if not, use as method name
UUID parseUID;
string mName = "llRemoteData";
- if ((Channel != null) && (Channel != ""))
+ if (!string.IsNullOrEmpty(Channel))
if (!UUID.TryParse(Channel, out parseUID))
mName = Channel;
else
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 58576d1..77a3c82 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -259,7 +259,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
if (sp == null)
{
inventoryURL = UserManagementModule.GetUserServerURL(userID, "InventoryServerURI");
- if (inventoryURL != null && inventoryURL != string.Empty)
+ if (!string.IsNullOrEmpty(inventoryURL))
{
inventoryURL = inventoryURL.Trim(new char[] { '/' });
m_InventoryURLs.Add(userID, inventoryURL);
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 32d245f..d451b9e 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -464,7 +464,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
// or creator data is present. Otherwise, use the estate owner instead.
foreach (SceneObjectPart part in sceneObject.Parts)
{
- if (part.CreatorData == null || part.CreatorData == string.Empty)
+ if (string.IsNullOrEmpty(part.CreatorData))
{
if (!ResolveUserUuid(scene, part.CreatorID))
part.CreatorID = scene.RegionInfo.EstateSettings.EstateOwner;
@@ -498,7 +498,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
kvp.Value.OwnerID = scene.RegionInfo.EstateSettings.EstateOwner;
}
- if (kvp.Value.CreatorData == null || kvp.Value.CreatorData == string.Empty)
+ if (string.IsNullOrEmpty(kvp.Value.CreatorData))
{
if (!ResolveUserUuid(scene, kvp.Value.CreatorID))
kvp.Value.CreatorID = scene.RegionInfo.EstateSettings.EstateOwner;
--
cgit v1.1