aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs116
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/RemoteUserAccountServiceConnector.cs2
2 files changed, 116 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
index b72593c..2fd9183 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs
@@ -481,6 +481,121 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
481 return user.FirstName + " " + user.LastName; 481 return user.FirstName + " " + user.LastName;
482 } 482 }
483 483
484 public virtual Dictionary<UUID,string> GetUsersNames(string[] ids)
485 {
486 Dictionary<UUID,string> ret = new Dictionary<UUID,string>();
487 if(m_Scenes.Count <= 0)
488 return ret;
489
490 List<string> missing = new List<string>();
491
492 // look in cache
493 UserData userdata = new UserData();
494 UUID uuid = UUID.Zero;
495 foreach(string id in ids)
496 {
497 if(UUID.TryParse(id, out uuid))
498 {
499 lock (m_UserCache)
500 {
501 if (m_UserCache.TryGetValue(uuid, out userdata) &&
502 userdata.HasGridUserTried &&
503 userdata.FirstName != "Unknown")
504 {
505 string name = userdata.FirstName + " " + userdata.LastName;
506 ret[uuid] = name;
507 }
508 else
509 missing.Add(id);
510 }
511 }
512 }
513
514 if(missing.Count == 0)
515 return ret;
516
517 // try user account service
518 List<UserAccount> accounts = m_Scenes[0].UserAccountService.GetUserAccounts(
519 m_Scenes[0].RegionInfo.ScopeID, missing);
520
521 if(accounts.Count != 0)
522 {
523 foreach(UserAccount uac in accounts)
524 {
525 if(uac != null)
526 {
527 string name = uac.FirstName + " " + uac.LastName;
528 ret[uac.PrincipalID] = name;
529 missing.Remove(uac.PrincipalID.ToString()); // slowww
530
531 userdata = new UserData();
532 userdata.Id = uac.PrincipalID;
533 userdata.FirstName = uac.FirstName;
534 userdata.LastName = uac.LastName;
535 userdata.HomeURL = string.Empty;
536 userdata.IsUnknownUser = false;
537 userdata.HasGridUserTried = true;
538 lock (m_UserCache)
539 m_UserCache[uac.PrincipalID] = userdata;
540 }
541 }
542 }
543
544 if (missing.Count == 0 || m_Scenes[0].GridUserService == null)
545 return ret;
546
547 // try grid user service
548
549 GridUserInfo[] pinfos = m_Scenes[0].GridUserService.GetGridUserInfo(missing.ToArray());
550 if(pinfos.Length > 0)
551 {
552 foreach(GridUserInfo uInfo in pinfos)
553 {
554 if (uInfo != null)
555 {
556 string url, first, last, tmp;
557 UUID u;
558 if(uInfo.UserID.Length <= 36)
559 continue;
560
561 if (Util.ParseUniversalUserIdentifier(uInfo.UserID, out u, out url, out first, out last, out tmp))
562 {
563 if (url != string.Empty)
564 {
565 try
566 {
567 string name = first.Replace(" ", ".") + "." + last.Replace(" ", ".") + " @" + new Uri(url).Authority;
568 ret[u] = name;
569 missing.Remove(u.ToString());
570 }
571 catch
572 {
573 }
574 }
575 }
576 }
577 }
578 }
579
580 // add the UMMthings ( not sure we should)
581 if(missing.Count > 0)
582 {
583 foreach(string id in missing)
584 {
585 if(UUID.TryParse(id, out uuid) && uuid != UUID.Zero)
586 {
587 if (m_Scenes[0].LibraryService != null &&
588 (m_Scenes[0].LibraryService.LibraryRootFolder.Owner == uuid))
589 ret[uuid] = "Mr OpenSim";
590 else
591 ret[uuid] = "Unknown UserUMMAU43";
592 }
593 }
594 }
595
596 return ret;
597 }
598
484 public virtual string GetUserHomeURL(UUID userID) 599 public virtual string GetUserHomeURL(UUID userID)
485 { 600 {
486 UserData user; 601 UserData user;
@@ -584,7 +699,6 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
584 else 699 else
585 { 700 {
586 userdata = new UserData(); 701 userdata = new UserData();
587 userdata.HasGridUserTried = false;
588 userdata.Id = uuid; 702 userdata.Id = uuid;
589 userdata.FirstName = "Unknown"; 703 userdata.FirstName = "Unknown";
590 userdata.LastName = "UserUMMAU42"; 704 userdata.LastName = "UserUMMAU42";
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/RemoteUserAccountServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/RemoteUserAccountServiceConnector.cs
index ce1754f..90c90d6 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/RemoteUserAccountServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/RemoteUserAccountServiceConnector.cs
@@ -165,7 +165,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts
165 List<UserAccount> accs = new List<UserAccount>(); 165 List<UserAccount> accs = new List<UserAccount>();
166 List<string> missing = new List<string>(); 166 List<string> missing = new List<string>();
167 167
168 UUID uuid = UUID.Zero;; 168 UUID uuid = UUID.Zero;
169 UserAccount account; 169 UserAccount account;
170 bool inCache = false; 170 bool inCache = false;
171 171