From 3d536944153d4931cf891d6a788a47484f3e6f4d Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Mon, 18 Jan 2010 16:34:23 -0800
Subject: Go Home works. With security!!
---
.../HypergridService/HomeUsersSecurityService.cs | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 OpenSim/Services/HypergridService/HomeUsersSecurityService.cs
(limited to 'OpenSim/Services/HypergridService/HomeUsersSecurityService.cs')
diff --git a/OpenSim/Services/HypergridService/HomeUsersSecurityService.cs b/OpenSim/Services/HypergridService/HomeUsersSecurityService.cs
new file mode 100644
index 0000000..a7adfc1
--- /dev/null
+++ b/OpenSim/Services/HypergridService/HomeUsersSecurityService.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Reflection;
+
+using OpenSim.Services.Interfaces;
+
+using OpenMetaverse;
+using log4net;
+using Nini.Config;
+
+namespace OpenSim.Services.HypergridService
+{
+ ///
+ /// This service is for HG1.5 only, to make up for the fact that clients don't
+ /// keep any private information in themselves, and that their 'home service'
+ /// needs to do it for them.
+ /// Once we have better clients, this shouldn't be needed.
+ ///
+ public class HomeUsersSecurityService : IHomeUsersSecurityService
+ {
+ private static readonly ILog m_log =
+ LogManager.GetLogger(
+ MethodBase.GetCurrentMethod().DeclaringType);
+
+ //
+ // This is a persistent storage wannabe for dealing with the
+ // quirks of HG1.5. We don't really want to store this in a table.
+ // But this is the necessary information for securing clients
+ // coming home.
+ //
+ protected static Dictionary m_ClientEndPoints = new Dictionary();
+
+ public HomeUsersSecurityService(IConfigSource config)
+ {
+ m_log.DebugFormat("[HOME USERS SECURITY]: Starting...");
+ }
+
+ public void SetEndPoint(UUID sessionID, IPEndPoint ep)
+ {
+ m_log.DebugFormat("[HOME USERS SECURITY]: Set EndPoint {0} for session {1}", ep.ToString(), sessionID);
+
+ lock (m_ClientEndPoints)
+ m_ClientEndPoints[sessionID] = ep;
+ }
+
+ public IPEndPoint GetEndPoint(UUID sessionID)
+ {
+ lock (m_ClientEndPoints)
+ if (m_ClientEndPoints.ContainsKey(sessionID))
+ {
+ m_log.DebugFormat("[HOME USERS SECURITY]: Get EndPoint {0} for session {1}", m_ClientEndPoints[sessionID].ToString(), sessionID);
+ return m_ClientEndPoints[sessionID];
+ }
+
+ return null;
+ }
+
+ public void RemoveEndPoint(UUID sessionID)
+ {
+ m_log.DebugFormat("[HOME USERS SECURITY]: Remove EndPoint for session {0}", sessionID);
+ lock (m_ClientEndPoints)
+ if (m_ClientEndPoints.ContainsKey(sessionID))
+ m_ClientEndPoints.Remove(sessionID);
+ }
+ }
+}
--
cgit v1.1