aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Application
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Application/OpenSim.cs74
-rw-r--r--OpenSim/Region/Application/OpenSimBase.cs74
2 files changed, 67 insertions, 81 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 6255515..5f07272 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -35,6 +35,7 @@ using System.Text;
35using System.Text.RegularExpressions; 35using System.Text.RegularExpressions;
36using System.Timers; 36using System.Timers;
37using log4net; 37using log4net;
38using NDesk.Options;
38using Nini.Config; 39using Nini.Config;
39using OpenMetaverse; 40using OpenMetaverse;
40using OpenSim.Framework; 41using 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
@@ -922,7 +936,8 @@ namespace OpenSim
922 } 936 }
923 else 937 else
924 { 938 {
925 MainConsole.Instance.Output("Usage: debug scene scripting|collisions|physics|teleport true|false"); 939 MainConsole.Instance.Output(
940 "Usage: debug scene active|scripting|collisions|physics|teleport true|false");
926 } 941 }
927 942
928 break; 943 break;
@@ -1002,33 +1017,6 @@ namespace OpenSim
1002 HandleShowCircuits(); 1017 HandleShowCircuits();
1003 break; 1018 break;
1004 1019
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": 1020 case "modules":
1033 MainConsole.Instance.Output("The currently loaded shared modules are:"); 1021 MainConsole.Instance.Output("The currently loaded shared modules are:");
1034 foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) 1022 foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules)
@@ -1123,7 +1111,7 @@ namespace OpenSim
1123 aCircuit.Name, 1111 aCircuit.Name,
1124 aCircuit.child ? "child" : "root", 1112 aCircuit.child ? "child" : "root",
1125 aCircuit.circuitcode.ToString(), 1113 aCircuit.circuitcode.ToString(),
1126 aCircuit.IPAddress.ToString(), 1114 aCircuit.IPAddress != null ? aCircuit.IPAddress.ToString() : "not set",
1127 aCircuit.Viewer); 1115 aCircuit.Viewer);
1128 }); 1116 });
1129 1117
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index d107b7a..7232383 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -232,8 +232,6 @@ namespace OpenSim
232 232
233 base.StartupSpecific(); 233 base.StartupSpecific();
234 234
235 m_stats = StatsManager.SimExtraStats;
236
237 // Create a ModuleLoader instance 235 // Create a ModuleLoader instance
238 m_moduleLoader = new ModuleLoader(m_config.Source); 236 m_moduleLoader = new ModuleLoader(m_config.Source);
239 237
@@ -249,51 +247,51 @@ namespace OpenSim
249 plugin.PostInitialise(); 247 plugin.PostInitialise();
250 } 248 }
251 249
252 AddPluginCommands(); 250 if (m_console != null)
251 {
252 StatsManager.RegisterConsoleCommands(m_console);
253 AddPluginCommands(m_console);
254 }
253 } 255 }
254 256
255 protected virtual void AddPluginCommands() 257 protected virtual void AddPluginCommands(CommandConsole console)
256 { 258 {
257 // If console exists add plugin commands. 259 List<string> topics = GetHelpTopics();
258 if (m_console != null)
259 {
260 List<string> topics = GetHelpTopics();
261 260
262 foreach (string topic in topics) 261 foreach (string topic in topics)
263 { 262 {
264 string capitalizedTopic = char.ToUpper(topic[0]) + topic.Substring(1); 263 string capitalizedTopic = char.ToUpper(topic[0]) + topic.Substring(1);
265 264
266 // This is a hack to allow the user to enter the help command in upper or lowercase. This will go 265 // This is a hack to allow the user to enter the help command in upper or lowercase. This will go
267 // away at some point. 266 // away at some point.
268 m_console.Commands.AddCommand(capitalizedTopic, false, "help " + topic, 267 console.Commands.AddCommand(capitalizedTopic, false, "help " + topic,
269 "help " + capitalizedTopic, 268 "help " + capitalizedTopic,
270 "Get help on plugin command '" + topic + "'", 269 "Get help on plugin command '" + topic + "'",
271 HandleCommanderHelp); 270 HandleCommanderHelp);
272 m_console.Commands.AddCommand(capitalizedTopic, false, "help " + capitalizedTopic, 271 console.Commands.AddCommand(capitalizedTopic, false, "help " + capitalizedTopic,
273 "help " + capitalizedTopic, 272 "help " + capitalizedTopic,
274 "Get help on plugin command '" + topic + "'", 273 "Get help on plugin command '" + topic + "'",
275 HandleCommanderHelp); 274 HandleCommanderHelp);
276 275
277 ICommander commander = null; 276 ICommander commander = null;
278 277
279 Scene s = SceneManager.CurrentOrFirstScene; 278 Scene s = SceneManager.CurrentOrFirstScene;
280 279
281 if (s != null && s.GetCommanders() != null) 280 if (s != null && s.GetCommanders() != null)
282 { 281 {
283 if (s.GetCommanders().ContainsKey(topic)) 282 if (s.GetCommanders().ContainsKey(topic))
284 commander = s.GetCommanders()[topic]; 283 commander = s.GetCommanders()[topic];
285 } 284 }
286 285
287 if (commander == null) 286 if (commander == null)
288 continue; 287 continue;
289 288
290 foreach (string command in commander.Commands.Keys) 289 foreach (string command in commander.Commands.Keys)
291 { 290 {
292 m_console.Commands.AddCommand(capitalizedTopic, false, 291 console.Commands.AddCommand(capitalizedTopic, false,
293 topic + " " + command, 292 topic + " " + command,
294 topic + " " + commander.Commands[command].ShortHelp(), 293 topic + " " + commander.Commands[command].ShortHelp(),
295 String.Empty, HandleCommanderCommand); 294 String.Empty, HandleCommanderCommand);
296 }
297 } 295 }
298 } 296 }
299 } 297 }
@@ -623,7 +621,7 @@ namespace OpenSim
623 if (account == null) 621 if (account == null)
624 { 622 {
625 m_log.ErrorFormat( 623 m_log.ErrorFormat(
626 "[OPENSIM]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first."); 624 "[OPENSIM]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first at the grid level.");
627 } 625 }
628 else 626 else
629 { 627 {