diff options
Diffstat (limited to 'OpenSim/Services/HypergridService/GatekeeperService.cs')
-rw-r--r-- | OpenSim/Services/HypergridService/GatekeeperService.cs | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index 55d9ce1..169cfa3 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | ||
30 | using System.Reflection; | 31 | using System.Reflection; |
31 | 32 | ||
32 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
@@ -51,6 +52,7 @@ namespace OpenSim.Services.HypergridService | |||
51 | IPresenceService m_PresenceService; | 52 | IPresenceService m_PresenceService; |
52 | IAuthenticationService m_AuthenticationService; | 53 | IAuthenticationService m_AuthenticationService; |
53 | IUserAccountService m_UserAccountService; | 54 | IUserAccountService m_UserAccountService; |
55 | IHomeUsersSecurityService m_HomeUsersSecurityService; | ||
54 | ISimulationService m_SimulationService; | 56 | ISimulationService m_SimulationService; |
55 | 57 | ||
56 | string m_AuthDll; | 58 | string m_AuthDll; |
@@ -66,14 +68,15 @@ namespace OpenSim.Services.HypergridService | |||
66 | throw new Exception(String.Format("No section GatekeeperService in config file")); | 68 | throw new Exception(String.Format("No section GatekeeperService in config file")); |
67 | 69 | ||
68 | string accountService = serverConfig.GetString("UserAccountService", String.Empty); | 70 | string accountService = serverConfig.GetString("UserAccountService", String.Empty); |
71 | string homeUsersSecurityService = serverConfig.GetString("HomeUsersSecurityService", string.Empty); | ||
69 | string gridService = serverConfig.GetString("GridService", String.Empty); | 72 | string gridService = serverConfig.GetString("GridService", String.Empty); |
70 | string presenceService = serverConfig.GetString("PresenceService", String.Empty); | 73 | string presenceService = serverConfig.GetString("PresenceService", String.Empty); |
71 | string simulationService = serverConfig.GetString("SimulationService", String.Empty); | 74 | string simulationService = serverConfig.GetString("SimulationService", String.Empty); |
72 | 75 | ||
73 | m_AuthDll = serverConfig.GetString("AuthenticationService", String.Empty); | 76 | m_AuthDll = serverConfig.GetString("AuthenticationService", String.Empty); |
74 | 77 | ||
75 | if (accountService == string.Empty || gridService == string.Empty || | 78 | // These 3 are mandatory, the others aren't |
76 | presenceService == string.Empty || m_AuthDll == string.Empty) | 79 | if (gridService == string.Empty || presenceService == string.Empty || m_AuthDll == string.Empty) |
77 | throw new Exception("Incomplete specifications, Gatekeeper Service cannot function."); | 80 | throw new Exception("Incomplete specifications, Gatekeeper Service cannot function."); |
78 | 81 | ||
79 | string scope = serverConfig.GetString("ScopeID", UUID.Zero.ToString()); | 82 | string scope = serverConfig.GetString("ScopeID", UUID.Zero.ToString()); |
@@ -82,16 +85,20 @@ namespace OpenSim.Services.HypergridService | |||
82 | m_AllowTeleportsToAnyRegion = serverConfig.GetBoolean("AllowTeleportsToAnyRegion", true); | 85 | m_AllowTeleportsToAnyRegion = serverConfig.GetBoolean("AllowTeleportsToAnyRegion", true); |
83 | 86 | ||
84 | Object[] args = new Object[] { config }; | 87 | Object[] args = new Object[] { config }; |
85 | m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(accountService, args); | ||
86 | m_GridService = ServerUtils.LoadPlugin<IGridService>(gridService, args); | 88 | m_GridService = ServerUtils.LoadPlugin<IGridService>(gridService, args); |
87 | m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(presenceService, args); | 89 | m_PresenceService = ServerUtils.LoadPlugin<IPresenceService>(presenceService, args); |
90 | |||
91 | if (accountService != string.Empty) | ||
92 | m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(accountService, args); | ||
93 | if (homeUsersSecurityService != string.Empty) | ||
94 | m_HomeUsersSecurityService = ServerUtils.LoadPlugin<IHomeUsersSecurityService>(homeUsersSecurityService, args); | ||
95 | |||
88 | if (simService != null) | 96 | if (simService != null) |
89 | m_SimulationService = simService; | 97 | m_SimulationService = simService; |
90 | else if (simulationService != string.Empty) | 98 | else if (simulationService != string.Empty) |
91 | m_SimulationService = ServerUtils.LoadPlugin<ISimulationService>(simulationService, args); | 99 | m_SimulationService = ServerUtils.LoadPlugin<ISimulationService>(simulationService, args); |
92 | 100 | ||
93 | if (m_UserAccountService == null || m_GridService == null || | 101 | if (m_GridService == null || m_PresenceService == null || m_SimulationService == null) |
94 | m_PresenceService == null || m_SimulationService == null) | ||
95 | throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); | 102 | throw new Exception("Unable to load a required plugin, Gatekeeper Service cannot function."); |
96 | 103 | ||
97 | m_log.Debug("[GATEKEEPER SERVICE]: Starting..."); | 104 | m_log.Debug("[GATEKEEPER SERVICE]: Starting..."); |
@@ -183,17 +190,31 @@ namespace OpenSim.Services.HypergridService | |||
183 | } | 190 | } |
184 | m_log.DebugFormat("[GATEKEEPER SERVICE]: Identity verified for {0} {1} @ {2}", aCircuit.firstname, aCircuit.lastname, authURL); | 191 | m_log.DebugFormat("[GATEKEEPER SERVICE]: Identity verified for {0} {1} @ {2}", aCircuit.firstname, aCircuit.lastname, authURL); |
185 | 192 | ||
186 | // Check to see if we have a local user with that UUID | 193 | //if (m_UserAccountService != null && m_HomeUsersSecurityService != null) |
187 | UserAccount account = m_UserAccountService.GetUserAccount(m_ScopeID, aCircuit.AgentID); | 194 | //{ |
188 | if (account != null) | 195 | // // Check to see if we have a local user with that UUID |
189 | { | 196 | // UserAccount account = m_UserAccountService.GetUserAccount(m_ScopeID, aCircuit.AgentID); |
190 | // No, sorry; go away | 197 | |
191 | reason = "User identifier not allowed on this grid"; | 198 | // // See if that user went out of this home grid |
192 | m_log.InfoFormat("[GATEKEEPER SERVICE]: Foreign agent {0} {1} has UUID of local user {3}. Refusing service.", | 199 | // IPEndPoint ep = m_HomeUsersSecurityService.GetEndPoint(aCircuit.AgentID); |
193 | aCircuit.firstname, aCircuit.lastname, aCircuit.AgentID); | 200 | |
194 | return false; | 201 | // if (account != null) |
195 | } | 202 | // { |
196 | m_log.DebugFormat("[GATEKEEPER SERVICE]: User ID ok"); | 203 | // if ((ep == null) || // there's no memory of this agent going out |
204 | // (ep != null && (ep.Address != aCircuit.ClientEndPoint.Address || ep.Port != aCircuit.ClientEndPoint.Port))) // fake agent | ||
205 | // { | ||
206 | // // No, sorry; go away | ||
207 | // reason = "User identifier not allowed on this grid"; | ||
208 | // m_log.InfoFormat("[GATEKEEPER SERVICE]: Foreign agent {0} {1} has UUID of local user {2}. Refusing service.", | ||
209 | // aCircuit.firstname, aCircuit.lastname, aCircuit.AgentID); | ||
210 | // return false; | ||
211 | // } | ||
212 | // else | ||
213 | // { | ||
214 | // } | ||
215 | // } | ||
216 | // m_log.DebugFormat("[GATEKEEPER SERVICE]: User ID ok"); | ||
217 | //} | ||
197 | 218 | ||
198 | // May want to authorize | 219 | // May want to authorize |
199 | 220 | ||