aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications
diff options
context:
space:
mode:
authorMelanie2010-03-03 02:07:03 +0000
committerMelanie2010-03-03 02:07:03 +0000
commit028a87fe37002e7a0611f66babf1deee46c83804 (patch)
tree387aec499fd60c2012bed8148e6a2ddc847c3d95 /OpenSim/Region/Communications
parentRevert "test" (diff)
parentFixes Region.Framework tests. Although these tests don't fail, they need to b... (diff)
downloadopensim-SC-028a87fe37002e7a0611f66babf1deee46c83804.zip
opensim-SC-028a87fe37002e7a0611f66babf1deee46c83804.tar.gz
opensim-SC-028a87fe37002e7a0611f66babf1deee46c83804.tar.bz2
opensim-SC-028a87fe37002e7a0611f66babf1deee46c83804.tar.xz
Merge branch 'master' into careminster-presence-refactor
This brings careminster on the level of master. To be tested
Diffstat (limited to 'OpenSim/Region/Communications')
-rw-r--r--OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs60
-rw-r--r--OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs68
-rw-r--r--OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs72
-rw-r--r--OpenSim/Region/Communications/Hypergrid/HGUserServices.cs337
-rw-r--r--OpenSim/Region/Communications/Local/CommunicationsLocal.cs59
-rw-r--r--OpenSim/Region/Communications/Local/LocalUserServices.cs100
-rw-r--r--OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs65
-rw-r--r--OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs54
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs774
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1UserServices.cs176
-rw-r--r--OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs65
11 files changed, 0 insertions, 1830 deletions
diff --git a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs
deleted file mode 100644
index e80f6ab..0000000
--- a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsGridMode.cs
+++ /dev/null
@@ -1,60 +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.Reflection;
29using log4net;
30using OpenSim.Data;
31using OpenSim.Framework;
32using OpenSim.Framework.Communications;
33using OpenSim.Framework.Communications.Cache;
34using OpenSim.Framework.Servers;
35using OpenSim.Framework.Servers.HttpServer;
36using OpenSim.Region.Communications.OGS1;
37using OpenSim.Region.Framework.Scenes;
38
39namespace OpenSim.Region.Communications.Hypergrid
40{
41 public class HGCommunicationsGridMode : CommunicationsManager // CommunicationsOGS1
42 {
43
44 public HGCommunicationsGridMode(
45 NetworkServersInfo serversInfo,
46 SceneManager sman, LibraryRootFolder libraryRootFolder)
47 : base(serversInfo, libraryRootFolder)
48 {
49
50 HGUserServices userServices = new HGUserServices(this);
51 // This plugin arrangement could eventually be configurable rather than hardcoded here.
52 userServices.AddPlugin(new TemporaryUserProfilePlugin());
53 userServices.AddPlugin(new HGUserDataPlugin(this, userServices));
54
55 m_userService = userServices;
56 m_messageService = userServices;
57 m_avatarService = userServices;
58 }
59 }
60}
diff --git a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs b/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs
deleted file mode 100644
index 4e3f5a1..0000000
--- a/OpenSim/Region/Communications/Hypergrid/HGCommunicationsStandalone.cs
+++ /dev/null
@@ -1,68 +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.Collections.Generic;
29using OpenSim.Data;
30using OpenSim.Framework;
31using OpenSim.Framework.Communications;
32using OpenSim.Framework.Communications.Cache;
33using OpenSim.Framework.Communications.Osp;
34using OpenSim.Framework.Servers;
35using OpenSim.Framework.Servers.HttpServer;
36using OpenSim.Region.Communications.Local;
37using OpenSim.Region.Communications.OGS1;
38
39namespace OpenSim.Region.Communications.Hypergrid
40{
41 public class HGCommunicationsStandalone : CommunicationsManager
42 {
43 public HGCommunicationsStandalone(
44 ConfigSettings configSettings,
45 NetworkServersInfo serversInfo,
46 BaseHttpServer httpServer,
47 LibraryRootFolder libraryRootFolder,
48 bool dumpAssetsToFile)
49 : base(serversInfo, libraryRootFolder)
50 {
51 LocalUserServices localUserService =
52 new LocalUserServices(
53 serversInfo.DefaultHomeLocX, serversInfo.DefaultHomeLocY, this);
54 localUserService.AddPlugin(configSettings.StandaloneUserPlugin, configSettings.StandaloneUserSource);
55
56 HGUserServices hgUserService = new HGUserServices(this, localUserService);
57 // This plugin arrangement could eventually be configurable rather than hardcoded here.
58 hgUserService.AddPlugin(new TemporaryUserProfilePlugin());
59 hgUserService.AddPlugin(new HGUserDataPlugin(this, hgUserService));
60
61 m_userService = hgUserService;
62 m_userAdminService = hgUserService;
63 m_avatarService = hgUserService;
64 m_messageService = hgUserService;
65
66 }
67 }
68}
diff --git a/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs b/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs
deleted file mode 100644
index 4b8fc26..0000000
--- a/OpenSim/Region/Communications/Hypergrid/HGUserDataPlugin.cs
+++ /dev/null
@@ -1,72 +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.Net;
32using System.Reflection;
33using System.Text.RegularExpressions;
34using System.Xml.Serialization;
35using log4net;
36using Nwc.XmlRpc;
37using OpenMetaverse;
38using OpenSim.Data;
39using OpenSim.Framework;
40using OpenSim.Framework.Communications;
41using OpenSim.Framework.Communications.Clients;
42using OpenSim.Region.Communications.OGS1;
43
44namespace OpenSim.Region.Communications.Hypergrid
45{
46 public class HGUserDataPlugin : OGS1UserDataPlugin
47 {
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49
50 HGUserServices m_UserServices;
51
52 public HGUserDataPlugin()
53 {
54 }
55
56 public HGUserDataPlugin(CommunicationsManager commsManager, HGUserServices userServices)
57 {
58 m_log.DebugFormat("[HG USER SERVICES]: {0} initialized", Name);
59 m_commsManager = commsManager;
60 m_UserServices = userServices;
61 }
62
63 protected override string GetUserServerURL(UUID userID)
64 {
65 string url = string.Empty;
66 if (m_UserServices.IsForeignUser(userID, out url))
67 return url;
68 return m_commsManager.NetworkServersInfo.UserURL;
69 }
70
71 }
72}
diff --git a/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs b/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs
deleted file mode 100644
index 09d8285..0000000
--- a/OpenSim/Region/Communications/Hypergrid/HGUserServices.cs
+++ /dev/null
@@ -1,337 +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 OpenMetaverse;
32using OpenSim.Framework;
33using OpenSim.Framework.Communications;
34using OpenSim.Framework.Communications.Cache;
35using OpenSim.Framework.Communications.Clients;
36using OpenSim.Region.Communications.OGS1;
37using OpenSim.Region.Communications.Local;
38using OpenSim.Services.Interfaces;
39
40namespace OpenSim.Region.Communications.Hypergrid
41{
42 /// <summary>
43 /// For the time being, this class is just an identity wrapper around OGS1UserServices,
44 /// so it always fails for foreign users.
45 /// Later it needs to talk with the foreign users' user servers.
46 /// </summary>
47 public class HGUserServices : OGS1UserServices
48 {
49 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
50
51 //private OGS1UserServices m_remoteUserServices;
52 private LocalUserServices m_localUserServices;
53
54 // Constructor called when running in grid mode
55 public HGUserServices(CommunicationsManager commsManager)
56 : base(commsManager)
57 {
58 }
59
60 // Constructor called when running in standalone
61 public HGUserServices(CommunicationsManager commsManager, LocalUserServices local)
62 : base(commsManager)
63 {
64 m_localUserServices = local;
65 }
66
67 public override void SetInventoryService(IInventoryService invService)
68 {
69 base.SetInventoryService(invService);
70 if (m_localUserServices != null)
71 m_localUserServices.SetInventoryService(invService);
72 }
73
74 public override UUID AddUser(
75 string firstName, string lastName, string password, string email, uint regX, uint regY, UUID uuid)
76 {
77 // Only valid to create users locally
78 if (m_localUserServices != null)
79 return m_localUserServices.AddUser(firstName, lastName, password, email, regX, regY, uuid);
80
81 return UUID.Zero;
82 }
83
84 public override bool AddUserAgent(UserAgentData agentdata)
85 {
86 if (m_localUserServices != null)
87 return m_localUserServices.AddUserAgent(agentdata);
88
89 return base.AddUserAgent(agentdata);
90 }
91
92 public override UserAgentData GetAgentByUUID(UUID userId)
93 {
94 string url = string.Empty;
95 if ((m_localUserServices != null) && !IsForeignUser(userId, out url))
96 return m_localUserServices.GetAgentByUUID(userId);
97
98 return base.GetAgentByUUID(userId);
99 }
100
101 public override void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, Vector3 position, Vector3 lookat)
102 {
103 string url = string.Empty;
104 if ((m_localUserServices != null) && !IsForeignUser(userid, out url))
105 m_localUserServices.LogOffUser(userid, regionid, regionhandle, position, lookat);
106 else
107 base.LogOffUser(userid, regionid, regionhandle, position, lookat);
108 }
109
110 public override UserProfileData GetUserProfile(string firstName, string lastName)
111 {
112 if (m_localUserServices != null)
113 return m_localUserServices.GetUserProfile(firstName, lastName);
114
115 return base.GetUserProfile(firstName, lastName);
116 }
117
118 public override List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(UUID queryID, string query)
119 {
120 if (m_localUserServices != null)
121 return m_localUserServices.GenerateAgentPickerRequestResponse(queryID, query);
122
123 return base.GenerateAgentPickerRequestResponse(queryID, query);
124 }
125
126 /// <summary>
127 /// Get a user profile from the user server
128 /// </summary>
129 /// <param name="avatarID"></param>
130 /// <returns>null if the request fails</returns>
131 public override UserProfileData GetUserProfile(UUID avatarID)
132 {
133 //string url = string.Empty;
134 // Unfortunately we can't query for foreigners here,
135 // because we'll end up in an infinite loop...
136 //if ((m_localUserServices != null) && (!IsForeignUser(avatarID, out url)))
137 if (m_localUserServices != null)
138 return m_localUserServices.GetUserProfile(avatarID);
139
140 return base.GetUserProfile(avatarID);
141 }
142
143 public override void ClearUserAgent(UUID avatarID)
144 {
145 if (m_localUserServices != null)
146 m_localUserServices.ClearUserAgent(avatarID);
147 else
148 base.ClearUserAgent(avatarID);
149 }
150
151 /// <summary>
152 /// Retrieve the user information for the given master uuid.
153 /// </summary>
154 /// <param name="uuid"></param>
155 /// <returns></returns>
156 public override UserProfileData SetupMasterUser(string firstName, string lastName)
157 {
158 if (m_localUserServices != null)
159 return m_localUserServices.SetupMasterUser(firstName, lastName);
160
161 return base.SetupMasterUser(firstName, lastName);
162 }
163
164 /// <summary>
165 /// Retrieve the user information for the given master uuid.
166 /// </summary>
167 /// <param name="uuid"></param>
168 /// <returns></returns>
169 public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
170 {
171 if (m_localUserServices != null)
172 return m_localUserServices.SetupMasterUser(firstName, lastName, password);
173
174 return base.SetupMasterUser(firstName, lastName, password);
175 }
176
177 /// <summary>
178 /// Retrieve the user information for the given master uuid.
179 /// </summary>
180 /// <param name="uuid"></param>
181 /// <returns></returns>
182 public override UserProfileData SetupMasterUser(UUID uuid)
183 {
184 if (m_localUserServices != null)
185 return m_localUserServices.SetupMasterUser(uuid);
186
187 return base.SetupMasterUser(uuid);
188 }
189
190 public override bool ResetUserPassword(string firstName, string lastName, string newPassword)
191 {
192 if (m_localUserServices != null)
193 return m_localUserServices.ResetUserPassword(firstName, lastName, newPassword);
194 else
195 return base.ResetUserPassword(firstName, lastName, newPassword);
196 }
197
198 public override bool UpdateUserProfile(UserProfileData userProfile)
199 {
200 string url = string.Empty;
201 if ((m_localUserServices != null) && (!IsForeignUser(userProfile.ID, out url)))
202 return m_localUserServices.UpdateUserProfile(userProfile);
203
204 return base.UpdateUserProfile(userProfile);
205 }
206
207 public override bool AuthenticateUserByPassword(UUID userID, string password)
208 {
209 if (m_localUserServices != null)
210 return m_localUserServices.AuthenticateUserByPassword(userID, password);
211 else
212 return base.AuthenticateUserByPassword(userID, password);
213 }
214
215 #region IUserServices Friend Methods
216
217 // NOTE: We're still not dealing with foreign user friends
218
219 /// <summary>
220 /// Adds a new friend to the database for XUser
221 /// </summary>
222 /// <param name="friendlistowner">The agent that who's friends list is being added to</param>
223 /// <param name="friend">The agent that being added to the friends list of the friends list owner</param>
224 /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param>
225 public override void AddNewUserFriend(UUID friendlistowner, UUID friend, uint perms)
226 {
227 if (m_localUserServices != null)
228 m_localUserServices.AddNewUserFriend(friendlistowner, friend, perms);
229 else
230 base.AddNewUserFriend(friendlistowner, friend, perms);
231 }
232
233 /// <summary>
234 /// Delete friend on friendlistowner's friendlist.
235 /// </summary>
236 /// <param name="friendlistowner">The agent that who's friends list is being updated</param>
237 /// <param name="friend">The Ex-friend agent</param>
238 public override void RemoveUserFriend(UUID friendlistowner, UUID friend)
239 {
240 if (m_localUserServices != null)
241 m_localUserServices.RemoveUserFriend(friendlistowner, friend);
242 else
243 base.RemoveUserFriend(friend, friend);
244 }
245
246 /// <summary>
247 /// Update permissions for friend on friendlistowner's friendlist.
248 /// </summary>
249 /// <param name="friendlistowner">The agent that who's friends list is being updated</param>
250 /// <param name="friend">The agent that is getting or loosing permissions</param>
251 /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param>
252 public override void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms)
253 {
254 if (m_localUserServices != null)
255 m_localUserServices.UpdateUserFriendPerms(friendlistowner, friend, perms);
256 else
257 base.UpdateUserFriendPerms(friendlistowner, friend, perms);
258 }
259 /// <summary>
260 /// Returns a list of FriendsListItems that describe the friends and permissions in the friend relationship for UUID friendslistowner
261 /// </summary>
262 /// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param>
263 public override List<FriendListItem> GetUserFriendList(UUID friendlistowner)
264 {
265 if (m_localUserServices != null)
266 return m_localUserServices.GetUserFriendList(friendlistowner);
267
268 return base.GetUserFriendList(friendlistowner);
269 }
270
271 #endregion
272
273 /// Appearance
274 public override AvatarAppearance GetUserAppearance(UUID user)
275 {
276 string url = string.Empty;
277 if ((m_localUserServices != null) && (!IsForeignUser(user, out url)))
278 return m_localUserServices.GetUserAppearance(user);
279 else
280 return base.GetUserAppearance(user);
281 }
282
283 public override void UpdateUserAppearance(UUID user, AvatarAppearance appearance)
284 {
285 string url = string.Empty;
286 if ((m_localUserServices != null) && (!IsForeignUser(user, out url)))
287 m_localUserServices.UpdateUserAppearance(user, appearance);
288 else
289 base.UpdateUserAppearance(user, appearance);
290 }
291
292 #region IMessagingService
293
294 public override Dictionary<UUID, FriendRegionInfo> GetFriendRegionInfos(List<UUID> uuids)
295 {
296 if (m_localUserServices != null)
297 return m_localUserServices.GetFriendRegionInfos(uuids);
298
299 return base.GetFriendRegionInfos(uuids);
300 }
301 #endregion
302
303 public override bool VerifySession(UUID userID, UUID sessionID)
304 {
305 string url = string.Empty;
306 if ((m_localUserServices != null) && (!IsForeignUser(userID, out url)))
307 return m_localUserServices.VerifySession(userID, sessionID);
308 else
309 return base.VerifySession(userID, sessionID);
310 }
311
312
313 protected override string GetUserServerURL(UUID userID)
314 {
315 string serverURL = string.Empty;
316 if (IsForeignUser(userID, out serverURL))
317 return serverURL;
318
319 return m_commsManager.NetworkServersInfo.UserURL;
320 }
321
322 public bool IsForeignUser(UUID userID, out string userServerURL)
323 {
324 userServerURL = m_commsManager.NetworkServersInfo.UserURL;
325 CachedUserInfo uinfo = m_commsManager.UserProfileCacheService.GetUserDetails(userID);
326 if (uinfo != null)
327 {
328 if (!HGNetworkServersInfo.Singleton.IsLocalUser(uinfo.UserProfile))
329 {
330 userServerURL = ((ForeignUserProfileData)(uinfo.UserProfile)).UserServerURI;
331 return true;
332 }
333 }
334 return false;
335 }
336 }
337}
diff --git a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs
deleted file mode 100644
index eaf996d..0000000
--- a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs
+++ /dev/null
@@ -1,59 +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.Collections.Generic;
29using OpenSim.Data;
30using OpenSim.Framework;
31using OpenSim.Framework.Communications;
32using OpenSim.Framework.Communications.Cache;
33using OpenSim.Framework.Communications.Osp;
34
35namespace OpenSim.Region.Communications.Local
36{
37 public class CommunicationsLocal : CommunicationsManager
38 {
39 public CommunicationsLocal(
40 ConfigSettings configSettings,
41 NetworkServersInfo serversInfo,
42 LibraryRootFolder libraryRootFolder)
43 : base(serversInfo, libraryRootFolder)
44 {
45
46 LocalUserServices lus
47 = new LocalUserServices(
48 serversInfo.DefaultHomeLocX, serversInfo.DefaultHomeLocY, this);
49 lus.AddPlugin(new TemporaryUserProfilePlugin());
50 lus.AddPlugin(configSettings.StandaloneUserPlugin, configSettings.StandaloneUserSource);
51 m_userService = lus;
52 m_userAdminService = lus;
53 m_avatarService = lus;
54 m_messageService = lus;
55
56 //LocalLoginService loginService = CreateLoginService(libraryRootFolder, inventoryService, userService, backendService);
57 }
58 }
59}
diff --git a/OpenSim/Region/Communications/Local/LocalUserServices.cs b/OpenSim/Region/Communications/Local/LocalUserServices.cs
deleted file mode 100644
index 89b55c4..0000000
--- a/OpenSim/Region/Communications/Local/LocalUserServices.cs
+++ /dev/null
@@ -1,100 +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 OpenMetaverse;
30using OpenSim.Framework;
31using OpenSim.Framework.Communications;
32using log4net;
33using System.Reflection;
34
35namespace OpenSim.Region.Communications.Local
36{
37 public class LocalUserServices : UserManagerBase
38 {
39 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
40 private readonly uint m_defaultHomeX;
41 private readonly uint m_defaultHomeY;
42
43 /// <summary>
44 /// User services used when OpenSim is running in standalone mode.
45 /// </summary>
46 /// <param name="defaultHomeLocX"></param>
47 /// <param name="defaultHomeLocY"></param>
48 /// <param name="commsManager"></param>
49 public LocalUserServices(
50 uint defaultHomeLocX, uint defaultHomeLocY, CommunicationsManager commsManager)
51 : base(commsManager)
52 {
53 m_defaultHomeX = defaultHomeLocX;
54 m_defaultHomeY = defaultHomeLocY;
55 }
56
57 public override UserProfileData SetupMasterUser(string firstName, string lastName)
58 {
59 return SetupMasterUser(firstName, lastName, String.Empty);
60 }
61
62 public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
63 {
64 UserProfileData profile = GetUserProfile(firstName, lastName);
65 if (profile != null)
66 {
67 return profile;
68 }
69
70 m_log.Debug("Unknown Master User. Sandbox Mode: Creating Account");
71 AddUser(firstName, lastName, password, "", m_defaultHomeX, m_defaultHomeY);
72 return GetUserProfile(firstName, lastName);
73 }
74
75 public override UserProfileData SetupMasterUser(UUID uuid)
76 {
77 UserProfileData data = GetUserProfile(uuid);
78 if (data == null)
79 {
80 throw new Exception("[LOCAL USER SERVICES]: Unknown master user UUID. Possible reason: UserServer is not running.");
81 }
82 return data;
83 }
84
85 public override bool AuthenticateUserByPassword(UUID userID, string password)
86 {
87 UserProfileData userProfile = GetUserProfile(userID);
88
89 if (null == userProfile)
90 return false;
91
92 string md5PasswordHash = Util.Md5Hash(Util.Md5Hash(password) + ":" + userProfile.PasswordSalt);
93
94 if (md5PasswordHash == userProfile.PasswordHash)
95 return true;
96 else
97 return false;
98 }
99 }
100} \ No newline at end of file
diff --git a/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs b/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs
deleted file mode 100644
index c631bf7..0000000
--- a/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,65 +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.Reflection;
29using System.Runtime.InteropServices;
30
31// General information about an assembly is controlled through the following
32// set of attributes. Change these attribute values to modify the information
33// associated with an assembly.
34
35[assembly : AssemblyTitle("OpenSim.Region.Communications.Local")]
36[assembly : AssemblyDescription("")]
37[assembly : AssemblyConfiguration("")]
38[assembly : AssemblyCompany("http://opensimulator.org")]
39[assembly : AssemblyProduct("OpenSim.Region.Communications.Local")]
40[assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")]
41[assembly : AssemblyTrademark("")]
42[assembly : AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47
48[assembly : ComVisible(false)]
49
50// The following GUID is for the ID of the typelib if this project is exposed to COM
51
52[assembly : Guid("fb173926-bd0a-4cd0-bb45-185b2f72ddfb")]
53
54// Version information for an assembly consists of the following four values:
55//
56// Major Version
57// Minor Version
58// Build Number
59// Revision
60//
61// You can specify all the values or you can default the Revision and Build Numbers
62// by using the '*' as shown below:
63
64[assembly : AssemblyVersion("0.6.5.*")]
65[assembly : AssemblyFileVersion("0.6.5.0")]
diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs
deleted file mode 100644
index 94e4ed2..0000000
--- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs
+++ /dev/null
@@ -1,54 +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 OpenSim.Framework;
29using OpenSim.Framework.Communications;
30using OpenSim.Framework.Communications.Cache;
31using OpenSim.Framework.Servers.HttpServer;
32
33namespace OpenSim.Region.Communications.OGS1
34{
35 public class CommunicationsOGS1 : CommunicationsManager
36 {
37 public CommunicationsOGS1(
38 NetworkServersInfo serversInfo,
39 LibraryRootFolder libraryRootFolder)
40 : base(serversInfo, libraryRootFolder)
41 {
42
43 // This plugin arrangement could eventually be configurable rather than hardcoded here.
44 OGS1UserServices userServices = new OGS1UserServices(this);
45 userServices.AddPlugin(new TemporaryUserProfilePlugin());
46 userServices.AddPlugin(new OGS1UserDataPlugin(this));
47
48 m_userService = userServices;
49 m_messageService = userServices;
50 m_avatarService = (IAvatarService)m_userService;
51 }
52
53 }
54}
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs b/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs
deleted file mode 100644
index cb1766a..0000000
--- a/OpenSim/Region/Communications/OGS1/OGS1UserDataPlugin.cs
+++ /dev/null
@@ -1,774 +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.Net;
32using System.Reflection;
33using System.Text.RegularExpressions;
34using System.Xml.Serialization;
35using log4net;
36using Nwc.XmlRpc;
37using OpenMetaverse;
38using OpenSim.Data;
39using OpenSim.Framework;
40using OpenSim.Framework.Communications;
41using OpenSim.Framework.Communications.Clients;
42
43namespace OpenSim.Region.Communications.OGS1
44{
45 public class OGS1UserDataPlugin : IUserDataPlugin
46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48
49 protected CommunicationsManager m_commsManager;
50
51 public OGS1UserDataPlugin()
52 {
53 }
54
55 public OGS1UserDataPlugin(CommunicationsManager commsManager)
56 {
57 m_log.DebugFormat("[OGS1 USER SERVICES]: {0} initialized", Name);
58 m_commsManager = commsManager;
59 }
60
61 public string Version { get { return "0.1"; } }
62 public string Name { get { return "Open Grid Services 1 (OGS1) User Data Plugin"; } }
63 public void Initialise() {}
64
65 public void Initialise(string connect) {}
66
67 public void Dispose() {}
68
69 // Arguably the presence of these means that IUserDataPlugin could be fissioned
70 public UserAgentData GetUserAgent(string name) { return null; }
71 public UserAgentData GetAgentByName(string name) { return null; }
72 public UserAgentData GetAgentByName(string fname, string lname) { return null; }
73 public void StoreWebLoginKey(UUID agentID, UUID webLoginKey) {}
74 public void AddNewUserProfile(UserProfileData user) {}
75 public void AddNewUserAgent(UserAgentData agent) {}
76 public bool MoneyTransferRequest(UUID from, UUID to, uint amount) { return false; }
77 public bool InventoryTransferRequest(UUID from, UUID to, UUID inventory) { return false; }
78 public void ResetAttachments(UUID userID) {}
79 public void LogoutUsers(UUID regionID) {}
80
81 public virtual void AddTemporaryUserProfile(UserProfileData userProfile)
82 {
83 // Not interested
84 }
85
86 public UserProfileData GetUserByUri(Uri uri)
87 {
88 WebRequest request = WebRequest.Create(uri);
89
90 WebResponse webResponse = request.GetResponse();
91
92 XmlSerializer deserializer = new XmlSerializer(typeof(XmlRpcResponse));
93 XmlRpcResponse xmlRpcResponse = (XmlRpcResponse)deserializer.Deserialize(webResponse.GetResponseStream());
94
95 Hashtable respData = (Hashtable)xmlRpcResponse.Value;
96
97 return ConvertXMLRPCDataToUserProfile(respData);
98 }
99
100// public Uri GetUserUri(UserProfileData userProfile)
101// {
102// throw new NotImplementedException();
103// }
104
105 public virtual UserAgentData GetAgentByUUID(UUID userId)
106 {
107 try
108 {
109 Hashtable param = new Hashtable();
110 param["avatar_uuid"] = userId.ToString();
111 IList parameters = new ArrayList();
112 parameters.Add(param);
113 XmlRpcRequest req = new XmlRpcRequest("get_agent_by_uuid", parameters);
114
115 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 6000);
116 Hashtable respData = (Hashtable)resp.Value;
117 if (respData.Contains("error_type"))
118 {
119 //m_log.Warn("[GRID]: " +
120 // "Error sent by user server when trying to get agent: (" +
121 // (string) respData["error_type"] +
122 // "): " + (string)respData["error_desc"]);
123 return null;
124 }
125 UUID sessionid = UUID.Zero;
126
127 UserAgentData userAgent = new UserAgentData();
128 userAgent.Handle = Convert.ToUInt64((string)respData["handle"]);
129 UUID.TryParse((string)respData["sessionid"], out sessionid);
130 userAgent.SessionID = sessionid;
131
132 if ((string)respData["agent_online"] == "TRUE")
133 {
134 userAgent.AgentOnline = true;
135 }
136 else
137 {
138 userAgent.AgentOnline = false;
139 }
140
141 return userAgent;
142 }
143 catch (Exception e)
144 {
145 m_log.ErrorFormat(
146 "[OGS1 USER SERVICES]: Error when trying to fetch agent data by uuid from remote user server: {0}",
147 e);
148 }
149
150 return null;
151 }
152
153 public virtual UserProfileData GetUserByName(string firstName, string lastName)
154 {
155 return GetUserProfile(firstName + " " + lastName);
156 }
157
158 public virtual List<AvatarPickerAvatar> GeneratePickerResults(UUID queryID, string query)
159 {
160 List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
161 Regex objAlphaNumericPattern = new Regex("[^a-zA-Z0-9 ]");
162 try
163 {
164 Hashtable param = new Hashtable();
165 param["queryid"] = (string)queryID.ToString();
166 param["avquery"] = objAlphaNumericPattern.Replace(query, String.Empty);
167 IList parameters = new ArrayList();
168 parameters.Add(param);
169 XmlRpcRequest req = new XmlRpcRequest("get_avatar_picker_avatar", parameters);
170 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 3000);
171 Hashtable respData = (Hashtable)resp.Value;
172 pickerlist = ConvertXMLRPCDataToAvatarPickerList(queryID, respData);
173 }
174 catch (WebException e)
175 {
176 m_log.Warn("[OGS1 USER SERVICES]: Error when trying to fetch Avatar Picker Response: " +
177 e.Message);
178 // Return Empty picker list (no results)
179 }
180 return pickerlist;
181 }
182
183 /// <summary>
184 /// Get a user profile from the user server
185 /// </summary>
186 /// <param name="avatarID"></param>
187 /// <returns>null if the request fails</returns>
188 protected virtual UserProfileData GetUserProfile(string name)
189 {
190 try
191 {
192 Hashtable param = new Hashtable();
193 param["avatar_name"] = name;
194 IList parameters = new ArrayList();
195 parameters.Add(param);
196 XmlRpcRequest req = new XmlRpcRequest("get_user_by_name", parameters);
197 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 30000);
198 Hashtable respData = (Hashtable)resp.Value;
199
200 return ConvertXMLRPCDataToUserProfile(respData);
201 }
202 catch (WebException e)
203 {
204 m_log.ErrorFormat(
205 "[OGS1 USER SERVICES]: Error when trying to fetch profile data by name from remote user server: {0}",
206 e);
207 }
208
209 return null;
210 }
211
212 /// <summary>
213 /// Get a user profile from the user server
214 /// </summary>
215 /// <param name="avatarID"></param>
216 /// <returns>null if the request fails</returns>
217 public virtual UserProfileData GetUserByUUID(UUID avatarID)
218 {
219 try
220 {
221 Hashtable param = new Hashtable();
222 param["avatar_uuid"] = avatarID.ToString();
223 IList parameters = new ArrayList();
224 parameters.Add(param);
225 XmlRpcRequest req = new XmlRpcRequest("get_user_by_uuid", parameters);
226 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 30000);
227 Hashtable respData = (Hashtable)resp.Value;
228
229 return ConvertXMLRPCDataToUserProfile(respData);
230 }
231 catch (Exception e)
232 {
233 m_log.ErrorFormat(
234 "[OGS1 USER SERVICES]: Error when trying to fetch profile data by uuid from remote user server: {0}",
235 e);
236 }
237
238 return null;
239 }
240
241 public virtual bool UpdateUserProfile(UserProfileData userProfile)
242 {
243 m_log.Debug("[OGS1 USER SERVICES]: Asking UserServer to update profile.");
244
245 Hashtable param = new Hashtable();
246 param["avatar_uuid"] = userProfile.ID.ToString();
247 //param["AllowPublish"] = userProfile.ToString();
248 param["FLImageID"] = userProfile.FirstLifeImage.ToString();
249 param["ImageID"] = userProfile.Image.ToString();
250 //param["MaturePublish"] = MaturePublish.ToString();
251 param["AboutText"] = userProfile.AboutText;
252 param["FLAboutText"] = userProfile.FirstLifeAboutText;
253 //param["ProfileURL"] = userProfile.ProfileURL.ToString();
254
255 param["home_region"] = userProfile.HomeRegion.ToString();
256 param["home_region_id"] = userProfile.HomeRegionID.ToString();
257
258 param["home_pos_x"] = userProfile.HomeLocationX.ToString();
259 param["home_pos_y"] = userProfile.HomeLocationY.ToString();
260 param["home_pos_z"] = userProfile.HomeLocationZ.ToString();
261 param["home_look_x"] = userProfile.HomeLookAtX.ToString();
262 param["home_look_y"] = userProfile.HomeLookAtY.ToString();
263 param["home_look_z"] = userProfile.HomeLookAtZ.ToString();
264 param["user_flags"] = userProfile.UserFlags.ToString();
265 param["god_level"] = userProfile.GodLevel.ToString();
266 param["custom_type"] = userProfile.CustomType.ToString();
267 param["partner"] = userProfile.Partner.ToString();
268
269 IList parameters = new ArrayList();
270 parameters.Add(param);
271
272 XmlRpcRequest req = new XmlRpcRequest("update_user_profile", parameters);
273 XmlRpcResponse resp = req.Send(GetUserServerURL(userProfile.ID), 3000);
274 Hashtable respData = (Hashtable)resp.Value;
275 if (respData != null)
276 {
277 if (respData.Contains("returnString"))
278 {
279 if (((string)respData["returnString"]).ToUpper() != "TRUE")
280 {
281 m_log.Warn("[GRID]: Unable to update user profile, User Server Reported an issue");
282 return false;
283 }
284 }
285 else
286 {
287 m_log.Warn("[GRID]: Unable to update user profile, UserServer didn't understand me!");
288 return false;
289 }
290 }
291 else
292 {
293 m_log.Warn("[GRID]: Unable to update user profile, UserServer didn't understand me!");
294 return false;
295 }
296
297 return true;
298 }
299
300 /// <summary>
301 /// Adds a new friend to the database for XUser
302 /// </summary>
303 /// <param name="friendlistowner">The agent that who's friends list is being added to</param>
304 /// <param name="friend">The agent that being added to the friends list of the friends list owner</param>
305 /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param>
306 public virtual void AddNewUserFriend(UUID friendlistowner, UUID friend, uint perms)
307 {
308 try
309 {
310 Hashtable param = new Hashtable();
311 param["ownerID"] = friendlistowner.Guid.ToString();
312 param["friendID"] = friend.Guid.ToString();
313 param["friendPerms"] = perms.ToString();
314 IList parameters = new ArrayList();
315 parameters.Add(param);
316
317 XmlRpcRequest req = new XmlRpcRequest("add_new_user_friend", parameters);
318 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 3000);
319 Hashtable respData = (Hashtable)resp.Value;
320 if (respData != null)
321 {
322 if (respData.Contains("returnString"))
323 {
324 if ((string)respData["returnString"] == "TRUE")
325 {
326
327 }
328 else
329 {
330 m_log.Warn("[GRID]: Unable to add new friend, User Server Reported an issue");
331 }
332 }
333 else
334 {
335 m_log.Warn("[GRID]: Unable to add new friend, UserServer didn't understand me!");
336 }
337 }
338 else
339 {
340 m_log.Warn("[GRID]: Unable to add new friend, UserServer didn't understand me!");
341
342 }
343 }
344 catch (WebException e)
345 {
346 m_log.Warn("[GRID]: Error when trying to AddNewUserFriend: " +
347 e.Message);
348
349 }
350 }
351
352 /// <summary>
353 /// Delete friend on friendlistowner's friendlist.
354 /// </summary>
355 /// <param name="friendlistowner">The agent that who's friends list is being updated</param>
356 /// <param name="friend">The Ex-friend agent</param>
357 public virtual void RemoveUserFriend(UUID friendlistowner, UUID friend)
358 {
359 try
360 {
361 Hashtable param = new Hashtable();
362 param["ownerID"] = friendlistowner.Guid.ToString();
363 param["friendID"] = friend.Guid.ToString();
364
365 IList parameters = new ArrayList();
366 parameters.Add(param);
367
368 XmlRpcRequest req = new XmlRpcRequest("remove_user_friend", parameters);
369 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 3000);
370 Hashtable respData = (Hashtable)resp.Value;
371 if (respData != null)
372 {
373 if (respData.Contains("returnString"))
374 {
375 if ((string)respData["returnString"] == "TRUE")
376 {
377
378 }
379 else
380 {
381 m_log.Warn("[GRID]: Unable to remove friend, User Server Reported an issue");
382 }
383 }
384 else
385 {
386 m_log.Warn("[GRID]: Unable to remove friend, UserServer didn't understand me!");
387 }
388 }
389 else
390 {
391 m_log.Warn("[GRID]: Unable to remove friend, UserServer didn't understand me!");
392
393 }
394 }
395 catch (WebException e)
396 {
397 m_log.Warn("[GRID]: Error when trying to RemoveUserFriend: " +
398 e.Message);
399
400 }
401 }
402
403 /// <summary>
404 /// Update permissions for friend on friendlistowner's friendlist.
405 /// </summary>
406 /// <param name="friendlistowner">The agent that who's friends list is being updated</param>
407 /// <param name="friend">The agent that is getting or loosing permissions</param>
408 /// <param name="perms">A uint bit vector for set perms that the friend being added has; 0 = none, 1=This friend can see when they sign on, 2 = map, 4 edit objects </param>
409 public virtual void UpdateUserFriendPerms(UUID friendlistowner, UUID friend, uint perms)
410 {
411 try
412 {
413 Hashtable param = new Hashtable();
414 param["ownerID"] = friendlistowner.Guid.ToString();
415 param["friendID"] = friend.Guid.ToString();
416 param["friendPerms"] = perms.ToString();
417 IList parameters = new ArrayList();
418 parameters.Add(param);
419
420 XmlRpcRequest req = new XmlRpcRequest("update_user_friend_perms", parameters);
421 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 3000);
422 Hashtable respData = (Hashtable)resp.Value;
423 if (respData != null)
424 {
425 if (respData.Contains("returnString"))
426 {
427 if ((string)respData["returnString"] == "TRUE")
428 {
429
430 }
431 else
432 {
433 m_log.Warn("[GRID]: Unable to update_user_friend_perms, User Server Reported an issue");
434 }
435 }
436 else
437 {
438 m_log.Warn("[GRID]: Unable to update_user_friend_perms, UserServer didn't understand me!");
439 }
440 }
441 else
442 {
443 m_log.Warn("[GRID]: Unable to update_user_friend_perms, UserServer didn't understand me!");
444
445 }
446 }
447 catch (WebException e)
448 {
449 m_log.Warn("[GRID]: Error when trying to update_user_friend_perms: " +
450 e.Message);
451 }
452 }
453 /// <summary>
454 /// Returns a list of FriendsListItems that describe the friends and permissions in the friend relationship for UUID friendslistowner
455 /// </summary>
456 /// <param name="friendlistowner">The agent that we're retreiving the friends Data.</param>
457 public virtual List<FriendListItem> GetUserFriendList(UUID friendlistowner)
458 {
459 List<FriendListItem> buddylist = new List<FriendListItem>();
460
461 try
462 {
463 Hashtable param = new Hashtable();
464 param["ownerID"] = friendlistowner.Guid.ToString();
465
466 IList parameters = new ArrayList();
467 parameters.Add(param);
468 XmlRpcRequest req = new XmlRpcRequest("get_user_friend_list", parameters);
469 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 8000);
470 Hashtable respData = (Hashtable)resp.Value;
471
472 if (respData != null && respData.Contains("avcount"))
473 {
474 buddylist = ConvertXMLRPCDataToFriendListItemList(respData);
475 }
476
477 }
478 catch (WebException e)
479 {
480 m_log.Warn("[OGS1 USER SERVICES]: Error when trying to fetch Avatar's friends list: " +
481 e.Message);
482 // Return Empty list (no friends)
483 }
484 return buddylist;
485 }
486
487 public virtual Dictionary<UUID, FriendRegionInfo> GetFriendRegionInfos(List<UUID> uuids)
488 {
489 Dictionary<UUID, FriendRegionInfo> result = new Dictionary<UUID, FriendRegionInfo>();
490
491 // ask MessageServer about the current on-/offline status and regions the friends are in
492 ArrayList parameters = new ArrayList();
493 Hashtable map = new Hashtable();
494
495 ArrayList list = new ArrayList();
496 foreach (UUID uuid in uuids)
497 {
498 list.Add(uuid.ToString());
499 list.Add(uuid.ToString());
500 }
501 map["uuids"] = list;
502
503 map["recv_key"] = m_commsManager.NetworkServersInfo.UserRecvKey;
504 map["send_key"] = m_commsManager.NetworkServersInfo.UserSendKey;
505
506 parameters.Add(map);
507
508 try
509 {
510 XmlRpcRequest req = new XmlRpcRequest("get_presence_info_bulk", parameters);
511 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.MessagingURL, 8000);
512 Hashtable respData = resp != null ? (Hashtable)resp.Value : null;
513
514 if (respData == null || respData.ContainsKey("faultMessage"))
515 {
516 m_log.WarnFormat("[OGS1 USER SERVICES]: Contacting MessagingServer about user-regions resulted in error: {0}",
517 respData == null ? "<unknown error>" : respData["faultMessage"]);
518 }
519 else if (!respData.ContainsKey("count"))
520 {
521 m_log.WarnFormat("[OGS1 USER SERVICES]: Wrong format in response for MessagingServer request get_presence_info_bulk: missing 'count' field");
522 }
523 else
524 {
525 int count = (int)respData["count"];
526 m_log.DebugFormat("[OGS1 USER SERVICES]: Request returned {0} results.", count);
527 for (int i = 0; i < count; ++i)
528 {
529 if (respData.ContainsKey("uuid_" + i) && respData.ContainsKey("isOnline_" + i) && respData.ContainsKey("regionHandle_" + i))
530 {
531 UUID uuid;
532 if (UUID.TryParse((string)respData["uuid_" + i], out uuid))
533 {
534 FriendRegionInfo info = new FriendRegionInfo();
535 info.isOnline = (bool)respData["isOnline_" + i];
536 if (info.isOnline)
537 {
538 // TODO remove this after the next protocol update (say, r7800?)
539 info.regionHandle = Convert.ToUInt64(respData["regionHandle_" + i]);
540
541 // accept missing id
542 if (respData.ContainsKey("regionID_" + i))
543 UUID.TryParse((string)respData["regionID_" + i], out info.regionID);
544 }
545
546 result.Add(uuid, info);
547 }
548 }
549 else
550 {
551 m_log.WarnFormat("[OGS1 USER SERVICES]: Response to get_presence_info_bulk contained an error in entry {0}", i);
552 }
553 }
554 }
555 }
556 catch (WebException e)
557 {
558 m_log.ErrorFormat("[OGS1 USER SERVICES]: Network problems when trying to fetch friend infos: {0}", e.Message);
559 }
560
561 m_log.DebugFormat("[OGS1 USER SERVICES]: Returning {0} entries", result.Count);
562
563 return result;
564 }
565
566 public virtual AvatarAppearance GetUserAppearance(UUID user)
567 {
568 AvatarAppearance appearance = null;
569
570 try
571 {
572 Hashtable param = new Hashtable();
573 param["owner"] = user.ToString();
574
575 IList parameters = new ArrayList();
576 parameters.Add(param);
577 XmlRpcRequest req = new XmlRpcRequest("get_avatar_appearance", parameters);
578 XmlRpcResponse resp = req.Send(GetUserServerURL(user), 8000);
579 Hashtable respData = (Hashtable)resp.Value;
580
581 return ConvertXMLRPCDataToAvatarAppearance(respData);
582 }
583 catch (WebException e)
584 {
585 m_log.ErrorFormat("[OGS1 USER SERVICES]: Network problems when trying to fetch appearance for avatar {0}, {1}", user, e.Message);
586 }
587
588 return appearance;
589 }
590
591 public virtual void UpdateUserAppearance(UUID user, AvatarAppearance appearance)
592 {
593 try
594 {
595 Hashtable param = appearance.ToHashTable();
596 param["owner"] = user.ToString();
597
598 IList parameters = new ArrayList();
599 parameters.Add(param);
600 XmlRpcRequest req = new XmlRpcRequest("update_avatar_appearance", parameters);
601 XmlRpcResponse resp = req.Send(GetUserServerURL(user), 8000);
602 Hashtable respData = (Hashtable)resp.Value;
603
604 if (respData != null)
605 {
606 if (respData.Contains("returnString"))
607 {
608 if ((string)respData["returnString"] == "TRUE")
609 {
610 m_log.DebugFormat("[OGS1 USER SERVICES]: Updated user appearance in {0}", GetUserServerURL(user));
611 }
612 else
613 {
614 m_log.Warn("[GRID]: Unable to update_user_appearance, User Server Reported an issue");
615 }
616 }
617 else
618 {
619 m_log.Warn("[GRID]: Unable to update_user_appearance, UserServer didn't understand me!");
620 }
621 }
622 else
623 {
624 m_log.Warn("[GRID]: Unable to update_user_appearance, UserServer didn't understand me!");
625 }
626 }
627 catch (WebException e)
628 {
629 m_log.WarnFormat("[OGS1 USER SERVICES]: Error when trying to update Avatar's appearance in {0}: {1}",
630 GetUserServerURL(user), e.Message);
631 // Return Empty list (no friends)
632 }
633 }
634
635 protected virtual string GetUserServerURL(UUID userID)
636 {
637 return m_commsManager.NetworkServersInfo.UserURL;
638 }
639
640 protected UserProfileData ConvertXMLRPCDataToUserProfile(Hashtable data)
641 {
642 if (data.Contains("error_type"))
643 {
644 //m_log.Warn("[GRID]: " +
645 // "Error sent by user server when trying to get user profile: (" +
646 // data["error_type"] +
647 // "): " + data["error_desc"]);
648 return null;
649 }
650
651 UserProfileData userData = new UserProfileData();
652 userData.FirstName = (string)data["firstname"];
653 userData.SurName = (string)data["lastname"];
654 if (data["email"] != null)
655 userData.Email = (string)data["email"];
656 userData.ID = new UUID((string)data["uuid"]);
657 userData.Created = Convert.ToInt32(data["profile_created"]);
658 if (data.Contains("server_inventory") && data["server_inventory"] != null)
659 userData.UserInventoryURI = (string)data["server_inventory"];
660 if (data.Contains("server_asset") && data["server_asset"] != null)
661 userData.UserAssetURI = (string)data["server_asset"];
662 if (data.Contains("profile_firstlife_about") && data["profile_firstlife_about"] != null)
663 userData.FirstLifeAboutText = (string)data["profile_firstlife_about"];
664 userData.FirstLifeImage = new UUID((string)data["profile_firstlife_image"]);
665 userData.CanDoMask = Convert.ToUInt32((string)data["profile_can_do"]);
666 userData.WantDoMask = Convert.ToUInt32(data["profile_want_do"]);
667 userData.AboutText = (string)data["profile_about"];
668 userData.Image = new UUID((string)data["profile_image"]);
669 userData.LastLogin = Convert.ToInt32((string)data["profile_lastlogin"]);
670 userData.HomeRegion = Convert.ToUInt64((string)data["home_region"]);
671 if (data.Contains("home_region_id"))
672 userData.HomeRegionID = new UUID((string)data["home_region_id"]);
673 else
674 userData.HomeRegionID = UUID.Zero;
675 userData.HomeLocation =
676 new Vector3((float)Convert.ToDecimal((string)data["home_coordinates_x"], Culture.NumberFormatInfo),
677 (float)Convert.ToDecimal((string)data["home_coordinates_y"], Culture.NumberFormatInfo),
678 (float)Convert.ToDecimal((string)data["home_coordinates_z"], Culture.NumberFormatInfo));
679 userData.HomeLookAt =
680 new Vector3((float)Convert.ToDecimal((string)data["home_look_x"], Culture.NumberFormatInfo),
681 (float)Convert.ToDecimal((string)data["home_look_y"], Culture.NumberFormatInfo),
682 (float)Convert.ToDecimal((string)data["home_look_z"], Culture.NumberFormatInfo));
683 if (data.Contains("user_flags"))
684 userData.UserFlags = Convert.ToInt32((string)data["user_flags"]);
685 if (data.Contains("god_level"))
686 userData.GodLevel = Convert.ToInt32((string)data["god_level"]);
687
688 if (data.Contains("custom_type"))
689 userData.CustomType = (string)data["custom_type"];
690 else
691 userData.CustomType = "";
692 if (userData.CustomType == null)
693 userData.CustomType = "";
694
695 if (data.Contains("partner"))
696 userData.Partner = new UUID((string)data["partner"]);
697 else
698 userData.Partner = UUID.Zero;
699
700 return userData;
701 }
702
703 protected AvatarAppearance ConvertXMLRPCDataToAvatarAppearance(Hashtable data)
704 {
705 if (data != null)
706 {
707 if (data.Contains("error_type"))
708 {
709 m_log.Warn("[GRID]: " +
710 "Error sent by user server when trying to get user appearance: (" +
711 data["error_type"] +
712 "): " + data["error_desc"]);
713 return null;
714 }
715 else
716 {
717 return new AvatarAppearance(data);
718 }
719 }
720 else
721 {
722 m_log.Error("[GRID]: The avatar appearance is null, something bad happenend");
723 return null;
724 }
725 }
726
727 protected List<AvatarPickerAvatar> ConvertXMLRPCDataToAvatarPickerList(UUID queryID, Hashtable data)
728 {
729 List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
730 int pickercount = Convert.ToInt32((string)data["avcount"]);
731 UUID respqueryID = new UUID((string)data["queryid"]);
732 if (queryID == respqueryID)
733 {
734 for (int i = 0; i < pickercount; i++)
735 {
736 AvatarPickerAvatar apicker = new AvatarPickerAvatar();
737 UUID avatarID = new UUID((string)data["avatarid" + i.ToString()]);
738 string firstname = (string)data["firstname" + i.ToString()];
739 string lastname = (string)data["lastname" + i.ToString()];
740 apicker.AvatarID = avatarID;
741 apicker.firstName = firstname;
742 apicker.lastName = lastname;
743 pickerlist.Add(apicker);
744 }
745 }
746 else
747 {
748 m_log.Warn("[OGS1 USER SERVICES]: Got invalid queryID from userServer");
749 }
750 return pickerlist;
751 }
752
753 protected List<FriendListItem> ConvertXMLRPCDataToFriendListItemList(Hashtable data)
754 {
755 List<FriendListItem> buddylist = new List<FriendListItem>();
756 int buddycount = Convert.ToInt32((string)data["avcount"]);
757
758
759 for (int i = 0; i < buddycount; i++)
760 {
761 FriendListItem buddylistitem = new FriendListItem();
762
763 buddylistitem.FriendListOwner = new UUID((string)data["ownerID" + i.ToString()]);
764 buddylistitem.Friend = new UUID((string)data["friendID" + i.ToString()]);
765 buddylistitem.FriendListOwnerPerms = (uint)Convert.ToInt32((string)data["ownerPerms" + i.ToString()]);
766 buddylistitem.FriendPerms = (uint)Convert.ToInt32((string)data["friendPerms" + i.ToString()]);
767
768 buddylist.Add(buddylistitem);
769 }
770
771 return buddylist;
772 }
773 }
774}
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
deleted file mode 100644
index ed3526d..0000000
--- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs
+++ /dev/null
@@ -1,176 +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.Net;
32using System.Reflection;
33using System.Text.RegularExpressions;
34using System.Xml.Serialization;
35using log4net;
36using Nwc.XmlRpc;
37using OpenMetaverse;
38using OpenSim.Data;
39using OpenSim.Framework;
40using OpenSim.Framework.Communications;
41using OpenSim.Framework.Communications.Clients;
42
43namespace OpenSim.Region.Communications.OGS1
44{
45 public class OGS1UserServices : UserManagerBase
46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48
49 public OGS1UserServices(CommunicationsManager commsManager)
50 : base(commsManager)
51 {
52 }
53
54 public override void ClearUserAgent(UUID avatarID)
55 {
56 // TODO: implement
57 // It may be possible to use the UserManagerBase implementation.
58 }
59
60 protected virtual string GetUserServerURL(UUID userID)
61 {
62 return m_commsManager.NetworkServersInfo.UserURL;
63 }
64
65 /// <summary>
66 /// Logs off a user on the user server
67 /// </summary>
68 /// <param name="UserID">UUID of the user</param>
69 /// <param name="regionID">UUID of the Region</param>
70 /// <param name="regionhandle">regionhandle</param>
71 /// <param name="position">final position</param>
72 /// <param name="lookat">final lookat</param>
73 public override void LogOffUser(UUID userid, UUID regionid, ulong regionhandle, Vector3 position, Vector3 lookat)
74 {
75 Hashtable param = new Hashtable();
76 param["avatar_uuid"] = userid.Guid.ToString();
77 param["region_uuid"] = regionid.Guid.ToString();
78 param["region_handle"] = regionhandle.ToString();
79 param["region_pos_x"] = position.X.ToString();
80 param["region_pos_y"] = position.Y.ToString();
81 param["region_pos_z"] = position.Z.ToString();
82 param["lookat_x"] = lookat.X.ToString();
83 param["lookat_y"] = lookat.Y.ToString();
84 param["lookat_z"] = lookat.Z.ToString();
85
86 IList parameters = new ArrayList();
87 parameters.Add(param);
88 XmlRpcRequest req = new XmlRpcRequest("logout_of_simulator", parameters);
89
90 try
91 {
92 req.Send(GetUserServerURL(userid), 3000);
93 }
94 catch (WebException)
95 {
96 m_log.Warn("[LOGOFF]: Unable to notify grid server of user logoff");
97 }
98 }
99
100 /// <summary>
101 /// Retrieve the user information for the given master uuid.
102 /// </summary>
103 /// <param name="uuid"></param>
104 /// <returns></returns>
105 public override UserProfileData SetupMasterUser(string firstName, string lastName)
106 {
107 return SetupMasterUser(firstName, lastName, String.Empty);
108 }
109
110 /// <summary>
111 /// Retrieve the user information for the given master uuid.
112 /// </summary>
113 /// <param name="uuid"></param>
114 /// <returns></returns>
115 public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
116 {
117 UserProfileData profile = GetUserProfile(firstName, lastName);
118 return profile;
119 }
120
121 /// <summary>
122 /// Retrieve the user information for the given master uuid.
123 /// </summary>
124 /// <param name="uuid"></param>
125 /// <returns></returns>
126 public override UserProfileData SetupMasterUser(UUID uuid)
127 {
128 UserProfileData data = GetUserProfile(uuid);
129
130 if (data == null)
131 {
132 throw new Exception(
133 "Could not retrieve profile for master user " + uuid + ". User server did not respond to the request.");
134 }
135
136 return data;
137 }
138
139 public override bool VerifySession(UUID userID, UUID sessionID)
140 {
141 m_log.DebugFormat("[OGS1 USER SERVICES]: Verifying user session for " + userID);
142 return AuthClient.VerifySession(GetUserServerURL(userID), userID, sessionID);
143 }
144
145 public override bool AuthenticateUserByPassword(UUID userID, string password)
146 {
147 Hashtable param = new Hashtable();
148 param["user_uuid"] = userID.ToString();
149 param["password"] = password;
150 IList parameters = new ArrayList();
151 parameters.Add(param);
152 XmlRpcRequest req = new XmlRpcRequest("authenticate_user_by_password", parameters);
153 XmlRpcResponse resp = req.Send(m_commsManager.NetworkServersInfo.UserURL, 30000);
154
155 // Temporary measure to deal with older services
156 if (resp.IsFault && resp.FaultCode == XmlRpcErrorCodes.SERVER_ERROR_METHOD)
157 {
158 throw new Exception(
159 String.Format(
160 "XMLRPC method 'authenticate_user_by_password' not yet implemented by user service at {0}",
161 m_commsManager.NetworkServersInfo.UserURL));
162 }
163
164 Hashtable respData = (Hashtable)resp.Value;
165
166 if ((string)respData["auth_user"] == "TRUE")
167 {
168 return true;
169 }
170 else
171 {
172 return false;
173 }
174 }
175 }
176} \ No newline at end of file
diff --git a/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs b/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2b54f2e..0000000
--- a/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,65 +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.Reflection;
29using System.Runtime.InteropServices;
30
31// General information about an assembly is controlled through the following
32// set of attributes. Change these attribute values to modify the information
33// associated with an assembly.
34
35[assembly : AssemblyTitle("OpenGrid.Framework.Communications.OGS1")]
36[assembly : AssemblyDescription("")]
37[assembly : AssemblyConfiguration("")]
38[assembly : AssemblyCompany("http://opensimulator.org")]
39[assembly : AssemblyProduct("OpenGrid.Framework.Communications.OGS1")]
40[assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")]
41[assembly : AssemblyTrademark("")]
42[assembly : AssemblyCulture("")]
43
44// Setting ComVisible to false makes the types in this assembly not visible
45// to COM components. If you need to access a type in this assembly from
46// COM, set the ComVisible attribute to true on that type.
47
48[assembly : ComVisible(false)]
49
50// The following GUID is for the ID of the typelib if this project is exposed to COM
51
52[assembly : Guid("a8b2b39b-c83b-41e2-b0b5-7ccfc1fddae7")]
53
54// Version information for an assembly consists of the following four values:
55//
56// Major Version
57// Minor Version
58// Build Number
59// Revision
60//
61// You can specify all the values or you can default the Revision and Build Numbers
62// by using the '*' as shown below:
63
64[assembly : AssemblyVersion("0.6.5.*")]
65[assembly : AssemblyFileVersion("0.6.5.0")]