aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services')
-rw-r--r--OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs38
-rw-r--r--OpenSim/Services/Interfaces/IGridUserService.cs75
-rw-r--r--OpenSim/Services/LLLoginService/LLLoginService.cs31
-rw-r--r--OpenSim/Services/UserAccountService/GridUserService.cs76
-rw-r--r--OpenSim/Services/UserAccountService/GridUserServiceBase.cs82
-rw-r--r--OpenSim/Services/UserAccountService/UserAccountService.cs2
6 files changed, 300 insertions, 4 deletions
diff --git a/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs
new file mode 100644
index 0000000..ce88236
--- /dev/null
+++ b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs
@@ -0,0 +1,38 @@
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;
29
30namespace OpenSim.Services.Connectors
31{
32 public class GridUserServiceConnector
33 {
34 public GridUserServiceConnector()
35 {
36 }
37 }
38}
diff --git a/OpenSim/Services/Interfaces/IGridUserService.cs b/OpenSim/Services/Interfaces/IGridUserService.cs
new file mode 100644
index 0000000..a7c2c6f
--- /dev/null
+++ b/OpenSim/Services/Interfaces/IGridUserService.cs
@@ -0,0 +1,75 @@
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.Generic;
30using OpenMetaverse;
31
32namespace OpenSim.Services.Interfaces
33{
34 /// <summary>
35 /// Records user information specific to a grid but which is not part of a user's account.
36 /// </summary>
37 public class GridUserInfo
38 {
39 public string UserID;
40 public UUID HomeRegionID;
41 public Vector3 HomePosition;
42 public Vector3 HomeLookAt;
43
44 public GridUserInfo() {}
45
46 public GridUserInfo(Dictionary<string, object> kvp)
47 {
48 if (kvp.ContainsKey("UserID"))
49 UserID = kvp["UserID"].ToString();
50 if (kvp.ContainsKey("HomeRegionID"))
51 UUID.TryParse(kvp["HomeRegionID"].ToString(), out HomeRegionID);
52 if (kvp.ContainsKey("HomePosition"))
53 Vector3.TryParse(kvp["HomePosition"].ToString(), out HomePosition);
54 if (kvp.ContainsKey("HomeLookAt"))
55 Vector3.TryParse(kvp["HomeLookAt"].ToString(), out HomeLookAt);
56 }
57
58 public Dictionary<string, object> ToKeyValuePairs()
59 {
60 Dictionary<string, object> result = new Dictionary<string, object>();
61 result["UserID"] = UserID;
62 result["HomeRegionID"] = HomeRegionID.ToString();
63 result["HomePosition"] = HomePosition.ToString();
64 result["HomeLookAt"] = HomeLookAt.ToString();
65
66 return result;
67 }
68 }
69
70 public interface IGridUserService
71 {
72 GridUserInfo GetGridUserInfo(string userID);
73 bool StoreGridUserInfo(GridUserInfo info);
74 }
75} \ No newline at end of file
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index ee93f73..ae729f8 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -279,7 +279,31 @@ namespace OpenSim.Services.LLLoginService
279 279
280 GridRegion region = null; 280 GridRegion region = null;
281 281
282 if (pinfo.HomeRegionID.Equals(UUID.Zero) || (region = m_GridService.GetRegionByUUID(account.ScopeID, pinfo.HomeRegionID)) == null) 282 bool tryDefaults = false;
283
284 if (pinfo.HomeRegionID.Equals(UUID.Zero))
285 {
286 m_log.WarnFormat(
287 "[LLOGIN SERVICE]: User {0} {1} tried to login to a 'home' start location but they have none set",
288 account.FirstName, account.LastName);
289
290 tryDefaults = true;
291 }
292 else
293 {
294 region = m_GridService.GetRegionByUUID(account.ScopeID, pinfo.HomeRegionID);
295
296 if (null == region)
297 {
298 m_log.WarnFormat(
299 "[LLOGIN SERVICE]: User {0} {1} has a recorded home region of {2} but this cannot be found by the grid service",
300 account.FirstName, account.LastName, pinfo.HomeRegionID);
301
302 tryDefaults = true;
303 }
304 }
305
306 if (tryDefaults)
283 { 307 {
284 List<GridRegion> defaults = m_GridService.GetDefaultRegions(account.ScopeID); 308 List<GridRegion> defaults = m_GridService.GetDefaultRegions(account.ScopeID);
285 if (defaults != null && defaults.Count > 0) 309 if (defaults != null && defaults.Count > 0)
@@ -288,7 +312,8 @@ namespace OpenSim.Services.LLLoginService
288 where = "safe"; 312 where = "safe";
289 } 313 }
290 else 314 else
291 m_log.WarnFormat("[LLOGIN SERVICE]: User {0} {1} does not have a home set and this grid does not have default locations.", 315 m_log.WarnFormat(
316 "[LLOGIN SERVICE]: User {0} {1} does not have a valid home and this grid does not have default locations.",
292 account.FirstName, account.LastName); 317 account.FirstName, account.LastName);
293 } 318 }
294 319
@@ -318,8 +343,8 @@ namespace OpenSim.Services.LLLoginService
318 position = pinfo.Position; 343 position = pinfo.Position;
319 lookAt = pinfo.LookAt; 344 lookAt = pinfo.LookAt;
320 } 345 }
346
321 return region; 347 return region;
322
323 } 348 }
324 else 349 else
325 { 350 {
diff --git a/OpenSim/Services/UserAccountService/GridUserService.cs b/OpenSim/Services/UserAccountService/GridUserService.cs
new file mode 100644
index 0000000..36cce75
--- /dev/null
+++ b/OpenSim/Services/UserAccountService/GridUserService.cs
@@ -0,0 +1,76 @@
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.Generic;
30using System.Reflection;
31using Nini.Config;
32using OpenSim.Data;
33using OpenSim.Services.Interfaces;
34using OpenSim.Framework.Console;
35using GridRegion = OpenSim.Services.Interfaces.GridRegion;
36
37using OpenMetaverse;
38using log4net;
39
40namespace OpenSim.Services.UserAccountService
41{
42 public class GridUserService : GridUserServiceBase, IGridUserService
43 {
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45
46 public GridUserService(IConfigSource config) : base(config)
47 {
48 m_log.Debug("[USER GRID SERVICE]: Starting user grid service");
49 }
50
51 public GridUserInfo GetGridUserInfo(string userID)
52 {
53 GridUserData d = m_Database.GetGridUserData(userID);
54
55 GridUserInfo info = new GridUserInfo();
56 info.UserID = d.UserID;
57 info.HomeRegionID = new UUID(d.Data["HomeRegionID"]);
58 info.HomePosition = Vector3.Parse(d.Data["HomePosition"]);
59 info.HomeLookAt = Vector3.Parse(d.Data["HomeLookAt"]);
60
61 return info;
62 }
63
64 public bool StoreGridUserInfo(GridUserInfo info)
65 {
66 GridUserData d = new GridUserData();
67
68 d.Data["UserID"] = info.UserID;
69 d.Data["HomeRegionID"] = info.HomeRegionID.ToString();
70 d.Data["HomePosition"] = info.HomePosition.ToString();
71 d.Data["HomeLookAt"] = info.HomeLookAt.ToString();
72
73 return m_Database.StoreGridUserData(d);
74 }
75 }
76} \ No newline at end of file
diff --git a/OpenSim/Services/UserAccountService/GridUserServiceBase.cs b/OpenSim/Services/UserAccountService/GridUserServiceBase.cs
new file mode 100644
index 0000000..990cb63
--- /dev/null
+++ b/OpenSim/Services/UserAccountService/GridUserServiceBase.cs
@@ -0,0 +1,82 @@
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.Reflection;
30using Nini.Config;
31using OpenSim.Framework;
32using OpenSim.Data;
33using OpenSim.Services.Interfaces;
34using OpenSim.Services.Base;
35
36namespace OpenSim.Services.UserAccountService
37{
38 public class GridUserServiceBase : ServiceBase
39 {
40 protected IGridUserData m_Database = null;
41
42 public GridUserServiceBase(IConfigSource config) : base(config)
43 {
44 string dllName = String.Empty;
45 string connString = String.Empty;
46 string realm = "GridUser";
47
48 //
49 // Try reading the [DatabaseService] section, if it exists
50 //
51 IConfig dbConfig = config.Configs["DatabaseService"];
52 if (dbConfig != null)
53 {
54 if (dllName == String.Empty)
55 dllName = dbConfig.GetString("StorageProvider", String.Empty);
56 if (connString == String.Empty)
57 connString = dbConfig.GetString("ConnectionString", String.Empty);
58 }
59
60 //
61 // [GridUsetService] section overrides [DatabaseService], if it exists
62 //
63 IConfig presenceConfig = config.Configs["GridUserService"];
64 if (presenceConfig != null)
65 {
66 dllName = presenceConfig.GetString("StorageProvider", dllName);
67 connString = presenceConfig.GetString("ConnectionString", connString);
68 realm = presenceConfig.GetString("Realm", realm);
69 }
70
71 //
72 // We tried, but this doesn't exist. We can't proceed.
73 //
74 if (dllName.Equals(String.Empty))
75 throw new Exception("No StorageProvider configured");
76
77 m_Database = LoadPlugin<IGridUserData>(dllName, new Object[] { connString, realm });
78 if (m_Database == null)
79 throw new Exception("Could not find a storage interface in the given module " + dllName);
80 }
81 }
82} \ No newline at end of file
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index ca6e44a..82c34e7 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -280,7 +280,7 @@ namespace OpenSim.Services.UserAccountService
280 if (null == account) 280 if (null == account)
281 { 281 {
282 account = new UserAccount(UUID.Zero, firstName, lastName, email); 282 account = new UserAccount(UUID.Zero, firstName, lastName, email);
283 if (account.ServiceURLs == null) 283 if (account.ServiceURLs == null || (account.ServiceURLs != null && account.ServiceURLs.Count == 0))
284 { 284 {
285 account.ServiceURLs = new Dictionary<string, object>(); 285 account.ServiceURLs = new Dictionary<string, object>();
286 account.ServiceURLs["HomeURI"] = string.Empty; 286 account.ServiceURLs["HomeURI"] = string.Empty;