diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Communications/LoginService.cs | 566 | ||||
-rw-r--r-- | OpenSim/Grid/UserServer/UserLoginService.cs | 14 |
2 files changed, 290 insertions, 290 deletions
diff --git a/OpenSim/Framework/Communications/LoginService.cs b/OpenSim/Framework/Communications/LoginService.cs index 029c0a6e..8778f6f 100644 --- a/OpenSim/Framework/Communications/LoginService.cs +++ b/OpenSim/Framework/Communications/LoginService.cs | |||
@@ -1,287 +1,287 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections; | 2 | using System.Collections; |
3 | using System.Collections.Generic; | 3 | using System.Collections.Generic; |
4 | using System.Reflection; | 4 | using System.Reflection; |
5 | using System.Security.Cryptography; | 5 | using System.Security.Cryptography; |
6 | using libsecondlife; | 6 | using libsecondlife; |
7 | using Nwc.XmlRpc; | 7 | using Nwc.XmlRpc; |
8 | using OpenSim.Framework.Console; | 8 | using OpenSim.Framework.Console; |
9 | using OpenSim.Framework.Interfaces; | 9 | using OpenSim.Framework.Interfaces; |
10 | using OpenSim.Framework.Inventory; | 10 | using OpenSim.Framework.Inventory; |
11 | using OpenSim.Framework.Types; | 11 | using OpenSim.Framework.Types; |
12 | using OpenSim.Framework.Utilities; | 12 | using OpenSim.Framework.Utilities; |
13 | 13 | ||
14 | using OpenSim.Framework.Configuration; | 14 | using OpenSim.Framework.Configuration; |
15 | using InventoryFolder = OpenSim.Framework.Inventory.InventoryFolder; | 15 | using InventoryFolder = OpenSim.Framework.Inventory.InventoryFolder; |
16 | 16 | ||
17 | namespace OpenSim.Framework.UserManagement | 17 | namespace OpenSim.Framework.UserManagement |
18 | { | 18 | { |
19 | public class LoginService | 19 | public class LoginService |
20 | { | 20 | { |
21 | protected string m_welcomeMessage = "Welcome to OpenSim"; | 21 | protected string m_welcomeMessage = "Welcome to OpenSim"; |
22 | protected UserManagerBase m_userManager = null; | 22 | protected UserManagerBase m_userManager = null; |
23 | 23 | ||
24 | public LoginService(UserManagerBase userManager, string welcomeMess) | 24 | public LoginService(UserManagerBase userManager, string welcomeMess) |
25 | { | ||
26 | m_userManager = userManager; | ||
27 | if (welcomeMess != "") | ||
28 | { | ||
29 | m_welcomeMessage = welcomeMess; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | /// <summary> | ||
34 | /// Main user login function | ||
35 | /// </summary> | ||
36 | /// <param name="request">The XMLRPC request</param> | ||
37 | /// <returns>The response to send</returns> | ||
38 | public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) | ||
39 | { | 25 | { |
26 | m_userManager = userManager; | ||
27 | if (welcomeMess != "") | ||
28 | { | ||
29 | m_welcomeMessage = welcomeMess; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | /// <summary> | ||
34 | /// Main user login function | ||
35 | /// </summary> | ||
36 | /// <param name="request">The XMLRPC request</param> | ||
37 | /// <returns>The response to send</returns> | ||
38 | public XmlRpcResponse XmlRpcLoginMethod(XmlRpcRequest request) | ||
39 | { | ||
40 | |||
41 | MainLog.Instance.Verbose("Attempting login now..."); | ||
42 | XmlRpcResponse response = new XmlRpcResponse(); | ||
43 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
44 | |||
45 | bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd")); | ||
46 | bool GoodLogin = false; | ||
47 | |||
48 | UserProfileData userProfile; | ||
49 | LoginResponse logResponse = new LoginResponse(); | ||
50 | |||
51 | if (GoodXML) | ||
52 | { | ||
53 | string firstname = (string)requestData["first"]; | ||
54 | string lastname = (string)requestData["last"]; | ||
55 | string passwd = (string)requestData["passwd"]; | ||
56 | |||
57 | userProfile = GetTheUser(firstname, lastname); | ||
58 | if (userProfile == null) | ||
59 | return logResponse.CreateLoginFailedResponse(); | ||
60 | |||
61 | GoodLogin = AuthenticateUser(userProfile, passwd); | ||
62 | } | ||
63 | else | ||
64 | { | ||
65 | return logResponse.CreateGridErrorResponse(); | ||
66 | } | ||
67 | |||
68 | if (!GoodLogin) | ||
69 | { | ||
70 | return logResponse.CreateLoginFailedResponse(); | ||
71 | } | ||
72 | else | ||
73 | { | ||
74 | // If we already have a session... | ||
75 | if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline) | ||
76 | { | ||
77 | // Reject the login | ||
78 | return logResponse.CreateAlreadyLoggedInResponse(); | ||
79 | } | ||
80 | // Otherwise... | ||
81 | // Create a new agent session | ||
82 | CreateAgent(userProfile, request); | ||
40 | 83 | ||
41 | MainLog.Instance.Verbose("Attempting login now..."); | 84 | try |
42 | XmlRpcResponse response = new XmlRpcResponse(); | 85 | { |
43 | Hashtable requestData = (Hashtable)request.Params[0]; | 86 | LLUUID agentID = userProfile.UUID; |
44 | 87 | ||
45 | bool GoodXML = (requestData.Contains("first") && requestData.Contains("last") && requestData.Contains("passwd")); | 88 | // Inventory Library Section |
46 | bool GoodLogin = false; | 89 | InventoryData inventData = this.CreateInventoryData(agentID); |
47 | 90 | ArrayList AgentInventoryArray = inventData.InventoryArray; | |
48 | UserProfileData userProfile; | 91 | |
49 | LoginResponse logResponse = new LoginResponse(); | 92 | Hashtable InventoryRootHash = new Hashtable(); |
50 | 93 | InventoryRootHash["folder_id"] = inventData.RootFolderID.ToStringHyphenated(); | |
51 | if (GoodXML) | 94 | ArrayList InventoryRoot = new ArrayList(); |
52 | { | 95 | InventoryRoot.Add(InventoryRootHash); |
53 | string firstname = (string)requestData["first"]; | 96 | userProfile.rootInventoryFolderID = inventData.RootFolderID; |
54 | string lastname = (string)requestData["last"]; | 97 | |
55 | string passwd = (string)requestData["passwd"]; | 98 | // Circuit Code |
56 | 99 | uint circode = (uint)(Util.RandomClass.Next()); | |
57 | userProfile = GetTheUser(firstname, lastname); | 100 | |
58 | if (userProfile == null) | 101 | logResponse.Lastname = userProfile.surname; |
59 | return logResponse.CreateLoginFailedResponse(); | 102 | logResponse.Firstname = userProfile.username; |
60 | 103 | logResponse.AgentID = agentID.ToStringHyphenated(); | |
61 | GoodLogin = AuthenticateUser(userProfile, passwd); | 104 | logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated(); |
62 | } | 105 | logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated(); |
63 | else | 106 | logResponse.InventoryRoot = InventoryRoot; |
64 | { | 107 | logResponse.InventorySkeleton = AgentInventoryArray; |
65 | return logResponse.CreateGridErrorResponse(); | 108 | logResponse.InventoryLibrary = this.GetInventoryLibrary(); |
66 | } | 109 | logResponse.InventoryLibraryOwner = this.GetLibraryOwner(); |
67 | 110 | logResponse.CircuitCode = (Int32)circode; | |
68 | if (!GoodLogin) | 111 | //logResponse.RegionX = 0; //overwritten |
69 | { | 112 | //logResponse.RegionY = 0; //overwritten |
70 | return logResponse.CreateLoginFailedResponse(); | 113 | logResponse.Home = "!!null temporary value {home}!!"; // Overwritten |
71 | } | 114 | //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n"; |
72 | else | 115 | //logResponse.SimAddress = "127.0.0.1"; //overwritten |
73 | { | 116 | //logResponse.SimPort = 0; //overwritten |
74 | // If we already have a session... | 117 | logResponse.Message = this.GetMessage(); |
75 | if (userProfile.currentAgent != null && userProfile.currentAgent.agentOnline) | 118 | |
76 | { | 119 | try |
77 | // Reject the login | 120 | { |
78 | return logResponse.CreateAlreadyLoggedInResponse(); | 121 | this.CustomiseResponse(logResponse, userProfile); |
79 | } | 122 | } |
80 | // Otherwise... | 123 | catch (Exception e) |
81 | // Create a new agent session | ||
82 | CreateAgent(userProfile, request); | ||
83 | |||
84 | try | ||
85 | { | ||
86 | LLUUID agentID = userProfile.UUID; | ||
87 | |||
88 | // Inventory Library Section | ||
89 | InventoryData inventData = this.CreateInventoryData(agentID); | ||
90 | ArrayList AgentInventoryArray = inventData.InventoryArray; | ||
91 | |||
92 | Hashtable InventoryRootHash = new Hashtable(); | ||
93 | InventoryRootHash["folder_id"] = inventData.RootFolderID.ToStringHyphenated(); | ||
94 | ArrayList InventoryRoot = new ArrayList(); | ||
95 | InventoryRoot.Add(InventoryRootHash); | ||
96 | userProfile.rootInventoryFolderID = inventData.RootFolderID; | ||
97 | |||
98 | // Circuit Code | ||
99 | uint circode = (uint)(Util.RandomClass.Next()); | ||
100 | |||
101 | logResponse.Lastname = userProfile.surname; | ||
102 | logResponse.Firstname = userProfile.username; | ||
103 | logResponse.AgentID = agentID.ToStringHyphenated(); | ||
104 | logResponse.SessionID = userProfile.currentAgent.sessionID.ToStringHyphenated(); | ||
105 | logResponse.SecureSessionID = userProfile.currentAgent.secureSessionID.ToStringHyphenated(); | ||
106 | logResponse.InventoryRoot = InventoryRoot; | ||
107 | logResponse.InventorySkeleton = AgentInventoryArray; | ||
108 | logResponse.InventoryLibrary = this.GetInventoryLibrary(); | ||
109 | logResponse.InventoryLibraryOwner = this.GetLibraryOwner(); | ||
110 | logResponse.CircuitCode = (Int32)circode; | ||
111 | //logResponse.RegionX = 0; //overwritten | ||
112 | //logResponse.RegionY = 0; //overwritten | ||
113 | logResponse.Home = "!!null temporary value {home}!!"; // Overwritten | ||
114 | //logResponse.LookAt = "\n[r" + TheUser.homeLookAt.X.ToString() + ",r" + TheUser.homeLookAt.Y.ToString() + ",r" + TheUser.homeLookAt.Z.ToString() + "]\n"; | ||
115 | //logResponse.SimAddress = "127.0.0.1"; //overwritten | ||
116 | //logResponse.SimPort = 0; //overwritten | ||
117 | logResponse.Message = this.GetMessage(); | ||
118 | |||
119 | try | ||
120 | { | ||
121 | this.CustomiseResponse(logResponse, userProfile); | ||
122 | } | ||
123 | catch (Exception e) | ||
124 | { | 124 | { |
125 | MainLog.Instance.Verbose(e.ToString()); | 125 | MainLog.Instance.Verbose(e.ToString()); |
126 | return logResponse.CreateDeadRegionResponse(); | 126 | return logResponse.CreateDeadRegionResponse(); |
127 | //return logResponse.ToXmlRpcResponse(); | 127 | //return logResponse.ToXmlRpcResponse(); |
128 | } | 128 | } |
129 | CommitAgent(ref userProfile); | 129 | CommitAgent(ref userProfile); |
130 | return logResponse.ToXmlRpcResponse(); | 130 | return logResponse.ToXmlRpcResponse(); |
131 | 131 | ||
132 | } | 132 | } |
133 | 133 | ||
134 | catch (Exception E) | 134 | catch (Exception E) |
135 | { | 135 | { |
136 | MainLog.Instance.Verbose(E.ToString()); | 136 | MainLog.Instance.Verbose(E.ToString()); |
137 | } | 137 | } |
138 | //} | 138 | //} |
139 | } | 139 | } |
140 | return response; | 140 | return response; |
141 | 141 | ||
142 | } | 142 | } |
143 | 143 | ||
144 | /// <summary> | 144 | /// <summary> |
145 | /// Customises the login response and fills in missing values. | 145 | /// Customises the login response and fills in missing values. |
146 | /// </summary> | 146 | /// </summary> |
147 | /// <param name="response">The existing response</param> | 147 | /// <param name="response">The existing response</param> |
148 | /// <param name="theUser">The user profile</param> | 148 | /// <param name="theUser">The user profile</param> |
149 | public virtual void CustomiseResponse(LoginResponse response, UserProfileData theUser) | 149 | public virtual void CustomiseResponse(LoginResponse response, UserProfileData theUser) |
150 | { | 150 | { |
151 | } | 151 | } |
152 | 152 | ||
153 | /// <summary> | 153 | /// <summary> |
154 | /// Saves a target agent to the database | 154 | /// Saves a target agent to the database |
155 | /// </summary> | 155 | /// </summary> |
156 | /// <param name="profile">The users profile</param> | 156 | /// <param name="profile">The users profile</param> |
157 | /// <returns>Successful?</returns> | 157 | /// <returns>Successful?</returns> |
158 | public bool CommitAgent(ref UserProfileData profile) | 158 | public bool CommitAgent(ref UserProfileData profile) |
159 | { | 159 | { |
160 | // Saves the agent to database | 160 | // Saves the agent to database |
161 | return true; | 161 | return true; |
162 | } | 162 | } |
163 | 163 | ||
164 | 164 | ||
165 | /// <summary> | 165 | /// <summary> |
166 | /// Checks a user against it's password hash | 166 | /// Checks a user against it's password hash |
167 | /// </summary> | 167 | /// </summary> |
168 | /// <param name="profile">The users profile</param> | 168 | /// <param name="profile">The users profile</param> |
169 | /// <param name="password">The supplied password</param> | 169 | /// <param name="password">The supplied password</param> |
170 | /// <returns>Authenticated?</returns> | 170 | /// <returns>Authenticated?</returns> |
171 | public virtual bool AuthenticateUser(UserProfileData profile, string password) | 171 | public virtual bool AuthenticateUser(UserProfileData profile, string password) |
172 | { | 172 | { |
173 | 173 | ||
174 | MainLog.Instance.Verbose( | 174 | MainLog.Instance.Verbose( |
175 | "Authenticating " + profile.username + " " + profile.surname); | 175 | "Authenticating " + profile.username + " " + profile.surname); |
176 | 176 | ||
177 | password = password.Remove(0, 3); //remove $1$ | 177 | password = password.Remove(0, 3); //remove $1$ |
178 | 178 | ||
179 | string s = Util.Md5Hash(password + ":" + profile.passwordSalt); | 179 | string s = Util.Md5Hash(password + ":" + profile.passwordSalt); |
180 | 180 | ||
181 | return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase); | 181 | return profile.passwordHash.Equals(s.ToString(), StringComparison.InvariantCultureIgnoreCase); |
182 | } | 182 | } |
183 | 183 | ||
184 | /// <summary> | 184 | /// <summary> |
185 | /// | 185 | /// |
186 | /// </summary> | 186 | /// </summary> |
187 | /// <param name="profile"></param> | 187 | /// <param name="profile"></param> |
188 | /// <param name="request"></param> | 188 | /// <param name="request"></param> |
189 | public void CreateAgent(UserProfileData profile, XmlRpcRequest request) | 189 | public void CreateAgent(UserProfileData profile, XmlRpcRequest request) |
190 | { | 190 | { |
191 | this.m_userManager.CreateAgent(profile, request); | 191 | this.m_userManager.CreateAgent(profile, request); |
192 | } | 192 | } |
193 | 193 | ||
194 | /// <summary> | 194 | /// <summary> |
195 | /// | 195 | /// |
196 | /// </summary> | 196 | /// </summary> |
197 | /// <param name="firstname"></param> | 197 | /// <param name="firstname"></param> |
198 | /// <param name="lastname"></param> | 198 | /// <param name="lastname"></param> |
199 | /// <returns></returns> | 199 | /// <returns></returns> |
200 | public virtual UserProfileData GetTheUser(string firstname, string lastname) | 200 | public virtual UserProfileData GetTheUser(string firstname, string lastname) |
201 | { | 201 | { |
202 | return this.m_userManager.GetUserProfile(firstname, lastname); | 202 | return this.m_userManager.GetUserProfile(firstname, lastname); |
203 | } | 203 | } |
204 | 204 | ||
205 | /// <summary> | 205 | /// <summary> |
206 | /// | 206 | /// |
207 | /// </summary> | 207 | /// </summary> |
208 | /// <returns></returns> | 208 | /// <returns></returns> |
209 | public virtual string GetMessage() | 209 | public virtual string GetMessage() |
210 | { | 210 | { |
211 | return m_welcomeMessage; | 211 | return m_welcomeMessage; |
212 | } | 212 | } |
213 | 213 | ||
214 | /// <summary> | 214 | /// <summary> |
215 | /// | 215 | /// |
216 | /// </summary> | 216 | /// </summary> |
217 | /// <returns></returns> | 217 | /// <returns></returns> |
218 | protected virtual ArrayList GetInventoryLibrary() | 218 | protected virtual ArrayList GetInventoryLibrary() |
219 | { | 219 | { |
220 | //return new ArrayList(); | 220 | //return new ArrayList(); |
221 | Hashtable TempHash = new Hashtable(); | 221 | Hashtable TempHash = new Hashtable(); |
222 | TempHash["name"] = "OpenSim Library"; | 222 | TempHash["name"] = "OpenSim Library"; |
223 | TempHash["parent_id"] = LLUUID.Zero.ToStringHyphenated(); | 223 | TempHash["parent_id"] = LLUUID.Zero.ToStringHyphenated(); |
224 | TempHash["version"] = 1; | 224 | TempHash["version"] = 1; |
225 | TempHash["type_default"] = -1; | 225 | TempHash["type_default"] = -1; |
226 | TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba000"; | 226 | TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba000"; |
227 | ArrayList temp = new ArrayList(); | 227 | ArrayList temp = new ArrayList(); |
228 | temp.Add(TempHash); | 228 | temp.Add(TempHash); |
229 | 229 | ||
230 | TempHash = new Hashtable(); | 230 | TempHash = new Hashtable(); |
231 | TempHash["name"] = "Texture Library"; | 231 | TempHash["name"] = "Texture Library"; |
232 | TempHash["parent_id"] = "00000112-000f-0000-0000-000100bba000"; | 232 | TempHash["parent_id"] = "00000112-000f-0000-0000-000100bba000"; |
233 | TempHash["version"] = 1; | 233 | TempHash["version"] = 1; |
234 | TempHash["type_default"] = -1; | 234 | TempHash["type_default"] = -1; |
235 | TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba001"; | 235 | TempHash["folder_id"] = "00000112-000f-0000-0000-000100bba001"; |
236 | temp.Add(TempHash); | 236 | temp.Add(TempHash); |
237 | return temp; | 237 | return temp; |
238 | } | 238 | } |
239 | 239 | ||
240 | /// <summary> | 240 | /// <summary> |
241 | /// | 241 | /// |
242 | /// </summary> | 242 | /// </summary> |
243 | /// <returns></returns> | 243 | /// <returns></returns> |
244 | protected virtual ArrayList GetLibraryOwner() | 244 | protected virtual ArrayList GetLibraryOwner() |
245 | { | 245 | { |
246 | //for now create random inventory library owner | 246 | //for now create random inventory library owner |
247 | Hashtable TempHash = new Hashtable(); | 247 | Hashtable TempHash = new Hashtable(); |
248 | TempHash["agent_id"] = "11111111-1111-0000-0000-000100bba000"; | 248 | TempHash["agent_id"] = "11111111-1111-0000-0000-000100bba000"; |
249 | ArrayList inventoryLibOwner = new ArrayList(); | 249 | ArrayList inventoryLibOwner = new ArrayList(); |
250 | inventoryLibOwner.Add(TempHash); | 250 | inventoryLibOwner.Add(TempHash); |
251 | return inventoryLibOwner; | 251 | return inventoryLibOwner; |
252 | } | 252 | } |
253 | 253 | ||
254 | protected virtual InventoryData CreateInventoryData(LLUUID userID) | 254 | protected virtual InventoryData CreateInventoryData(LLUUID userID) |
255 | { | 255 | { |
256 | AgentInventory userInventory = new AgentInventory(); | 256 | AgentInventory userInventory = new AgentInventory(); |
257 | userInventory.CreateRootFolder(userID, false); | 257 | userInventory.CreateRootFolder(userID, false); |
258 | 258 | ||
259 | ArrayList AgentInventoryArray = new ArrayList(); | 259 | ArrayList AgentInventoryArray = new ArrayList(); |
260 | Hashtable TempHash; | 260 | Hashtable TempHash; |
261 | foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values) | 261 | foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values) |
262 | { | 262 | { |
263 | TempHash = new Hashtable(); | 263 | TempHash = new Hashtable(); |
264 | TempHash["name"] = InvFolder.FolderName; | 264 | TempHash["name"] = InvFolder.FolderName; |
265 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | 265 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); |
266 | TempHash["version"] = (Int32)InvFolder.Version; | 266 | TempHash["version"] = (Int32)InvFolder.Version; |
267 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | 267 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; |
268 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | 268 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); |
269 | AgentInventoryArray.Add(TempHash); | 269 | AgentInventoryArray.Add(TempHash); |
270 | } | 270 | } |
271 | 271 | ||
272 | return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID); | 272 | return new InventoryData(AgentInventoryArray, userInventory.InventoryRoot.FolderID); |
273 | } | 273 | } |
274 | 274 | ||
275 | public class InventoryData | 275 | public class InventoryData |
276 | { | 276 | { |
277 | public ArrayList InventoryArray = null; | 277 | public ArrayList InventoryArray = null; |
278 | public LLUUID RootFolderID = LLUUID.Zero; | 278 | public LLUUID RootFolderID = LLUUID.Zero; |
279 | 279 | ||
280 | public InventoryData(ArrayList invList, LLUUID rootID) | 280 | public InventoryData(ArrayList invList, LLUUID rootID) |
281 | { | 281 | { |
282 | InventoryArray = invList; | 282 | InventoryArray = invList; |
283 | RootFolderID = rootID; | 283 | RootFolderID = rootID; |
284 | } | 284 | } |
285 | } | 285 | } |
286 | } | 286 | } |
287 | } | 287 | } |
diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index ad26840..e18191f 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs | |||
@@ -37,8 +37,8 @@ namespace OpenSim.Grid.UserServer | |||
37 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + | 37 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + |
38 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; | 38 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; |
39 | 39 | ||
40 | // Destination | 40 | // Destination |
41 | MainLog.Instance.Verbose("CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + SimInfo.regionLocY); | 41 | Console.WriteLine("CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " + SimInfo.regionLocY); |
42 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverIP).ToString(); | 42 | response.SimAddress = Util.GetHostFromDNS(SimInfo.serverIP).ToString(); |
43 | response.SimPort = (Int32)SimInfo.serverPort; | 43 | response.SimPort = (Int32)SimInfo.serverPort; |
44 | response.RegionX = SimInfo.regionLocX; | 44 | response.RegionX = SimInfo.regionLocX; |
@@ -48,8 +48,8 @@ namespace OpenSim.Grid.UserServer | |||
48 | string capsPath = Util.GetRandomCapsPath(); | 48 | string capsPath = Util.GetRandomCapsPath(); |
49 | response.SeedCapability = SimInfo.httpServerURI + "CAPS/" + capsPath + "0000/"; | 49 | response.SeedCapability = SimInfo.httpServerURI + "CAPS/" + capsPath + "0000/"; |
50 | 50 | ||
51 | // Notify the target of an incoming user | 51 | // Notify the target of an incoming user |
52 | MainLog.Instance.Verbose("Notifying " + SimInfo.regionName + " (" + SimInfo.serverURI + ")"); | 52 | Console.WriteLine("Notifying " + SimInfo.regionName + " (" + SimInfo.serverURI + ")"); |
53 | 53 | ||
54 | // Prepare notification | 54 | // Prepare notification |
55 | Hashtable SimParams = new Hashtable(); | 55 | Hashtable SimParams = new Hashtable(); |
@@ -69,9 +69,9 @@ namespace OpenSim.Grid.UserServer | |||
69 | 69 | ||
70 | // Update agent with target sim | 70 | // Update agent with target sim |
71 | theUser.currentAgent.currentRegion = SimInfo.UUID; | 71 | theUser.currentAgent.currentRegion = SimInfo.UUID; |
72 | theUser.currentAgent.currentHandle = SimInfo.regionHandle; | 72 | theUser.currentAgent.currentHandle = SimInfo.regionHandle; |
73 | 73 | ||
74 | MainLog.Instance.Verbose("Informing region --> " + SimInfo.httpServerURI); | 74 | System.Console.WriteLine("Informing region --> " + SimInfo.httpServerURI); |
75 | // Send | 75 | // Send |
76 | try | 76 | try |
77 | { | 77 | { |