aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid
diff options
context:
space:
mode:
authorDiva Canto2010-01-10 10:40:07 -0800
committerDiva Canto2010-01-10 10:40:07 -0800
commit1e1b2ab221851efc414678b7ea52ef2ca788ce9f (patch)
tree29b6aa80e54a9c18529ae14e7d185fe67582d151 /OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid
parentAdd a "LockedOut" flag to allow locking a region out via the grid server. (diff)
downloadopensim-SC_OLD-1e1b2ab221851efc414678b7ea52ef2ca788ce9f.zip
opensim-SC_OLD-1e1b2ab221851efc414678b7ea52ef2ca788ce9f.tar.gz
opensim-SC_OLD-1e1b2ab221851efc414678b7ea52ef2ca788ce9f.tar.bz2
opensim-SC_OLD-1e1b2ab221851efc414678b7ea52ef2ca788ce9f.tar.xz
* OMG! All but one references to UserProfileCacheService have been rerouted!
* HG is seriously broken here * Compiles. Untested.
Diffstat (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs195
1 files changed, 107 insertions, 88 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs
index 501f730..3c1f7b6 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs
@@ -38,6 +38,7 @@ using OpenSim.Region.Framework.Scenes;
38using OpenSim.Region.Framework.Scenes.Hypergrid; 38using OpenSim.Region.Framework.Scenes.Hypergrid;
39using OpenSim.Services.Interfaces; 39using OpenSim.Services.Interfaces;
40using GridRegion = OpenSim.Services.Interfaces.GridRegion; 40using GridRegion = OpenSim.Services.Interfaces.GridRegion;
41using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
41using OpenSim.Server.Base; 42using OpenSim.Server.Base;
42using OpenSim.Services.Connectors.Grid; 43using OpenSim.Services.Connectors.Grid;
43using OpenSim.Framework.Console; 44using OpenSim.Framework.Console;
@@ -603,93 +604,105 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
603 604
604 public bool SendUserInformation(GridRegion regInfo, AgentCircuitData agentData) 605 public bool SendUserInformation(GridRegion regInfo, AgentCircuitData agentData)
605 { 606 {
606 CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID); 607 // REFACTORING PROBLEM. This needs to change. Some of this info should go with the agent circuit data.
607 608
608 if (uinfo == null) 609 //UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, agentData.AgentID);
609 return false; 610 //if (account == null)
610 611 // return false;
611 if ((IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) ||
612 (!IsLocalUser(uinfo) && !IsGoingHome(uinfo, regInfo)))
613 {
614 m_log.Info("[HGrid]: Local user is going to foreign region or foreign user is going elsewhere");
615
616 // Set the position of the region on the remote grid
617// ulong realHandle = FindRegionHandle(regInfo.RegionHandle);
618 uint x = 0, y = 0;
619 Utils.LongToUInts(regInfo.RegionHandle, out x, out y);
620 GridRegion clonedRegion = new GridRegion(regInfo);
621 clonedRegion.RegionLocX = (int)x;
622 clonedRegion.RegionLocY = (int)y;
623
624 // Get the user's home region information and adapt the region handle
625 GridRegion home = GetRegionByUUID(m_aScene.RegionInfo.ScopeID, uinfo.UserProfile.HomeRegionID);
626 if (m_HyperlinkHandles.ContainsKey(uinfo.UserProfile.HomeRegionID))
627 {
628 ulong realHandle = m_HyperlinkHandles[uinfo.UserProfile.HomeRegionID];
629 Utils.LongToUInts(realHandle, out x, out y);
630 m_log.DebugFormat("[HGrid]: Foreign user is going elsewhere. Adjusting home handle from {0}-{1} to {2}-{3}", home.RegionLocX, home.RegionLocY, x, y);
631 home.RegionLocX = (int)x;
632 home.RegionLocY = (int)y;
633 }
634 612
635 // Get the user's service URLs 613 //if ((IsLocalUser(account) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) ||
636 string serverURI = ""; 614 // (!IsLocalUser(account) && !IsGoingHome(uinfo, regInfo)))
637 if (uinfo.UserProfile is ForeignUserProfileData)
638 serverURI = Util.ServerURI(((ForeignUserProfileData)uinfo.UserProfile).UserServerURI);
639 string userServer = (serverURI == "") || (serverURI == null) ? LocalUserServerURI : serverURI;
640
641 string assetServer = Util.ServerURI(uinfo.UserProfile.UserAssetURI);
642 if ((assetServer == null) || (assetServer == ""))
643 assetServer = LocalAssetServerURI;
644
645 string inventoryServer = Util.ServerURI(uinfo.UserProfile.UserInventoryURI);
646 if ((inventoryServer == null) || (inventoryServer == ""))
647 inventoryServer = LocalInventoryServerURI;
648
649 if (!m_HypergridServiceConnector.InformRegionOfUser(clonedRegion, agentData, home, userServer, assetServer, inventoryServer))
650 {
651 m_log.Warn("[HGrid]: Could not inform remote region of transferring user.");
652 return false;
653 }
654 }
655 //if ((uinfo == null) || !IsGoingHome(uinfo, regInfo))
656 //{ 615 //{
657 // m_log.Info("[HGrid]: User seems to be going to foreign region."); 616 // m_log.Info("[HGrid]: Local user is going to foreign region or foreign user is going elsewhere");
658 // if (!InformRegionOfUser(regInfo, agentData)) 617
618 // PresenceInfo pinfo = m_aScene.PresenceService.GetAgent(agentData.SessionID);
619 // if (pinfo != null)
620 // {
621 // // Set the position of the region on the remote grid
622 // // ulong realHandle = FindRegionHandle(regInfo.RegionHandle);
623 // uint x = 0, y = 0;
624 // Utils.LongToUInts(regInfo.RegionHandle, out x, out y);
625 // GridRegion clonedRegion = new GridRegion(regInfo);
626 // clonedRegion.RegionLocX = (int)x;
627 // clonedRegion.RegionLocY = (int)y;
628
629 // // Get the user's home region information and adapt the region handle
630 // GridRegion home = GetRegionByUUID(m_aScene.RegionInfo.ScopeID, pinfo.HomeRegionID);
631 // if (m_HyperlinkHandles.ContainsKey(pinfo.HomeRegionID))
632 // {
633 // ulong realHandle = m_HyperlinkHandles[pinfo.HomeRegionID];
634 // Utils.LongToUInts(realHandle, out x, out y);
635 // m_log.DebugFormat("[HGrid]: Foreign user is going elsewhere. Adjusting home handle from {0}-{1} to {2}-{3}", home.RegionLocX, home.RegionLocY, x, y);
636 // home.RegionLocX = (int)x;
637 // home.RegionLocY = (int)y;
638 // }
639
640 // // Get the user's service URLs
641 // string serverURI = "";
642 // if (uinfo.UserProfile is ForeignUserProfileData)
643 // serverURI = Util.ServerURI(((ForeignUserProfileData)uinfo.UserProfile).UserServerURI);
644 // string userServer = (serverURI == "") || (serverURI == null) ? LocalUserServerURI : serverURI;
645
646 // string assetServer = Util.ServerURI(uinfo.UserProfile.UserAssetURI);
647 // if ((assetServer == null) || (assetServer == ""))
648 // assetServer = LocalAssetServerURI;
649
650 // string inventoryServer = Util.ServerURI(uinfo.UserProfile.UserInventoryURI);
651 // if ((inventoryServer == null) || (inventoryServer == ""))
652 // inventoryServer = LocalInventoryServerURI;
653
654 // if (!m_HypergridServiceConnector.InformRegionOfUser(clonedRegion, agentData, home, userServer, assetServer, inventoryServer))
655 // {
656 // m_log.Warn("[HGrid]: Could not inform remote region of transferring user.");
657 // return false;
658 // }
659 // }
660 // else
659 // { 661 // {
660 // m_log.Warn("[HGrid]: Could not inform remote region of transferring user."); 662 // m_log.Warn("[HGrid]: Unable to find local presence of transferring user.");
661 // return false; 663 // return false;
662 // } 664 // }
663 //} 665 //}
664 //else 666 ////if ((uinfo == null) || !IsGoingHome(uinfo, regInfo))
665 // m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName); 667 ////{
666 668 //// m_log.Info("[HGrid]: User seems to be going to foreign region.");
667 // May need to change agent's name 669 //// if (!InformRegionOfUser(regInfo, agentData))
668 if (IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) 670 //// {
669 { 671 //// m_log.Warn("[HGrid]: Could not inform remote region of transferring user.");
670 agentData.firstname = agentData.firstname + "." + agentData.lastname; 672 //// return false;
671 agentData.lastname = "@" + LocalUserServerURI.Replace("http://", ""); ; //HGNetworkServersInfo.Singleton.LocalUserServerURI; 673 //// }
672 } 674 ////}
675 ////else
676 //// m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName);
677
678 //// May need to change agent's name
679 //if (IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null))
680 //{
681 // agentData.firstname = agentData.firstname + "." + agentData.lastname;
682 // agentData.lastname = "@" + LocalUserServerURI.Replace("http://", ""); ; //HGNetworkServersInfo.Singleton.LocalUserServerURI;
683 //}
673 684
674 return true; 685 return true;
675 } 686 }
676 687
677 public void AdjustUserInformation(AgentCircuitData agentData) 688 public void AdjustUserInformation(AgentCircuitData agentData)
678 { 689 {
679 CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID); 690 // REFACTORING PROBLEM!!! This needs to change
680 if ((uinfo != null) && (uinfo.UserProfile != null) && 691
681 (IsLocalUser(uinfo) || !(uinfo.UserProfile is ForeignUserProfileData))) 692 //CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID);
682 { 693 //if ((uinfo != null) && (uinfo.UserProfile != null) &&
683 //m_log.Debug("---------------> Local User!"); 694 // (IsLocalUser(uinfo) || !(uinfo.UserProfile is ForeignUserProfileData)))
684 string[] parts = agentData.firstname.Split(new char[] { '.' }); 695 //{
685 if (parts.Length == 2) 696 // //m_log.Debug("---------------> Local User!");
686 { 697 // string[] parts = agentData.firstname.Split(new char[] { '.' });
687 agentData.firstname = parts[0]; 698 // if (parts.Length == 2)
688 agentData.lastname = parts[1]; 699 // {
689 } 700 // agentData.firstname = parts[0];
690 } 701 // agentData.lastname = parts[1];
691 //else 702 // }
692 // m_log.Debug("---------------> Foreign User!"); 703 //}
704 ////else
705 //// m_log.Debug("---------------> Foreign User!");
693 } 706 }
694 707
695 // Check if a local user exists with the same UUID as the incoming foreign user 708 // Check if a local user exists with the same UUID as the incoming foreign user
@@ -699,16 +712,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
699 if (!m_aScene.SceneGridService.RegionLoginsEnabled) 712 if (!m_aScene.SceneGridService.RegionLoginsEnabled)
700 return false; 713 return false;
701 714
702 CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); 715 UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, userID);
703 if (uinfo != null) 716 if (account != null)
704 { 717 {
705 // uh-oh we have a potential intruder 718 if (m_aScene.AuthenticationService.Verify(userID, sessionID.ToString(), 30))
706 if (uinfo.SessionID != sessionID) 719 {
707 // can't have a foreigner with a local UUID
708 return false;
709 else
710 // oh, so it's you! welcome back 720 // oh, so it's you! welcome back
711 comingHome = true; 721 comingHome = true;
722 }
723 else
724 // can't have a foreigner with a local UUID
725 return false;
712 } 726 }
713 727
714 // OK, user can come in 728 // OK, user can come in
@@ -717,7 +731,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
717 731
718 public void AcceptUser(ForeignUserProfileData user, GridRegion home) 732 public void AcceptUser(ForeignUserProfileData user, GridRegion home)
719 { 733 {
720 m_aScene.CommsManager.UserProfileCacheService.PreloadUserCache(user); 734 // REFACTORING PROBLEM. uh-oh, commenting this breaks HG completely
735 // Needs to be rewritten
736 //m_aScene.CommsManager.UserProfileCacheService.PreloadUserCache(user);
737
721 ulong realHandle = home.RegionHandle; 738 ulong realHandle = home.RegionHandle;
722 // Change the local coordinates 739 // Change the local coordinates
723 // X=0 on the map 740 // X=0 on the map
@@ -733,8 +750,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
733 750
734 public bool IsLocalUser(UUID userID) 751 public bool IsLocalUser(UUID userID)
735 { 752 {
736 CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); 753 UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, userID);
737 return IsLocalUser(uinfo); 754 return IsLocalUser(account);
738 } 755 }
739 756
740 #endregion 757 #endregion
@@ -767,13 +784,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
767 return (uinfo.UserProfile.HomeRegionID == rinfo.RegionID); 784 return (uinfo.UserProfile.HomeRegionID == rinfo.RegionID);
768 } 785 }
769 786
770 protected bool IsLocalUser(CachedUserInfo uinfo) 787 protected bool IsLocalUser(UserAccount account)
771 { 788 {
772 if (uinfo == null) 789 if (account != null &&
773 return false; 790 account.ServiceURLs.ContainsKey("HomeURI") &&
791 account.ServiceURLs["HomeURI"] != null)
774 792
775 return !(uinfo.UserProfile is ForeignUserProfileData); 793 return (account.ServiceURLs["HomeURI"].ToString() == LocalUserServerURI);
776 794
795 return false;
777 } 796 }
778 797
779 798