diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 33 |
2 files changed, 37 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs index 73c68f1..e8738c4 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | |||
@@ -52,4 +52,9 @@ namespace OpenSim.Region.Framework.Interfaces | |||
52 | 52 | ||
53 | void Cross(SceneObjectGroup sog, Vector3 position, bool silent); | 53 | void Cross(SceneObjectGroup sog, Vector3 position, bool silent); |
54 | } | 54 | } |
55 | |||
56 | public interface IUserAgentVerificationModule | ||
57 | { | ||
58 | bool VerifyClient(AgentCircuitData aCircuit, string token); | ||
59 | } | ||
55 | } | 60 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3cfb236..f800d5f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2416,6 +2416,37 @@ namespace OpenSim.Region.Framework.Scenes | |||
2416 | { | 2416 | { |
2417 | AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode); | 2417 | AgentCircuitData aCircuit = m_authenticateHandler.GetAgentCircuitData(client.CircuitCode); |
2418 | 2418 | ||
2419 | // Do the verification here | ||
2420 | System.Net.EndPoint ep = client.GetClientEP(); | ||
2421 | if (aCircuit != null) | ||
2422 | { | ||
2423 | if ((aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0) | ||
2424 | { | ||
2425 | m_log.DebugFormat("[Scene]: Incoming client {0} {1} in region {2} via Login", aCircuit.firstname, aCircuit.lastname, RegionInfo.RegionName); | ||
2426 | IUserAgentVerificationModule userVerification = RequestModuleInterface<IUserAgentVerificationModule>(); | ||
2427 | if (userVerification != null) | ||
2428 | { | ||
2429 | if (!userVerification.VerifyClient(aCircuit, ep.ToString())) | ||
2430 | { | ||
2431 | // uh-oh, this is fishy | ||
2432 | m_log.WarnFormat("[Scene]: Agent {0} with session {1} connecting with unidentified end point {2}. Refusing service.", | ||
2433 | client.AgentId, client.SessionId, ep.ToString()); | ||
2434 | try | ||
2435 | { | ||
2436 | client.Close(); | ||
2437 | } | ||
2438 | catch (Exception e) | ||
2439 | { | ||
2440 | m_log.DebugFormat("[Scene]: Exception while closing aborted client: {0}", e.StackTrace); | ||
2441 | } | ||
2442 | return; | ||
2443 | } | ||
2444 | else | ||
2445 | m_log.DebugFormat("[Scene]: User Client Verification for {0} {1} returned true", aCircuit.firstname, aCircuit.lastname); | ||
2446 | } | ||
2447 | } | ||
2448 | } | ||
2449 | |||
2419 | m_log.Debug("[Scene] Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); | 2450 | m_log.Debug("[Scene] Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); |
2420 | /* | 2451 | /* |
2421 | string logMsg = string.Format("[SCENE]: Adding new {0} agent for {1} in {2}", | 2452 | string logMsg = string.Format("[SCENE]: Adding new {0} agent for {1} in {2}", |
@@ -2426,7 +2457,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2426 | */ | 2457 | */ |
2427 | 2458 | ||
2428 | //CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); | 2459 | //CommsManager.UserProfileCacheService.AddNewUser(client.AgentId); |
2429 | |||
2430 | ScenePresence sp = CreateAndAddScenePresence(client); | 2460 | ScenePresence sp = CreateAndAddScenePresence(client); |
2431 | sp.Appearance = aCircuit.Appearance; | 2461 | sp.Appearance = aCircuit.Appearance; |
2432 | 2462 | ||
@@ -3243,6 +3273,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3243 | } | 3273 | } |
3244 | } | 3274 | } |
3245 | 3275 | ||
3276 | agent.teleportFlags = teleportFlags; | ||
3246 | m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); | 3277 | m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); |
3247 | 3278 | ||
3248 | return true; | 3279 | return true; |