aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs76
1 files changed, 43 insertions, 33 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs
index 66de8e4..4eecaa2 100644
--- a/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/UserManagement/HGUserManagementModule.cs
@@ -71,43 +71,52 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
71 71
72 protected override void AddAdditionalUsers(UUID avatarID, string query, List<UserData> users) 72 protected override void AddAdditionalUsers(UUID avatarID, string query, List<UserData> users)
73 { 73 {
74 string[] words = query.Split(new char[] { ' ' }); 74 if (query.Contains("@")) // First.Last@foo.com, maybe?
75
76 for (int i = 0; i < words.Length; i++)
77 { 75 {
78 if (words[i].Length < 3) 76 string[] words = query.Split(new char[] { '@' });
77 if (words.Length != 2)
79 { 78 {
80 if (i != words.Length - 1) 79 m_log.DebugFormat("[USER MANAGEMENT MODULE]: Malformed address {0}", query);
81 Array.Copy(words, i + 1, words, i, words.Length - i - 1); 80 return;
82 Array.Resize(ref words, words.Length - 1);
83 } 81 }
84 }
85 82
86 if (words.Length == 0 || words.Length > 2) 83 words[0] = words[0].Trim(); // it has at least 1
87 return; 84 words[1] = words[1].Trim();
88 85
89 if (words.Length == 2) // First.Last @foo.com, maybe? 86 if (words[0] == String.Empty) // query was @foo.com?
90 { 87 {
91 bool found = false; 88 foreach (UserData d in m_UserCache.Values)
89 {
90 if (d.LastName.ToLower().StartsWith("@" + words[1].ToLower()))
91 users.Add(d);
92 }
93
94 // We're done
95 return;
96 }
97
98 // words.Length == 2 and words[0] != string.empty
99 // first.last@foo.com ?
92 foreach (UserData d in m_UserCache.Values) 100 foreach (UserData d in m_UserCache.Values)
93 { 101 {
94 if (d.LastName.StartsWith("@") && 102 if (d.LastName.StartsWith("@") &&
95 d.FirstName.ToLower().Equals(words[0].ToLower()) && 103 d.FirstName.ToLower().Equals(words[0].ToLower()) &&
96 d.LastName.ToLower().Equals(words[1].ToLower())) 104 d.LastName.ToLower().Equals("@" + words[1].ToLower()))
97 { 105 {
98 users.Add(d); 106 users.Add(d);
99 found = true; 107 // It's cached. We're done
100 break; 108 return;
101 } 109 }
102 } 110 }
103 111
104 if (!found && words[1].StartsWith("@") && words[0].Contains(".")) // This is it! Let's ask the other world 112 // This is it! Let's ask the other world
113 if (words[0].Contains("."))
105 { 114 {
106 string[] names = words[0].Split(new char[] { '.' }); 115 string[] names = words[0].Split(new char[] { '.' });
107 if (names.Length >= 2) 116 if (names.Length >= 2)
108 { 117 {
109 118
110 string uriStr = "http://" + words[1].Substring(1); // remove the @ 119 string uriStr = "http://" + words[1];
111 // Let's check that the last name is a valid address 120 // Let's check that the last name is a valid address
112 try 121 try
113 { 122 {
@@ -115,6 +124,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
115 } 124 }
116 catch (UriFormatException) 125 catch (UriFormatException)
117 { 126 {
127 m_log.DebugFormat("[USER MANAGEMENT MODULE]: Malformed address {0}", uriStr);
118 return; 128 return;
119 } 129 }
120 130
@@ -125,26 +135,26 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
125 UserData ud = new UserData(); 135 UserData ud = new UserData();
126 ud.Id = userID; 136 ud.Id = userID;
127 ud.FirstName = words[0]; 137 ud.FirstName = words[0];
128 ud.LastName = words[1]; 138 ud.LastName = "@" + words[1];
129 users.Add(ud); 139 users.Add(ud);
130 AddUser(userID, ud.FirstName, ud.LastName, uriStr); 140 AddUser(userID, names[0], names[1], uriStr);
131 m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0} {1} found", words[0], words[1]); 141 m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0}@{1} found", words[0], words[1]);
132 } 142 }
133 else 143 else
134 m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0} {1} not found", words[0], words[1]); 144 m_log.DebugFormat("[USER MANAGEMENT MODULE]: User {0}@{1} not found", words[0], words[1]);
135 } 145 }
136 } 146 }
137 } 147 }
138 else 148 //else
139 { 149 //{
140 foreach (UserData d in m_UserCache.Values) 150 // foreach (UserData d in m_UserCache.Values)
141 { 151 // {
142 if (d.LastName.StartsWith("@") && 152 // if (d.LastName.StartsWith("@") &&
143 (d.FirstName.ToLower().StartsWith(query.ToLower()) || 153 // (d.FirstName.ToLower().StartsWith(query.ToLower()) ||
144 d.LastName.ToLower().StartsWith(query.ToLower()))) 154 // d.LastName.ToLower().StartsWith(query.ToLower())))
145 users.Add(d); 155 // users.Add(d);
146 } 156 // }
147 } 157 //}
148 } 158 }
149 159
150 } 160 }