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