* Make existing module commanders register as help topics
* Typing help will now give a list of these topics at the top (as well as the rest of the current help stuff) * Typing help <topic> will give information about commands specific to that topic0.6.3-post-fixes
							parent
							
								
									9a666bda02
								
							
						
					
					
						commit
						732cd838b1
					
				| 
						 | 
				
			
			@ -104,6 +104,16 @@ namespace OpenSim.Framework.Servers
 | 
			
		|||
        /// Should be overriden and referenced by descendents if they need to perform extra shutdown processing
 | 
			
		||||
        /// </summary>      
 | 
			
		||||
        public virtual void ShutdownSpecific() {}
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Provides a list of help topics that are available.  Overriding classes should append their topics to the
 | 
			
		||||
        /// information returned when the base method is called.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// 
 | 
			
		||||
        /// <returns>
 | 
			
		||||
        /// A list of strings that represent different help topics on which more information is available
 | 
			
		||||
        /// </returns>
 | 
			
		||||
        protected virtual List<string> GetHelpTopics() { return new List<string>(); }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Print statistics to the logfile, if they are active
 | 
			
		||||
| 
						 | 
				
			
			@ -310,11 +320,20 @@ namespace OpenSim.Framework.Servers
 | 
			
		|||
        /// <param name="helpArgs"></param>
 | 
			
		||||
        protected virtual void ShowHelp(string[] helpArgs)
 | 
			
		||||
        {
 | 
			
		||||
            Notice("");
 | 
			
		||||
            
 | 
			
		||||
            if (helpArgs.Length == 0)
 | 
			
		||||
            {
 | 
			
		||||
                Notice("");
 | 
			
		||||
                // TODO: not yet implemented
 | 
			
		||||
                //Notice("help [command] - display general help or specific command help.  Try help help for more info.");
 | 
			
		||||
                List<string> helpTopics = GetHelpTopics();
 | 
			
		||||
                
 | 
			
		||||
                if (helpTopics.Count > 0)
 | 
			
		||||
                {                    
 | 
			
		||||
                    Notice(
 | 
			
		||||
                        "As well as the help information below, you can also type help <topic> to get more information on the following areas:");
 | 
			
		||||
                    Notice(string.Format("    {0}", string.Join(", ", helpTopics.ToArray())));
 | 
			
		||||
                    Notice("");
 | 
			
		||||
                }                           
 | 
			
		||||
                                
 | 
			
		||||
                Notice("quit - equivalent to shutdown.");
 | 
			
		||||
 | 
			
		||||
                Notice("set log level [level] - change the console logging level only.  For example, off or debug.");
 | 
			
		||||
| 
						 | 
				
			
			@ -326,7 +345,8 @@ namespace OpenSim.Framework.Servers
 | 
			
		|||
                Notice("show threads - list tracked threads");
 | 
			
		||||
                Notice("show uptime - show server startup time and uptime.");
 | 
			
		||||
                Notice("show version - show server version.");
 | 
			
		||||
                Notice("shutdown - shutdown the server.\n");
 | 
			
		||||
                Notice("shutdown - shutdown the server.");
 | 
			
		||||
                Notice("");
 | 
			
		||||
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -496,6 +496,7 @@ namespace OpenSim
 | 
			
		|||
                case "reset":
 | 
			
		||||
                    Reset(cmdparams);
 | 
			
		||||
                    break;
 | 
			
		||||
                
 | 
			
		||||
                case "predecode-j2k":
 | 
			
		||||
                    if (cmdparams.Length > 0)
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			@ -661,53 +662,62 @@ namespace OpenSim
 | 
			
		|||
        {
 | 
			
		||||
            base.ShowHelp(helpArgs);
 | 
			
		||||
 | 
			
		||||
            m_console.Notice("alert - send alert to a designated user or all users.");
 | 
			
		||||
            m_console.Notice("  alert [First] [Last] [Message] - send an alert to a user. Case sensitive.");
 | 
			
		||||
            m_console.Notice("  alert general [Message] - send an alert to all users.");
 | 
			
		||||
            m_console.Notice("backup - persist simulator objects to the database ahead of the normal schedule.");
 | 
			
		||||
            m_console.Notice("clear-assets - clear the asset cache");
 | 
			
		||||
            m_console.Notice("create-region <name> <regionfile.xml> - create a new region");
 | 
			
		||||
            m_console.Notice("change-region <name> - select the region that single region commands operate upon.");
 | 
			
		||||
            m_console.Notice("command-script [filename] - Execute command in a file.");
 | 
			
		||||
            m_console.Notice("debug - debugging commands");
 | 
			
		||||
            m_console.Notice("  debug packet 0..255 - print incoming/outgoing packets (0=off)");
 | 
			
		||||
            m_console.Notice("  debug scene [scripting] [collision] [physics] - Enable/Disable debug stuff, each can be True/False");
 | 
			
		||||
            m_console.Notice("edit-scale [prim name] [x] [y] [z] - resize given prim");
 | 
			
		||||
            m_console.Notice("export-map [filename] - save image of world map");
 | 
			
		||||
            m_console.Notice("force-update - force an update of prims in the scene");
 | 
			
		||||
            m_console.Notice("restart - disconnects all clients and restarts the sims in the instance.");
 | 
			
		||||
            m_console.Notice("remove-region [name] - remove a region");
 | 
			
		||||
            m_console.Notice("delete-region [name] - delete a region and its associated region file");
 | 
			
		||||
            m_console.Notice("load-xml [filename] - load prims from XML (DEPRECATED)");
 | 
			
		||||
            m_console.Notice("save-xml [filename] - save prims to XML (DEPRECATED)");
 | 
			
		||||
            m_console.Notice("save-xml2 [filename] - save prims to XML using version 2 format");
 | 
			
		||||
            m_console.Notice("load-xml2 [filename] - load prims from XML using version 2 format");
 | 
			
		||||
            m_console.Notice("load-oar [filename] - load an OpenSimulator region archive.  This replaces everything in the current region.");
 | 
			
		||||
            m_console.Notice("save-oar [filename] - Save the current region to an OpenSimulator region archive.");
 | 
			
		||||
            m_console.Notice("script - manually trigger scripts? or script commands?");
 | 
			
		||||
            m_console.Notice("show assets - show state of asset cache.");
 | 
			
		||||
            m_console.Notice("show modules - shows info about loaded modules.");
 | 
			
		||||
            m_console.Notice("show queues - show packet queues length for all clients.");
 | 
			
		||||
            m_console.Notice("show regions - show running region information.");
 | 
			
		||||
            m_console.Notice("show users - show info about connected users (only root agents).");
 | 
			
		||||
            m_console.Notice("show users full - show info about connected users (root and child agents).");
 | 
			
		||||
            m_console.Notice("config set section field value - set a config value");
 | 
			
		||||
            m_console.Notice("config get section field - get a config value");
 | 
			
		||||
            m_console.Notice("config save - save OpenSim.ini");
 | 
			
		||||
            m_console.Notice("terrain help - show help for terrain commands.");
 | 
			
		||||
            m_console.Notice("login-enable  - Allows login at sim level");
 | 
			
		||||
            m_console.Notice("login-disable - Disable login at sim level");
 | 
			
		||||
            m_console.Notice("login-status  - Show the actual login status");
 | 
			
		||||
            m_console.Notice("predecode-j2k - Precache assets,decode j2k layerdata, First parameter is threads to use");
 | 
			
		||||
            if (helpArgs.Length == 0)
 | 
			
		||||
            {            
 | 
			
		||||
                m_console.Notice("alert - send alert to a designated user or all users.");
 | 
			
		||||
                m_console.Notice("  alert [First] [Last] [Message] - send an alert to a user. Case sensitive.");
 | 
			
		||||
                m_console.Notice("  alert general [Message] - send an alert to all users.");
 | 
			
		||||
                m_console.Notice("backup - persist simulator objects to the database ahead of the normal schedule.");
 | 
			
		||||
                m_console.Notice("clear-assets - clear the asset cache");
 | 
			
		||||
                m_console.Notice("create-region <name> <regionfile.xml> - create a new region");
 | 
			
		||||
                m_console.Notice("change-region <name> - select the region that single region commands operate upon.");
 | 
			
		||||
                m_console.Notice("command-script [filename] - Execute command in a file.");
 | 
			
		||||
                m_console.Notice("debug - debugging commands");
 | 
			
		||||
                m_console.Notice("  debug packet 0..255 - print incoming/outgoing packets (0=off)");
 | 
			
		||||
                m_console.Notice("  debug scene [scripting] [collision] [physics] - Enable/Disable debug stuff, each can be True/False");
 | 
			
		||||
                m_console.Notice("edit-scale [prim name] [x] [y] [z] - resize given prim");
 | 
			
		||||
                m_console.Notice("export-map [filename] - save image of world map");
 | 
			
		||||
                m_console.Notice("force-update - force an update of prims in the scene");
 | 
			
		||||
                m_console.Notice("restart - disconnects all clients and restarts the sims in the instance.");
 | 
			
		||||
                m_console.Notice("remove-region [name] - remove a region");
 | 
			
		||||
                m_console.Notice("delete-region [name] - delete a region and its associated region file");
 | 
			
		||||
                m_console.Notice("load-xml [filename] - load prims from XML (DEPRECATED)");
 | 
			
		||||
                m_console.Notice("save-xml [filename] - save prims to XML (DEPRECATED)");
 | 
			
		||||
                m_console.Notice("save-xml2 [filename] - save prims to XML using version 2 format");
 | 
			
		||||
                m_console.Notice("load-xml2 [filename] - load prims from XML using version 2 format");
 | 
			
		||||
                m_console.Notice("load-oar [filename] - load an OpenSimulator region archive.  This replaces everything in the current region.");
 | 
			
		||||
                m_console.Notice("save-oar [filename] - Save the current region to an OpenSimulator region archive.");
 | 
			
		||||
                m_console.Notice("script - manually trigger scripts? or script commands?");
 | 
			
		||||
                m_console.Notice("show assets - show state of asset cache.");
 | 
			
		||||
                m_console.Notice("show modules - shows info about loaded modules.");
 | 
			
		||||
                m_console.Notice("show queues - show packet queues length for all clients.");
 | 
			
		||||
                m_console.Notice("show regions - show running region information.");
 | 
			
		||||
                m_console.Notice("show users - show info about connected users (only root agents).");
 | 
			
		||||
                m_console.Notice("show users full - show info about connected users (root and child agents).");
 | 
			
		||||
                m_console.Notice("config set section field value - set a config value");
 | 
			
		||||
                m_console.Notice("config get section field - get a config value");
 | 
			
		||||
                m_console.Notice("config save - save OpenSim.ini");
 | 
			
		||||
                m_console.Notice("login-enable  - Allows login at sim level");
 | 
			
		||||
                m_console.Notice("login-disable - Disable login at sim level");
 | 
			
		||||
                m_console.Notice("login-status  - Show the actual login status");
 | 
			
		||||
                m_console.Notice("predecode-j2k - Precache assets,decode j2k layerdata, First parameter is threads to use");
 | 
			
		||||
                ShowPluginCommandsHelp(CombineParams(helpArgs, 0), m_console);                
 | 
			
		||||
 | 
			
		||||
            ShowPluginCommandsHelp(CombineParams(helpArgs, 0), m_console);
 | 
			
		||||
 | 
			
		||||
            if (ConfigurationSettings.Standalone)
 | 
			
		||||
            {
 | 
			
		||||
                m_console.Notice("");
 | 
			
		||||
                m_console.Notice("create user - adds a new user.");
 | 
			
		||||
                m_console.Notice("reset user password - reset a user's password.");
 | 
			
		||||
                if (ConfigurationSettings.Standalone)
 | 
			
		||||
                {
 | 
			
		||||
                    m_console.Notice("");
 | 
			
		||||
                    m_console.Notice("create user - adds a new user.");
 | 
			
		||||
                    m_console.Notice("reset user password - reset a user's password.");
 | 
			
		||||
                }                                                
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ICommander moduleCommander = SceneManager.CurrentOrFirstScene.GetCommander(helpArgs[0]);
 | 
			
		||||
                if (moduleCommander != null)
 | 
			
		||||
                {
 | 
			
		||||
                    m_console.Notice(moduleCommander.Help);
 | 
			
		||||
                }
 | 
			
		||||
            }                            
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // see BaseOpenSimServer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ namespace OpenSim
 | 
			
		|||
        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 | 
			
		||||
 | 
			
		||||
        protected string proxyUrl;
 | 
			
		||||
        protected int proxyOffset = 0;
 | 
			
		||||
        protected int proxyOffset = 0;                
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// The file used to load and save prim backup xml if no filename has been specified
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,15 @@ namespace OpenSim
 | 
			
		|||
            loader.Load("/OpenSim/Startup");
 | 
			
		||||
            m_plugins = loader.Plugins;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        protected override List<string> GetHelpTopics() 
 | 
			
		||||
        {
 | 
			
		||||
            List<string> topics = base.GetHelpTopics();
 | 
			
		||||
            topics.AddRange(SceneManager.CurrentOrFirstScene.GetCommanders().Keys);
 | 
			
		||||
            
 | 
			
		||||
            return topics;
 | 
			
		||||
        }        
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Performs startup specific to this region server, including initialization of the scene 
 | 
			
		||||
        /// such as loading configuration from disk.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,10 +29,15 @@ namespace OpenSim.Region.Environment.Interfaces
 | 
			
		|||
{
 | 
			
		||||
    public interface ICommander
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// <value>
 | 
			
		||||
        /// The name of this commander
 | 
			
		||||
        /// </summary>        
 | 
			
		||||
        /// </value>        
 | 
			
		||||
        string Name { get; }
 | 
			
		||||
 | 
			
		||||
        /// <value>
 | 
			
		||||
        /// Provide general help information about this commander.
 | 
			
		||||
        /// </value>
 | 
			
		||||
        string Help { get; }
 | 
			
		||||
        
 | 
			
		||||
        void ProcessConsoleCommand(string function, string[] args);
 | 
			
		||||
        void RegisterCommand(string commandName, ICommand command);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,6 +52,23 @@ namespace OpenSim.Region.Environment.Modules.Framework.InterfaceCommander
 | 
			
		|||
            get { return m_name; }
 | 
			
		||||
        }
 | 
			
		||||
        private string m_name;
 | 
			
		||||
        
 | 
			
		||||
        public string Help
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                StringBuilder sb = new StringBuilder();
 | 
			
		||||
                
 | 
			
		||||
                sb.AppendLine("===" + m_name + "===");
 | 
			
		||||
                
 | 
			
		||||
                foreach (ICommand com in m_commands.Values)
 | 
			
		||||
                {
 | 
			
		||||
                    sb.AppendLine("* " + com.Name + " - " + com.Help);
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                return sb.ToString();
 | 
			
		||||
            }
 | 
			
		||||
        }        
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Constructor
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +77,10 @@ namespace OpenSim.Region.Environment.Modules.Framework.InterfaceCommander
 | 
			
		|||
        public Commander(string name)
 | 
			
		||||
        {
 | 
			
		||||
            m_name = name;
 | 
			
		||||
            m_generatedApiClassName = m_name;
 | 
			
		||||
            m_generatedApiClassName = m_name[0].ToString().ToUpper();
 | 
			
		||||
            
 | 
			
		||||
            if (m_name.Length > 1)
 | 
			
		||||
                m_generatedApiClassName += m_name.Substring(1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <value>
 | 
			
		||||
| 
						 | 
				
			
			@ -145,22 +165,14 @@ namespace OpenSim.Region.Environment.Modules.Framework.InterfaceCommander
 | 
			
		|||
                {
 | 
			
		||||
                    if (function != "help")
 | 
			
		||||
                        Console.WriteLine("ERROR: Invalid command - No such command exists");
 | 
			
		||||
                    ShowConsoleHelp();
 | 
			
		||||
                    
 | 
			
		||||
                    Console.Write(Help);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        private void ShowConsoleHelp()
 | 
			
		||||
        {
 | 
			
		||||
            Console.WriteLine("===" + m_name + "===");
 | 
			
		||||
            foreach (ICommand com in m_commands.Values)
 | 
			
		||||
            {
 | 
			
		||||
                Console.WriteLine("* " + com.Name + " - " + com.Help);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private string EscapeRuntimeAPICommand(string command)
 | 
			
		||||
        {
 | 
			
		||||
            command = command.Replace('-', '_');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ namespace OpenSim.Region.Environment.Modules.Framework.InterfaceCommander
 | 
			
		|||
{
 | 
			
		||||
    public class CommanderTestModule : IRegionModule, ICommandableModule
 | 
			
		||||
    {
 | 
			
		||||
        private readonly Commander m_commander = new Commander("CommanderTest");
 | 
			
		||||
        private readonly Commander m_commander = new Commander("commandertest");
 | 
			
		||||
        private Scene m_scene;
 | 
			
		||||
 | 
			
		||||
        #region ICommandableModule Members
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
 | 
			
		|||
        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 | 
			
		||||
                
 | 
			
		||||
        protected Scene m_scene;
 | 
			
		||||
        private readonly Commander m_commander = new Commander("Permissions");                
 | 
			
		||||
        private readonly Commander m_commander = new Commander("permissions");                
 | 
			
		||||
 | 
			
		||||
        #region Constants
 | 
			
		||||
        // These are here for testing.  They will be taken out
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
 | 
			
		|||
{
 | 
			
		||||
    public class SerialiserModule : IRegionModule, IRegionSerialiserModule
 | 
			
		||||
    {
 | 
			
		||||
        private Commander m_commander = new Commander("Export");
 | 
			
		||||
        private Commander m_commander = new Commander("export");
 | 
			
		||||
        private List<Scene> m_regions = new List<Scene>();
 | 
			
		||||
        private string m_savedir = "exports" + "/";
 | 
			
		||||
        private List<IFileSerialiser> m_serialisers = new List<IFileSerialiser>();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
 | 
			
		|||
 | 
			
		||||
        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 | 
			
		||||
 | 
			
		||||
        private readonly Commander m_commander = new Commander("Terrain");
 | 
			
		||||
        private readonly Commander m_commander = new Commander("terrain");
 | 
			
		||||
 | 
			
		||||
        private readonly Dictionary<StandardTerrainEffects, ITerrainFloodEffect> m_floodeffects =
 | 
			
		||||
            new Dictionary<StandardTerrainEffects, ITerrainFloodEffect>();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -286,12 +286,20 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Get a module commander
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="name"></param>
 | 
			
		||||
        /// <returns>The module commander, null if no module commander with that name was found</returns>
 | 
			
		||||
        public ICommander GetCommander(string name)
 | 
			
		||||
        {
 | 
			
		||||
            lock (m_moduleCommanders)
 | 
			
		||||
            {
 | 
			
		||||
                return m_moduleCommanders[name];
 | 
			
		||||
                if (m_moduleCommanders.ContainsKey(name))
 | 
			
		||||
                    return m_moduleCommanders[name];
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Dictionary<string, ICommander> GetCommanders()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue