aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/AvatarAppearance.cs9
-rw-r--r--OpenSim/Framework/Communications/Cache/AuthedSessionCache.cs133
-rw-r--r--OpenSim/Framework/Communications/Cache/CachedUserInfo.cs4
-rw-r--r--OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs2
-rw-r--r--OpenSim/Framework/Communications/InventoryServiceBase.cs517
-rw-r--r--OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs4
-rw-r--r--OpenSim/Framework/Communications/Tests/LoginServiceTests.cs12
-rw-r--r--OpenSim/Framework/Console/CommandConsole.cs4
-rw-r--r--OpenSim/Framework/Console/ConsoleBase.cs4
-rw-r--r--OpenSim/Framework/Console/RemoteConsole.cs6
-rw-r--r--OpenSim/Framework/GridConfig.cs16
-rw-r--r--OpenSim/Framework/IClientAPI.cs6
-rw-r--r--OpenSim/Framework/InventoryFolderBase.cs6
-rw-r--r--OpenSim/Framework/MessageServerConfig.cs16
-rw-r--r--OpenSim/Framework/Servers/GetAssetStreamHandler.cs2
-rw-r--r--OpenSim/Framework/Servers/HttpServer/RestSessionService.cs3
-rw-r--r--OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs2
-rw-r--r--OpenSim/Framework/Servers/PostAssetStreamHandler.cs2
-rw-r--r--OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs2
-rw-r--r--OpenSim/Framework/UserConfig.cs14
20 files changed, 95 insertions, 669 deletions
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs
index 7270f32..1fb01ba 100644
--- a/OpenSim/Framework/AvatarAppearance.cs
+++ b/OpenSim/Framework/AvatarAppearance.cs
@@ -503,7 +503,14 @@ namespace OpenSim.Framework
503 Owner = new UUID((string)h["owner"]); 503 Owner = new UUID((string)h["owner"]);
504 Serial = Convert.ToInt32((string)h["serial"]); 504 Serial = Convert.ToInt32((string)h["serial"]);
505 VisualParams = (byte[])h["visual_params"]; 505 VisualParams = (byte[])h["visual_params"];
506 Texture = new Primitive.TextureEntry((byte[])h["texture"], 0, ((byte[])h["texture"]).Length); 506
507 if (h.Contains("texture"))
508 {
509 byte[] te = h["texture"] as byte[];
510 if (te != null && te.Length > 0)
511 Texture = new Primitive.TextureEntry(te, 0, te.Length);
512 }
513
507 AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]); 514 AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]);
508 515
509 m_wearables = new AvatarWearable[MAX_WEARABLES]; 516 m_wearables = new AvatarWearable[MAX_WEARABLES];
diff --git a/OpenSim/Framework/Communications/Cache/AuthedSessionCache.cs b/OpenSim/Framework/Communications/Cache/AuthedSessionCache.cs
deleted file mode 100644
index d56e48a..0000000
--- a/OpenSim/Framework/Communications/Cache/AuthedSessionCache.cs
+++ /dev/null
@@ -1,133 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30
31namespace OpenSim.Framework.Communications.Cache
32{
33 public class AuthedSessionCache
34 {
35 public class CacheData
36 {
37 private static readonly DateTime UNIX_EPOCH = new DateTime(1970, 1, 1);
38 private string m_session_id;
39 private string m_agent_id;
40 private int m_expire;
41
42 private int get_current_unix_time()
43 {
44 return (int)(DateTime.UtcNow - UNIX_EPOCH).TotalSeconds;
45 }
46
47 public CacheData(string sid, string aid)
48 {
49 m_session_id = sid;
50 m_agent_id = aid;
51 m_expire = get_current_unix_time() + DEFAULT_LIFETIME;
52 }
53
54 public CacheData(string sid, string aid, int time_now)
55 {
56 m_session_id = sid;
57 m_agent_id = aid;
58 m_expire = time_now + DEFAULT_LIFETIME;
59 }
60
61 public string SessionID
62 {
63 get { return m_session_id; }
64 set { m_session_id = value; }
65 }
66
67 public string AgentID
68 {
69 get { return m_agent_id; }
70 set { m_agent_id = value; }
71 }
72
73 public bool isExpired
74 {
75 get { return m_expire < get_current_unix_time(); }
76 }
77
78 public void Renew()
79 {
80 m_expire = get_current_unix_time() + DEFAULT_LIFETIME;
81 }
82 }
83
84 private static readonly int DEFAULT_LIFETIME = 30;
85 private Dictionary<string, CacheData> m_authed_sessions = new Dictionary<string,CacheData>();
86 // private int m_session_lifetime = DEFAULT_LIFETIME;
87
88 public AuthedSessionCache()
89 {
90 // m_session_lifetime = DEFAULT_LIFETIME;
91 }
92
93 public AuthedSessionCache(int timeout)
94 {
95 // m_session_lifetime = timeout;
96 }
97
98 public CacheData getCachedSession(string session_id, string agent_id)
99 {
100 CacheData ret = null;
101 lock (m_authed_sessions)
102 {
103 if (m_authed_sessions.ContainsKey(session_id))
104 {
105 CacheData cached_session = m_authed_sessions[session_id];
106 if (!cached_session.isExpired && cached_session.AgentID == agent_id)
107 {
108 ret = m_authed_sessions[session_id];
109 // auto renew
110 m_authed_sessions[session_id].Renew();
111 }
112 }
113 }
114 return ret;
115 }
116
117 public void Add(string session_id, string agent_id)
118 {
119 CacheData data = new CacheData(session_id, agent_id);
120 lock (m_authed_sessions)
121 {
122 if (m_authed_sessions.ContainsKey(session_id))
123 {
124 m_authed_sessions[session_id] = data;
125 }
126 else
127 {
128 m_authed_sessions.Add(session_id, data);
129 }
130 }
131 }
132 }
133}
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index ca641d0..238810a 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -653,7 +653,9 @@ namespace OpenSim.Framework.Communications.Cache
653 653
654 if (RootFolder.DeleteItem(item.ID)) 654 if (RootFolder.DeleteItem(item.ID))
655 { 655 {
656 return m_InventoryService.DeleteItem(item); 656 List<UUID> uuids = new List<UUID>();
657 uuids.Add(itemID);
658 return m_InventoryService.DeleteItems(this.UserProfile.ID, uuids);
657 } 659 }
658 } 660 }
659 else 661 else
diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
index c9f5236..7f1c7e9 100644
--- a/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
+++ b/OpenSim/Framework/Communications/Cache/UserProfileCacheService.cs
@@ -184,7 +184,7 @@ namespace OpenSim.Framework.Communications.Cache
184 // Commented out for now. The implementation needs to be improved by protecting against race conditions, 184 // Commented out for now. The implementation needs to be improved by protecting against race conditions,
185 // probably by making sure that the update doesn't use the UserCacheInfo.UserProfile directly (possibly via 185 // probably by making sure that the update doesn't use the UserCacheInfo.UserProfile directly (possibly via
186 // returning a read only class from the cache). 186 // returning a read only class from the cache).
187// public bool UpdateProfile(UserProfileData userProfile) 187// public bool StoreProfile(UserProfileData userProfile)
188// { 188// {
189// lock (m_userProfilesById) 189// lock (m_userProfilesById)
190// { 190// {
diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs
deleted file mode 100644
index 309c415..0000000
--- a/OpenSim/Framework/Communications/InventoryServiceBase.cs
+++ /dev/null
@@ -1,517 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System.Collections.Generic;
29using System.Reflection;
30using log4net;
31using OpenMetaverse;
32using OpenSim.Data;
33
34namespace OpenSim.Framework.Communications
35{
36 /// <summary>
37 /// Abstract base class used by local and grid implementations of an inventory service.
38 /// </summary>
39 public abstract class InventoryServiceBase : IInterServiceInventoryServices
40 {
41
42 private static readonly ILog m_log
43 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44
45 protected List<IInventoryDataPlugin> m_plugins = new List<IInventoryDataPlugin>();
46
47 #region Plugin methods
48
49 /// <summary>
50 /// Add a new inventory data plugin - plugins will be requested in the order they were added.
51 /// </summary>
52 /// <param name="plugin">The plugin that will provide data</param>
53 public void AddPlugin(IInventoryDataPlugin plugin)
54 {
55 m_plugins.Add(plugin);
56 }
57
58 /// <summary>
59 /// Adds a list of inventory data plugins, as described by `provider'
60 /// and `connect', to `m_plugins'.
61 /// </summary>
62 /// <param name="provider">
63 /// The filename of the inventory server plugin DLL.
64 /// </param>
65 /// <param name="connect">
66 /// The connection string for the storage backend.
67 /// </param>
68 public void AddPlugin(string provider, string connect)
69 {
70 m_plugins.AddRange(DataPluginFactory.LoadDataPlugins<IInventoryDataPlugin>(provider, connect));
71 }
72
73 #endregion
74
75 #region IInventoryServices methods
76
77 public string Host
78 {
79 get { return "default"; }
80 }
81
82 public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
83 {
84// m_log.DebugFormat("[AGENT INVENTORY]: Getting inventory skeleton for {0}", userId);
85
86 InventoryFolderBase rootFolder = RequestRootFolder(userId);
87
88 // Agent has no inventory structure yet.
89 if (null == rootFolder)
90 {
91 return null;
92 }
93
94 List<InventoryFolderBase> userFolders = new List<InventoryFolderBase>();
95
96 userFolders.Add(rootFolder);
97
98 foreach (IInventoryDataPlugin plugin in m_plugins)
99 {
100 IList<InventoryFolderBase> folders = plugin.getFolderHierarchy(rootFolder.ID);
101 userFolders.AddRange(folders);
102 }
103
104// foreach (InventoryFolderBase folder in userFolders)
105// {
106// m_log.DebugFormat("[AGENT INVENTORY]: Got folder {0} {1}", folder.name, folder.folderID);
107// }
108
109 return userFolders;
110 }
111
112 // See IInventoryServices
113 public virtual bool HasInventoryForUser(UUID userID)
114 {
115 return false;
116 }
117
118 // See IInventoryServices
119 public virtual InventoryFolderBase RequestRootFolder(UUID userID)
120 {
121 // Retrieve the first root folder we get from the list of plugins.
122 foreach (IInventoryDataPlugin plugin in m_plugins)
123 {
124 InventoryFolderBase rootFolder = plugin.getUserRootFolder(userID);
125 if (rootFolder != null)
126 return rootFolder;
127 }
128
129 // Return nothing if no plugin was able to supply a root folder
130 return null;
131 }
132
133 // See IInventoryServices
134 public bool CreateNewUserInventory(UUID user)
135 {
136 InventoryFolderBase existingRootFolder = RequestRootFolder(user);
137
138 if (null != existingRootFolder)
139 {
140 m_log.WarnFormat(
141 "[AGENT INVENTORY]: Did not create a new inventory for user {0} since they already have "
142 + "a root inventory folder with id {1}",
143 user, existingRootFolder.ID);
144 }
145 else
146 {
147 UsersInventory inven = new UsersInventory();
148 inven.CreateNewInventorySet(user);
149 AddNewInventorySet(inven);
150
151 return true;
152 }
153
154 return false;
155 }
156
157 public List<InventoryItemBase> GetActiveGestures(UUID userId)
158 {
159 List<InventoryItemBase> activeGestures = new List<InventoryItemBase>();
160 foreach (IInventoryDataPlugin plugin in m_plugins)
161 {
162 activeGestures.AddRange(plugin.fetchActiveGestures(userId));
163 }
164
165 return activeGestures;
166 }
167
168 #endregion
169
170 #region Methods used by GridInventoryService
171
172 public List<InventoryFolderBase> RequestSubFolders(UUID parentFolderID)
173 {
174 List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>();
175
176 foreach (IInventoryDataPlugin plugin in m_plugins)
177 {
178 inventoryList.AddRange(plugin.getInventoryFolders(parentFolderID));
179 }
180
181 return inventoryList;
182 }
183
184 public List<InventoryItemBase> RequestFolderItems(UUID folderID)
185 {
186 List<InventoryItemBase> itemsList = new List<InventoryItemBase>();
187
188 foreach (IInventoryDataPlugin plugin in m_plugins)
189 {
190 itemsList.AddRange(plugin.getInventoryInFolder(folderID));
191 }
192
193 return itemsList;
194 }
195
196 #endregion
197
198 // See IInventoryServices
199 public virtual bool AddFolder(InventoryFolderBase folder)
200 {
201 m_log.DebugFormat(
202 "[AGENT INVENTORY]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
203
204 foreach (IInventoryDataPlugin plugin in m_plugins)
205 {
206 plugin.addInventoryFolder(folder);
207 }
208
209 // FIXME: Should return false on failure
210 return true;
211 }
212
213 // See IInventoryServices
214 public virtual bool UpdateFolder(InventoryFolderBase folder)
215 {
216 m_log.DebugFormat(
217 "[AGENT INVENTORY]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
218
219 foreach (IInventoryDataPlugin plugin in m_plugins)
220 {
221 plugin.updateInventoryFolder(folder);
222 }
223
224 // FIXME: Should return false on failure
225 return true;
226 }
227
228 // See IInventoryServices
229 public virtual bool MoveFolder(InventoryFolderBase folder)
230 {
231 m_log.DebugFormat(
232 "[AGENT INVENTORY]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID);
233
234 foreach (IInventoryDataPlugin plugin in m_plugins)
235 {
236 plugin.moveInventoryFolder(folder);
237 }
238
239 // FIXME: Should return false on failure
240 return true;
241 }
242
243 // See IInventoryServices
244 public virtual bool AddItem(InventoryItemBase item)
245 {
246 m_log.DebugFormat(
247 "[AGENT INVENTORY]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder);
248
249 foreach (IInventoryDataPlugin plugin in m_plugins)
250 {
251 plugin.addInventoryItem(item);
252 }
253
254 // FIXME: Should return false on failure
255 return true;
256 }
257
258 // See IInventoryServices
259 public virtual bool UpdateItem(InventoryItemBase item)
260 {
261 m_log.InfoFormat(
262 "[AGENT INVENTORY]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder);
263
264 foreach (IInventoryDataPlugin plugin in m_plugins)
265 {
266 plugin.updateInventoryItem(item);
267 }
268
269 // FIXME: Should return false on failure
270 return true;
271 }
272
273 // See IInventoryServices
274 public virtual bool DeleteItem(InventoryItemBase item)
275 {
276 m_log.InfoFormat(
277 "[AGENT INVENTORY]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder);
278
279 foreach (IInventoryDataPlugin plugin in m_plugins)
280 {
281 plugin.deleteInventoryItem(item.ID);
282 }
283
284 // FIXME: Should return false on failure
285 return true;
286 }
287
288 public virtual InventoryItemBase QueryItem(InventoryItemBase item)
289 {
290 foreach (IInventoryDataPlugin plugin in m_plugins)
291 {
292 InventoryItemBase result = plugin.queryInventoryItem(item.ID);
293 if (result != null)
294 return result;
295 }
296
297 return null;
298 }
299
300 public virtual InventoryFolderBase QueryFolder(InventoryFolderBase item)
301 {
302 foreach (IInventoryDataPlugin plugin in m_plugins)
303 {
304 InventoryFolderBase result = plugin.queryInventoryFolder(item.ID);
305 if (result != null)
306 return result;
307 }
308
309 return null;
310 }
311
312 /// <summary>
313 /// Purge a folder of all items items and subfolders.
314 ///
315 /// FIXME: Really nasty in a sense, because we have to query the database to get information we may
316 /// already know... Needs heavy refactoring.
317 /// </summary>
318 /// <param name="folder"></param>
319 public virtual bool PurgeFolder(InventoryFolderBase folder)
320 {
321 m_log.DebugFormat(
322 "[AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
323
324 List<InventoryFolderBase> subFolders = RequestSubFolders(folder.ID);
325
326 foreach (InventoryFolderBase subFolder in subFolders)
327 {
328// m_log.DebugFormat("[AGENT INVENTORY]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID);
329
330 foreach (IInventoryDataPlugin plugin in m_plugins)
331 {
332 plugin.deleteInventoryFolder(subFolder.ID);
333 }
334 }
335
336 List<InventoryItemBase> items = RequestFolderItems(folder.ID);
337
338 foreach (InventoryItemBase item in items)
339 {
340 DeleteItem(item);
341 }
342
343 // FIXME: Should return false on failure
344 return true;
345 }
346
347 private void AddNewInventorySet(UsersInventory inventory)
348 {
349 foreach (InventoryFolderBase folder in inventory.Folders.Values)
350 {
351 AddFolder(folder);
352 }
353 }
354
355 public InventoryItemBase GetInventoryItem(UUID itemID)
356 {
357 foreach (IInventoryDataPlugin plugin in m_plugins)
358 {
359 InventoryItemBase item = plugin.getInventoryItem(itemID);
360 if (item != null)
361 return item;
362 }
363
364 return null;
365 }
366
367 /// <summary>
368 /// Used to create a new user inventory.
369 /// </summary>
370 private class UsersInventory
371 {
372 public Dictionary<UUID, InventoryFolderBase> Folders = new Dictionary<UUID, InventoryFolderBase>();
373 public Dictionary<UUID, InventoryItemBase> Items = new Dictionary<UUID, InventoryItemBase>();
374
375 public virtual void CreateNewInventorySet(UUID user)
376 {
377 InventoryFolderBase folder = new InventoryFolderBase();
378
379 folder.ParentID = UUID.Zero;
380 folder.Owner = user;
381 folder.ID = UUID.Random();
382 folder.Name = "My Inventory";
383 folder.Type = (short)AssetType.Folder;
384 folder.Version = 1;
385 Folders.Add(folder.ID, folder);
386
387 UUID rootFolder = folder.ID;
388
389 folder = new InventoryFolderBase();
390 folder.ParentID = rootFolder;
391 folder.Owner = user;
392 folder.ID = UUID.Random();
393 folder.Name = "Animations";
394 folder.Type = (short)AssetType.Animation;
395 folder.Version = 1;
396 Folders.Add(folder.ID, folder);
397
398 folder = new InventoryFolderBase();
399 folder.ParentID = rootFolder;
400 folder.Owner = user;
401 folder.ID = UUID.Random();
402 folder.Name = "Body Parts";
403 folder.Type = (short)AssetType.Bodypart;
404 folder.Version = 1;
405 Folders.Add(folder.ID, folder);
406
407 folder = new InventoryFolderBase();
408 folder.ParentID = rootFolder;
409 folder.Owner = user;
410 folder.ID = UUID.Random();
411 folder.Name = "Calling Cards";
412 folder.Type = (short)AssetType.CallingCard;
413 folder.Version = 1;
414 Folders.Add(folder.ID, folder);
415
416 folder = new InventoryFolderBase();
417 folder.ParentID = rootFolder;
418 folder.Owner = user;
419 folder.ID = UUID.Random();
420 folder.Name = "Clothing";
421 folder.Type = (short)AssetType.Clothing;
422 folder.Version = 1;
423 Folders.Add(folder.ID, folder);
424
425 folder = new InventoryFolderBase();
426 folder.ParentID = rootFolder;
427 folder.Owner = user;
428 folder.ID = UUID.Random();
429 folder.Name = "Gestures";
430 folder.Type = (short)AssetType.Gesture;
431 folder.Version = 1;
432 Folders.Add(folder.ID, folder);
433
434 folder = new InventoryFolderBase();
435 folder.ParentID = rootFolder;
436 folder.Owner = user;
437 folder.ID = UUID.Random();
438 folder.Name = "Landmarks";
439 folder.Type = (short)AssetType.Landmark;
440 folder.Version = 1;
441 Folders.Add(folder.ID, folder);
442
443 folder = new InventoryFolderBase();
444 folder.ParentID = rootFolder;
445 folder.Owner = user;
446 folder.ID = UUID.Random();
447 folder.Name = "Lost And Found";
448 folder.Type = (short)AssetType.LostAndFoundFolder;
449 folder.Version = 1;
450 Folders.Add(folder.ID, folder);
451
452 folder = new InventoryFolderBase();
453 folder.ParentID = rootFolder;
454 folder.Owner = user;
455 folder.ID = UUID.Random();
456 folder.Name = "Notecards";
457 folder.Type = (short)AssetType.Notecard;
458 folder.Version = 1;
459 Folders.Add(folder.ID, folder);
460
461 folder = new InventoryFolderBase();
462 folder.ParentID = rootFolder;
463 folder.Owner = user;
464 folder.ID = UUID.Random();
465 folder.Name = "Objects";
466 folder.Type = (short)AssetType.Object;
467 folder.Version = 1;
468 Folders.Add(folder.ID, folder);
469
470 folder = new InventoryFolderBase();
471 folder.ParentID = rootFolder;
472 folder.Owner = user;
473 folder.ID = UUID.Random();
474 folder.Name = "Photo Album";
475 folder.Type = (short)AssetType.SnapshotFolder;
476 folder.Version = 1;
477 Folders.Add(folder.ID, folder);
478
479 folder = new InventoryFolderBase();
480 folder.ParentID = rootFolder;
481 folder.Owner = user;
482 folder.ID = UUID.Random();
483 folder.Name = "Scripts";
484 folder.Type = (short)AssetType.LSLText;
485 folder.Version = 1;
486 Folders.Add(folder.ID, folder);
487
488 folder = new InventoryFolderBase();
489 folder.ParentID = rootFolder;
490 folder.Owner = user;
491 folder.ID = UUID.Random();
492 folder.Name = "Sounds";
493 folder.Type = (short)AssetType.Sound;
494 folder.Version = 1;
495 Folders.Add(folder.ID, folder);
496
497 folder = new InventoryFolderBase();
498 folder.ParentID = rootFolder;
499 folder.Owner = user;
500 folder.ID = UUID.Random();
501 folder.Name = "Textures";
502 folder.Type = (short)AssetType.Texture;
503 folder.Version = 1;
504 Folders.Add(folder.ID, folder);
505
506 folder = new InventoryFolderBase();
507 folder.ParentID = rootFolder;
508 folder.Owner = user;
509 folder.ID = UUID.Random();
510 folder.Name = "Trash";
511 folder.Type = (short)AssetType.TrashFolder;
512 folder.Version = 1;
513 Folders.Add(folder.ID, folder);
514 }
515 }
516 }
517}
diff --git a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
index 670c9ff..933fa12 100644
--- a/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
+++ b/OpenSim/Framework/Communications/Tests/Cache/UserProfileCacheServiceTests.cs
@@ -110,14 +110,14 @@ namespace OpenSim.Framework.Communications.Tests
110 IUserDataPlugin userDataPlugin = commsManager.UserDataPlugin; 110 IUserDataPlugin userDataPlugin = commsManager.UserDataPlugin;
111 111
112 // Check that we can't update info before it exists 112 // Check that we can't update info before it exists
113 Assert.That(userCacheService.UpdateProfile(newProfile), Is.False); 113 Assert.That(userCacheService.StoreProfile(newProfile), Is.False);
114 Assert.That(userDataPlugin.GetUserByUUID(userId), Is.Null); 114 Assert.That(userDataPlugin.GetUserByUUID(userId), Is.Null);
115 115
116 // Check that we can update a profile once it exists 116 // Check that we can update a profile once it exists
117 LocalUserServices lus = (LocalUserServices)commsManager.UserService; 117 LocalUserServices lus = (LocalUserServices)commsManager.UserService;
118 lus.AddUser(firstName, originalLastName, "pingu", "ted@excellentadventure.com", 1000, 1000, userId); 118 lus.AddUser(firstName, originalLastName, "pingu", "ted@excellentadventure.com", 1000, 1000, userId);
119 119
120 Assert.That(userCacheService.UpdateProfile(newProfile), Is.True); 120 Assert.That(userCacheService.StoreProfile(newProfile), Is.True);
121 UserProfileData retrievedProfile = userCacheService.GetUserDetails(userId).UserProfile; 121 UserProfileData retrievedProfile = userCacheService.GetUserDetails(userId).UserProfile;
122 Assert.That(retrievedProfile.SurName, Is.EqualTo(newLastName)); 122 Assert.That(retrievedProfile.SurName, Is.EqualTo(newLastName));
123 Assert.That(userDataPlugin.GetUserByUUID(userId).SurName, Is.EqualTo(newLastName)); 123 Assert.That(userDataPlugin.GetUserByUUID(userId).SurName, Is.EqualTo(newLastName));
diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
index 22dcef9..57a908e 100644
--- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
+++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
@@ -532,6 +532,11 @@ namespace OpenSim.Framework.Communications.Tests
532 return false; 532 return false;
533 } 533 }
534 534
535 public bool DeleteFolders(UUID ownerID, List<UUID> ids)
536 {
537 return false;
538 }
539
535 public bool PurgeFolder(InventoryFolderBase folder) 540 public bool PurgeFolder(InventoryFolderBase folder)
536 { 541 {
537 return false; 542 return false;
@@ -547,7 +552,12 @@ namespace OpenSim.Framework.Communications.Tests
547 return false; 552 return false;
548 } 553 }
549 554
550 public bool DeleteItem(InventoryItemBase item) 555 public bool MoveItems(UUID owner, List<InventoryItemBase> items)
556 {
557 return false;
558 }
559
560 public bool DeleteItems(UUID owner, List<UUID> items)
551 { 561 {
552 return false; 562 return false;
553 } 563 }
diff --git a/OpenSim/Framework/Console/CommandConsole.cs b/OpenSim/Framework/Console/CommandConsole.cs
index 3387013..06136ff 100644
--- a/OpenSim/Framework/Console/CommandConsole.cs
+++ b/OpenSim/Framework/Console/CommandConsole.cs
@@ -576,7 +576,7 @@ namespace OpenSim.Framework.Console
576 576
577 public void Prompt() 577 public void Prompt()
578 { 578 {
579 string line = ReadLine(m_defaultPrompt, true, true); 579 string line = ReadLine(m_defaultPrompt + "# ", true, true);
580 580
581 if (line != String.Empty) 581 if (line != String.Empty)
582 { 582 {
@@ -592,7 +592,7 @@ namespace OpenSim.Framework.Console
592 592
593 public override string ReadLine(string p, bool isCommand, bool e) 593 public override string ReadLine(string p, bool isCommand, bool e)
594 { 594 {
595 System.Console.Write("{0}", prompt); 595 System.Console.Write("{0}", p);
596 string cmdinput = System.Console.ReadLine(); 596 string cmdinput = System.Console.ReadLine();
597 597
598 if (isCommand) 598 if (isCommand)
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs
index 5e258ae..0a51266 100644
--- a/OpenSim/Framework/Console/ConsoleBase.cs
+++ b/OpenSim/Framework/Console/ConsoleBase.cs
@@ -48,7 +48,7 @@ namespace OpenSim.Framework.Console
48 /// </summary> 48 /// </summary>
49 public string DefaultPrompt 49 public string DefaultPrompt
50 { 50 {
51 set { m_defaultPrompt = value + "# "; } 51 set { m_defaultPrompt = value; }
52 get { return m_defaultPrompt; } 52 get { return m_defaultPrompt; }
53 } 53 }
54 protected string m_defaultPrompt; 54 protected string m_defaultPrompt;
@@ -123,7 +123,7 @@ namespace OpenSim.Framework.Console
123 123
124 public virtual string ReadLine(string p, bool isCommand, bool e) 124 public virtual string ReadLine(string p, bool isCommand, bool e)
125 { 125 {
126 System.Console.Write("{0}", prompt); 126 System.Console.Write("{0}", p);
127 string cmdinput = System.Console.ReadLine(); 127 string cmdinput = System.Console.ReadLine();
128 128
129 return cmdinput; 129 return cmdinput;
diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs
index da8556a..1810614 100644
--- a/OpenSim/Framework/Console/RemoteConsole.cs
+++ b/OpenSim/Framework/Console/RemoteConsole.cs
@@ -217,6 +217,12 @@ namespace OpenSim.Framework.Console
217 id.AppendChild(xmldoc.CreateTextNode(sessionID.ToString())); 217 id.AppendChild(xmldoc.CreateTextNode(sessionID.ToString()));
218 218
219 rootElement.AppendChild(id); 219 rootElement.AppendChild(id);
220
221 XmlElement prompt = xmldoc.CreateElement("", "Prompt", "");
222 prompt.AppendChild(xmldoc.CreateTextNode(DefaultPrompt));
223
224 rootElement.AppendChild(prompt);
225
220 rootElement.AppendChild(MainConsole.Instance.Commands.GetXml(xmldoc)); 226 rootElement.AppendChild(MainConsole.Instance.Commands.GetXml(xmldoc));
221 227
222 reply["str_response_string"] = xmldoc.InnerXml; 228 reply["str_response_string"] = xmldoc.InnerXml;
diff --git a/OpenSim/Framework/GridConfig.cs b/OpenSim/Framework/GridConfig.cs
index a3c1032..9aa5d03 100644
--- a/OpenSim/Framework/GridConfig.cs
+++ b/OpenSim/Framework/GridConfig.cs
@@ -45,6 +45,8 @@ namespace OpenSim.Framework
45 public string SimSendKey = String.Empty; 45 public string SimSendKey = String.Empty;
46 public string UserRecvKey = String.Empty; 46 public string UserRecvKey = String.Empty;
47 public string UserSendKey = String.Empty; 47 public string UserSendKey = String.Empty;
48 public string ConsoleUser = String.Empty;
49 public string ConsolePass = String.Empty;
48 50
49 public GridConfig(string description, string filename) 51 public GridConfig(string description, string filename)
50 { 52 {
@@ -95,6 +97,12 @@ namespace OpenSim.Framework
95 "Allow regions to register immediately upon grid server startup? true/false", 97 "Allow regions to register immediately upon grid server startup? true/false",
96 "True", 98 "True",
97 false); 99 false);
100 m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
101 "Remote console access user name [Default: disabled]", "", false);
102
103 m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
104 "Remote console access password [Default: disabled]", "", false);
105
98 } 106 }
99 107
100 public bool handleIncomingConfiguration(string configuration_key, object configuration_result) 108 public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
@@ -140,9 +148,15 @@ namespace OpenSim.Framework
140 case "allow_region_registration": 148 case "allow_region_registration":
141 AllowRegionRegistration = (bool)configuration_result; 149 AllowRegionRegistration = (bool)configuration_result;
142 break; 150 break;
151 case "console_user":
152 ConsoleUser = (string)configuration_result;
153 break;
154 case "console_pass":
155 ConsolePass = (string)configuration_result;
156 break;
143 } 157 }
144 158
145 return true; 159 return true;
146 } 160 }
147 } 161 }
148} \ No newline at end of file 162}
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index e451dd8..444adf9 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -254,13 +254,13 @@ namespace OpenSim.Framework
254 string newName); 254 string newName);
255 255
256 public delegate void MoveInventoryItem( 256 public delegate void MoveInventoryItem(
257 IClientAPI remoteClient, UUID folderID, UUID itemID, int length, string newName); 257 IClientAPI remoteClient, List<InventoryItemBase> items);
258 258
259 public delegate void RemoveInventoryItem( 259 public delegate void RemoveInventoryItem(
260 IClientAPI remoteClient, UUID itemID); 260 IClientAPI remoteClient, List<UUID> itemIDs);
261 261
262 public delegate void RemoveInventoryFolder( 262 public delegate void RemoveInventoryFolder(
263 IClientAPI remoteClient, UUID folderID); 263 IClientAPI remoteClient, List<UUID> folderIDs);
264 264
265 public delegate void RequestAsset(IClientAPI remoteClient, RequestAssetArgs transferRequest); 265 public delegate void RequestAsset(IClientAPI remoteClient, RequestAssetArgs transferRequest);
266 266
diff --git a/OpenSim/Framework/InventoryFolderBase.cs b/OpenSim/Framework/InventoryFolderBase.cs
index 05f11a4..1869d48 100644
--- a/OpenSim/Framework/InventoryFolderBase.cs
+++ b/OpenSim/Framework/InventoryFolderBase.cs
@@ -78,6 +78,12 @@ namespace OpenSim.Framework
78 ID = id; 78 ID = id;
79 } 79 }
80 80
81 public InventoryFolderBase(UUID id, UUID owner)
82 {
83 ID = id;
84 Owner = owner;
85 }
86
81 public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version) 87 public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version)
82 { 88 {
83 ID = id; 89 ID = id;
diff --git a/OpenSim/Framework/MessageServerConfig.cs b/OpenSim/Framework/MessageServerConfig.cs
index d0ceebc..884c0ea 100644
--- a/OpenSim/Framework/MessageServerConfig.cs
+++ b/OpenSim/Framework/MessageServerConfig.cs
@@ -46,6 +46,8 @@ namespace OpenSim.Framework
46 public string UserRecvKey = String.Empty; 46 public string UserRecvKey = String.Empty;
47 public string UserSendKey = String.Empty; 47 public string UserSendKey = String.Empty;
48 public string UserServerURL = String.Empty; 48 public string UserServerURL = String.Empty;
49 public string ConsoleUser = String.Empty;
50 public string ConsolePass = String.Empty;
49 51
50 public MessageServerConfig(string description, string filename) 52 public MessageServerConfig(string description, string filename)
51 { 53 {
@@ -88,6 +90,12 @@ namespace OpenSim.Framework
88 "Use SSL? true/false", ConfigSettings.DefaultMessageServerHttpSSL.ToString(), false); 90 "Use SSL? true/false", ConfigSettings.DefaultMessageServerHttpSSL.ToString(), false);
89 m_configMember.addConfigurationOption("published_ip", ConfigurationOption.ConfigurationTypes.TYPE_STRING, 91 m_configMember.addConfigurationOption("published_ip", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
90 "My Published IP Address", "127.0.0.1", false); 92 "My Published IP Address", "127.0.0.1", false);
93 m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
94 "Remote console access user name [Default: disabled]", "", false);
95
96 m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
97 "Remote console access password [Default: disabled]", "", false);
98
91 } 99 }
92 100
93 public bool handleIncomingConfiguration(string configuration_key, object configuration_result) 101 public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
@@ -130,9 +138,15 @@ namespace OpenSim.Framework
130 case "published_ip": 138 case "published_ip":
131 MessageServerIP = (string) configuration_result; 139 MessageServerIP = (string) configuration_result;
132 break; 140 break;
141 case "console_user":
142 ConsoleUser = (string)configuration_result;
143 break;
144 case "console_pass":
145 ConsolePass = (string)configuration_result;
146 break;
133 } 147 }
134 148
135 return true; 149 return true;
136 } 150 }
137 } 151 }
138} \ No newline at end of file 152}
diff --git a/OpenSim/Framework/Servers/GetAssetStreamHandler.cs b/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
index bc046cf..c6958de 100644
--- a/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
+++ b/OpenSim/Framework/Servers/GetAssetStreamHandler.cs
@@ -57,7 +57,7 @@ namespace OpenSim.Framework.Servers
57 57
58 protected override AssetBase GetAsset(UUID assetID) 58 protected override AssetBase GetAsset(UUID assetID)
59 { 59 {
60 return m_assetProvider.FetchAsset(assetID); 60 return m_assetProvider.GetAsset(assetID);
61 } 61 }
62 } 62 }
63} 63}
diff --git a/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs b/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
index ec2f9ec..2ef4a36 100644
--- a/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
+++ b/OpenSim/Framework/Servers/HttpServer/RestSessionService.cs
@@ -75,6 +75,7 @@ namespace OpenSim.Framework.Servers.HttpServer
75 WebRequest request = WebRequest.Create(requestUrl); 75 WebRequest request = WebRequest.Create(requestUrl);
76 request.Method = verb; 76 request.Method = verb;
77 request.ContentType = "text/xml"; 77 request.ContentType = "text/xml";
78 request.Timeout = 20000;
78 79
79 MemoryStream buffer = new MemoryStream(); 80 MemoryStream buffer = new MemoryStream();
80 81
@@ -98,7 +99,9 @@ namespace OpenSim.Framework.Servers.HttpServer
98 { 99 {
99 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); 100 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse));
100 deserial = (TResponse)deserializer.Deserialize(resp.GetResponseStream()); 101 deserial = (TResponse)deserializer.Deserialize(resp.GetResponseStream());
102 resp.Close();
101 } 103 }
104 requestStream.Close();
102 return deserial; 105 return deserial;
103 } 106 }
104 } 107 }
diff --git a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs b/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs
index 09ef95b..ec9bd4f 100644
--- a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs
+++ b/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs
@@ -62,7 +62,7 @@ namespace OpenSim.Framework.Servers.HttpServer
62 WebRequest request = WebRequest.Create(requestUrl); 62 WebRequest request = WebRequest.Create(requestUrl);
63 request.Method = verb; 63 request.Method = verb;
64 64
65 if (verb == "POST") 65 if ((verb == "POST") || (verb == "PUT"))
66 { 66 {
67 request.ContentType = "text/xml"; 67 request.ContentType = "text/xml";
68 68
diff --git a/OpenSim/Framework/Servers/PostAssetStreamHandler.cs b/OpenSim/Framework/Servers/PostAssetStreamHandler.cs
index 419b408..8bf406c 100644
--- a/OpenSim/Framework/Servers/PostAssetStreamHandler.cs
+++ b/OpenSim/Framework/Servers/PostAssetStreamHandler.cs
@@ -57,7 +57,7 @@ namespace OpenSim.Framework.Servers
57 AssetBase asset = (AssetBase) xs.Deserialize(request); 57 AssetBase asset = (AssetBase) xs.Deserialize(request);
58 58
59 m_log.InfoFormat("[REST]: Creating asset {0}", asset.FullID); 59 m_log.InfoFormat("[REST]: Creating asset {0}", asset.FullID);
60 m_assetProvider.CreateAsset(asset); 60 m_assetProvider.StoreAsset(asset);
61 61
62 return new byte[] {}; 62 return new byte[] {};
63 } 63 }
diff --git a/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs b/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs
index 35da73f..be3f518 100644
--- a/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs
+++ b/OpenSim/Framework/Servers/Tests/GetAssetStreamHandlerTests.cs
@@ -128,7 +128,7 @@ namespace OpenSim.Framework.Servers.Tests
128 IAssetDataPlugin assetDataPlugin = new TestAssetDataPlugin(); 128 IAssetDataPlugin assetDataPlugin = new TestAssetDataPlugin();
129 handler = new GetAssetStreamHandler(assetDataPlugin); 129 handler = new GetAssetStreamHandler(assetDataPlugin);
130 130
131 assetDataPlugin.CreateAsset(asset); 131 assetDataPlugin.StoreAsset(asset);
132 return asset; 132 return asset;
133 } 133 }
134 } 134 }
diff --git a/OpenSim/Framework/UserConfig.cs b/OpenSim/Framework/UserConfig.cs
index 31838ad..16f265c 100644
--- a/OpenSim/Framework/UserConfig.cs
+++ b/OpenSim/Framework/UserConfig.cs
@@ -46,6 +46,8 @@ namespace OpenSim.Framework
46 public bool HttpSSL = ConfigSettings.DefaultUserServerHttpSSL; 46 public bool HttpSSL = ConfigSettings.DefaultUserServerHttpSSL;
47 public uint DefaultUserLevel = 0; 47 public uint DefaultUserLevel = 0;
48 public string LibraryXmlfile = ""; 48 public string LibraryXmlfile = "";
49 public string ConsoleUser = String.Empty;
50 public string ConsolePass = String.Empty;
49 51
50 private Uri m_inventoryUrl; 52 private Uri m_inventoryUrl;
51 53
@@ -155,6 +157,12 @@ namespace OpenSim.Framework
155 m_configMember.addConfigurationOption("default_loginLevel", ConfigurationOption.ConfigurationTypes.TYPE_UINT32, 157 m_configMember.addConfigurationOption("default_loginLevel", ConfigurationOption.ConfigurationTypes.TYPE_UINT32,
156 "Minimum Level a user should have to login [0 default]", "0", false); 158 "Minimum Level a user should have to login [0 default]", "0", false);
157 159
160 m_configMember.addConfigurationOption("console_user", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
161 "Remote console access user name [Default: disabled]", "", false);
162
163 m_configMember.addConfigurationOption("console_pass", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
164 "Remote console access password [Default: disabled]", "", false);
165
158 } 166 }
159 167
160 public bool handleIncomingConfiguration(string configuration_key, object configuration_result) 168 public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
@@ -209,6 +217,12 @@ namespace OpenSim.Framework
209 case "library_location": 217 case "library_location":
210 LibraryXmlfile = (string)configuration_result; 218 LibraryXmlfile = (string)configuration_result;
211 break; 219 break;
220 case "console_user":
221 ConsoleUser = (string)configuration_result;
222 break;
223 case "console_pass":
224 ConsolePass = (string)configuration_result;
225 break;
212 } 226 }
213 227
214 return true; 228 return true;