diff options
Diffstat (limited to 'OpenSim/Services/HypergridService/UserAgentService.cs')
-rw-r--r-- | OpenSim/Services/HypergridService/UserAgentService.cs | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/OpenSim/Services/HypergridService/UserAgentService.cs b/OpenSim/Services/HypergridService/UserAgentService.cs index 2f1fed4..181d7f2 100644 --- a/OpenSim/Services/HypergridService/UserAgentService.cs +++ b/OpenSim/Services/HypergridService/UserAgentService.cs | |||
@@ -62,11 +62,18 @@ namespace OpenSim.Services.HypergridService | |||
62 | protected static IGridUserService m_GridUserService; | 62 | protected static IGridUserService m_GridUserService; |
63 | protected static IGridService m_GridService; | 63 | protected static IGridService m_GridService; |
64 | protected static GatekeeperServiceConnector m_GatekeeperConnector; | 64 | protected static GatekeeperServiceConnector m_GatekeeperConnector; |
65 | protected static IGatekeeperService m_GatekeeperService; | ||
66 | |||
67 | protected static string m_GridName; | ||
68 | |||
69 | protected static bool m_BypassClientVerification; | ||
65 | 70 | ||
66 | public UserAgentService(IConfigSource config) | 71 | public UserAgentService(IConfigSource config) |
67 | { | 72 | { |
68 | if (!m_Initialized) | 73 | if (!m_Initialized) |
69 | { | 74 | { |
75 | m_Initialized = true; | ||
76 | |||
70 | m_log.DebugFormat("[HOME USERS SECURITY]: Starting..."); | 77 | m_log.DebugFormat("[HOME USERS SECURITY]: Starting..."); |
71 | 78 | ||
72 | IConfig serverConfig = config.Configs["UserAgentService"]; | 79 | IConfig serverConfig = config.Configs["UserAgentService"]; |
@@ -75,16 +82,25 @@ namespace OpenSim.Services.HypergridService | |||
75 | 82 | ||
76 | string gridService = serverConfig.GetString("GridService", String.Empty); | 83 | string gridService = serverConfig.GetString("GridService", String.Empty); |
77 | string gridUserService = serverConfig.GetString("GridUserService", String.Empty); | 84 | string gridUserService = serverConfig.GetString("GridUserService", String.Empty); |
85 | string gatekeeperService = serverConfig.GetString("GatekeeperService", String.Empty); | ||
86 | |||
87 | m_BypassClientVerification = serverConfig.GetBoolean("BypassClientVerification", false); | ||
78 | 88 | ||
79 | if (gridService == string.Empty || gridUserService == string.Empty) | 89 | if (gridService == string.Empty || gridUserService == string.Empty || gatekeeperService == string.Empty) |
80 | throw new Exception(String.Format("Incomplete specifications, UserAgent Service cannot function.")); | 90 | throw new Exception(String.Format("Incomplete specifications, UserAgent Service cannot function.")); |
81 | 91 | ||
82 | Object[] args = new Object[] { config }; | 92 | Object[] args = new Object[] { config }; |
83 | m_GridService = ServerUtils.LoadPlugin<IGridService>(gridService, args); | 93 | m_GridService = ServerUtils.LoadPlugin<IGridService>(gridService, args); |
84 | m_GridUserService = ServerUtils.LoadPlugin<IGridUserService>(gridUserService, args); | 94 | m_GridUserService = ServerUtils.LoadPlugin<IGridUserService>(gridUserService, args); |
85 | m_GatekeeperConnector = new GatekeeperServiceConnector(); | 95 | m_GatekeeperConnector = new GatekeeperServiceConnector(); |
96 | m_GatekeeperService = ServerUtils.LoadPlugin<IGatekeeperService>(gatekeeperService, args); | ||
86 | 97 | ||
87 | m_Initialized = true; | 98 | m_GridName = serverConfig.GetString("ExternalName", string.Empty); |
99 | if (m_GridName == string.Empty) | ||
100 | { | ||
101 | serverConfig = config.Configs["GatekeeperService"]; | ||
102 | m_GridName = serverConfig.GetString("ExternalName", string.Empty); | ||
103 | } | ||
88 | } | 104 | } |
89 | } | 105 | } |
90 | 106 | ||
@@ -131,7 +147,13 @@ namespace OpenSim.Services.HypergridService | |||
131 | agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random(); | 147 | agentCircuit.ServiceSessionID = "http://" + region.ExternalHostName + ":" + region.HttpPort + ";" + UUID.Random(); |
132 | TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region); | 148 | TravelingAgentInfo old = UpdateTravelInfo(agentCircuit, region); |
133 | 149 | ||
134 | bool success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); | 150 | //bool success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); |
151 | bool success = false; | ||
152 | string gridName = "http://" + gatekeeper.ExternalHostName + ":" + gatekeeper.HttpPort; | ||
153 | if (m_GridName == gridName) | ||
154 | success = m_GatekeeperService.LoginAgent(agentCircuit, finalDestination, out reason); | ||
155 | else | ||
156 | success = m_GatekeeperConnector.CreateAgent(region, agentCircuit, (uint)Constants.TeleportFlags.ViaLogin, out reason); | ||
135 | 157 | ||
136 | if (!success) | 158 | if (!success) |
137 | { | 159 | { |
@@ -171,7 +193,7 @@ namespace OpenSim.Services.HypergridService | |||
171 | m_TravelingAgents[agentCircuit.SessionID] = travel; | 193 | m_TravelingAgents[agentCircuit.SessionID] = travel; |
172 | } | 194 | } |
173 | travel.UserID = agentCircuit.AgentID; | 195 | travel.UserID = agentCircuit.AgentID; |
174 | travel.GridExternalName = region.ExternalHostName + ":" + region.HttpPort; | 196 | travel.GridExternalName = "http://" + region.ExternalHostName + ":" + region.HttpPort; |
175 | travel.ServiceToken = agentCircuit.ServiceSessionID; | 197 | travel.ServiceToken = agentCircuit.ServiceSessionID; |
176 | if (old != null) | 198 | if (old != null) |
177 | travel.ClientToken = old.ClientToken; | 199 | travel.ClientToken = old.ClientToken; |
@@ -207,16 +229,16 @@ namespace OpenSim.Services.HypergridService | |||
207 | return false; | 229 | return false; |
208 | 230 | ||
209 | TravelingAgentInfo travel = m_TravelingAgents[sessionID]; | 231 | TravelingAgentInfo travel = m_TravelingAgents[sessionID]; |
232 | |||
210 | return travel.GridExternalName == thisGridExternalName; | 233 | return travel.GridExternalName == thisGridExternalName; |
211 | } | 234 | } |
212 | 235 | ||
213 | public bool VerifyClient(UUID sessionID, string token) | 236 | public bool VerifyClient(UUID sessionID, string token) |
214 | { | 237 | { |
215 | m_log.DebugFormat("[USER AGENT SERVICE]: Verifying Client session {0} with token {1}", sessionID, token); | 238 | if (m_BypassClientVerification) |
216 | //return true; | 239 | return true; |
217 | 240 | ||
218 | // Commenting this for now until I understand better what part of a sender's | 241 | m_log.DebugFormat("[USER AGENT SERVICE]: Verifying Client session {0} with token {1}", sessionID, token); |
219 | // info stays unchanged throughout a session | ||
220 | 242 | ||
221 | if (m_TravelingAgents.ContainsKey(sessionID)) | 243 | if (m_TravelingAgents.ContainsKey(sessionID)) |
222 | return m_TravelingAgents[sessionID].ClientToken == token; | 244 | return m_TravelingAgents[sessionID].ClientToken == token; |