aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs')
-rw-r--r--OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs225
1 files changed, 0 insertions, 225 deletions
diff --git a/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs b/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
deleted file mode 100644
index 77caf47..0000000
--- a/OpenSim/Grid/UserServer.Modules/UserLoginAuthService.cs
+++ /dev/null
@@ -1,225 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections;
30using System.Collections.Generic;
31using System.Reflection;
32using System.Text.RegularExpressions;
33using log4net;
34using Nwc.XmlRpc;
35using OpenMetaverse;
36using OpenSim.Data;
37using OpenSim.Framework;
38using OpenSim.Framework.Communications;
39using OpenSim.Framework.Communications.Services;
40using OpenSim.Framework.Communications.Cache;
41using OpenSim.Framework.Capabilities;
42using OpenSim.Framework.Servers;
43using OpenSim.Framework.Servers.HttpServer;
44
45namespace OpenSim.Grid.UserServer.Modules
46{
47
48 /// <summary>
49 /// Hypergrid login service used in grid mode.
50 /// </summary>
51 public class UserLoginAuthService : HGLoginAuthService
52 {
53 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
54
55 public UserConfig m_config;
56 private readonly IRegionProfileRouter m_regionProfileService;
57
58 protected BaseHttpServer m_httpServer;
59
60 public UserLoginAuthService(
61 UserManagerBase userManager, IInterServiceInventoryServices inventoryService,
62 LibraryRootFolder libraryRootFolder,
63 UserConfig config, string welcomeMess, IRegionProfileRouter regionProfileService)
64 : base(userManager, welcomeMess, inventoryService, null, true, libraryRootFolder, null)
65 {
66 m_config = config;
67 m_defaultHomeX = m_config.DefaultX;
68 m_defaultHomeY = m_config.DefaultY;
69 m_interInventoryService = inventoryService;
70 m_regionProfileService = regionProfileService;
71
72 NetworkServersInfo serversinfo = new NetworkServersInfo(1000, 1000);
73 serversinfo.GridRecvKey = m_config.GridRecvKey;
74 serversinfo.GridSendKey = m_config.GridSendKey;
75 serversinfo.GridURL = m_config.GridServerURL.ToString();
76 serversinfo.InventoryURL = m_config.InventoryUrl.ToString();
77 serversinfo.UserURL = m_config.AuthUrl.ToString();
78 SetServersInfo(serversinfo);
79 }
80
81 public void RegisterHandlers(BaseHttpServer httpServer)
82 {
83 m_httpServer = httpServer;
84
85 httpServer.AddXmlRPCHandler("hg_login", XmlRpcLoginMethod);
86 httpServer.AddXmlRPCHandler("hg_new_auth_key", XmlRpcGenerateKeyMethod);
87 httpServer.AddXmlRPCHandler("hg_verify_auth_key", XmlRpcVerifyKeyMethod);
88 }
89
90
91 public override void LogOffUser(UserProfileData theUser, string message)
92 {
93 RegionProfileData SimInfo;
94 try
95 {
96 SimInfo = m_regionProfileService.RequestSimProfileData(
97 theUser.CurrentAgent.Handle, m_config.GridServerURL,
98 m_config.GridSendKey, m_config.GridRecvKey);
99
100 if (SimInfo == null)
101 {
102 m_log.Error("[GRID]: Region user was in isn't currently logged in");
103 return;
104 }
105 }
106 catch (Exception)
107 {
108 m_log.Error("[GRID]: Unable to look up region to log user off");
109 return;
110 }
111
112 // Prepare notification
113 Hashtable SimParams = new Hashtable();
114 SimParams["agent_id"] = theUser.ID.ToString();
115 SimParams["region_secret"] = theUser.CurrentAgent.SecureSessionID.ToString();
116 SimParams["region_secret2"] = SimInfo.regionSecret;
117 //m_log.Info(SimInfo.regionSecret);
118 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
119 SimParams["message"] = message;
120 ArrayList SendParams = new ArrayList();
121 SendParams.Add(SimParams);
122
123 m_log.InfoFormat(
124 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
125 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
126 theUser.FirstName + " " + theUser.SurName);
127
128 try
129 {
130 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
131 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
132
133 if (GridResp.IsFault)
134 {
135 m_log.ErrorFormat(
136 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
137 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
138 }
139 }
140 catch (Exception)
141 {
142 m_log.Error("[LOGIN]: Error telling region to logout user!");
143 }
144
145 // Prepare notification
146 SimParams = new Hashtable();
147 SimParams["agent_id"] = theUser.ID.ToString();
148 SimParams["region_secret"] = SimInfo.regionSecret;
149 //m_log.Info(SimInfo.regionSecret);
150 SimParams["regionhandle"] = theUser.CurrentAgent.Handle.ToString();
151 SimParams["message"] = message;
152 SendParams = new ArrayList();
153 SendParams.Add(SimParams);
154
155 m_log.InfoFormat(
156 "[ASSUMED CRASH]: Telling region {0} @ {1},{2} ({3}) that their agent is dead: {4}",
157 SimInfo.regionName, SimInfo.regionLocX, SimInfo.regionLocY, SimInfo.httpServerURI,
158 theUser.FirstName + " " + theUser.SurName);
159
160 try
161 {
162 XmlRpcRequest GridReq = new XmlRpcRequest("logoff_user", SendParams);
163 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
164
165 if (GridResp.IsFault)
166 {
167 m_log.ErrorFormat(
168 "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}, This is likely an old region revision.",
169 SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
170 }
171 }
172 catch (Exception)
173 {
174 m_log.Error("[LOGIN]: Error telling region to logout user!");
175 }
176 //base.LogOffUser(theUser);
177 }
178
179 protected override RegionInfo RequestClosestRegion(string region)
180 {
181 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(region,
182 m_config.GridServerURL, m_config.GridSendKey, m_config.GridRecvKey);
183
184 if (profileData != null)
185 {
186 return profileData.ToRegionInfo();
187 }
188 else
189 {
190 return null;
191 }
192 }
193
194 protected override RegionInfo GetRegionInfo(ulong homeRegionHandle)
195 {
196 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionHandle,
197 m_config.GridServerURL, m_config.GridSendKey,
198 m_config.GridRecvKey);
199 if (profileData != null)
200 {
201 return profileData.ToRegionInfo();
202 }
203 else
204 {
205 return null;
206 }
207 }
208
209 protected override RegionInfo GetRegionInfo(UUID homeRegionId)
210 {
211 RegionProfileData profileData = m_regionProfileService.RequestSimProfileData(homeRegionId,
212 m_config.GridServerURL, m_config.GridSendKey,
213 m_config.GridRecvKey);
214 if (profileData != null)
215 {
216 return profileData.ToRegionInfo();
217 }
218 else
219 {
220 return null;
221 }
222 }
223
224 }
225}