diff --git a/OpenSim/Framework/GridInfo.cs b/OpenSim/Framework/GridInfo.cs index 6defe3b86c..43850596b3 100644 --- a/OpenSim/Framework/GridInfo.cs +++ b/OpenSim/Framework/GridInfo.cs @@ -178,9 +178,9 @@ namespace OpenSim.Framework private OSHostURL m_homeURL; private HashSet m_homeURLAlias; - public GridInfo (IConfigSource config, string defaultHost = "") + public GridInfo (IConfigSource config, string defaultURI = "") { - string[] sections = new string[] { "Startup", "Hypergrid", "UserAgentService" }; + string[] sections = new string[] { "Startup", "Hypergrid"}; string gatekeeper = Util.GetConfigVarFromSections(config, "GatekeeperURI", sections, String.Empty); if (string.IsNullOrEmpty(gatekeeper)) @@ -198,8 +198,8 @@ namespace OpenSim.Framework if (string.IsNullOrEmpty(gatekeeper)) { m_hasHGconfig = false; - if (!string.IsNullOrEmpty(defaultHost)) - m_gateKeeperURL = new OSHostURL(defaultHost, true); + if (!string.IsNullOrEmpty(defaultURI)) + m_gateKeeperURL = new OSHostURL(defaultURI, true); } else { @@ -235,8 +235,8 @@ namespace OpenSim.Framework { if (!string.IsNullOrEmpty(gatekeeper)) m_homeURL = m_gateKeeperURL; - else if (!string.IsNullOrEmpty(defaultHost)) - m_homeURL = new OSHostURL(defaultHost, true); + else if (!string.IsNullOrEmpty(defaultURI)) + m_homeURL = new OSHostURL(defaultURI, true); } else m_homeURL = new OSHostURL(home, true); @@ -270,13 +270,14 @@ namespace OpenSim.Framework return m_hasHGconfig; } } + public string GateKeeperURL { get { - if(m_gateKeeperURL.URLType != UriHostNameType.Unknown) + if (m_gateKeeperURL.URLType != UriHostNameType.Unknown) return m_gateKeeperURL.URL; - return null; + return string.Empty; } } @@ -286,7 +287,27 @@ namespace OpenSim.Framework { if (m_gateKeeperURL.URLType != UriHostNameType.Unknown) return m_gateKeeperURL.URL.Substring(0, m_gateKeeperURL.URL.Length - 1); - return null; + return string.Empty; + } + } + + public string HGGateKeeperURL + { + get + { + if (m_gateKeeperURL.URLType != UriHostNameType.Unknown && m_hasHGconfig) + return m_gateKeeperURL.URL; + return string.Empty; + } + } + + public string HGGateKeeperURLNoEndSlash + { + get + { + if (m_gateKeeperURL.URLType != UriHostNameType.Unknown && m_hasHGconfig) + return m_gateKeeperURL.URL.Substring(0, m_gateKeeperURL.URL.Length - 1); + return string.Empty; } } @@ -331,6 +352,5 @@ namespace OpenSim.Framework return 1; return 0; } - } } diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index 0fbdc8dfe0..1a252817ef 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs @@ -273,10 +273,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles set; } - public string MyGatekeeper - { - get; private set; - } + private GridInfo m_thisGridInfo; #region IRegionModuleBase implementation /// @@ -304,8 +301,10 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles // If we find ProfileURL then we configure for FULL support // else we setup for BASIC support ProfileServerUri = profileConfig.GetString("ProfileServiceURL", ""); - if (ProfileServerUri == "") + OSHostURL tmp = new OSHostURL(ProfileServerUri, true); + if(tmp.IP == null) { + m_log.Debug("[PROFILES]: Fail to resolve [UserProfiles] ProfileServiceURL. UserProfiles disabled"); Enabled = false; return; } @@ -315,9 +314,6 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles m_log.Debug("[PROFILES]: Full Profiles Enabled"); ReplaceableInterface = null; Enabled = true; - - MyGatekeeper = Util.GetConfigVarFromSections(source, "GatekeeperURI", - new string[] { "Startup", "Hypergrid", "UserProfiles" }, String.Empty); } /// @@ -332,6 +328,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles return; Scene = scene; + if(m_thisGridInfo == null) + m_thisGridInfo = scene.SceneGridInfo; Scene.RegisterModuleInterface(this); Scene.EventManager.OnNewClient += OnNewClient; Scene.EventManager.OnClientClosed += OnClientClosed; @@ -393,6 +391,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles /// public void Close() { + m_thisGridInfo = null; } /// @@ -1028,13 +1027,9 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles return; } - string theirGatekeeperURI; - GetUserGatekeeperURI(targetID, out theirGatekeeperURI); - object Pick = (object)pick; if (!rpc.JsonRpcRequest (ref Pick, "pickinforequest", serverURI, UUID.Random ().ToString ())) { - remoteClient.SendAgentAlertMessage ( - "Error selecting pick", false); + remoteClient.SendAgentAlertMessage ("Error selecting pick", false); return; } pick = (UserProfilePick)Pick; @@ -1044,7 +1039,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles Vector3 globalPos = new Vector3(Vector3.Zero); Vector3.TryParse(pick.GlobalPos, out globalPos); - if (!string.IsNullOrWhiteSpace(MyGatekeeper) && pick.Gatekeeper != MyGatekeeper) + if (m_thisGridInfo.IsLocalGrid(pick.Gatekeeper, true) == 0) { // Setup the illusion string region = string.Format("{0} {1}",pick.Gatekeeper,pick.SimName); @@ -1185,7 +1180,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles pick.SnapshotId = snapshotID; pick.ParcelName = landParcelName; pick.SimName = remoteClient.Scene.RegionInfo.RegionName; - pick.Gatekeeper = MyGatekeeper; + pick.Gatekeeper = m_thisGridInfo.GateKeeperURLNoEndSlash; pick.GlobalPos = posGlobal.ToString(); pick.SortOrder = sortOrder; pick.Enabled = enabled; @@ -1853,37 +1848,6 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles } } - /// - /// Gets the user gatekeeper server URI. - /// - /// - /// The user gatekeeper server URI. - /// - /// - /// If set to true user URI. - /// - /// - /// If set to true server URI. - /// - bool GetUserGatekeeperURI(UUID userID, out string serverURI) - { - bool local; - local = UserManagementModule.IsLocalGridUser(userID); - - if (!local) - { - serverURI = UserManagementModule.GetUserServerURL(userID, "GatekeeperURI"); - // Is Foreign - return true; - } - else - { - serverURI = MyGatekeeper; - // Is local - return false; - } - } - /// /// Gets the user profile server UR. /// @@ -1903,8 +1867,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles if (!local) { - serverURI = UserManagementModule.GetUserServerURL(userID, "ProfileServerURI", out bool failled); - if(failled) + serverURI = UserManagementModule.GetUserServerURL(userID, "ProfileServerURI", out bool failed); + if(failed) serverURI = string.Empty; // Is Foreign return true;