diff options
-rw-r--r-- | OpenSim.Servers/LoginResponse.cs | 405 |
1 files changed, 326 insertions, 79 deletions
diff --git a/OpenSim.Servers/LoginResponse.cs b/OpenSim.Servers/LoginResponse.cs index 5169231..9c5db6a 100644 --- a/OpenSim.Servers/LoginResponse.cs +++ b/OpenSim.Servers/LoginResponse.cs | |||
@@ -38,11 +38,13 @@ using System.Security.Cryptography; | |||
38 | using System.Xml; | 38 | using System.Xml; |
39 | using libsecondlife; | 39 | using libsecondlife; |
40 | using OpenSim; | 40 | using OpenSim; |
41 | using OpenSim.Framework.Interfaces; | ||
42 | using OpenSim.Framework.Grid; | ||
43 | using OpenSim.Framework.Inventory; | ||
44 | using OpenSim.Framework.User; | 41 | using OpenSim.Framework.User; |
42 | using OpenSim.Framework.Inventory; | ||
45 | using OpenSim.Framework.Utilities; | 43 | using OpenSim.Framework.Utilities; |
44 | using OpenSim.Framework.Interfaces; | ||
45 | |||
46 | // ? | ||
47 | using OpenSim.Framework.Grid; | ||
46 | 48 | ||
47 | namespace OpenSim.UserServer | 49 | namespace OpenSim.UserServer |
48 | { | 50 | { |
@@ -56,9 +58,26 @@ namespace OpenSim.UserServer | |||
56 | private Hashtable loginFlagsHash; | 58 | private Hashtable loginFlagsHash; |
57 | private Hashtable globalTexturesHash; | 59 | private Hashtable globalTexturesHash; |
58 | private Hashtable loginError; | 60 | private Hashtable loginError; |
61 | private Hashtable eventCategoriesHash; | ||
62 | private Hashtable uiConfigHash; | ||
63 | private Hashtable classifiedCategoriesHash; | ||
59 | 64 | ||
60 | private ArrayList loginFlags; | 65 | private ArrayList loginFlags; |
61 | private ArrayList globalTextures; | 66 | private ArrayList globalTextures; |
67 | private ArrayList eventCategories; | ||
68 | private ArrayList uiConfig; | ||
69 | private ArrayList classifiedCategories; | ||
70 | private ArrayList inventoryRoot; | ||
71 | private ArrayList initialOutfit; | ||
72 | private ArrayList agentInventory; | ||
73 | |||
74 | private UserProfile userProfile; | ||
75 | |||
76 | private LLUUID agentID; | ||
77 | private LLUUID sessionID; | ||
78 | private LLUUID secureSessionID; | ||
79 | private LLUUID baseFolderID; | ||
80 | private LLUUID inventoryFolderID; | ||
62 | 81 | ||
63 | // Login Flags | 82 | // Login Flags |
64 | private string dst; | 83 | private string dst; |
@@ -68,10 +87,14 @@ namespace OpenSim.UserServer | |||
68 | private string login; | 87 | private string login; |
69 | private string simPort; | 88 | private string simPort; |
70 | private string simAddress; | 89 | private string simAddress; |
71 | private string agentID; | 90 | private string agentAccess; |
72 | private string sessionID; | ||
73 | private string secureSessionID; | ||
74 | private Int32 circuitCode; | 91 | private Int32 circuitCode; |
92 | private uint regionX; | ||
93 | private uint regionY; | ||
94 | |||
95 | // Login | ||
96 | private string firstname; | ||
97 | private string lastname; | ||
75 | 98 | ||
76 | // Global Textures | 99 | // Global Textures |
77 | private string sunTexture; | 100 | private string sunTexture; |
@@ -85,65 +108,115 @@ namespace OpenSim.UserServer | |||
85 | // Response | 108 | // Response |
86 | private XmlRpcResponse xmlRpcResponse; | 109 | private XmlRpcResponse xmlRpcResponse; |
87 | private XmlRpcResponse defaultXmlRpcResponse; | 110 | private XmlRpcResponse defaultXmlRpcResponse; |
88 | private string defaultTextResponse; | ||
89 | 111 | ||
90 | private uint regionX; | 112 | private string welcomeMessage; |
91 | private uint regionY; | 113 | private string startLocation; |
114 | private string allowFirstLife; | ||
115 | private string home; | ||
116 | private string seedCapability; | ||
117 | private string lookAt; | ||
92 | 118 | ||
93 | public LoginResponse(uint regX, uint regY) | 119 | public LoginResponse() |
94 | { | 120 | { |
95 | this.loginFlags = new ArrayList(); | 121 | this.loginFlags = new ArrayList(); |
96 | this.globalTextures = new ArrayList(); | 122 | this.globalTextures = new ArrayList(); |
97 | this.SetDefaultValues(); | 123 | this.eventCategories = new ArrayList(); |
98 | regionX = regX; | 124 | this.uiConfig = new ArrayList(); |
99 | regionY = regY; | 125 | this.classifiedCategories = new ArrayList(); |
100 | } // LoginServer | ||
101 | 126 | ||
102 | // This will go away as we replace new-login.dat: | 127 | this.loginError = new Hashtable(); |
103 | private void GetDefaultResponse() | 128 | this.eventCategoriesHash = new Hashtable(); |
104 | { | 129 | this.classifiedCategoriesHash = new Hashtable(); |
105 | try | 130 | this.uiConfigHash = new Hashtable(); |
106 | { | ||
107 | // read in default response string | ||
108 | StreamReader SR; | ||
109 | string lines; | ||
110 | SR = File.OpenText("new-login.dat"); | ||
111 | 131 | ||
112 | this.defaultTextResponse = ""; | 132 | this.defaultXmlRpcResponse = new XmlRpcResponse(); |
113 | while (!SR.EndOfStream) | 133 | this.userProfile = new UserProfile(); |
114 | { | 134 | this.inventoryRoot = new ArrayList(); |
115 | lines = SR.ReadLine(); | 135 | this.initialOutfit = new ArrayList(); |
116 | this.defaultTextResponse += lines; | 136 | this.agentInventory = new ArrayList(); |
117 | } | ||
118 | SR.Close(); | ||
119 | this.defaultXmlRpcResponse = (XmlRpcResponse)(new XmlRpcResponseDeserializer()).Deserialize(this.defaultTextResponse); | ||
120 | } | ||
121 | catch (Exception E) | ||
122 | { | ||
123 | Console.WriteLine(E.ToString()); | ||
124 | } | ||
125 | } // GetDefaultResponse | ||
126 | 137 | ||
127 | public void SetDefaultValues() | 138 | this.xmlRpcResponse = new XmlRpcResponse(); |
128 | { | 139 | this.defaultXmlRpcResponse = new XmlRpcResponse(); |
129 | this.GetDefaultResponse(); | ||
130 | |||
131 | this.DST = "N"; | ||
132 | this.StipendSinceLogin = "N"; | ||
133 | this.Gendered = "Y"; | ||
134 | this.EverLoggedIn = "Y"; | ||
135 | this.login = "false"; | ||
136 | 140 | ||
137 | this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271"; | 141 | this.SetDefaultValues(); |
138 | this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | 142 | } // LoginServer |
139 | this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||
140 | 143 | ||
141 | this.ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock."; | 144 | public void SetDefaultValues() |
142 | this.ErrorReason = "key"; | 145 | { |
146 | this.DST = "N"; | ||
147 | this.StipendSinceLogin = "N"; | ||
148 | this.Gendered = "Y"; | ||
149 | this.EverLoggedIn = "Y"; | ||
150 | this.login = "false"; | ||
151 | this.firstname = "Test"; | ||
152 | this.lastname = "User"; | ||
153 | this.agentAccess = "M"; | ||
154 | this.startLocation = "last"; | ||
155 | this.allowFirstLife = "Y"; | ||
156 | |||
157 | this.SunTexture = "cce0f112-878f-4586-a2e2-a8f104bba271"; | ||
158 | this.CloudTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||
159 | this.MoonTexture = "fc4b9f0b-d008-45c6-96a4-01dd947ac621"; | ||
160 | |||
161 | this.ErrorMessage = "You have entered an invalid name/password combination. Check Caps/lock."; | ||
162 | this.ErrorReason = "key"; | ||
163 | this.welcomeMessage = "Welcome to OpenSim!"; | ||
164 | this.seedCapability = ""; | ||
165 | this.home = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + this.userProfile.homepos.X.ToString() + ",r" + this.userProfile.homepos.Y.ToString() + ",r" + this.userProfile.homepos.Z.ToString() + "], 'look_at':[r" + this.userProfile.homelookat.X.ToString() + ",r" + this.userProfile.homelookat.Y.ToString() + ",r" + this.userProfile.homelookat.Z.ToString() + "]}"; | ||
166 | this.lookAt = "[r0.99949799999999999756,r0.03166859999999999814,r0]"; | ||
167 | this.RegionX = (uint)255232; | ||
168 | this.RegionY = (uint)254976; | ||
169 | |||
170 | // Classifieds; | ||
171 | this.AddClassifiedCategory((Int32)1, "Shopping"); | ||
172 | this.AddClassifiedCategory((Int32)2, "Land Rental"); | ||
173 | this.AddClassifiedCategory((Int32)3, "Property Rental"); | ||
174 | this.AddClassifiedCategory((Int32)4, "Special Attraction"); | ||
175 | this.AddClassifiedCategory((Int32)5, "New Products"); | ||
176 | this.AddClassifiedCategory((Int32)6, "Employment"); | ||
177 | this.AddClassifiedCategory((Int32)7, "Wanted"); | ||
178 | this.AddClassifiedCategory((Int32)8, "Service"); | ||
179 | this.AddClassifiedCategory((Int32)9, "Personal"); | ||
180 | |||
181 | int SessionRand = Util.RandomClass.Next(1, 999); | ||
182 | this.SessionID = new LLUUID("aaaabbbb-0200-" + SessionRand.ToString("0000") + "-8664-58f53e442797"); | ||
183 | this.SecureSessionID = LLUUID.Random(); | ||
184 | |||
185 | this.userProfile.Inventory.CreateRootFolder(this.userProfile.UUID, true); | ||
186 | Hashtable InventoryRootHash = new Hashtable(); | ||
187 | InventoryRootHash["folder_id"] = this.userProfile.Inventory.InventoryRoot.FolderID.ToStringHyphenated(); | ||
188 | this.inventoryRoot.Add(InventoryRootHash); | ||
189 | |||
190 | Hashtable TempHash; | ||
191 | foreach (InventoryFolder InvFolder in this.userProfile.Inventory.InventoryFolders.Values) | ||
192 | { | ||
193 | TempHash = new Hashtable(); | ||
194 | TempHash["name"] = InvFolder.FolderName; | ||
195 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | ||
196 | TempHash["version"] = (Int32)InvFolder.Version; | ||
197 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | ||
198 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | ||
199 | this.agentInventory.Add(TempHash); | ||
200 | } | ||
201 | |||
202 | |||
203 | Hashtable InitialOutfitHash = new Hashtable(); | ||
204 | InitialOutfitHash["folder_name"] = "Nightclub Female"; | ||
205 | InitialOutfitHash["gender"] = "female"; | ||
206 | this.initialOutfit.Add(InitialOutfitHash); | ||
143 | 207 | ||
144 | } // SetDefaultValues | 208 | } // SetDefaultValues |
145 | 209 | ||
146 | private XmlRpcResponse GenerateResponse(string reason, string message, string login) | 210 | protected virtual LLUUID GetAgentId() |
211 | { | ||
212 | // todo | ||
213 | LLUUID Agent; | ||
214 | int AgentRand = Util.RandomClass.Next(1, 9999); | ||
215 | Agent = new LLUUID("99998888-0100-" + AgentRand.ToString("0000") + "-8ec1-0b1d5cd6aead"); | ||
216 | return Agent; | ||
217 | } // GetAgentId | ||
218 | |||
219 | private XmlRpcResponse GenerateFailureResponse(string reason, string message, string login) | ||
147 | { | 220 | { |
148 | // Overwrite any default values; | 221 | // Overwrite any default values; |
149 | this.xmlRpcResponse = new XmlRpcResponse(); | 222 | this.xmlRpcResponse = new XmlRpcResponse(); |
@@ -152,7 +225,6 @@ namespace OpenSim.UserServer | |||
152 | this.ErrorMessage = message; | 225 | this.ErrorMessage = message; |
153 | this.ErrorReason = reason; | 226 | this.ErrorReason = reason; |
154 | 227 | ||
155 | this.loginError = new Hashtable(); | ||
156 | this.loginError["reason"] = this.ErrorReason; | 228 | this.loginError["reason"] = this.ErrorReason; |
157 | this.loginError["message"] = this.ErrorMessage; | 229 | this.loginError["message"] = this.ErrorMessage; |
158 | this.loginError["login"] = login; | 230 | this.loginError["login"] = login; |
@@ -162,7 +234,7 @@ namespace OpenSim.UserServer | |||
162 | 234 | ||
163 | public XmlRpcResponse LoginFailedResponse() | 235 | public XmlRpcResponse LoginFailedResponse() |
164 | { | 236 | { |
165 | return (this.GenerateResponse("key", "You have entered an invalid name/password combination. Check Caps/lock.", "false")); | 237 | return (this.GenerateFailureResponse("key", "You have entered an invalid name/password combination. Check Caps/lock.", "false")); |
166 | } // LoginFailedResponse | 238 | } // LoginFailedResponse |
167 | 239 | ||
168 | public XmlRpcResponse ConnectionFailedResponse() | 240 | public XmlRpcResponse ConnectionFailedResponse() |
@@ -172,43 +244,98 @@ namespace OpenSim.UserServer | |||
172 | 244 | ||
173 | public XmlRpcResponse CreateAlreadyLoggedInResponse() | 245 | public XmlRpcResponse CreateAlreadyLoggedInResponse() |
174 | { | 246 | { |
175 | return(this.GenerateResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false")); | 247 | return (this.GenerateFailureResponse("presence", "You appear to be already logged in, if this is not the case please wait for your session to timeout, if this takes longer than a few minutes please contact the grid owner", "false")); |
176 | } // CreateAlreadyLoggedInResponse() | 248 | } // CreateAlreadyLoggedInResponse() |
177 | 249 | ||
178 | public XmlRpcResponse ToXmlRpcResponse() | 250 | public XmlRpcResponse ToXmlRpcResponse() |
179 | { | 251 | { |
180 | this.xmlRpcResponse = this.defaultXmlRpcResponse; | 252 | Hashtable responseData = new Hashtable(); |
181 | Hashtable responseData = (Hashtable)this.xmlRpcResponse.Value; | ||
182 | 253 | ||
183 | this.loginFlagsHash = new Hashtable(); | 254 | this.loginFlagsHash = new Hashtable(); |
184 | this.loginFlagsHash["daylight_savings"] = this.DST; | 255 | this.loginFlagsHash["daylight_savings"] = this.DST; |
185 | this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin; | 256 | this.loginFlagsHash["stipend_since_login"] = this.StipendSinceLogin; |
186 | this.loginFlagsHash["gendered"] = this.Gendered; | 257 | this.loginFlagsHash["gendered"] = this.Gendered; |
187 | this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn; | 258 | this.loginFlagsHash["ever_logged_in"] = this.EverLoggedIn; |
188 | this.loginFlags.Add(this.loginFlagsHash); | 259 | this.loginFlags.Add(this.loginFlagsHash); |
189 | 260 | ||
261 | responseData["first_name"] = this.Firstname; | ||
262 | responseData["last_name"] = this.Lastname; | ||
263 | responseData["agent_access"] = this.agentAccess; | ||
264 | |||
190 | this.globalTexturesHash = new Hashtable(); | 265 | this.globalTexturesHash = new Hashtable(); |
191 | this.globalTexturesHash["sun_texture_id"] = this.SunTexture; | 266 | this.globalTexturesHash["sun_texture_id"] = this.SunTexture; |
192 | this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture; | 267 | this.globalTexturesHash["cloud_texture_id"] = this.CloudTexture; |
193 | this.globalTexturesHash["moon_texture_id"] = this.MoonTexture; | 268 | this.globalTexturesHash["moon_texture_id"] = this.MoonTexture; |
194 | this.globalTextures.Add(this.globalTexturesHash); | 269 | this.globalTextures.Add(this.globalTexturesHash); |
195 | 270 | this.eventCategories.Add(this.eventCategoriesHash); | |
196 | responseData["sim_port"] = Int32.Parse(this.SimPort); | 271 | |
197 | responseData["sim_ip"] = this.SimAddress; | 272 | this.AddToUIConfig("allow_first_life", this.allowFirstLife); |
198 | responseData["agent_id"] = this.AgentID; | 273 | this.uiConfig.Add(this.uiConfigHash); |
199 | responseData["session_id"] = this.SessionID; | 274 | |
200 | responseData["secure_session_id"] = this.SecureSessionID; | 275 | // Create a agent and session LLUUID |
201 | responseData["circuit_code"] = this.CircuitCode; | 276 | this.agentID = this.GetAgentId(); |
202 | responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | 277 | |
203 | responseData["login-flags"] = this.loginFlags; | 278 | responseData["sim_port"] = this.SimPort; |
204 | responseData["global-textures"] = this.globalTextures; | 279 | responseData["sim_ip"] = this.SimAddress; |
205 | responseData["region_y"] = (Int32)regionY * 256; | 280 | responseData["agent_id"] = this.AgentID.ToStringHyphenated(); |
206 | responseData["region_x"] = (Int32)regionX * 256; | 281 | responseData["session_id"] = this.SessionID.ToStringHyphenated(); |
282 | responseData["secure_session_id"] = this.SecureSessionID.ToStringHyphenated(); | ||
283 | responseData["circuit_code"] = this.CircuitCode; | ||
284 | responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
285 | responseData["login-flags"] = this.loginFlags; | ||
286 | responseData["global-textures"] = this.globalTextures; | ||
287 | responseData["seed_capability"] = this.seedCapability; | ||
288 | |||
289 | responseData["event_categories"] = this.eventCategories; | ||
290 | responseData["event_notifications"] = new ArrayList(); // todo | ||
291 | responseData["classified_categories"] = this.classifiedCategories; | ||
292 | responseData["ui-config"] = this.uiConfig; | ||
293 | |||
294 | responseData["inventory-skeleton"] = this.agentInventory; | ||
295 | responseData["inventory-skel-lib"] = new ArrayList(); // todo | ||
296 | responseData["inventory-root"] = this.inventoryRoot; | ||
297 | responseData["gestures"] = new ArrayList(); // todo | ||
298 | responseData["inventory-lib-owner"] = new ArrayList(); // todo | ||
299 | responseData["initial-outfit"] = this.initialOutfit; | ||
300 | responseData["start_location"] = this.startLocation; | ||
301 | responseData["seed_capability"] = this.seedCapability; | ||
302 | responseData["home"] = this.home; | ||
303 | responseData["look_at"] = this.lookAt; | ||
304 | responseData["message"] = this.welcomeMessage; | ||
305 | responseData["region_x"] = this.regionX; | ||
306 | responseData["region_y"] = this.regionY; | ||
307 | |||
308 | responseData["login"] = "true"; | ||
309 | this.xmlRpcResponse.Value = responseData; | ||
310 | |||
311 | // differential debuggery | ||
312 | // FileStream fs = new FileStream("loginresponse.xml", FileMode.OpenOrCreate); | ||
313 | // StreamWriter SW = new StreamWriter(fs); | ||
314 | // SW.Write(this.xmlRpcResponse.ToString()); | ||
315 | // SW.Close(); | ||
207 | 316 | ||
208 | return (this.xmlRpcResponse); | 317 | return (this.xmlRpcResponse); |
209 | 318 | ||
210 | } // ToXmlRpcResponse | 319 | } // ToXmlRpcResponse |
211 | 320 | ||
321 | public void SetEventCategories(string category, string value) | ||
322 | { | ||
323 | this.eventCategoriesHash[category] = value; | ||
324 | } // SetEventCategories | ||
325 | |||
326 | public void AddToUIConfig(string itemName, string item) | ||
327 | { | ||
328 | this.uiConfigHash[itemName] = item; | ||
329 | } // SetUIConfig | ||
330 | |||
331 | public void AddClassifiedCategory(Int32 ID, string categoryName) | ||
332 | { | ||
333 | this.classifiedCategoriesHash["category_name"] = categoryName; | ||
334 | this.classifiedCategoriesHash["category_id"] = ID; | ||
335 | this.classifiedCategories.Add(this.classifiedCategoriesHash); | ||
336 | // this.classifiedCategoriesHash.Clear(); | ||
337 | } // SetClassifiedCategory | ||
338 | |||
212 | public string Login | 339 | public string Login |
213 | { | 340 | { |
214 | get | 341 | get |
@@ -293,7 +420,7 @@ namespace OpenSim.UserServer | |||
293 | } | 420 | } |
294 | } // SimAddress | 421 | } // SimAddress |
295 | 422 | ||
296 | public string AgentID | 423 | public LLUUID AgentID |
297 | { | 424 | { |
298 | get | 425 | get |
299 | { | 426 | { |
@@ -305,7 +432,7 @@ namespace OpenSim.UserServer | |||
305 | } | 432 | } |
306 | } // AgentID | 433 | } // AgentID |
307 | 434 | ||
308 | public string SessionID | 435 | public LLUUID SessionID |
309 | { | 436 | { |
310 | get | 437 | get |
311 | { | 438 | { |
@@ -317,7 +444,7 @@ namespace OpenSim.UserServer | |||
317 | } | 444 | } |
318 | } // SessionID | 445 | } // SessionID |
319 | 446 | ||
320 | public string SecureSessionID | 447 | public LLUUID SecureSessionID |
321 | { | 448 | { |
322 | get | 449 | get |
323 | { | 450 | { |
@@ -329,6 +456,30 @@ namespace OpenSim.UserServer | |||
329 | } | 456 | } |
330 | } // SecureSessionID | 457 | } // SecureSessionID |
331 | 458 | ||
459 | public LLUUID BaseFolderID | ||
460 | { | ||
461 | get | ||
462 | { | ||
463 | return this.baseFolderID; | ||
464 | } | ||
465 | set | ||
466 | { | ||
467 | this.baseFolderID = value; | ||
468 | } | ||
469 | } // BaseFolderID | ||
470 | |||
471 | public LLUUID InventoryFolderID | ||
472 | { | ||
473 | get | ||
474 | { | ||
475 | return this.inventoryFolderID; | ||
476 | } | ||
477 | set | ||
478 | { | ||
479 | this.inventoryFolderID = value; | ||
480 | } | ||
481 | } // InventoryFolderID | ||
482 | |||
332 | public Int32 CircuitCode | 483 | public Int32 CircuitCode |
333 | { | 484 | { |
334 | get | 485 | get |
@@ -341,6 +492,30 @@ namespace OpenSim.UserServer | |||
341 | } | 492 | } |
342 | } // CircuitCode | 493 | } // CircuitCode |
343 | 494 | ||
495 | public uint RegionX | ||
496 | { | ||
497 | get | ||
498 | { | ||
499 | return this.regionX; | ||
500 | } | ||
501 | set | ||
502 | { | ||
503 | this.regionX = value; | ||
504 | } | ||
505 | } // RegionX | ||
506 | |||
507 | public uint RegionY | ||
508 | { | ||
509 | get | ||
510 | { | ||
511 | return this.regionY; | ||
512 | } | ||
513 | set | ||
514 | { | ||
515 | this.regionY = value; | ||
516 | } | ||
517 | } // RegionY | ||
518 | |||
344 | public string SunTexture | 519 | public string SunTexture |
345 | { | 520 | { |
346 | get | 521 | get |
@@ -377,6 +552,78 @@ namespace OpenSim.UserServer | |||
377 | } | 552 | } |
378 | } // MoonTexture | 553 | } // MoonTexture |
379 | 554 | ||
555 | public string Firstname | ||
556 | { | ||
557 | get | ||
558 | { | ||
559 | return this.firstname; | ||
560 | } | ||
561 | set | ||
562 | { | ||
563 | this.firstname = value; | ||
564 | } | ||
565 | } // Firstname | ||
566 | |||
567 | public string Lastname | ||
568 | { | ||
569 | get | ||
570 | { | ||
571 | return this.lastname; | ||
572 | } | ||
573 | set | ||
574 | { | ||
575 | this.lastname = value; | ||
576 | } | ||
577 | } // Lastname | ||
578 | |||
579 | public string AgentAccess | ||
580 | { | ||
581 | get | ||
582 | { | ||
583 | return this.agentAccess; | ||
584 | } | ||
585 | set | ||
586 | { | ||
587 | this.agentAccess = value; | ||
588 | } | ||
589 | } | ||
590 | |||
591 | public string StartLocation | ||
592 | { | ||
593 | get | ||
594 | { | ||
595 | return this.startLocation; | ||
596 | } | ||
597 | set | ||
598 | { | ||
599 | this.startLocation = value; | ||
600 | } | ||
601 | } // StartLocation | ||
602 | |||
603 | public string LookAt | ||
604 | { | ||
605 | get | ||
606 | { | ||
607 | return this.lookAt; | ||
608 | } | ||
609 | set | ||
610 | { | ||
611 | this.lookAt = value; | ||
612 | } | ||
613 | } | ||
614 | |||
615 | public string SeedCapability | ||
616 | { | ||
617 | get | ||
618 | { | ||
619 | return this.seedCapability; | ||
620 | } | ||
621 | set | ||
622 | { | ||
623 | this.seedCapability = value; | ||
624 | } | ||
625 | } // SeedCapability | ||
626 | |||
380 | public string ErrorReason | 627 | public string ErrorReason |
381 | { | 628 | { |
382 | get | 629 | get |