diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index d42a125..0461e1a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -63,6 +63,7 @@ using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; | |||
63 | using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; | 63 | using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; |
64 | using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; | 64 | using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; |
65 | using PermissionMask = OpenSim.Framework.PermissionMask; | 65 | using PermissionMask = OpenSim.Framework.PermissionMask; |
66 | using OpenSim.Services.Connectors.Hypergrid; | ||
66 | 67 | ||
67 | namespace OpenSim.Region.ScriptEngine.Shared.Api | 68 | namespace OpenSim.Region.ScriptEngine.Shared.Api |
68 | { | 69 | { |
@@ -2052,15 +2053,50 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2052 | CheckThreatLevel(ThreatLevel.Low, "osAvatarName2Key"); | 2053 | CheckThreatLevel(ThreatLevel.Low, "osAvatarName2Key"); |
2053 | m_host.AddScriptLPS(1); | 2054 | m_host.AddScriptLPS(1); |
2054 | 2055 | ||
2055 | UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, firstname, lastname); | 2056 | if (lastname.Contains("@")) |
2056 | if (null == account) | ||
2057 | { | 2057 | { |
2058 | return UUID.Zero.ToString(); | 2058 | String realFirstName; String realLastName; String serverURI; |
2059 | |||
2060 | realFirstName = firstname.Split('.')[0]; | ||
2061 | realLastName = firstname.Split('.')[1]; | ||
2062 | serverURI = new Uri("http://" + lastname.Replace("@", "")).ToString(); | ||
2063 | |||
2064 | try | ||
2065 | { | ||
2066 | UserAgentServiceConnector userConnection = new UserAgentServiceConnector(serverURI, true); | ||
2067 | |||
2068 | if (userConnection != null) | ||
2069 | { | ||
2070 | UUID ruserid = userConnection.GetUUID(realFirstName, realLastName); | ||
2071 | |||
2072 | if (ruserid != null) | ||
2073 | { | ||
2074 | IUserManagement userManager = m_ScriptEngine.World.RequestModuleInterface<IUserManagement>(); | ||
2075 | |||
2076 | if (userManager != null) | ||
2077 | { | ||
2078 | //Use the HomeURI from the script to get user infos and then ask the remote gridserver for the real HomeURI. | ||
2079 | userManager.AddUser(ruserid, realFirstName, realLastName, serverURI); | ||
2080 | serverURI = userManager.GetUserServerURL(ruserid, "HomeURI"); | ||
2081 | userManager.AddUser(ruserid, realFirstName, realLastName, serverURI); | ||
2082 | |||
2083 | return ruserid.ToString(); | ||
2084 | } | ||
2085 | } | ||
2086 | } | ||
2087 | } | ||
2088 | catch (Exception osAvatarException) | ||
2089 | { | ||
2090 | //m_log.Warn("[osAvatarName2Key] UserAgentServiceConnector - Unable to connect to destination grid\n" + osAvatarException.Message); | ||
2091 | } | ||
2059 | } | 2092 | } |
2060 | else | 2093 | else |
2061 | { | 2094 | { |
2062 | return account.PrincipalID.ToString(); | 2095 | UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, firstname, lastname); |
2096 | if (account != null) return account.PrincipalID.ToString(); | ||
2063 | } | 2097 | } |
2098 | |||
2099 | return UUID.Zero.ToString(); | ||
2064 | } | 2100 | } |
2065 | 2101 | ||
2066 | public string osKey2Name(string id) | 2102 | public string osKey2Name(string id) |