From 8aae9094128069b83fbf11cb77503e29fd381b25 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Thu, 20 Dec 2007 06:31:03 +0000 Subject: * Added a configuration parameter on the Grid Server to disallow forceful banlists. * Added a way for Grid based configuration parameters to (generally used in overriding functionality) to get to the regions on Registration. --- .../Communications/Local/LocalBackEndServices.cs | 22 ++++++++++++++++++ .../Region/Communications/OGS1/OGS1GridServices.cs | 27 +++++++++++++++++++++- OpenSim/Region/Environment/Scenes/Scene.cs | 25 ++++++++++++++++++-- .../Scenes/SceneCommunicationService.cs | 9 ++++++++ 4 files changed, 80 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs index f57de1c..f6137f7 100644 --- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs +++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs @@ -43,6 +43,8 @@ namespace OpenSim.Region.Communications.Local private Dictionary m_remoteRegionInfoCache = new Dictionary(); + private Dictionary m_queuedGridSettings = new Dictionary(); + public string _gdebugRegionName = ""; public string gdebugRegionName @@ -218,6 +220,26 @@ namespace OpenSim.Region.Communications.Local return false; } + // This function Is only here to keep this class in line with the Grid Interface. + // It never gets called. + public virtual Dictionary GetGridSettings() + { + Dictionary returnGridSettings = new Dictionary(); + lock (m_queuedGridSettings) + { + returnGridSettings = m_queuedGridSettings; + m_queuedGridSettings.Clear(); + } + + return returnGridSettings; + } + + public virtual void SetForcefulBanlistsDisallowed(ulong regionHandle) + { + m_queuedGridSettings.Add("allow_forceful_banlines", "FALSE"); + + } + public bool TriggerRegionUp(RegionInfo region, ulong regionhandle) { if (m_regionListeners.ContainsKey(regionhandle)) diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index 060fe28..7adac58 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs @@ -50,6 +50,7 @@ namespace OpenSim.Region.Communications.OGS1 private LocalBackEndServices m_localBackend = new LocalBackEndServices(); private Dictionary m_remoteRegionInfoCache = new Dictionary(); private List m_knownRegions = new List(); + private Dictionary m_queuedGridSettings = new Dictionary(); public BaseHttpServer httpListener; public NetworkServersInfo serversInfo; @@ -134,7 +135,15 @@ namespace OpenSim.Region.Communications.OGS1 else { m_knownRegions = RequestNeighbours(regionInfo.RegionLocX, regionInfo.RegionLocY); - + if (GridRespData.ContainsKey("allow_forceful_banlines")) + { + + if ((string)GridRespData["allow_forceful_banlines"] != "TRUE") + { + //m_localBackend.SetForcefulBanlistsDisallowed(regionInfo.RegionHandle); + m_queuedGridSettings.Add("allow_forceful_banlines", "FALSE"); + } + } } return m_localBackend.RegisterRegion(regionInfo); @@ -144,7 +153,23 @@ namespace OpenSim.Region.Communications.OGS1 { return false; } + public virtual Dictionary GetGridSettings() + { + Dictionary returnGridSettings = new Dictionary(); + lock (m_queuedGridSettings) + { + foreach (string Dictkey in m_queuedGridSettings.Keys) + { + returnGridSettings.Add(Dictkey, m_queuedGridSettings[Dictkey]); + + } + + m_queuedGridSettings.Clear(); + } + + return returnGridSettings; + } /// /// /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 01d6c5a..6d2d31f 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -818,6 +818,12 @@ namespace OpenSim.Region.Environment.Scenes // These two 'commands' *must be* next to each other or sim rebooting fails. m_sceneGridService.RegisterRegion(RegionInfo); m_sceneGridService.InformNeighborsThatRegionisUp(RegionInfo); + Dictionary dGridSettings = m_sceneGridService.GetGridSettings(); + if (dGridSettings.ContainsKey("allow_forceful_banlines")) + { + if (dGridSettings["allow_forceful_banlines"] != "TRUE") + MainLog.Instance.Verbose("GRID","Grid is disabling forceful parcel banlists"); + } } /// @@ -1295,6 +1301,7 @@ namespace OpenSim.Region.Environment.Scenes m_sceneGridService.OnCloseAgentConnection += CloseConnection; m_sceneGridService.OnRegionUp += OtherRegionUp; m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; + m_sceneGridService.KillObject = SendKillObject; } @@ -1303,15 +1310,29 @@ namespace OpenSim.Region.Environment.Scenes /// /// public void UnRegisterReginWithComms() - { + { + m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; m_sceneGridService.OnRegionUp -= OtherRegionUp; m_sceneGridService.OnExpectUser -= NewUserConnection; m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; m_sceneGridService.OnCloseAgentConnection -= CloseConnection; - + m_sceneGridService.Close(); } + public void NewIncomingGridSetting(ulong regionHandle, string key, string gvalue) + { + if (key == "allow_forceful_banlines") + { + if (gvalue == "FALSE") + { + MainLog.Instance.Verbose("INTERGRID", "Grid is disallowing forcefull banlines"); + //Ming, Do stuff here + } + } + + + } /// /// diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index c72e344..b184af2 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs @@ -52,6 +52,7 @@ namespace OpenSim.Region.Environment.Scenes public event PrimCrossing OnPrimCrossingIntoRegion; public event RegionUp OnRegionUp; public event ChildAgentUpdate OnChildAgentUpdate; + public KillObjectDelegate KillObject; public string _debugRegionName = ""; @@ -101,6 +102,7 @@ namespace OpenSim.Region.Environment.Scenes { if (regionCommsHost != null) { + regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate; regionCommsHost.OnRegionUp -= newRegionUp; regionCommsHost.OnExpectUser -= NewUserConnection; @@ -168,6 +170,7 @@ namespace OpenSim.Region.Environment.Scenes OnCloseAgentConnection(regionHandle, agentID); } } + #endregion #region Inform Client of Neighbours @@ -466,5 +469,11 @@ namespace OpenSim.Region.Environment.Scenes presence.RemoveNeighbourRegion(regionHandle); } } + + public Dictionary GetGridSettings() + { + return m_commsProvider.GridService.GetGridSettings(); + } + } } -- cgit v1.1