diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index 84751bdf39..0929699671 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -208,6 +208,7 @@ namespace OpenSim.Framework public string MasterAvatarSandboxPassword = String.Empty; public UUID originRegionID = UUID.Zero; public string proxyUrl = ""; + public int ProxyOffset = 0; public string RegionName = String.Empty; public string regionSecret = UUID.Random().ToString(); diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 8021b8fbb9..10f75c1e22 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -28,10 +28,12 @@ using System; using System.Collections.Generic; using System.IO; +using System.Net; using System.Reflection; using System.Text; using log4net; using Nini.Config; +using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Communications; using OpenSim.Framework.Communications.Cache; @@ -62,7 +64,9 @@ namespace OpenSim private const string PLUGIN_ASSET_SERVER_CLIENT = "/OpenSim/AssetClient"; protected string proxyUrl; - protected int proxyOffset = 0; + protected int proxyOffset = 0; + + protected bool m_autoCreateLindenStack = true; /// /// The file used to load and save prim backup xml if no filename has been specified @@ -186,17 +190,6 @@ namespace OpenSim LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_configSettings.LibrariesXMLFile); - //// Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false) - //if (m_configSettings.Standalone) - //{ - // InitialiseStandaloneServices(libraryRootFolder); - //} - //else - //{ - // // We are in grid mode - // InitialiseGridServices(libraryRootFolder); - //} - // Create a ModuleLoader instance m_moduleLoader = new ModuleLoader(m_config.Source); @@ -544,6 +537,7 @@ namespace OpenSim { // set proxy url to RegionInfo regionInfo.proxyUrl = proxyUrl; + regionInfo.ProxyOffset = proxyOffset; Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName); } @@ -591,8 +585,11 @@ namespace OpenSim m_sceneManager.Add(scene); - m_clientServers.Add(clientServer); - clientServer.Start(); + if (m_autoCreateLindenStack) + { + m_clientServers.Add(clientServer); + clientServer.Start(); + } if (do_post_init) { @@ -636,6 +633,94 @@ namespace OpenSim RemoveRegion(target, cleanUp); } + /// + /// Create a scene and its initial base structures. + /// + /// + /// + /// + protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer) + { + return SetupScene(regionInfo, 0, null, out clientServer); + } + + /// + /// Create a scene and its initial base structures. + /// + /// + /// + /// + /// + /// + protected Scene SetupScene( + RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer) + { + AgentCircuitManager circuitManager = new AgentCircuitManager(); + IPAddress listenIP = regionInfo.InternalEndPoint.Address; + //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP)) + // listenIP = IPAddress.Parse("0.0.0.0"); + + uint port = (uint)regionInfo.InternalEndPoint.Port; + + if (m_autoCreateLindenStack) + { + clientServer + = m_clientStackManager.CreateServer( + listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource, + m_assetCache, circuitManager); + } + else + { + clientServer = null; + } + + regionInfo.InternalEndPoint.Port = (int)port; + + Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager); + + if (m_autoCreateLindenStack) + { + clientServer.AddScene(scene); + } + + scene.LoadWorldMap(); + + scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName); + scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised()); + scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight); + + // TODO: Remove this cruft once MasterAvatar is fully deprecated + //Master Avatar Setup + UserProfileData masterAvatar; + if (scene.RegionInfo.MasterAvatarAssignedUUID == UUID.Zero) + { + masterAvatar = + m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, + scene.RegionInfo.MasterAvatarLastName, + scene.RegionInfo.MasterAvatarSandboxPassword); + } + else + { + masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID); + scene.RegionInfo.MasterAvatarFirstName = masterAvatar.FirstName; + scene.RegionInfo.MasterAvatarLastName = masterAvatar.SurName; + } + + if (masterAvatar == null) + { + m_log.Info("[PARCEL]: No master avatar found, using null."); + scene.RegionInfo.MasterAvatarAssignedUUID = UUID.Zero; + } + else + { + m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [" + masterAvatar.ID.ToString() + "]", + scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName); + scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID; + } + + return scene; + } + protected override StorageManager CreateStorageManager() { return CreateStorageManager(m_configSettings.StorageConnectionString, m_configSettings.EstateConnectionString); diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index 731e0e5309..c1c212c916 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs @@ -141,86 +141,5 @@ namespace OpenSim.Region.ClientStack return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier); } - - /// - /// Create a scene and its initial base structures. - /// - /// - /// - /// - protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer) - { - return SetupScene(regionInfo, 0, null, out clientServer); - } - - /// - /// Create a scene and its initial base structures. - /// - /// TODO: Really configSource shouldn't be passed in here, but should be moved up to BaseOpenSimServer and - /// made common to all the servers. - /// - /// - /// - /// - /// - /// - protected Scene SetupScene( - RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer) - { - AgentCircuitManager circuitManager = new AgentCircuitManager(); - IPAddress listenIP = regionInfo.InternalEndPoint.Address; - //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP)) - // listenIP = IPAddress.Parse("0.0.0.0"); - - uint port = (uint) regionInfo.InternalEndPoint.Port; - - clientServer - = m_clientStackManager.CreateServer( - listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource, - m_assetCache, circuitManager); - - regionInfo.InternalEndPoint.Port = (int)port; - - Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager); - - clientServer.AddScene(scene); - - scene.LoadWorldMap(); - - scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName); - scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised()); - scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight); - - // TODO: Remove this cruft once MasterAvatar is fully deprecated - //Master Avatar Setup - UserProfileData masterAvatar; - if (scene.RegionInfo.MasterAvatarAssignedUUID == UUID.Zero) - { - masterAvatar = - m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, - scene.RegionInfo.MasterAvatarLastName, - scene.RegionInfo.MasterAvatarSandboxPassword); - } - else - { - masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID); - scene.RegionInfo.MasterAvatarFirstName = masterAvatar.FirstName; - scene.RegionInfo.MasterAvatarLastName = masterAvatar.SurName; - } - - if (masterAvatar == null) - { - m_log.Info("[PARCEL]: No master avatar found, using null."); - scene.RegionInfo.MasterAvatarAssignedUUID = UUID.Zero; - } - else - { - m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [" + masterAvatar.ID.ToString() + "]", - scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName); - scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID; - } - - return scene; - } } }