From 601d965009c67ebaa78f511901659942505d227f Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 23 Oct 2018 12:27:08 +0100 Subject: [PATCH] remove AttachmentsCommandModule --- .../Avatar/Attachments/AttachmentsModule.cs | 111 +++++++++-- .../Attachments/AttachmentsCommandModule.cs | 188 ------------------ 2 files changed, 92 insertions(+), 207 deletions(-) delete mode 100644 OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 597f2ebe10..3b19ec802a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Reflection; using System.IO; +using System.Text; using System.Threading; using System.Xml; using log4net; @@ -37,6 +38,7 @@ using Nini.Config; using OpenMetaverse; using OpenMetaverse.Packets; using OpenSim.Framework; +using OpenSim.Framework.Console; using OpenSim.Region.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; @@ -92,23 +94,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments m_scene.EventManager.OnStartScript += (localID, itemID) => OnScriptStateChange(localID, true); m_scene.EventManager.OnStopScript += (localID, itemID) => OnScriptStateChange(localID, false); - MainConsole.Instance.Commands.AddCommand( - "Debug", - false, - "debug attachments log", - "debug attachments log [0|1]", - "Turn on attachments debug logging", - " <= 0 - turns off debug logging\n" - + " >= 1 - turns on attachment message debug logging", - HandleDebugAttachmentsLog); - - MainConsole.Instance.Commands.AddCommand( - "Debug", - false, - "debug attachments status", - "debug attachments status", - "Show current attachments debug status", - HandleDebugAttachmentsStatus); } // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI @@ -133,6 +118,32 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { m_regionConsole.AddCommand("AttachModule", false, "set auto_grant_attach_perms", "set auto_grant_attach_perms true|false", "Allow objects owned by the region owner or estate managers to obtain attach permissions without asking the user", HandleSetAutoGrantAttachPerms); } + + scene.AddCommand( + "Debug", + this, + "debug attachments log", + "debug attachments log [0|1]", + "Turn on attachments debug logging", + " <= 0 - turns off debug logging\n" + + " >= 1 - turns on attachment message debug logging", + HandleDebugAttachmentsLog); + + scene.AddCommand( + "Debug", + this, + "debug attachments status", + "debug attachments status", + "Show current attachments debug status", + HandleDebugAttachmentsStatus); + + // next should work on console root also + MainConsole.Instance.Commands.AddCommand( + "Users", true, "attachments show", + "attachments show [ ]", + "Show attachment information for avatars in this simulator.", + "If no name is supplied then information for all avatars is shown.", + HandleShowAttachmentsCommand); } public void Close() @@ -164,6 +175,70 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments MainConsole.Instance.OutputFormat("Debug logging level: {0}", DebugLevel); } + protected void HandleShowAttachmentsCommand(string module, string[] cmd) + { + if (cmd.Length != 2 && cmd.Length < 4) + { + MainConsole.Instance.OutputFormat("Usage: attachments show [ ]"); + return; + } + + SceneManager sm = SceneManager.Instance; + if(sm == null || sm.Scenes.Count == 0) + return; + + bool targetNameSupplied = false; + string optionalTargetFirstName = null; + string optionalTargetLastName = null; + + if (cmd.Length >= 4) + { + targetNameSupplied = true; + optionalTargetFirstName = cmd[2]; + optionalTargetLastName = cmd[3]; + } + + StringBuilder sb = new StringBuilder(); + sm.ForEachSelectedScene( + scene => + { + if (targetNameSupplied) + { + ScenePresence sp = scene.GetScenePresence(optionalTargetFirstName, optionalTargetLastName); + if (sp != null && !sp.IsChildAgent) + GetAttachmentsReport(sp, sb); + } + else + { + sb.AppendFormat("--- All attachments for region {0}:\n", scene.Name); + scene.ForEachRootScenePresence(sp => GetAttachmentsReport(sp, sb)); + } + }); + + MainConsole.Instance.Output(sb.ToString()); + } + + private void GetAttachmentsReport(ScenePresence sp, StringBuilder sb) + { + sb.AppendFormat("Attachments for {0}\n\n", sp.Name); + + ConsoleDisplayList ct = new ConsoleDisplayList(); + + List attachmentObjects = sp.GetAttachments(); + foreach (SceneObjectGroup attachmentObject in attachmentObjects) + { + ct.Indent = 2; + ct.AddRow("Attachment Name", attachmentObject.Name); + ct.AddRow("Local ID", attachmentObject.LocalId); + ct.AddRow("Item ID", attachmentObject.UUID); + ct.AddRow("From Item ID", attachmentObject.FromItemID); + ct.AddRow("Attach Point", ((AttachmentPoint)attachmentObject.AttachmentPoint)); + ct.AddRow("Position", attachmentObject.RootPart.AttachedPos + "\n\n"); + } + + ct.AddToStringBuilder(sb); + } + private void SendConsoleOutput(UUID agentID, string text) { if (m_regionConsole == null) @@ -341,7 +416,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments } } - List attachments = sp.Appearance.GetAttachments(); // Let's get all items at once, so they get cached @@ -410,7 +484,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments Dictionary scriptStates = new Dictionary(); - if (sp.PresenceType != PresenceType.Npc) { foreach (SceneObjectGroup so in attachments) diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs deleted file mode 100644 index 3685041f02..0000000000 --- a/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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 OpenSimulator 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.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using log4net; -using Mono.Addins; -using Nini.Config; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Framework.Console; -using OpenSim.Framework.Monitoring; -using OpenSim.Region.ClientStack.LindenUDP; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.OptionalModules.Avatar.Attachments -{ - /// - /// A module that just holds commands for inspecting avatar appearance. - /// - [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsCommandModule")] - public class AttachmentsCommandModule : ISharedRegionModule - { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private List m_scenes = new List(); -// private IAvatarFactoryModule m_avatarFactory; - - public string Name { get { return "Attachments Command Module"; } } - - public Type ReplaceableInterface { get { return null; } } - - public void Initialise(IConfigSource source) - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: INITIALIZED MODULE"); - } - - public void PostInitialise() - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: POST INITIALIZED MODULE"); - } - - public void Close() - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: CLOSED MODULE"); - } - - public void AddRegion(Scene scene) - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); - } - - public void RemoveRegion(Scene scene) - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); - - lock (m_scenes) - m_scenes.Remove(scene); - } - - public void RegionLoaded(Scene scene) - { -// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); - - lock (m_scenes) - m_scenes.Add(scene); - - scene.AddCommand( - "Users", this, "attachments show", - "attachments show [ ]", - "Show attachment information for avatars in this simulator.", - "If no name is supplied then information for all avatars is shown.", - HandleShowAttachmentsCommand); - } - - protected void HandleShowAttachmentsCommand(string module, string[] cmd) - { - if (cmd.Length != 2 && cmd.Length < 4) - { - MainConsole.Instance.OutputFormat("Usage: attachments show [ ]"); - return; - } - - bool targetNameSupplied = false; - string optionalTargetFirstName = null; - string optionalTargetLastName = null; - - if (cmd.Length >= 4) - { - targetNameSupplied = true; - optionalTargetFirstName = cmd[2]; - optionalTargetLastName = cmd[3]; - } - - StringBuilder sb = new StringBuilder(); - - lock (m_scenes) - { - foreach (Scene scene in m_scenes) - { - if (targetNameSupplied) - { - ScenePresence sp = scene.GetScenePresence(optionalTargetFirstName, optionalTargetLastName); - if (sp != null && !sp.IsChildAgent) - GetAttachmentsReport(sp, sb); - } - else - { - scene.ForEachRootScenePresence(sp => GetAttachmentsReport(sp, sb)); - } - } - } - - MainConsole.Instance.Output(sb.ToString()); - } - - private void GetAttachmentsReport(ScenePresence sp, StringBuilder sb) - { - sb.AppendFormat("Attachments for {0}\n\n", sp.Name); - - ConsoleDisplayList ct = new ConsoleDisplayList(); - -// sb.AppendFormat( -// " {0,-36} {1,-10} {2,-36} {3,-14} {4,-15}\n", -// "Attachment Name", "Local ID", "Item ID", "Attach Point", "Position"); - - List attachmentObjects = sp.GetAttachments(); - foreach (SceneObjectGroup attachmentObject in attachmentObjects) - { -// InventoryItemBase attachmentItem -// = m_scenes[0].InventoryService.GetItem(new InventoryItemBase(attachmentObject.FromItemID)); - -// if (attachmentItem == null) -// { -// sb.AppendFormat( -// "WARNING: Couldn't find attachment for item {0} at point {1}\n", -// attachmentData.ItemID, (AttachmentPoint)attachmentData.AttachPoint); -// continue; -// } -// else -// { -// sb.AppendFormat( -// " {0,-36} {1,-10} {2,-36} {3,-14} {4,-15}\n", -// attachmentObject.Name, attachmentObject.LocalId, attachmentObject.FromItemID, -// (AttachmentPoint)attachmentObject.AttachmentPoint, attachmentObject.RootPart.AttachedPos); - - ct.Indent = 2; - ct.AddRow("Attachment Name", attachmentObject.Name); - ct.AddRow("Local ID", attachmentObject.LocalId); - ct.AddRow("Item ID", attachmentObject.UUID); - ct.AddRow("From Item ID", attachmentObject.FromItemID); - ct.AddRow("Attach Point", ((AttachmentPoint)attachmentObject.AttachmentPoint)); - ct.AddRow("Position", attachmentObject.RootPart.AttachedPos + "\n\n"); -// } - } - - ct.AddToStringBuilder(sb); - } - } -} \ No newline at end of file