diff options
Diffstat (limited to 'OpenSim/Region/Application/OpenSimBase.cs')
-rw-r--r-- | OpenSim/Region/Application/OpenSimBase.cs | 113 |
1 files changed, 99 insertions, 14 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 8021b8f..10f75c1 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -28,10 +28,12 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.IO; | 30 | using System.IO; |
31 | using System.Net; | ||
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using System.Text; | 33 | using System.Text; |
33 | using log4net; | 34 | using log4net; |
34 | using Nini.Config; | 35 | using Nini.Config; |
36 | using OpenMetaverse; | ||
35 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Communications; | 38 | using OpenSim.Framework.Communications; |
37 | using OpenSim.Framework.Communications.Cache; | 39 | using OpenSim.Framework.Communications.Cache; |
@@ -62,7 +64,9 @@ namespace OpenSim | |||
62 | private const string PLUGIN_ASSET_SERVER_CLIENT = "/OpenSim/AssetClient"; | 64 | private const string PLUGIN_ASSET_SERVER_CLIENT = "/OpenSim/AssetClient"; |
63 | 65 | ||
64 | protected string proxyUrl; | 66 | protected string proxyUrl; |
65 | protected int proxyOffset = 0; | 67 | protected int proxyOffset = 0; |
68 | |||
69 | protected bool m_autoCreateLindenStack = true; | ||
66 | 70 | ||
67 | /// <summary> | 71 | /// <summary> |
68 | /// The file used to load and save prim backup xml if no filename has been specified | 72 | /// The file used to load and save prim backup xml if no filename has been specified |
@@ -186,17 +190,6 @@ namespace OpenSim | |||
186 | 190 | ||
187 | LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_configSettings.LibrariesXMLFile); | 191 | LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_configSettings.LibrariesXMLFile); |
188 | 192 | ||
189 | //// Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) | ||
190 | //if (m_configSettings.Standalone) | ||
191 | //{ | ||
192 | // InitialiseStandaloneServices(libraryRootFolder); | ||
193 | //} | ||
194 | //else | ||
195 | //{ | ||
196 | // // We are in grid mode | ||
197 | // InitialiseGridServices(libraryRootFolder); | ||
198 | //} | ||
199 | |||
200 | // Create a ModuleLoader instance | 193 | // Create a ModuleLoader instance |
201 | m_moduleLoader = new ModuleLoader(m_config.Source); | 194 | m_moduleLoader = new ModuleLoader(m_config.Source); |
202 | 195 | ||
@@ -544,6 +537,7 @@ namespace OpenSim | |||
544 | { | 537 | { |
545 | // set proxy url to RegionInfo | 538 | // set proxy url to RegionInfo |
546 | regionInfo.proxyUrl = proxyUrl; | 539 | regionInfo.proxyUrl = proxyUrl; |
540 | regionInfo.ProxyOffset = proxyOffset; | ||
547 | Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName); | 541 | Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName); |
548 | } | 542 | } |
549 | 543 | ||
@@ -591,8 +585,11 @@ namespace OpenSim | |||
591 | 585 | ||
592 | m_sceneManager.Add(scene); | 586 | m_sceneManager.Add(scene); |
593 | 587 | ||
594 | m_clientServers.Add(clientServer); | 588 | if (m_autoCreateLindenStack) |
595 | clientServer.Start(); | 589 | { |
590 | m_clientServers.Add(clientServer); | ||
591 | clientServer.Start(); | ||
592 | } | ||
596 | 593 | ||
597 | if (do_post_init) | 594 | if (do_post_init) |
598 | { | 595 | { |
@@ -636,6 +633,94 @@ namespace OpenSim | |||
636 | RemoveRegion(target, cleanUp); | 633 | RemoveRegion(target, cleanUp); |
637 | } | 634 | } |
638 | 635 | ||
636 | /// <summary> | ||
637 | /// Create a scene and its initial base structures. | ||
638 | /// </summary> | ||
639 | /// <param name="regionInfo"></param> | ||
640 | /// <param name="clientServer"> </param> | ||
641 | /// <returns></returns> | ||
642 | protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer) | ||
643 | { | ||
644 | return SetupScene(regionInfo, 0, null, out clientServer); | ||
645 | } | ||
646 | |||
647 | /// <summary> | ||
648 | /// Create a scene and its initial base structures. | ||
649 | /// </summary> | ||
650 | /// <param name="regionInfo"></param> | ||
651 | /// <param name="proxyOffset"></param> | ||
652 | /// <param name="configSource"></param> | ||
653 | /// <param name="clientServer"> </param> | ||
654 | /// <returns></returns> | ||
655 | protected Scene SetupScene( | ||
656 | RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer) | ||
657 | { | ||
658 | AgentCircuitManager circuitManager = new AgentCircuitManager(); | ||
659 | IPAddress listenIP = regionInfo.InternalEndPoint.Address; | ||
660 | //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP)) | ||
661 | // listenIP = IPAddress.Parse("0.0.0.0"); | ||
662 | |||
663 | uint port = (uint)regionInfo.InternalEndPoint.Port; | ||
664 | |||
665 | if (m_autoCreateLindenStack) | ||
666 | { | ||
667 | clientServer | ||
668 | = m_clientStackManager.CreateServer( | ||
669 | listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource, | ||
670 | m_assetCache, circuitManager); | ||
671 | } | ||
672 | else | ||
673 | { | ||
674 | clientServer = null; | ||
675 | } | ||
676 | |||
677 | regionInfo.InternalEndPoint.Port = (int)port; | ||
678 | |||
679 | Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager); | ||
680 | |||
681 | if (m_autoCreateLindenStack) | ||
682 | { | ||
683 | clientServer.AddScene(scene); | ||
684 | } | ||
685 | |||
686 | scene.LoadWorldMap(); | ||
687 | |||
688 | scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName); | ||
689 | scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised()); | ||
690 | scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight); | ||
691 | |||
692 | // TODO: Remove this cruft once MasterAvatar is fully deprecated | ||
693 | //Master Avatar Setup | ||
694 | UserProfileData masterAvatar; | ||
695 | if (scene.RegionInfo.MasterAvatarAssignedUUID == UUID.Zero) | ||
696 | { | ||
697 | masterAvatar = | ||
698 | m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, | ||
699 | scene.RegionInfo.MasterAvatarLastName, | ||
700 | scene.RegionInfo.MasterAvatarSandboxPassword); | ||
701 | } | ||
702 | else | ||
703 | { | ||
704 | masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID); | ||
705 | scene.RegionInfo.MasterAvatarFirstName = masterAvatar.FirstName; | ||
706 | scene.RegionInfo.MasterAvatarLastName = masterAvatar.SurName; | ||
707 | } | ||
708 | |||
709 | if (masterAvatar == null) | ||
710 | { | ||
711 | m_log.Info("[PARCEL]: No master avatar found, using null."); | ||
712 | scene.RegionInfo.MasterAvatarAssignedUUID = UUID.Zero; | ||
713 | } | ||
714 | else | ||
715 | { | ||
716 | m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [" + masterAvatar.ID.ToString() + "]", | ||
717 | scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName); | ||
718 | scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID; | ||
719 | } | ||
720 | |||
721 | return scene; | ||
722 | } | ||
723 | |||
639 | protected override StorageManager CreateStorageManager() | 724 | protected override StorageManager CreateStorageManager() |
640 | { | 725 | { |
641 | return CreateStorageManager(m_configSettings.StorageConnectionString, m_configSettings.EstateConnectionString); | 726 | return CreateStorageManager(m_configSettings.StorageConnectionString, m_configSettings.EstateConnectionString); |