diff options
Diffstat (limited to 'OpenSim/Region/Application/OpenSimBase.cs')
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 79259d8..a0c9a0a 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -97,6 +97,10 @@ namespace OpenSim | |||
97 | 97 | ||
98 | protected List<IApplicationPlugin> m_plugins = new List<IApplicationPlugin>(); | 98 | protected List<IApplicationPlugin> m_plugins = new List<IApplicationPlugin>(); |
99 | 99 | ||
100 | private List<string> m_permsModules; | ||
101 | |||
102 | private bool m_securePermissionsLoading = true; | ||
103 | |||
100 | /// <value> | 104 | /// <value> |
101 | /// The config information passed into the OpenSimulator region server. | 105 | /// The config information passed into the OpenSimulator region server. |
102 | /// </value> | 106 | /// </value> |
@@ -201,6 +205,11 @@ namespace OpenSim | |||
201 | CreatePIDFile(pidFile); | 205 | CreatePIDFile(pidFile); |
202 | 206 | ||
203 | userStatsURI = startupConfig.GetString("Stats_URI", String.Empty); | 207 | userStatsURI = startupConfig.GetString("Stats_URI", String.Empty); |
208 | |||
209 | m_securePermissionsLoading = startupConfig.GetBoolean("SecurePermissionsLoading", true); | ||
210 | |||
211 | string permissionModules = startupConfig.GetString("permissionmodules", "DefaultPermissionsModule"); | ||
212 | m_permsModules = new List<string>(permissionModules.Split(',')); | ||
204 | } | 213 | } |
205 | 214 | ||
206 | // Load the simulation data service | 215 | // Load the simulation data service |
@@ -229,6 +238,12 @@ namespace OpenSim | |||
229 | m_moduleLoader = new ModuleLoader(m_config.Source); | 238 | m_moduleLoader = new ModuleLoader(m_config.Source); |
230 | 239 | ||
231 | LoadPlugins(); | 240 | LoadPlugins(); |
241 | |||
242 | if (m_plugins.Count == 0) // We failed to load any modules. Mono Addins glitch! | ||
243 | { | ||
244 | Environment.Exit(1); | ||
245 | } | ||
246 | |||
232 | foreach (IApplicationPlugin plugin in m_plugins) | 247 | foreach (IApplicationPlugin plugin in m_plugins) |
233 | { | 248 | { |
234 | plugin.PostInitialise(); | 249 | plugin.PostInitialise(); |
@@ -379,7 +394,41 @@ namespace OpenSim | |||
379 | } | 394 | } |
380 | else m_log.Error("[REGIONMODULES]: The new RegionModulesController is missing..."); | 395 | else m_log.Error("[REGIONMODULES]: The new RegionModulesController is missing..."); |
381 | 396 | ||
397 | if (m_securePermissionsLoading) | ||
398 | { | ||
399 | foreach (string s in m_permsModules) | ||
400 | { | ||
401 | if (!scene.RegionModules.ContainsKey(s)) | ||
402 | { | ||
403 | bool found = false; | ||
404 | foreach (IRegionModule m in modules) | ||
405 | { | ||
406 | if (m.Name == s) | ||
407 | { | ||
408 | found = true; | ||
409 | } | ||
410 | } | ||
411 | if (!found) | ||
412 | { | ||
413 | m_log.Fatal("[MODULES]: Required module " + s + " not found."); | ||
414 | Environment.Exit(0); | ||
415 | } | ||
416 | } | ||
417 | } | ||
418 | } | ||
419 | |||
382 | scene.SetModuleInterfaces(); | 420 | scene.SetModuleInterfaces(); |
421 | // First Step of bootreport sequence | ||
422 | if (scene.SnmpService != null) | ||
423 | { | ||
424 | scene.SnmpService.ColdStart(1,scene); | ||
425 | scene.SnmpService.LinkDown(scene); | ||
426 | } | ||
427 | |||
428 | if (scene.SnmpService != null) | ||
429 | { | ||
430 | scene.SnmpService.BootInfo("Loading prins", scene); | ||
431 | } | ||
383 | 432 | ||
384 | while (regionInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) | 433 | while (regionInfo.EstateSettings.EstateOwner == UUID.Zero && MainConsole.Instance != null) |
385 | SetUpEstateOwner(scene); | 434 | SetUpEstateOwner(scene); |
@@ -393,6 +442,11 @@ namespace OpenSim | |||
393 | scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); | 442 | scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); |
394 | scene.EventManager.TriggerParcelPrimCountUpdate(); | 443 | scene.EventManager.TriggerParcelPrimCountUpdate(); |
395 | 444 | ||
445 | if (scene.SnmpService != null) | ||
446 | { | ||
447 | scene.SnmpService.BootInfo("Grid Registration in progress", scene); | ||
448 | } | ||
449 | |||
396 | try | 450 | try |
397 | { | 451 | { |
398 | scene.RegisterRegionWithGrid(); | 452 | scene.RegisterRegionWithGrid(); |
@@ -403,15 +457,29 @@ namespace OpenSim | |||
403 | "[STARTUP]: Registration of region with grid failed, aborting startup due to {0} {1}", | 457 | "[STARTUP]: Registration of region with grid failed, aborting startup due to {0} {1}", |
404 | e.Message, e.StackTrace); | 458 | e.Message, e.StackTrace); |
405 | 459 | ||
460 | if (scene.SnmpService != null) | ||
461 | { | ||
462 | scene.SnmpService.Critical("Grid registration failed. Startup aborted.", scene); | ||
463 | } | ||
406 | // Carrying on now causes a lot of confusion down the | 464 | // Carrying on now causes a lot of confusion down the |
407 | // line - we need to get the user's attention | 465 | // line - we need to get the user's attention |
408 | Environment.Exit(1); | 466 | Environment.Exit(1); |
409 | } | 467 | } |
410 | 468 | ||
469 | if (scene.SnmpService != null) | ||
470 | { | ||
471 | scene.SnmpService.BootInfo("Grid Registration done", scene); | ||
472 | } | ||
473 | |||
411 | // We need to do this after we've initialized the | 474 | // We need to do this after we've initialized the |
412 | // scripting engines. | 475 | // scripting engines. |
413 | scene.CreateScriptInstances(); | 476 | scene.CreateScriptInstances(); |
414 | 477 | ||
478 | if (scene.SnmpService != null) | ||
479 | { | ||
480 | scene.SnmpService.BootInfo("ScriptEngine started", scene); | ||
481 | } | ||
482 | |||
415 | m_sceneManager.Add(scene); | 483 | m_sceneManager.Add(scene); |
416 | 484 | ||
417 | if (m_autoCreateClientStack) | 485 | if (m_autoCreateClientStack) |
@@ -420,6 +488,10 @@ namespace OpenSim | |||
420 | clientServer.Start(); | 488 | clientServer.Start(); |
421 | } | 489 | } |
422 | 490 | ||
491 | if (scene.SnmpService != null) | ||
492 | { | ||
493 | scene.SnmpService.BootInfo("Initializing region modules", scene); | ||
494 | } | ||
423 | if (do_post_init) | 495 | if (do_post_init) |
424 | { | 496 | { |
425 | foreach (IRegionModule module in modules) | 497 | foreach (IRegionModule module in modules) |
@@ -431,6 +503,12 @@ namespace OpenSim | |||
431 | 503 | ||
432 | mscene = scene; | 504 | mscene = scene; |
433 | 505 | ||
506 | if (scene.SnmpService != null) | ||
507 | { | ||
508 | scene.SnmpService.BootInfo("The region is operational", scene); | ||
509 | scene.SnmpService.LinkUp(scene); | ||
510 | } | ||
511 | |||
434 | scene.Start(); | 512 | scene.Start(); |
435 | 513 | ||
436 | scene.StartScripts(); | 514 | scene.StartScripts(); |
@@ -550,6 +628,11 @@ namespace OpenSim | |||
550 | private void ShutdownRegion(Scene scene) | 628 | private void ShutdownRegion(Scene scene) |
551 | { | 629 | { |
552 | m_log.DebugFormat("[SHUTDOWN]: Shutting down region {0}", scene.RegionInfo.RegionName); | 630 | m_log.DebugFormat("[SHUTDOWN]: Shutting down region {0}", scene.RegionInfo.RegionName); |
631 | if (scene.SnmpService != null) | ||
632 | { | ||
633 | scene.SnmpService.BootInfo("The region is shutting down", scene); | ||
634 | scene.SnmpService.LinkDown(scene); | ||
635 | } | ||
553 | IRegionModulesController controller; | 636 | IRegionModulesController controller; |
554 | if (ApplicationRegistry.TryGet<IRegionModulesController>(out controller)) | 637 | if (ApplicationRegistry.TryGet<IRegionModulesController>(out controller)) |
555 | { | 638 | { |