aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/HypergridService/UserAgentService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/HypergridService/UserAgentService.cs')
-rw-r--r--OpenSim/Services/HypergridService/UserAgentService.cs38
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;