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