diff options
Diffstat (limited to 'OpenSim/Region/Application/OpenSim.cs')
-rw-r--r-- | OpenSim/Region/Application/OpenSim.cs | 121 |
1 files changed, 35 insertions, 86 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 6255515..4c4abb6 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -35,6 +35,7 @@ using System.Text; | |||
35 | using System.Text.RegularExpressions; | 35 | using System.Text.RegularExpressions; |
36 | using System.Timers; | 36 | using System.Timers; |
37 | using log4net; | 37 | using log4net; |
38 | using NDesk.Options; | ||
38 | using Nini.Config; | 39 | using Nini.Config; |
39 | using OpenMetaverse; | 40 | using OpenMetaverse; |
40 | using OpenSim.Framework; | 41 | using OpenSim.Framework; |
@@ -253,8 +254,14 @@ namespace OpenSim | |||
253 | m_console.Commands.AddCommand("Debug", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); | 254 | m_console.Commands.AddCommand("Debug", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); |
254 | 255 | ||
255 | m_console.Commands.AddCommand("Debug", false, "debug scene", | 256 | m_console.Commands.AddCommand("Debug", false, "debug scene", |
256 | "debug scene <scripting> <collisions> <physics>", | 257 | "debug scene active|collisions|physics|scripting|teleport true|false", |
257 | "Turn on scene debugging", Debug); | 258 | "Turn on scene debugging.", |
259 | "If active is false then main scene update and maintenance loops are suspended.\n" | ||
260 | + "If collisions is false then collisions with other objects are turned off.\n" | ||
261 | + "If physics is false then all physics objects are non-physical.\n" | ||
262 | + "If scripting is false then no scripting operations happen.\n" | ||
263 | + "If teleport is true then some extra teleport debug information is logged.", | ||
264 | Debug); | ||
258 | 265 | ||
259 | m_console.Commands.AddCommand("General", false, "change region", | 266 | m_console.Commands.AddCommand("General", false, "change region", |
260 | "change region <region name>", | 267 | "change region <region name>", |
@@ -291,7 +298,7 @@ namespace OpenSim | |||
291 | 298 | ||
292 | m_console.Commands.AddCommand("Archiving", false, "save oar", | 299 | m_console.Commands.AddCommand("Archiving", false, "save oar", |
293 | //"save oar [-v|--version=<N>] [-p|--profile=<url>] [<OAR path>]", | 300 | //"save oar [-v|--version=<N>] [-p|--profile=<url>] [<OAR path>]", |
294 | "save oar [-h|--home=<url>] [--noassets] [--publish] [--perm=<permissions>] [<OAR path>]", | 301 | "save oar [-h|--home=<url>] [--noassets] [--publish] [--perm=<permissions>] [--all] [<OAR path>]", |
295 | "Save a region's data to an OAR archive.", | 302 | "Save a region's data to an OAR archive.", |
296 | // "-v|--version=<N> generates scene objects as per older versions of the serialization (e.g. -v=0)" + Environment.NewLine | 303 | // "-v|--version=<N> generates scene objects as per older versions of the serialization (e.g. -v=0)" + Environment.NewLine |
297 | "-h|--home=<url> adds the url of the profile service to the saved user information.\n" | 304 | "-h|--home=<url> adds the url of the profile service to the saved user information.\n" |
@@ -301,6 +308,7 @@ namespace OpenSim | |||
301 | + " this is useful if you're making oars generally available that might be reloaded to the same grid from which you published\n" | 308 | + " this is useful if you're making oars generally available that might be reloaded to the same grid from which you published\n" |
302 | + "--perm=<permissions> stops objects with insufficient permissions from being saved to the OAR.\n" | 309 | + "--perm=<permissions> stops objects with insufficient permissions from being saved to the OAR.\n" |
303 | + " <permissions> can contain one or more of these characters: \"C\" = Copy, \"T\" = Transfer\n" | 310 | + " <permissions> can contain one or more of these characters: \"C\" = Copy, \"T\" = Transfer\n" |
311 | + "--all saves all the regions in the simulator, instead of just the current region.\n" | ||
304 | + "The OAR path must be a filesystem path." | 312 | + "The OAR path must be a filesystem path." |
305 | + " If this is not given then the oar is saved to region.oar in the current directory.", | 313 | + " If this is not given then the oar is saved to region.oar in the current directory.", |
306 | SaveOar); | 314 | SaveOar); |
@@ -310,8 +318,11 @@ namespace OpenSim | |||
310 | "Change the scale of a named prim", HandleEditScale); | 318 | "Change the scale of a named prim", HandleEditScale); |
311 | 319 | ||
312 | m_console.Commands.AddCommand("Users", false, "kick user", | 320 | m_console.Commands.AddCommand("Users", false, "kick user", |
313 | "kick user <first> <last> [message]", | 321 | "kick user <first> <last> [--force] [message]", |
314 | "Kick a user off the simulator", KickUserCommand); | 322 | "Kick a user off the simulator", |
323 | "The --force option will kick the user without any checks to see whether it's already in the process of closing\n" | ||
324 | + "Only use this option if you are sure the avatar is inactive and a normal kick user operation does not removed them", | ||
325 | KickUserCommand); | ||
315 | 326 | ||
316 | m_console.Commands.AddCommand("Users", false, "show users", | 327 | m_console.Commands.AddCommand("Users", false, "show users", |
317 | "show users [full]", | 328 | "show users [full]", |
@@ -328,10 +339,6 @@ namespace OpenSim | |||
328 | "show circuits", | 339 | "show circuits", |
329 | "Show agent circuit data", HandleShow); | 340 | "Show agent circuit data", HandleShow); |
330 | 341 | ||
331 | m_console.Commands.AddCommand("Comms", false, "show http-handlers", | ||
332 | "show http-handlers", | ||
333 | "Show all registered http handlers", HandleShow); | ||
334 | |||
335 | m_console.Commands.AddCommand("Comms", false, "show pending-objects", | 342 | m_console.Commands.AddCommand("Comms", false, "show pending-objects", |
336 | "show pending-objects", | 343 | "show pending-objects", |
337 | "Show # of objects on the pending queues of all scene viewers", HandleShow); | 344 | "Show # of objects on the pending queues of all scene viewers", HandleShow); |
@@ -416,6 +423,7 @@ namespace OpenSim | |||
416 | { | 423 | { |
417 | RunCommandScript(m_shutdownCommandsFile); | 424 | RunCommandScript(m_shutdownCommandsFile); |
418 | } | 425 | } |
426 | |||
419 | base.ShutdownSpecific(); | 427 | base.ShutdownSpecific(); |
420 | } | 428 | } |
421 | 429 | ||
@@ -453,11 +461,17 @@ namespace OpenSim | |||
453 | /// <param name="cmdparams">name of avatar to kick</param> | 461 | /// <param name="cmdparams">name of avatar to kick</param> |
454 | private void KickUserCommand(string module, string[] cmdparams) | 462 | private void KickUserCommand(string module, string[] cmdparams) |
455 | { | 463 | { |
456 | if (cmdparams.Length < 4) | 464 | bool force = false; |
465 | |||
466 | OptionSet options = new OptionSet().Add("f|force", delegate (string v) { force = v != null; }); | ||
467 | |||
468 | List<string> mainParams = options.Parse(cmdparams); | ||
469 | |||
470 | if (mainParams.Count < 4) | ||
457 | return; | 471 | return; |
458 | 472 | ||
459 | string alert = null; | 473 | string alert = null; |
460 | if (cmdparams.Length > 4) | 474 | if (mainParams.Count > 4) |
461 | alert = String.Format("\n{0}\n", String.Join(" ", cmdparams, 4, cmdparams.Length - 4)); | 475 | alert = String.Format("\n{0}\n", String.Join(" ", cmdparams, 4, cmdparams.Length - 4)); |
462 | 476 | ||
463 | IList agents = SceneManager.GetCurrentSceneAvatars(); | 477 | IList agents = SceneManager.GetCurrentSceneAvatars(); |
@@ -466,8 +480,8 @@ namespace OpenSim | |||
466 | { | 480 | { |
467 | RegionInfo regionInfo = presence.Scene.RegionInfo; | 481 | RegionInfo regionInfo = presence.Scene.RegionInfo; |
468 | 482 | ||
469 | if (presence.Firstname.ToLower().Contains(cmdparams[2].ToLower()) && | 483 | if (presence.Firstname.ToLower().Contains(mainParams[2].ToLower()) && |
470 | presence.Lastname.ToLower().Contains(cmdparams[3].ToLower())) | 484 | presence.Lastname.ToLower().Contains(mainParams[3].ToLower())) |
471 | { | 485 | { |
472 | MainConsole.Instance.Output( | 486 | MainConsole.Instance.Output( |
473 | String.Format( | 487 | String.Format( |
@@ -480,7 +494,7 @@ namespace OpenSim | |||
480 | else | 494 | else |
481 | presence.ControllingClient.Kick("\nYou have been logged out by an administrator.\n"); | 495 | presence.ControllingClient.Kick("\nYou have been logged out by an administrator.\n"); |
482 | 496 | ||
483 | presence.Scene.IncomingCloseAgent(presence.UUID); | 497 | presence.Scene.IncomingCloseAgent(presence.UUID, force); |
484 | } | 498 | } |
485 | } | 499 | } |
486 | 500 | ||
@@ -743,33 +757,13 @@ namespace OpenSim | |||
743 | switch (cmdparams[0].ToLower()) | 757 | switch (cmdparams[0].ToLower()) |
744 | { | 758 | { |
745 | case "list": | 759 | case "list": |
746 | foreach (IRegionModule irm in m_moduleLoader.GetLoadedSharedModules) | 760 | //TODO: Convert to new region modules |
747 | { | ||
748 | MainConsole.Instance.Output(String.Format("Shared region module: {0}", irm.Name)); | ||
749 | } | ||
750 | break; | 761 | break; |
751 | case "unload": | 762 | case "unload": |
752 | if (cmdparams.Length > 1) | 763 | //TODO: Convert to new region modules |
753 | { | ||
754 | foreach (IRegionModule rm in new ArrayList(m_moduleLoader.GetLoadedSharedModules)) | ||
755 | { | ||
756 | if (rm.Name.ToLower() == cmdparams[1].ToLower()) | ||
757 | { | ||
758 | MainConsole.Instance.Output(String.Format("Unloading module: {0}", rm.Name)); | ||
759 | m_moduleLoader.UnloadModule(rm); | ||
760 | } | ||
761 | } | ||
762 | } | ||
763 | break; | 764 | break; |
764 | case "load": | 765 | case "load": |
765 | if (cmdparams.Length > 1) | 766 | //TODO: Convert to new region modules |
766 | { | ||
767 | foreach (Scene s in new ArrayList(SceneManager.Scenes)) | ||
768 | { | ||
769 | MainConsole.Instance.Output(String.Format("Loading module: {0}", cmdparams[1])); | ||
770 | m_moduleLoader.LoadRegionModules(cmdparams[1], s); | ||
771 | } | ||
772 | } | ||
773 | break; | 767 | break; |
774 | } | 768 | } |
775 | } | 769 | } |
@@ -922,7 +916,8 @@ namespace OpenSim | |||
922 | } | 916 | } |
923 | else | 917 | else |
924 | { | 918 | { |
925 | MainConsole.Instance.Output("Usage: debug scene scripting|collisions|physics|teleport true|false"); | 919 | MainConsole.Instance.Output( |
920 | "Usage: debug scene active|scripting|collisions|physics|teleport true|false"); | ||
926 | } | 921 | } |
927 | 922 | ||
928 | break; | 923 | break; |
@@ -1002,56 +997,10 @@ namespace OpenSim | |||
1002 | HandleShowCircuits(); | 997 | HandleShowCircuits(); |
1003 | break; | 998 | break; |
1004 | 999 | ||
1005 | case "http-handlers": | ||
1006 | System.Text.StringBuilder handlers = new System.Text.StringBuilder("Registered HTTP Handlers:\n"); | ||
1007 | |||
1008 | handlers.AppendFormat("* XMLRPC:\n"); | ||
1009 | foreach (String s in HttpServer.GetXmlRpcHandlerKeys()) | ||
1010 | handlers.AppendFormat("\t{0}\n", s); | ||
1011 | |||
1012 | handlers.AppendFormat("* HTTP:\n"); | ||
1013 | List<String> poll = HttpServer.GetPollServiceHandlerKeys(); | ||
1014 | foreach (String s in HttpServer.GetHTTPHandlerKeys()) | ||
1015 | handlers.AppendFormat("\t{0} {1}\n", s, (poll.Contains(s) ? "(poll service)" : string.Empty)); | ||
1016 | |||
1017 | handlers.AppendFormat("* Agent:\n"); | ||
1018 | foreach (String s in HttpServer.GetAgentHandlerKeys()) | ||
1019 | handlers.AppendFormat("\t{0}\n", s); | ||
1020 | |||
1021 | handlers.AppendFormat("* LLSD:\n"); | ||
1022 | foreach (String s in HttpServer.GetLLSDHandlerKeys()) | ||
1023 | handlers.AppendFormat("\t{0}\n", s); | ||
1024 | |||
1025 | handlers.AppendFormat("* StreamHandlers ({0}):\n", HttpServer.GetStreamHandlerKeys().Count); | ||
1026 | foreach (String s in HttpServer.GetStreamHandlerKeys()) | ||
1027 | handlers.AppendFormat("\t{0}\n", s); | ||
1028 | |||
1029 | MainConsole.Instance.Output(handlers.ToString()); | ||
1030 | break; | ||
1031 | |||
1032 | case "modules": | 1000 | case "modules": |
1033 | MainConsole.Instance.Output("The currently loaded shared modules are:"); | ||
1034 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) | ||
1035 | { | ||
1036 | MainConsole.Instance.Output("Shared Module: " + module.Name); | ||
1037 | } | ||
1038 | |||
1039 | SceneManager.ForEachScene( | ||
1040 | delegate(Scene scene) { | ||
1041 | m_log.Error("The currently loaded modules in " + scene.RegionInfo.RegionName + " are:"); | ||
1042 | foreach (IRegionModule module in scene.Modules.Values) | ||
1043 | { | ||
1044 | if (!module.IsSharedModule) | ||
1045 | { | ||
1046 | m_log.Error("Region Module: " + module.Name); | ||
1047 | } | ||
1048 | } | ||
1049 | } | ||
1050 | ); | ||
1051 | |||
1052 | SceneManager.ForEachScene( | 1001 | SceneManager.ForEachScene( |
1053 | delegate(Scene scene) { | 1002 | delegate(Scene scene) { |
1054 | MainConsole.Instance.Output("Loaded new region modules in" + scene.RegionInfo.RegionName + " are:"); | 1003 | MainConsole.Instance.Output("Loaded region modules in" + scene.RegionInfo.RegionName + " are:"); |
1055 | foreach (IRegionModuleBase module in scene.RegionModules.Values) | 1004 | foreach (IRegionModuleBase module in scene.RegionModules.Values) |
1056 | { | 1005 | { |
1057 | Type type = module.GetType().GetInterface("ISharedRegionModule"); | 1006 | Type type = module.GetType().GetInterface("ISharedRegionModule"); |
@@ -1123,7 +1072,7 @@ namespace OpenSim | |||
1123 | aCircuit.Name, | 1072 | aCircuit.Name, |
1124 | aCircuit.child ? "child" : "root", | 1073 | aCircuit.child ? "child" : "root", |
1125 | aCircuit.circuitcode.ToString(), | 1074 | aCircuit.circuitcode.ToString(), |
1126 | aCircuit.IPAddress.ToString(), | 1075 | aCircuit.IPAddress != null ? aCircuit.IPAddress.ToString() : "not set", |
1127 | aCircuit.Viewer); | 1076 | aCircuit.Viewer); |
1128 | }); | 1077 | }); |
1129 | 1078 | ||