aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/AgentCircuitManager.cs26
-rw-r--r--OpenSim/Framework/Capabilities/Caps.cs12
-rw-r--r--OpenSim/Framework/IScene.cs2
3 files changed, 38 insertions, 2 deletions
diff --git a/OpenSim/Framework/AgentCircuitManager.cs b/OpenSim/Framework/AgentCircuitManager.cs
index e5dbb5a..49d7822 100644
--- a/OpenSim/Framework/AgentCircuitManager.cs
+++ b/OpenSim/Framework/AgentCircuitManager.cs
@@ -36,6 +36,7 @@ namespace OpenSim.Framework
36 public class AgentCircuitManager 36 public class AgentCircuitManager
37 { 37 {
38 public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>(); 38 public Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>();
39 public Dictionary<UUID, AgentCircuitData> AgentCircuitsByUUID = new Dictionary<UUID, AgentCircuitData>();
39 40
40 public virtual AuthenticateResponse AuthenticateSession(UUID sessionID, UUID agentID, uint circuitcode) 41 public virtual AuthenticateResponse AuthenticateSession(UUID sessionID, UUID agentID, uint circuitcode)
41 { 42 {
@@ -86,10 +87,12 @@ namespace OpenSim.Framework
86 if (AgentCircuits.ContainsKey(circuitCode)) 87 if (AgentCircuits.ContainsKey(circuitCode))
87 { 88 {
88 AgentCircuits[circuitCode] = agentData; 89 AgentCircuits[circuitCode] = agentData;
90 AgentCircuitsByUUID[agentData.AgentID] = agentData;
89 } 91 }
90 else 92 else
91 { 93 {
92 AgentCircuits.Add(circuitCode, agentData); 94 AgentCircuits.Add(circuitCode, agentData);
95 AgentCircuitsByUUID.Add(agentData.AgentID, agentData);
93 } 96 }
94 } 97 }
95 } 98 }
@@ -99,10 +102,26 @@ namespace OpenSim.Framework
99 lock (AgentCircuits) 102 lock (AgentCircuits)
100 { 103 {
101 if (AgentCircuits.ContainsKey(circuitCode)) 104 if (AgentCircuits.ContainsKey(circuitCode))
105 {
106 UUID agentID = AgentCircuits[circuitCode].AgentID;
102 AgentCircuits.Remove(circuitCode); 107 AgentCircuits.Remove(circuitCode);
108 AgentCircuitsByUUID.Remove(agentID);
109 }
103 } 110 }
104 } 111 }
105 112
113 public virtual void RemoveCircuit(UUID agentID)
114 {
115 lock (AgentCircuits)
116 {
117 if (AgentCircuitsByUUID.ContainsKey(agentID))
118 {
119 uint circuitCode = AgentCircuitsByUUID[agentID].circuitcode;
120 AgentCircuits.Remove(circuitCode);
121 AgentCircuitsByUUID.Remove(agentID);
122 }
123 }
124 }
106 public AgentCircuitData GetAgentCircuitData(uint circuitCode) 125 public AgentCircuitData GetAgentCircuitData(uint circuitCode)
107 { 126 {
108 AgentCircuitData agentCircuit = null; 127 AgentCircuitData agentCircuit = null;
@@ -110,6 +129,13 @@ namespace OpenSim.Framework
110 return agentCircuit; 129 return agentCircuit;
111 } 130 }
112 131
132 public AgentCircuitData GetAgentCircuitData(UUID agentID)
133 {
134 AgentCircuitData agentCircuit = null;
135 AgentCircuitsByUUID.TryGetValue(agentID, out agentCircuit);
136 return agentCircuit;
137 }
138
113 public void UpdateAgentData(AgentCircuitData agentData) 139 public void UpdateAgentData(AgentCircuitData agentData)
114 { 140 {
115 if (AgentCircuits.ContainsKey((uint) agentData.circuitcode)) 141 if (AgentCircuits.ContainsKey((uint) agentData.circuitcode))
diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs
index b27d011..62a1e17 100644
--- a/OpenSim/Framework/Capabilities/Caps.cs
+++ b/OpenSim/Framework/Capabilities/Caps.cs
@@ -99,6 +99,7 @@ namespace OpenSim.Framework.Capabilities
99 // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. 99 // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule.
100 100
101 //private string eventQueue = "0100/"; 101 //private string eventQueue = "0100/";
102 private IScene m_Scene;
102 private IHttpServer m_httpListener; 103 private IHttpServer m_httpListener;
103 private UUID m_agentID; 104 private UUID m_agentID;
104 private IAssetService m_assetCache; 105 private IAssetService m_assetCache;
@@ -130,9 +131,10 @@ namespace OpenSim.Framework.Capabilities
130 public FetchInventoryDescendentsCAPS CAPSFetchInventoryDescendents = null; 131 public FetchInventoryDescendentsCAPS CAPSFetchInventoryDescendents = null;
131 public GetClientDelegate GetClient = null; 132 public GetClientDelegate GetClient = null;
132 133
133 public Caps(IAssetService assetCache, IHttpServer httpServer, string httpListen, uint httpPort, string capsPath, 134 public Caps(IScene scene, IAssetService assetCache, IHttpServer httpServer, string httpListen, uint httpPort, string capsPath,
134 UUID agent, bool dumpAssetsToFile, string regionName) 135 UUID agent, bool dumpAssetsToFile, string regionName)
135 { 136 {
137 m_Scene = scene;
136 m_assetCache = assetCache; 138 m_assetCache = assetCache;
137 m_capsObjectPath = capsPath; 139 m_capsObjectPath = capsPath;
138 m_httpListener = httpServer; 140 m_httpListener = httpServer;
@@ -278,7 +280,13 @@ namespace OpenSim.Framework.Capabilities
278 public string CapsRequest(string request, string path, string param, 280 public string CapsRequest(string request, string path, string param,
279 OSHttpRequest httpRequest, OSHttpResponse httpResponse) 281 OSHttpRequest httpRequest, OSHttpResponse httpResponse)
280 { 282 {
281 //m_log.Debug("[CAPS]: Seed Caps Request in region: " + m_regionName); 283 m_log.Debug("[CAPS]: Seed Caps Request in region: " + m_regionName);
284
285 if (!m_Scene.CheckClient(m_agentID, httpRequest.RemoteIPEndPoint))
286 {
287 m_log.DebugFormat("[CAPS]: Unauthorized CAPS client");
288 return string.Empty;
289 }
282 290
283 string result = LLSDHelpers.SerialiseLLSDReply(m_capsHandlers.CapsDetails); 291 string result = LLSDHelpers.SerialiseLLSDReply(m_capsHandlers.CapsDetails);
284 292
diff --git a/OpenSim/Framework/IScene.cs b/OpenSim/Framework/IScene.cs
index 19ab409..6798b7b 100644
--- a/OpenSim/Framework/IScene.cs
+++ b/OpenSim/Framework/IScene.cs
@@ -102,5 +102,7 @@ namespace OpenSim.Framework
102 void AddCommand(object module, string command, string shorthelp, string longhelp, CommandDelegate callback); 102 void AddCommand(object module, string command, string shorthelp, string longhelp, CommandDelegate callback);
103 103
104 ISceneObject DeserializeObject(string representation); 104 ISceneObject DeserializeObject(string representation);
105
106 bool CheckClient(UUID agentID, System.Net.IPEndPoint ep);
105 } 107 }
106} 108}