diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
16 files changed, 707 insertions, 1029 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/TextureDownload/TextureDownloadModule.cs b/OpenSim/Region/CoreModules/Agent/TextureDownload/TextureDownloadModule.cs index 71ff28c..5809bae 100644 --- a/OpenSim/Region/CoreModules/Agent/TextureDownload/TextureDownloadModule.cs +++ b/OpenSim/Region/CoreModules/Agent/TextureDownload/TextureDownloadModule.cs | |||
@@ -214,8 +214,8 @@ namespace OpenSim.Region.CoreModules.Agent.TextureDownload | |||
214 | { | 214 | { |
215 | Scene scene = (Scene)client.Scene; | 215 | Scene scene = (Scene)client.Scene; |
216 | 216 | ||
217 | CachedUserInfo profile = scene.CommsManager.UserProfileCacheService.GetUserDetails(client.AgentId); | 217 | ScenePresence sp = scene.GetScenePresence(client.AgentId); |
218 | if (profile == null) // Deny unknown user | 218 | if (sp == null) // Deny unknown user |
219 | return; | 219 | return; |
220 | 220 | ||
221 | IInventoryService invService = scene.InventoryService; | 221 | IInventoryService invService = scene.InventoryService; |
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 35c59aa..884e6a6 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -46,21 +46,16 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
46 | 46 | ||
47 | public bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance) | 47 | public bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance) |
48 | { | 48 | { |
49 | CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(avatarId); | 49 | AvatarData avatar = m_scene.AvatarService.GetAvatar(avatarId); |
50 | //if ((profile != null) && (profile.RootFolder != null)) | 50 | //if ((profile != null) && (profile.RootFolder != null)) |
51 | if (profile != null) | 51 | if (avatar != null) |
52 | { | 52 | { |
53 | appearance = m_scene.CommsManager.AvatarService.GetUserAppearance(avatarId); | 53 | appearance = avatar.ToAvatarAppearance(); |
54 | if (appearance != null) | 54 | return true; |
55 | { | ||
56 | //SetAppearanceAssets(profile, ref appearance); | ||
57 | //m_log.DebugFormat("[APPEARANCE]: Found : {0}", appearance.ToString()); | ||
58 | return true; | ||
59 | } | ||
60 | } | 55 | } |
61 | 56 | ||
62 | appearance = CreateDefault(avatarId); | ||
63 | m_log.ErrorFormat("[APPEARANCE]: Appearance not found for {0}, creating default", avatarId); | 57 | m_log.ErrorFormat("[APPEARANCE]: Appearance not found for {0}, creating default", avatarId); |
58 | appearance = CreateDefault(avatarId); | ||
64 | return false; | 59 | return false; |
65 | } | 60 | } |
66 | 61 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs index 72ec869..c59992e 100644 --- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs | |||
@@ -34,6 +34,7 @@ using OpenSim.Framework; | |||
34 | using OpenSim.Framework.Communications.Cache; | 34 | using OpenSim.Framework.Communications.Cache; |
35 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
36 | using OpenSim.Region.Framework.Scenes; | 36 | using OpenSim.Region.Framework.Scenes; |
37 | using OpenSim.Services.Interfaces; | ||
37 | 38 | ||
38 | namespace OpenSim.Region.CoreModules.Avatar.Dialog | 39 | namespace OpenSim.Region.CoreModules.Avatar.Dialog |
39 | { | 40 | { |
@@ -116,12 +117,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog | |||
116 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, | 117 | UUID avatarID, string objectName, UUID objectID, UUID ownerID, |
117 | string message, UUID textureID, int ch, string[] buttonlabels) | 118 | string message, UUID textureID, int ch, string[] buttonlabels) |
118 | { | 119 | { |
119 | CachedUserInfo info = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(ownerID); | 120 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, ownerID); |
120 | string ownerFirstName, ownerLastName; | 121 | string ownerFirstName, ownerLastName; |
121 | if (info != null) | 122 | if (account != null) |
122 | { | 123 | { |
123 | ownerFirstName = info.UserProfile.FirstName; | 124 | ownerFirstName = account.FirstName; |
124 | ownerLastName = info.UserProfile.SurName; | 125 | ownerLastName = account.LastName; |
125 | } | 126 | } |
126 | else | 127 | else |
127 | { | 128 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 3417c87..706d891 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -53,7 +53,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
53 | 53 | ||
54 | protected TarArchiveReader archive; | 54 | protected TarArchiveReader archive; |
55 | 55 | ||
56 | private CachedUserInfo m_userInfo; | 56 | private UserAccount m_userInfo; |
57 | private string m_invPath; | 57 | private string m_invPath; |
58 | 58 | ||
59 | /// <value> | 59 | /// <value> |
@@ -67,7 +67,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
67 | private Stream m_loadStream; | 67 | private Stream m_loadStream; |
68 | 68 | ||
69 | public InventoryArchiveReadRequest( | 69 | public InventoryArchiveReadRequest( |
70 | Scene scene, CachedUserInfo userInfo, string invPath, string loadPath) | 70 | Scene scene, UserAccount userInfo, string invPath, string loadPath) |
71 | : this( | 71 | : this( |
72 | scene, | 72 | scene, |
73 | userInfo, | 73 | userInfo, |
@@ -77,7 +77,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
77 | } | 77 | } |
78 | 78 | ||
79 | public InventoryArchiveReadRequest( | 79 | public InventoryArchiveReadRequest( |
80 | Scene scene, CachedUserInfo userInfo, string invPath, Stream loadStream) | 80 | Scene scene, UserAccount userInfo, string invPath, Stream loadStream) |
81 | { | 81 | { |
82 | m_scene = scene; | 82 | m_scene = scene; |
83 | m_userInfo = userInfo; | 83 | m_userInfo = userInfo; |
@@ -103,7 +103,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
103 | //InventoryFolderImpl rootDestinationFolder = m_userInfo.RootFolder.FindFolderByPath(m_invPath); | 103 | //InventoryFolderImpl rootDestinationFolder = m_userInfo.RootFolder.FindFolderByPath(m_invPath); |
104 | InventoryFolderBase rootDestinationFolder | 104 | InventoryFolderBase rootDestinationFolder |
105 | = InventoryArchiveUtils.FindFolderByPath( | 105 | = InventoryArchiveUtils.FindFolderByPath( |
106 | m_scene.InventoryService, m_userInfo.UserProfile.ID, m_invPath); | 106 | m_scene.InventoryService, m_userInfo.PrincipalID, m_invPath); |
107 | 107 | ||
108 | if (null == rootDestinationFolder) | 108 | if (null == rootDestinationFolder) |
109 | { | 109 | { |
@@ -280,7 +280,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
280 | // even though there is a AssetType.RootCategory | 280 | // even though there is a AssetType.RootCategory |
281 | destFolder | 281 | destFolder |
282 | = new InventoryFolderBase( | 282 | = new InventoryFolderBase( |
283 | newFolderId, newFolderName, m_userInfo.UserProfile.ID, | 283 | newFolderId, newFolderName, m_userInfo.PrincipalID, |
284 | (short)AssetType.Unknown, destFolder.ID, 1); | 284 | (short)AssetType.Unknown, destFolder.ID, 1); |
285 | m_scene.InventoryService.AddFolder(destFolder); | 285 | m_scene.InventoryService.AddFolder(destFolder); |
286 | 286 | ||
@@ -368,10 +368,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
368 | } | 368 | } |
369 | else | 369 | else |
370 | { | 370 | { |
371 | item.CreatorIdAsUuid = m_userInfo.UserProfile.ID; | 371 | item.CreatorIdAsUuid = m_userInfo.PrincipalID; |
372 | } | 372 | } |
373 | 373 | ||
374 | item.Owner = m_userInfo.UserProfile.ID; | 374 | item.Owner = m_userInfo.PrincipalID; |
375 | 375 | ||
376 | // Reset folder ID to the one in which we want to load it | 376 | // Reset folder ID to the one in which we want to load it |
377 | item.Folder = loadFolder.ID; | 377 | item.Folder = loadFolder.ID; |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 8f75983..ab5dafd 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | |||
@@ -41,6 +41,7 @@ using OpenSim.Framework.Communications.Cache; | |||
41 | using OpenSim.Framework.Communications.Osp; | 41 | using OpenSim.Framework.Communications.Osp; |
42 | using OpenSim.Region.CoreModules.World.Archiver; | 42 | using OpenSim.Region.CoreModules.World.Archiver; |
43 | using OpenSim.Region.Framework.Scenes; | 43 | using OpenSim.Region.Framework.Scenes; |
44 | using OpenSim.Services.Interfaces; | ||
44 | 45 | ||
45 | namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | 46 | namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver |
46 | { | 47 | { |
@@ -54,7 +55,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
54 | private const string STAR_WILDCARD = "*"; | 55 | private const string STAR_WILDCARD = "*"; |
55 | 56 | ||
56 | private InventoryArchiverModule m_module; | 57 | private InventoryArchiverModule m_module; |
57 | private CachedUserInfo m_userInfo; | 58 | private UserAccount m_userInfo; |
58 | private string m_invPath; | 59 | private string m_invPath; |
59 | protected TarArchiveWriter m_archiveWriter; | 60 | protected TarArchiveWriter m_archiveWriter; |
60 | protected UuidGatherer m_assetGatherer; | 61 | protected UuidGatherer m_assetGatherer; |
@@ -89,7 +90,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
89 | /// </summary> | 90 | /// </summary> |
90 | public InventoryArchiveWriteRequest( | 91 | public InventoryArchiveWriteRequest( |
91 | Guid id, InventoryArchiverModule module, Scene scene, | 92 | Guid id, InventoryArchiverModule module, Scene scene, |
92 | CachedUserInfo userInfo, string invPath, string savePath) | 93 | UserAccount userInfo, string invPath, string savePath) |
93 | : this( | 94 | : this( |
94 | id, | 95 | id, |
95 | module, | 96 | module, |
@@ -105,7 +106,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
105 | /// </summary> | 106 | /// </summary> |
106 | public InventoryArchiveWriteRequest( | 107 | public InventoryArchiveWriteRequest( |
107 | Guid id, InventoryArchiverModule module, Scene scene, | 108 | Guid id, InventoryArchiverModule module, Scene scene, |
108 | CachedUserInfo userInfo, string invPath, Stream saveStream) | 109 | UserAccount userInfo, string invPath, Stream saveStream) |
109 | { | 110 | { |
110 | m_id = id; | 111 | m_id = id; |
111 | m_module = module; | 112 | m_module = module; |
@@ -215,7 +216,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
215 | { | 216 | { |
216 | InventoryFolderBase inventoryFolder = null; | 217 | InventoryFolderBase inventoryFolder = null; |
217 | InventoryItemBase inventoryItem = null; | 218 | InventoryItemBase inventoryItem = null; |
218 | InventoryFolderBase rootFolder = m_scene.InventoryService.GetRootFolder(m_userInfo.UserProfile.ID); | 219 | InventoryFolderBase rootFolder = m_scene.InventoryService.GetRootFolder(m_userInfo.PrincipalID); |
219 | 220 | ||
220 | bool foundStar = false; | 221 | bool foundStar = false; |
221 | 222 | ||
@@ -318,14 +319,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
318 | foreach (UUID creatorId in m_userUuids.Keys) | 319 | foreach (UUID creatorId in m_userUuids.Keys) |
319 | { | 320 | { |
320 | // Record the creator of this item | 321 | // Record the creator of this item |
321 | CachedUserInfo creator | 322 | UserAccount creator = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, creatorId); |
322 | = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(creatorId); | ||
323 | 323 | ||
324 | if (creator != null) | 324 | if (creator != null) |
325 | { | 325 | { |
326 | m_archiveWriter.WriteFile( | 326 | m_archiveWriter.WriteFile( |
327 | ArchiveConstants.USERS_PATH + creator.UserProfile.Name + ".xml", | 327 | ArchiveConstants.USERS_PATH + creator.FirstName + " " + creator.LastName + ".xml", |
328 | UserProfileSerializer.Serialize(creator.UserProfile)); | 328 | UserProfileSerializer.Serialize(creator)); |
329 | } | 329 | } |
330 | else | 330 | else |
331 | { | 331 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 6da43a8..ea6da8c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs | |||
@@ -113,7 +113,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
113 | /// Trigger the inventory archive saved event. | 113 | /// Trigger the inventory archive saved event. |
114 | /// </summary> | 114 | /// </summary> |
115 | protected internal void TriggerInventoryArchiveSaved( | 115 | protected internal void TriggerInventoryArchiveSaved( |
116 | Guid id, bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, | 116 | Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, |
117 | Exception reportedException) | 117 | Exception reportedException) |
118 | { | 118 | { |
119 | InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved; | 119 | InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved; |
@@ -125,11 +125,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
125 | { | 125 | { |
126 | if (m_scenes.Count > 0) | 126 | if (m_scenes.Count > 0) |
127 | { | 127 | { |
128 | CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass); | 128 | UserAccount userInfo = GetUserInfo(firstName, lastName, pass); |
129 | 129 | ||
130 | if (userInfo != null) | 130 | if (userInfo != null) |
131 | { | 131 | { |
132 | if (CheckPresence(userInfo.UserProfile.ID)) | 132 | if (CheckPresence(userInfo.PrincipalID)) |
133 | { | 133 | { |
134 | new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, saveStream).Execute(); | 134 | new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, saveStream).Execute(); |
135 | return true; | 135 | return true; |
@@ -137,8 +137,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
137 | else | 137 | else |
138 | { | 138 | { |
139 | m_log.ErrorFormat( | 139 | m_log.ErrorFormat( |
140 | "[INVENTORY ARCHIVER]: User {0} {1} not logged in to this region simulator", | 140 | "[INVENTORY ARCHIVER]: User {0} {1} {2} not logged in to this region simulator", |
141 | userInfo.UserProfile.Name, userInfo.UserProfile.ID); | 141 | userInfo.FirstName, userInfo.LastName, userInfo.PrincipalID); |
142 | } | 142 | } |
143 | } | 143 | } |
144 | } | 144 | } |
@@ -150,11 +150,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
150 | { | 150 | { |
151 | if (m_scenes.Count > 0) | 151 | if (m_scenes.Count > 0) |
152 | { | 152 | { |
153 | CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass); | 153 | UserAccount userInfo = GetUserInfo(firstName, lastName, pass); |
154 | 154 | ||
155 | if (userInfo != null) | 155 | if (userInfo != null) |
156 | { | 156 | { |
157 | if (CheckPresence(userInfo.UserProfile.ID)) | 157 | if (CheckPresence(userInfo.PrincipalID)) |
158 | { | 158 | { |
159 | new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, savePath).Execute(); | 159 | new InventoryArchiveWriteRequest(id, this, m_aScene, userInfo, invPath, savePath).Execute(); |
160 | return true; | 160 | return true; |
@@ -162,8 +162,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
162 | else | 162 | else |
163 | { | 163 | { |
164 | m_log.ErrorFormat( | 164 | m_log.ErrorFormat( |
165 | "[INVENTORY ARCHIVER]: User {0} {1} not logged in to this region simulator", | 165 | "[INVENTORY ARCHIVER]: User {0} {1} {2} not logged in to this region simulator", |
166 | userInfo.UserProfile.Name, userInfo.UserProfile.ID); | 166 | userInfo.FirstName, userInfo.LastName, userInfo.PrincipalID); |
167 | } | 167 | } |
168 | } | 168 | } |
169 | } | 169 | } |
@@ -175,11 +175,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
175 | { | 175 | { |
176 | if (m_scenes.Count > 0) | 176 | if (m_scenes.Count > 0) |
177 | { | 177 | { |
178 | CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass); | 178 | UserAccount userInfo = GetUserInfo(firstName, lastName, pass); |
179 | 179 | ||
180 | if (userInfo != null) | 180 | if (userInfo != null) |
181 | { | 181 | { |
182 | if (CheckPresence(userInfo.UserProfile.ID)) | 182 | if (CheckPresence(userInfo.PrincipalID)) |
183 | { | 183 | { |
184 | InventoryArchiveReadRequest request = | 184 | InventoryArchiveReadRequest request = |
185 | new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadStream); | 185 | new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadStream); |
@@ -190,8 +190,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
190 | else | 190 | else |
191 | { | 191 | { |
192 | m_log.ErrorFormat( | 192 | m_log.ErrorFormat( |
193 | "[INVENTORY ARCHIVER]: User {0} {1} not logged in to this region simulator", | 193 | "[INVENTORY ARCHIVER]: User {0} {1} {2} not logged in to this region simulator", |
194 | userInfo.UserProfile.Name, userInfo.UserProfile.ID); | 194 | userInfo.FirstName, userInfo.LastName, userInfo.PrincipalID); |
195 | } | 195 | } |
196 | } | 196 | } |
197 | } | 197 | } |
@@ -203,11 +203,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
203 | { | 203 | { |
204 | if (m_scenes.Count > 0) | 204 | if (m_scenes.Count > 0) |
205 | { | 205 | { |
206 | CachedUserInfo userInfo = GetUserInfo(firstName, lastName, pass); | 206 | UserAccount userInfo = GetUserInfo(firstName, lastName, pass); |
207 | 207 | ||
208 | if (userInfo != null) | 208 | if (userInfo != null) |
209 | { | 209 | { |
210 | if (CheckPresence(userInfo.UserProfile.ID)) | 210 | if (CheckPresence(userInfo.PrincipalID)) |
211 | { | 211 | { |
212 | InventoryArchiveReadRequest request = | 212 | InventoryArchiveReadRequest request = |
213 | new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadPath); | 213 | new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadPath); |
@@ -218,8 +218,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
218 | else | 218 | else |
219 | { | 219 | { |
220 | m_log.ErrorFormat( | 220 | m_log.ErrorFormat( |
221 | "[INVENTORY ARCHIVER]: User {0} {1} not logged in to this region simulator", | 221 | "[INVENTORY ARCHIVER]: User {0} {1} {2} not logged in to this region simulator", |
222 | userInfo.UserProfile.Name, userInfo.UserProfile.ID); | 222 | userInfo.FirstName, userInfo.LastName, userInfo.PrincipalID); |
223 | } | 223 | } |
224 | } | 224 | } |
225 | } | 225 | } |
@@ -291,7 +291,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
291 | } | 291 | } |
292 | 292 | ||
293 | private void SaveInvConsoleCommandCompleted( | 293 | private void SaveInvConsoleCommandCompleted( |
294 | Guid id, bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, | 294 | Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, |
295 | Exception reportedException) | 295 | Exception reportedException) |
296 | { | 296 | { |
297 | lock (m_pendingConsoleSaves) | 297 | lock (m_pendingConsoleSaves) |
@@ -304,13 +304,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
304 | 304 | ||
305 | if (succeeded) | 305 | if (succeeded) |
306 | { | 306 | { |
307 | m_log.InfoFormat("[INVENTORY ARCHIVER]: Saved archive for {0}", userInfo.UserProfile.Name); | 307 | m_log.InfoFormat("[INVENTORY ARCHIVER]: Saved archive for {0} {1}", userInfo.FirstName, userInfo.LastName); |
308 | } | 308 | } |
309 | else | 309 | else |
310 | { | 310 | { |
311 | m_log.ErrorFormat( | 311 | m_log.ErrorFormat( |
312 | "[INVENTORY ARCHIVER]: Archive save for {0} failed - {1}", | 312 | "[INVENTORY ARCHIVER]: Archive save for {0} {1} failed - {2}", |
313 | userInfo.UserProfile.Name, reportedException.Message); | 313 | userInfo.FirstName, userInfo.LastName, reportedException.Message); |
314 | } | 314 | } |
315 | } | 315 | } |
316 | 316 | ||
@@ -321,11 +321,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
321 | /// <param name="lastName"></param> | 321 | /// <param name="lastName"></param> |
322 | /// <param name="pass">User password</param> | 322 | /// <param name="pass">User password</param> |
323 | /// <returns></returns> | 323 | /// <returns></returns> |
324 | protected CachedUserInfo GetUserInfo(string firstName, string lastName, string pass) | 324 | protected UserAccount GetUserInfo(string firstName, string lastName, string pass) |
325 | { | 325 | { |
326 | CachedUserInfo userInfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(firstName, lastName); | 326 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, firstName, lastName); |
327 | //m_aScene.CommsManager.UserService.GetUserProfile(firstName, lastName); | 327 | if (null == account) |
328 | if (null == userInfo) | ||
329 | { | 328 | { |
330 | m_log.ErrorFormat( | 329 | m_log.ErrorFormat( |
331 | "[INVENTORY ARCHIVER]: Failed to find user info for {0} {1}", | 330 | "[INVENTORY ARCHIVER]: Failed to find user info for {0} {1}", |
@@ -335,9 +334,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
335 | 334 | ||
336 | try | 335 | try |
337 | { | 336 | { |
338 | if (m_aScene.AuthenticationService.Authenticate(userInfo.UserProfile.ID, pass, 1) != string.Empty) | 337 | if (m_aScene.AuthenticationService.Authenticate(account.PrincipalID, pass, 1) != string.Empty) |
339 | { | 338 | { |
340 | return userInfo; | 339 | return account; |
341 | } | 340 | } |
342 | else | 341 | else |
343 | { | 342 | { |
@@ -358,14 +357,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
358 | /// Notify the client of loaded nodes if they are logged in | 357 | /// Notify the client of loaded nodes if they are logged in |
359 | /// </summary> | 358 | /// </summary> |
360 | /// <param name="loadedNodes">Can be empty. In which case, nothing happens</param> | 359 | /// <param name="loadedNodes">Can be empty. In which case, nothing happens</param> |
361 | private void UpdateClientWithLoadedNodes(CachedUserInfo userInfo, List<InventoryNodeBase> loadedNodes) | 360 | private void UpdateClientWithLoadedNodes(UserAccount userInfo, List<InventoryNodeBase> loadedNodes) |
362 | { | 361 | { |
363 | if (loadedNodes.Count == 0) | 362 | if (loadedNodes.Count == 0) |
364 | return; | 363 | return; |
365 | 364 | ||
366 | foreach (Scene scene in m_scenes.Values) | 365 | foreach (Scene scene in m_scenes.Values) |
367 | { | 366 | { |
368 | ScenePresence user = scene.GetScenePresence(userInfo.UserProfile.ID); | 367 | ScenePresence user = scene.GetScenePresence(userInfo.PrincipalID); |
369 | 368 | ||
370 | if (user != null && !user.IsChildAgent) | 369 | if (user != null && !user.IsChildAgent) |
371 | { | 370 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index e4dad18..89486fb 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | |||
@@ -65,7 +65,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
65 | } | 65 | } |
66 | 66 | ||
67 | private void SaveCompleted( | 67 | private void SaveCompleted( |
68 | Guid id, bool succeeded, CachedUserInfo userInfo, string invPath, Stream saveStream, | 68 | Guid id, bool succeeded, UserAccount userInfo, string invPath, Stream saveStream, |
69 | Exception reportedException) | 69 | Exception reportedException) |
70 | { | 70 | { |
71 | mre.Set(); | 71 | mre.Set(); |
@@ -76,124 +76,126 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
76 | /// </summary> | 76 | /// </summary> |
77 | // Commenting for now! The mock inventory service needs more beef, at least for | 77 | // Commenting for now! The mock inventory service needs more beef, at least for |
78 | // GetFolderForType | 78 | // GetFolderForType |
79 | [Test] | 79 | // REFACTORING PROBLEM. This needs to be rewritten. |
80 | public void TestSaveIarV0_1() | 80 | |
81 | { | 81 | // [Test] |
82 | TestHelper.InMethod(); | 82 | // public void TestSaveIarV0_1() |
83 | //log4net.Config.XmlConfigurator.Configure(); | 83 | // { |
84 | 84 | // TestHelper.InMethod(); | |
85 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 85 | // //log4net.Config.XmlConfigurator.Configure(); |
86 | 86 | ||
87 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | 87 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); |
88 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | 88 | |
89 | CommunicationsManager cm = scene.CommsManager; | 89 | // Scene scene = SceneSetupHelpers.SetupScene("Inventory"); |
90 | 90 | // SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | |
91 | // Create user | 91 | // CommunicationsManager cm = scene.CommsManager; |
92 | string userFirstName = "Jock"; | 92 | |
93 | string userLastName = "Stirrup"; | 93 | // // Create user |
94 | UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | 94 | // string userFirstName = "Jock"; |
95 | 95 | // string userLastName = "Stirrup"; | |
96 | lock (this) | 96 | // UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); |
97 | { | 97 | |
98 | UserProfileTestUtils.CreateUserWithInventory( | 98 | // lock (this) |
99 | cm, userFirstName, userLastName, userId, InventoryReceived); | 99 | // { |
100 | Monitor.Wait(this, 60000); | 100 | // UserProfileTestUtils.CreateUserWithInventory( |
101 | } | 101 | // cm, userFirstName, userLastName, userId, InventoryReceived); |
102 | 102 | // Monitor.Wait(this, 60000); | |
103 | // Create asset | 103 | // } |
104 | SceneObjectGroup object1; | 104 | |
105 | SceneObjectPart part1; | 105 | // // Create asset |
106 | { | 106 | // SceneObjectGroup object1; |
107 | string partName = "My Little Dog Object"; | 107 | // SceneObjectPart part1; |
108 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | 108 | // { |
109 | PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | 109 | // string partName = "My Little Dog Object"; |
110 | Vector3 groupPosition = new Vector3(10, 20, 30); | 110 | // UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); |
111 | Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | 111 | // PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); |
112 | Vector3 offsetPosition = new Vector3(5, 10, 15); | 112 | // Vector3 groupPosition = new Vector3(10, 20, 30); |
113 | 113 | // Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | |
114 | part1 | 114 | // Vector3 offsetPosition = new Vector3(5, 10, 15); |
115 | = new SceneObjectPart( | 115 | |
116 | ownerId, shape, groupPosition, rotationOffset, offsetPosition); | 116 | // part1 |
117 | part1.Name = partName; | 117 | // = new SceneObjectPart( |
118 | 118 | // ownerId, shape, groupPosition, rotationOffset, offsetPosition); | |
119 | object1 = new SceneObjectGroup(part1); | 119 | // part1.Name = partName; |
120 | scene.AddNewSceneObject(object1, false); | 120 | |
121 | } | 121 | // object1 = new SceneObjectGroup(part1); |
122 | 122 | // scene.AddNewSceneObject(object1, false); | |
123 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | 123 | // } |
124 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | 124 | |
125 | scene.AssetService.Store(asset1); | 125 | // UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); |
126 | 126 | // AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | |
127 | // Create item | 127 | // scene.AssetService.Store(asset1); |
128 | UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | 128 | |
129 | InventoryItemBase item1 = new InventoryItemBase(); | 129 | // // Create item |
130 | item1.Name = "My Little Dog"; | 130 | // UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); |
131 | item1.AssetID = asset1.FullID; | 131 | // InventoryItemBase item1 = new InventoryItemBase(); |
132 | item1.ID = item1Id; | 132 | // item1.Name = "My Little Dog"; |
133 | InventoryFolderBase objsFolder | 133 | // item1.AssetID = asset1.FullID; |
134 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | 134 | // item1.ID = item1Id; |
135 | item1.Folder = objsFolder.ID; | 135 | // InventoryFolderBase objsFolder |
136 | scene.AddInventoryItem(userId, item1); | 136 | // = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); |
137 | 137 | // item1.Folder = objsFolder.ID; | |
138 | MemoryStream archiveWriteStream = new MemoryStream(); | 138 | // scene.AddInventoryItem(userId, item1); |
139 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; | 139 | |
140 | 140 | // MemoryStream archiveWriteStream = new MemoryStream(); | |
141 | mre.Reset(); | 141 | // archiverModule.OnInventoryArchiveSaved += SaveCompleted; |
142 | archiverModule.ArchiveInventory( | 142 | |
143 | Guid.NewGuid(), userFirstName, userLastName, "Objects", "troll", archiveWriteStream); | 143 | // mre.Reset(); |
144 | mre.WaitOne(60000, false); | 144 | // archiverModule.ArchiveInventory( |
145 | 145 | // Guid.NewGuid(), userFirstName, userLastName, "Objects", "troll", archiveWriteStream); | |
146 | byte[] archive = archiveWriteStream.ToArray(); | 146 | // mre.WaitOne(60000, false); |
147 | MemoryStream archiveReadStream = new MemoryStream(archive); | 147 | |
148 | TarArchiveReader tar = new TarArchiveReader(archiveReadStream); | 148 | // byte[] archive = archiveWriteStream.ToArray(); |
149 | 149 | // MemoryStream archiveReadStream = new MemoryStream(archive); | |
150 | //bool gotControlFile = false; | 150 | // TarArchiveReader tar = new TarArchiveReader(archiveReadStream); |
151 | bool gotObject1File = false; | 151 | |
152 | //bool gotObject2File = false; | 152 | // //bool gotControlFile = false; |
153 | string expectedObject1FileName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1); | 153 | // bool gotObject1File = false; |
154 | string expectedObject1FilePath = string.Format( | 154 | // //bool gotObject2File = false; |
155 | "{0}{1}{2}", | 155 | // string expectedObject1FileName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1); |
156 | ArchiveConstants.INVENTORY_PATH, | 156 | // string expectedObject1FilePath = string.Format( |
157 | InventoryArchiveWriteRequest.CreateArchiveFolderName(objsFolder), | 157 | // "{0}{1}{2}", |
158 | expectedObject1FileName); | 158 | // ArchiveConstants.INVENTORY_PATH, |
159 | 159 | // InventoryArchiveWriteRequest.CreateArchiveFolderName(objsFolder), | |
160 | string filePath; | 160 | // expectedObject1FileName); |
161 | TarArchiveReader.TarEntryType tarEntryType; | 161 | |
162 | 162 | // string filePath; | |
163 | Console.WriteLine("Reading archive"); | 163 | // TarArchiveReader.TarEntryType tarEntryType; |
164 | 164 | ||
165 | while (tar.ReadEntry(out filePath, out tarEntryType) != null) | 165 | // Console.WriteLine("Reading archive"); |
166 | { | 166 | |
167 | Console.WriteLine("Got {0}", filePath); | 167 | // while (tar.ReadEntry(out filePath, out tarEntryType) != null) |
168 | 168 | // { | |
169 | // if (ArchiveConstants.CONTROL_FILE_PATH == filePath) | 169 | // Console.WriteLine("Got {0}", filePath); |
170 | |||
171 | //// if (ArchiveConstants.CONTROL_FILE_PATH == filePath) | ||
172 | //// { | ||
173 | //// gotControlFile = true; | ||
174 | //// } | ||
175 | |||
176 | // if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) | ||
170 | // { | 177 | // { |
171 | // gotControlFile = true; | 178 | //// string fileName = filePath.Remove(0, "Objects/".Length); |
179 | //// | ||
180 | //// if (fileName.StartsWith(part1.Name)) | ||
181 | //// { | ||
182 | // Assert.That(expectedObject1FilePath, Is.EqualTo(filePath)); | ||
183 | // gotObject1File = true; | ||
184 | //// } | ||
185 | //// else if (fileName.StartsWith(part2.Name)) | ||
186 | //// { | ||
187 | //// Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); | ||
188 | //// gotObject2File = true; | ||
189 | //// } | ||
172 | // } | 190 | // } |
173 | 191 | // } | |
174 | if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH) && filePath.EndsWith(".xml")) | ||
175 | { | ||
176 | // string fileName = filePath.Remove(0, "Objects/".Length); | ||
177 | // | ||
178 | // if (fileName.StartsWith(part1.Name)) | ||
179 | // { | ||
180 | Assert.That(expectedObject1FilePath, Is.EqualTo(filePath)); | ||
181 | gotObject1File = true; | ||
182 | // } | ||
183 | // else if (fileName.StartsWith(part2.Name)) | ||
184 | // { | ||
185 | // Assert.That(fileName, Is.EqualTo(expectedObject2FileName)); | ||
186 | // gotObject2File = true; | ||
187 | // } | ||
188 | } | ||
189 | } | ||
190 | 192 | ||
191 | // Assert.That(gotControlFile, Is.True, "No control file in archive"); | 193 | //// Assert.That(gotControlFile, Is.True, "No control file in archive"); |
192 | Assert.That(gotObject1File, Is.True, "No item1 file in archive"); | 194 | // Assert.That(gotObject1File, Is.True, "No item1 file in archive"); |
193 | // Assert.That(gotObject2File, Is.True, "No object2 file in archive"); | 195 | //// Assert.That(gotObject2File, Is.True, "No object2 file in archive"); |
194 | 196 | ||
195 | // TODO: Test presence of more files and contents of files. | 197 | // // TODO: Test presence of more files and contents of files. |
196 | } | 198 | // } |
197 | 199 | ||
198 | /// <summary> | 200 | /// <summary> |
199 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | 201 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
@@ -201,187 +203,189 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
201 | /// </summary> | 203 | /// </summary> |
202 | /// | 204 | /// |
203 | /// This test also does some deeper probing of loading into nested inventory structures | 205 | /// This test also does some deeper probing of loading into nested inventory structures |
204 | [Test] | 206 | /// REFACTORING PROBLEM. This needs to be rewritten. |
205 | public void TestLoadIarV0_1ExistingUsers() | 207 | // [Test] |
206 | { | 208 | // public void TestLoadIarV0_1ExistingUsers() |
207 | TestHelper.InMethod(); | 209 | // { |
208 | 210 | // TestHelper.InMethod(); | |
209 | //log4net.Config.XmlConfigurator.Configure(); | 211 | |
210 | 212 | // //log4net.Config.XmlConfigurator.Configure(); | |
211 | string userFirstName = "Mr"; | 213 | |
212 | string userLastName = "Tiddles"; | 214 | // string userFirstName = "Mr"; |
213 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); | 215 | // string userLastName = "Tiddles"; |
214 | string userItemCreatorFirstName = "Lord"; | 216 | // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000555"); |
215 | string userItemCreatorLastName = "Lucan"; | 217 | // string userItemCreatorFirstName = "Lord"; |
216 | UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); | 218 | // string userItemCreatorLastName = "Lucan"; |
217 | 219 | // UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); | |
218 | string item1Name = "b.lsl"; | 220 | |
219 | string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); | 221 | // string item1Name = "b.lsl"; |
220 | 222 | // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(item1Name, UUID.Random()); | |
221 | MemoryStream archiveWriteStream = new MemoryStream(); | 223 | |
222 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | 224 | // MemoryStream archiveWriteStream = new MemoryStream(); |
223 | 225 | // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | |
224 | InventoryItemBase item1 = new InventoryItemBase(); | 226 | |
225 | item1.Name = item1Name; | 227 | // InventoryItemBase item1 = new InventoryItemBase(); |
226 | item1.AssetID = UUID.Random(); | 228 | // item1.Name = item1Name; |
227 | item1.GroupID = UUID.Random(); | 229 | // item1.AssetID = UUID.Random(); |
228 | item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); | 230 | // item1.GroupID = UUID.Random(); |
229 | //item1.CreatorId = userUuid.ToString(); | 231 | // item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); |
230 | //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; | 232 | // //item1.CreatorId = userUuid.ToString(); |
231 | item1.Owner = UUID.Zero; | 233 | // //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; |
232 | 234 | // item1.Owner = UUID.Zero; | |
233 | string item1FileName | 235 | |
234 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | 236 | // string item1FileName |
235 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | 237 | // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); |
236 | tar.Close(); | 238 | // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); |
237 | 239 | // tar.Close(); | |
238 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 240 | |
239 | SerialiserModule serialiserModule = new SerialiserModule(); | 241 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
240 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 242 | // SerialiserModule serialiserModule = new SerialiserModule(); |
241 | 243 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | |
242 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 244 | |
243 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 245 | // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene |
244 | IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | 246 | // Scene scene = SceneSetupHelpers.SetupScene("inventory"); |
245 | 247 | // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | |
246 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 248 | |
247 | userAdminService.AddUser( | 249 | // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
248 | userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | 250 | // userAdminService.AddUser( |
249 | userAdminService.AddUser( | 251 | // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); |
250 | userItemCreatorFirstName, userItemCreatorLastName, "hampshire", | 252 | // userAdminService.AddUser( |
251 | String.Empty, 1000, 1000, userItemCreatorUuid); | 253 | // userItemCreatorFirstName, userItemCreatorLastName, "hampshire", |
252 | 254 | // String.Empty, 1000, 1000, userItemCreatorUuid); | |
253 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | 255 | |
254 | 256 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | |
255 | CachedUserInfo userInfo | 257 | |
256 | = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | 258 | // CachedUserInfo userInfo |
257 | 259 | // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | |
258 | InventoryItemBase foundItem1 | 260 | |
259 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, item1Name); | 261 | // InventoryItemBase foundItem1 |
260 | 262 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, item1Name); | |
261 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | 263 | |
262 | 264 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | |
263 | // We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the | 265 | |
264 | // UUID, not the OSPA itself. | 266 | //// We have to disable this check since loaded items that did find users via OSPA resolution are now only storing the |
267 | //// UUID, not the OSPA itself. | ||
268 | //// Assert.That( | ||
269 | //// foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), | ||
270 | //// "Loaded item non-uuid creator doesn't match original"); | ||
265 | // Assert.That( | 271 | // Assert.That( |
266 | // foundItem1.CreatorId, Is.EqualTo(item1.CreatorId), | 272 | // foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), |
267 | // "Loaded item non-uuid creator doesn't match original"); | 273 | // "Loaded item non-uuid creator doesn't match original"); |
268 | Assert.That( | ||
269 | foundItem1.CreatorId, Is.EqualTo(userItemCreatorUuid.ToString()), | ||
270 | "Loaded item non-uuid creator doesn't match original"); | ||
271 | |||
272 | Assert.That( | ||
273 | foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), | ||
274 | "Loaded item uuid creator doesn't match original"); | ||
275 | Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), | ||
276 | "Loaded item owner doesn't match inventory reciever"); | ||
277 | |||
278 | // Now try loading to a root child folder | ||
279 | UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xA"); | ||
280 | archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
281 | archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); | ||
282 | |||
283 | InventoryItemBase foundItem2 | ||
284 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xA/" + item1Name); | ||
285 | Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); | ||
286 | |||
287 | // Now try loading to a more deeply nested folder | ||
288 | UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC"); | ||
289 | archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
290 | archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); | ||
291 | |||
292 | InventoryItemBase foundItem3 | ||
293 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC/" + item1Name); | ||
294 | Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); | ||
295 | } | ||
296 | |||
297 | [Test] | ||
298 | public void TestIarV0_1WithEscapedChars() | ||
299 | { | ||
300 | TestHelper.InMethod(); | ||
301 | // log4net.Config.XmlConfigurator.Configure(); | ||
302 | |||
303 | string itemName = "You & you are a mean/man/"; | ||
304 | string humanEscapedItemName = @"You & you are a mean\/man\/"; | ||
305 | string userPassword = "meowfood"; | ||
306 | |||
307 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | ||
308 | |||
309 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | ||
310 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | ||
311 | CommunicationsManager cm = scene.CommsManager; | ||
312 | |||
313 | // Create user | ||
314 | string userFirstName = "Jock"; | ||
315 | string userLastName = "Stirrup"; | ||
316 | UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | ||
317 | |||
318 | lock (this) | ||
319 | { | ||
320 | UserProfileTestUtils.CreateUserWithInventory( | ||
321 | cm, userFirstName, userLastName, userPassword, userId, InventoryReceived); | ||
322 | Monitor.Wait(this, 60000); | ||
323 | } | ||
324 | 274 | ||
325 | // Create asset | ||
326 | SceneObjectGroup object1; | ||
327 | SceneObjectPart part1; | ||
328 | { | ||
329 | string partName = "part name"; | ||
330 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | ||
331 | PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | ||
332 | Vector3 groupPosition = new Vector3(10, 20, 30); | ||
333 | Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | ||
334 | Vector3 offsetPosition = new Vector3(5, 10, 15); | ||
335 | |||
336 | part1 | ||
337 | = new SceneObjectPart( | ||
338 | ownerId, shape, groupPosition, rotationOffset, offsetPosition); | ||
339 | part1.Name = partName; | ||
340 | |||
341 | object1 = new SceneObjectGroup(part1); | ||
342 | scene.AddNewSceneObject(object1, false); | ||
343 | } | ||
344 | |||
345 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | ||
346 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | ||
347 | scene.AssetService.Store(asset1); | ||
348 | |||
349 | // Create item | ||
350 | UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | ||
351 | InventoryItemBase item1 = new InventoryItemBase(); | ||
352 | item1.Name = itemName; | ||
353 | item1.AssetID = asset1.FullID; | ||
354 | item1.ID = item1Id; | ||
355 | InventoryFolderBase objsFolder | ||
356 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | ||
357 | item1.Folder = objsFolder.ID; | ||
358 | scene.AddInventoryItem(userId, item1); | ||
359 | |||
360 | MemoryStream archiveWriteStream = new MemoryStream(); | ||
361 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; | ||
362 | |||
363 | mre.Reset(); | ||
364 | archiverModule.ArchiveInventory( | ||
365 | Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); | ||
366 | mre.WaitOne(60000, false); | ||
367 | |||
368 | // LOAD ITEM | ||
369 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | ||
370 | |||
371 | archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); | ||
372 | |||
373 | InventoryItemBase foundItem1 | ||
374 | = InventoryArchiveUtils.FindItemByPath( | ||
375 | scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); | ||
376 | |||
377 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
378 | // Assert.That( | 275 | // Assert.That( |
379 | // foundItem1.CreatorId, Is.EqualTo(userUuid), | 276 | // foundItem1.CreatorIdAsUuid, Is.EqualTo(userItemCreatorUuid), |
380 | // "Loaded item non-uuid creator doesn't match that of the loading user"); | 277 | // "Loaded item uuid creator doesn't match original"); |
381 | Assert.That( | 278 | // Assert.That(foundItem1.Owner, Is.EqualTo(userUuid), |
382 | foundItem1.Name, Is.EqualTo(itemName), | 279 | // "Loaded item owner doesn't match inventory reciever"); |
383 | "Loaded item name doesn't match saved name"); | 280 | |
384 | } | 281 | // // Now try loading to a root child folder |
282 | // UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xA"); | ||
283 | // archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
284 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "xA", "meowfood", archiveReadStream); | ||
285 | |||
286 | // InventoryItemBase foundItem2 | ||
287 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xA/" + item1Name); | ||
288 | // Assert.That(foundItem2, Is.Not.Null, "Didn't find loaded item 2"); | ||
289 | |||
290 | // // Now try loading to a more deeply nested folder | ||
291 | // UserInventoryTestUtils.CreateInventoryFolder(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC"); | ||
292 | // archiveReadStream = new MemoryStream(archiveReadStream.ToArray()); | ||
293 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "xB/xC", "meowfood", archiveReadStream); | ||
294 | |||
295 | // InventoryItemBase foundItem3 | ||
296 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, "xB/xC/" + item1Name); | ||
297 | // Assert.That(foundItem3, Is.Not.Null, "Didn't find loaded item 3"); | ||
298 | //} | ||
299 | |||
300 | // REFACTORING PROBLEM. Needs rewrite. | ||
301 | // [Test] | ||
302 | // public void TestIarV0_1WithEscapedChars() | ||
303 | // { | ||
304 | // TestHelper.InMethod(); | ||
305 | //// log4net.Config.XmlConfigurator.Configure(); | ||
306 | |||
307 | // string itemName = "You & you are a mean/man/"; | ||
308 | // string humanEscapedItemName = @"You & you are a mean\/man\/"; | ||
309 | // string userPassword = "meowfood"; | ||
310 | |||
311 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | ||
312 | |||
313 | // Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | ||
314 | // SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | ||
315 | // CommunicationsManager cm = scene.CommsManager; | ||
316 | |||
317 | // // Create user | ||
318 | // string userFirstName = "Jock"; | ||
319 | // string userLastName = "Stirrup"; | ||
320 | // UUID userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | ||
321 | |||
322 | // lock (this) | ||
323 | // { | ||
324 | // UserProfileTestUtils.CreateUserWithInventory( | ||
325 | // cm, userFirstName, userLastName, userPassword, userId, InventoryReceived); | ||
326 | // Monitor.Wait(this, 60000); | ||
327 | // } | ||
328 | |||
329 | // // Create asset | ||
330 | // SceneObjectGroup object1; | ||
331 | // SceneObjectPart part1; | ||
332 | // { | ||
333 | // string partName = "part name"; | ||
334 | // UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | ||
335 | // PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | ||
336 | // Vector3 groupPosition = new Vector3(10, 20, 30); | ||
337 | // Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | ||
338 | // Vector3 offsetPosition = new Vector3(5, 10, 15); | ||
339 | |||
340 | // part1 | ||
341 | // = new SceneObjectPart( | ||
342 | // ownerId, shape, groupPosition, rotationOffset, offsetPosition); | ||
343 | // part1.Name = partName; | ||
344 | |||
345 | // object1 = new SceneObjectGroup(part1); | ||
346 | // scene.AddNewSceneObject(object1, false); | ||
347 | // } | ||
348 | |||
349 | // UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | ||
350 | // AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | ||
351 | // scene.AssetService.Store(asset1); | ||
352 | |||
353 | // // Create item | ||
354 | // UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | ||
355 | // InventoryItemBase item1 = new InventoryItemBase(); | ||
356 | // item1.Name = itemName; | ||
357 | // item1.AssetID = asset1.FullID; | ||
358 | // item1.ID = item1Id; | ||
359 | // InventoryFolderBase objsFolder | ||
360 | // = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | ||
361 | // item1.Folder = objsFolder.ID; | ||
362 | // scene.AddInventoryItem(userId, item1); | ||
363 | |||
364 | // MemoryStream archiveWriteStream = new MemoryStream(); | ||
365 | // archiverModule.OnInventoryArchiveSaved += SaveCompleted; | ||
366 | |||
367 | // mre.Reset(); | ||
368 | // archiverModule.ArchiveInventory( | ||
369 | // Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); | ||
370 | // mre.WaitOne(60000, false); | ||
371 | |||
372 | // // LOAD ITEM | ||
373 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | ||
374 | |||
375 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "Scripts", userPassword, archiveReadStream); | ||
376 | |||
377 | // InventoryItemBase foundItem1 | ||
378 | // = InventoryArchiveUtils.FindItemByPath( | ||
379 | // scene.InventoryService, userId, "Scripts/Objects/" + humanEscapedItemName); | ||
380 | |||
381 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
382 | //// Assert.That( | ||
383 | //// foundItem1.CreatorId, Is.EqualTo(userUuid), | ||
384 | //// "Loaded item non-uuid creator doesn't match that of the loading user"); | ||
385 | // Assert.That( | ||
386 | // foundItem1.Name, Is.EqualTo(itemName), | ||
387 | // "Loaded item name doesn't match saved name"); | ||
388 | // } | ||
385 | 389 | ||
386 | /// <summary> | 390 | /// <summary> |
387 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | 391 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
@@ -390,199 +394,203 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
390 | /// | 394 | /// |
391 | /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature | 395 | /// This may possibly one day get overtaken by the as yet incomplete temporary profiles feature |
392 | /// (as tested in the a later commented out test) | 396 | /// (as tested in the a later commented out test) |
393 | [Test] | 397 | /// REFACTORING PROBLEM. Needs rewrite. |
394 | public void TestLoadIarV0_1AbsentUsers() | 398 | // [Test] |
395 | { | 399 | // public void TestLoadIarV0_1AbsentUsers() |
396 | TestHelper.InMethod(); | 400 | // { |
397 | 401 | // TestHelper.InMethod(); | |
398 | //log4net.Config.XmlConfigurator.Configure(); | 402 | |
399 | 403 | // //log4net.Config.XmlConfigurator.Configure(); | |
400 | string userFirstName = "Charlie"; | 404 | |
401 | string userLastName = "Chan"; | 405 | // string userFirstName = "Charlie"; |
402 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); | 406 | // string userLastName = "Chan"; |
403 | string userItemCreatorFirstName = "Bat"; | 407 | // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000999"); |
404 | string userItemCreatorLastName = "Man"; | 408 | // string userItemCreatorFirstName = "Bat"; |
405 | //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); | 409 | // string userItemCreatorLastName = "Man"; |
406 | 410 | // //UUID userItemCreatorUuid = UUID.Parse("00000000-0000-0000-0000-000000008888"); | |
407 | string itemName = "b.lsl"; | 411 | |
408 | string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | 412 | // string itemName = "b.lsl"; |
409 | 413 | // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | |
410 | MemoryStream archiveWriteStream = new MemoryStream(); | 414 | |
411 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | 415 | // MemoryStream archiveWriteStream = new MemoryStream(); |
412 | 416 | // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | |
413 | InventoryItemBase item1 = new InventoryItemBase(); | 417 | |
414 | item1.Name = itemName; | 418 | // InventoryItemBase item1 = new InventoryItemBase(); |
415 | item1.AssetID = UUID.Random(); | 419 | // item1.Name = itemName; |
416 | item1.GroupID = UUID.Random(); | 420 | // item1.AssetID = UUID.Random(); |
417 | item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); | 421 | // item1.GroupID = UUID.Random(); |
418 | //item1.CreatorId = userUuid.ToString(); | 422 | // item1.CreatorId = OspResolver.MakeOspa(userItemCreatorFirstName, userItemCreatorLastName); |
419 | //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; | 423 | // //item1.CreatorId = userUuid.ToString(); |
420 | item1.Owner = UUID.Zero; | 424 | // //item1.CreatorId = "00000000-0000-0000-0000-000000000444"; |
421 | 425 | // item1.Owner = UUID.Zero; | |
422 | string item1FileName | 426 | |
423 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | 427 | // string item1FileName |
424 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | 428 | // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); |
425 | tar.Close(); | 429 | // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); |
426 | 430 | // tar.Close(); | |
427 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 431 | |
428 | SerialiserModule serialiserModule = new SerialiserModule(); | 432 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
429 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 433 | // SerialiserModule serialiserModule = new SerialiserModule(); |
430 | 434 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | |
431 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 435 | |
432 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 436 | // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene |
433 | IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | 437 | // Scene scene = SceneSetupHelpers.SetupScene("inventory"); |
434 | 438 | // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | |
435 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 439 | |
436 | userAdminService.AddUser( | 440 | // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
437 | userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | 441 | // userAdminService.AddUser( |
438 | 442 | // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | |
439 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | 443 | |
440 | 444 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "meowfood", archiveReadStream); | |
441 | CachedUserInfo userInfo | 445 | |
442 | = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | 446 | // CachedUserInfo userInfo |
443 | 447 | // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | |
444 | InventoryItemBase foundItem1 | 448 | |
445 | = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, itemName); | 449 | // InventoryItemBase foundItem1 |
446 | 450 | // = InventoryArchiveUtils.FindItemByPath(scene.InventoryService, userInfo.UserProfile.ID, itemName); | |
447 | Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | 451 | |
452 | // Assert.That(foundItem1, Is.Not.Null, "Didn't find loaded item 1"); | ||
453 | //// Assert.That( | ||
454 | //// foundItem1.CreatorId, Is.EqualTo(userUuid), | ||
455 | //// "Loaded item non-uuid creator doesn't match that of the loading user"); | ||
448 | // Assert.That( | 456 | // Assert.That( |
449 | // foundItem1.CreatorId, Is.EqualTo(userUuid), | 457 | // foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), |
450 | // "Loaded item non-uuid creator doesn't match that of the loading user"); | 458 | // "Loaded item uuid creator doesn't match that of the loading user"); |
451 | Assert.That( | 459 | // } |
452 | foundItem1.CreatorIdAsUuid, Is.EqualTo(userUuid), | ||
453 | "Loaded item uuid creator doesn't match that of the loading user"); | ||
454 | } | ||
455 | 460 | ||
456 | /// <summary> | 461 | /// <summary> |
457 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where | 462 | /// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where |
458 | /// no account exists with the creator name | 463 | /// no account exists with the creator name |
459 | /// </summary> | 464 | /// </summary> |
460 | /// Disabled since temporary profiles have not yet been implemented. | 465 | /// Disabled since temporary profiles have not yet been implemented. |
466 | /// REFACTORING PROBLEM. Needs rewrite. | ||
467 | /// | ||
461 | //[Test] | 468 | //[Test] |
462 | public void TestLoadIarV0_1TempProfiles() | 469 | //public void TestLoadIarV0_1TempProfiles() |
463 | { | 470 | //{ |
464 | TestHelper.InMethod(); | 471 | // TestHelper.InMethod(); |
465 | 472 | ||
466 | //log4net.Config.XmlConfigurator.Configure(); | 473 | // //log4net.Config.XmlConfigurator.Configure(); |
467 | 474 | ||
468 | string userFirstName = "Dennis"; | 475 | // string userFirstName = "Dennis"; |
469 | string userLastName = "Menace"; | 476 | // string userLastName = "Menace"; |
470 | UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000aaa"); | 477 | // UUID userUuid = UUID.Parse("00000000-0000-0000-0000-000000000aaa"); |
471 | string user2FirstName = "Walter"; | 478 | // string user2FirstName = "Walter"; |
472 | string user2LastName = "Mitty"; | 479 | // string user2LastName = "Mitty"; |
473 | 480 | ||
474 | string itemName = "b.lsl"; | 481 | // string itemName = "b.lsl"; |
475 | string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | 482 | // string archiveItemName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); |
476 | 483 | ||
477 | MemoryStream archiveWriteStream = new MemoryStream(); | 484 | // MemoryStream archiveWriteStream = new MemoryStream(); |
478 | TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); | 485 | // TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream); |
479 | 486 | ||
480 | InventoryItemBase item1 = new InventoryItemBase(); | 487 | // InventoryItemBase item1 = new InventoryItemBase(); |
481 | item1.Name = itemName; | 488 | // item1.Name = itemName; |
482 | item1.AssetID = UUID.Random(); | 489 | // item1.AssetID = UUID.Random(); |
483 | item1.GroupID = UUID.Random(); | 490 | // item1.GroupID = UUID.Random(); |
484 | item1.CreatorId = OspResolver.MakeOspa(user2FirstName, user2LastName); | 491 | // item1.CreatorId = OspResolver.MakeOspa(user2FirstName, user2LastName); |
485 | item1.Owner = UUID.Zero; | 492 | // item1.Owner = UUID.Zero; |
486 | 493 | ||
487 | string item1FileName | 494 | // string item1FileName |
488 | = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); | 495 | // = string.Format("{0}{1}", ArchiveConstants.INVENTORY_PATH, archiveItemName); |
489 | tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); | 496 | // tar.WriteFile(item1FileName, UserInventoryItemSerializer.Serialize(item1)); |
490 | tar.Close(); | 497 | // tar.Close(); |
491 | 498 | ||
492 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 499 | // MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
493 | SerialiserModule serialiserModule = new SerialiserModule(); | 500 | // SerialiserModule serialiserModule = new SerialiserModule(); |
494 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); | 501 | // InventoryArchiverModule archiverModule = new InventoryArchiverModule(true); |
495 | 502 | ||
496 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 503 | // // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene |
497 | Scene scene = SceneSetupHelpers.SetupScene(); | 504 | // Scene scene = SceneSetupHelpers.SetupScene(); |
498 | IUserAdminService userAdminService = scene.CommsManager.UserAdminService; | 505 | // IUserAdminService userAdminService = scene.CommsManager.UserAdminService; |
499 | 506 | ||
500 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 507 | // SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
501 | userAdminService.AddUser( | 508 | // userAdminService.AddUser( |
502 | userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); | 509 | // userFirstName, userLastName, "meowfood", String.Empty, 1000, 1000, userUuid); |
503 | 510 | ||
504 | archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "troll", archiveReadStream); | 511 | // archiverModule.DearchiveInventory(userFirstName, userLastName, "/", "troll", archiveReadStream); |
505 | 512 | ||
506 | // Check that a suitable temporary user profile has been created. | 513 | // // Check that a suitable temporary user profile has been created. |
507 | UserProfileData user2Profile | 514 | // UserProfileData user2Profile |
508 | = scene.CommsManager.UserService.GetUserProfile( | 515 | // = scene.CommsManager.UserService.GetUserProfile( |
509 | OspResolver.HashName(user2FirstName + " " + user2LastName)); | 516 | // OspResolver.HashName(user2FirstName + " " + user2LastName)); |
510 | Assert.That(user2Profile, Is.Not.Null); | 517 | // Assert.That(user2Profile, Is.Not.Null); |
511 | Assert.That(user2Profile.FirstName == user2FirstName); | 518 | // Assert.That(user2Profile.FirstName == user2FirstName); |
512 | Assert.That(user2Profile.SurName == user2LastName); | 519 | // Assert.That(user2Profile.SurName == user2LastName); |
513 | 520 | ||
514 | CachedUserInfo userInfo | 521 | // CachedUserInfo userInfo |
515 | = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); | 522 | // = scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName); |
516 | userInfo.OnInventoryReceived += InventoryReceived; | 523 | // userInfo.OnInventoryReceived += InventoryReceived; |
517 | 524 | ||
518 | lock (this) | 525 | // lock (this) |
519 | { | 526 | // { |
520 | userInfo.FetchInventory(); | 527 | // userInfo.FetchInventory(); |
521 | Monitor.Wait(this, 60000); | 528 | // Monitor.Wait(this, 60000); |
522 | } | 529 | // } |
523 | 530 | ||
524 | InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); | 531 | // InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName); |
525 | 532 | ||
526 | Assert.That(foundItem.CreatorId, Is.EqualTo(item1.CreatorId)); | 533 | // Assert.That(foundItem.CreatorId, Is.EqualTo(item1.CreatorId)); |
527 | Assert.That( | 534 | // Assert.That( |
528 | foundItem.CreatorIdAsUuid, Is.EqualTo(OspResolver.HashName(user2FirstName + " " + user2LastName))); | 535 | // foundItem.CreatorIdAsUuid, Is.EqualTo(OspResolver.HashName(user2FirstName + " " + user2LastName))); |
529 | Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); | 536 | // Assert.That(foundItem.Owner, Is.EqualTo(userUuid)); |
530 | 537 | ||
531 | Console.WriteLine("### Successfully completed {0} ###", MethodBase.GetCurrentMethod()); | 538 | // Console.WriteLine("### Successfully completed {0} ###", MethodBase.GetCurrentMethod()); |
532 | } | 539 | //} |
533 | 540 | ||
534 | /// <summary> | 541 | /// <summary> |
535 | /// Test replication of an archive path to the user's inventory. | 542 | /// Test replication of an archive path to the user's inventory. |
536 | /// </summary> | 543 | /// </summary> |
537 | [Test] | 544 | //[Test] |
538 | public void TestReplicateArchivePathToUserInventory() | 545 | //public void TestReplicateArchivePathToUserInventory() |
539 | { | 546 | //{ |
540 | TestHelper.InMethod(); | 547 | // TestHelper.InMethod(); |
541 | 548 | ||
542 | //log4net.Config.XmlConfigurator.Configure(); | 549 | // //log4net.Config.XmlConfigurator.Configure(); |
543 | 550 | ||
544 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 551 | // Scene scene = SceneSetupHelpers.SetupScene("inventory"); |
545 | CommunicationsManager commsManager = scene.CommsManager; | 552 | // CommunicationsManager commsManager = scene.CommsManager; |
546 | CachedUserInfo userInfo; | 553 | // CachedUserInfo userInfo; |
547 | 554 | ||
548 | lock (this) | 555 | // lock (this) |
549 | { | 556 | // { |
550 | userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager, InventoryReceived); | 557 | // // !!! REFACTORING PROBLEM. This needs to be rewritten |
551 | Monitor.Wait(this, 60000); | 558 | // userInfo = UserProfileTestUtils.CreateUserWithInventory(commsManager, InventoryReceived); |
552 | } | 559 | // Monitor.Wait(this, 60000); |
553 | 560 | // } | |
554 | //Console.WriteLine("userInfo.RootFolder 1: {0}", userInfo.RootFolder); | 561 | |
555 | 562 | // //Console.WriteLine("userInfo.RootFolder 1: {0}", userInfo.RootFolder); | |
556 | Dictionary <string, InventoryFolderBase> foldersCreated = new Dictionary<string, InventoryFolderBase>(); | 563 | |
557 | List<InventoryNodeBase> nodesLoaded = new List<InventoryNodeBase>(); | 564 | // Dictionary <string, InventoryFolderBase> foldersCreated = new Dictionary<string, InventoryFolderBase>(); |
558 | 565 | // List<InventoryNodeBase> nodesLoaded = new List<InventoryNodeBase>(); | |
559 | string folder1Name = "a"; | 566 | |
560 | string folder2Name = "b"; | 567 | // string folder1Name = "a"; |
561 | string itemName = "c.lsl"; | 568 | // string folder2Name = "b"; |
562 | 569 | // string itemName = "c.lsl"; | |
563 | string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1Name, UUID.Random()); | 570 | |
564 | string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); | 571 | // string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1Name, UUID.Random()); |
565 | string itemArchiveName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | 572 | // string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random()); |
566 | 573 | // string itemArchiveName = InventoryArchiveWriteRequest.CreateArchiveItemName(itemName, UUID.Random()); | |
567 | string itemArchivePath | 574 | |
568 | = string.Format( | 575 | // string itemArchivePath |
569 | "{0}{1}{2}{3}", | 576 | // = string.Format( |
570 | ArchiveConstants.INVENTORY_PATH, folder1ArchiveName, folder2ArchiveName, itemArchiveName); | 577 | // "{0}{1}{2}{3}", |
571 | 578 | // ArchiveConstants.INVENTORY_PATH, folder1ArchiveName, folder2ArchiveName, itemArchiveName); | |
572 | //Console.WriteLine("userInfo.RootFolder 2: {0}", userInfo.RootFolder); | 579 | |
573 | 580 | // //Console.WriteLine("userInfo.RootFolder 2: {0}", userInfo.RootFolder); | |
574 | new InventoryArchiveReadRequest(scene, userInfo, null, (Stream)null) | 581 | |
575 | .ReplicateArchivePathToUserInventory( | 582 | // new InventoryArchiveReadRequest(scene, userInfo, null, (Stream)null) |
576 | itemArchivePath, false, scene.InventoryService.GetRootFolder(userInfo.UserProfile.ID), | 583 | // .ReplicateArchivePathToUserInventory( |
577 | foldersCreated, nodesLoaded); | 584 | // itemArchivePath, false, scene.InventoryService.GetRootFolder(userInfo.UserProfile.ID), |
578 | 585 | // foldersCreated, nodesLoaded); | |
579 | //Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder); | 586 | |
580 | //InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a"); | 587 | // //Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder); |
581 | InventoryFolderBase folder1 | 588 | // //InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a"); |
582 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userInfo.UserProfile.ID, "a"); | 589 | // InventoryFolderBase folder1 |
583 | Assert.That(folder1, Is.Not.Null, "Could not find folder a"); | 590 | // = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userInfo.UserProfile.ID, "a"); |
584 | InventoryFolderBase folder2 = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, "b"); | 591 | // Assert.That(folder1, Is.Not.Null, "Could not find folder a"); |
585 | Assert.That(folder2, Is.Not.Null, "Could not find folder b"); | 592 | // InventoryFolderBase folder2 = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1, "b"); |
586 | } | 593 | // Assert.That(folder2, Is.Not.Null, "Could not find folder b"); |
594 | //} | ||
587 | } | 595 | } |
588 | } | 596 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs index f1022fd..cc5b0e4 100644 --- a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs +++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs | |||
@@ -162,11 +162,10 @@ namespace OpenSim.Region.CoreModules.Framework.Library | |||
162 | m_MockScene.RegisterModuleInterface<IInventoryService>(invService); | 162 | m_MockScene.RegisterModuleInterface<IInventoryService>(invService); |
163 | m_MockScene.RegisterModuleInterface<IAssetService>(m_Scene.AssetService); | 163 | m_MockScene.RegisterModuleInterface<IAssetService>(m_Scene.AssetService); |
164 | 164 | ||
165 | UserProfileData profile = new UserProfileData(); | 165 | UserAccount uinfo = new UserAccount(lib.Owner); |
166 | profile.FirstName = "OpenSim"; | 166 | uinfo.FirstName = "OpenSim"; |
167 | profile.ID = lib.Owner; | 167 | uinfo.LastName = "Library"; |
168 | profile.SurName = "Library"; | 168 | uinfo.ServiceURLs = new Dictionary<string, object>(); |
169 | CachedUserInfo uinfo = new CachedUserInfo(invService, profile); | ||
170 | 169 | ||
171 | foreach (string iarFileName in Directory.GetFiles(pathToLibraries, "*.iar")) | 170 | foreach (string iarFileName in Directory.GetFiles(pathToLibraries, "*.iar")) |
172 | { | 171 | { |
diff --git a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs b/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs deleted file mode 100644 index 46ee3c0..0000000 --- a/OpenSim/Region/CoreModules/Hypergrid/HGStandaloneLoginModule.cs +++ /dev/null | |||
@@ -1,326 +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 | |||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Net; | ||
32 | using System.Reflection; | ||
33 | using System.Text.RegularExpressions; | ||
34 | using log4net; | ||
35 | using Nini.Config; | ||
36 | using OpenMetaverse; | ||
37 | using Nwc.XmlRpc; | ||
38 | using OpenSim.Framework; | ||
39 | using OpenSim.Framework.Communications; | ||
40 | using OpenSim.Framework.Communications.Services; | ||
41 | using OpenSim.Framework.Communications.Cache; | ||
42 | using OpenSim.Framework.Capabilities; | ||
43 | using OpenSim.Framework.Servers.HttpServer; | ||
44 | using OpenSim.Region.Framework.Scenes; | ||
45 | using OpenSim.Region.Framework.Interfaces; | ||
46 | |||
47 | namespace OpenSim.Region.CoreModules.Hypergrid | ||
48 | { | ||
49 | public class HGStandaloneLoginModule : IRegionModule, ILoginServiceToRegionsConnector | ||
50 | { | ||
51 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
52 | |||
53 | protected List<Scene> m_scenes = new List<Scene>(); | ||
54 | protected Scene m_firstScene; | ||
55 | |||
56 | protected bool m_enabled = false; // Module is only enabled if running in standalone mode | ||
57 | |||
58 | public bool RegionLoginsEnabled | ||
59 | { | ||
60 | get | ||
61 | { | ||
62 | if (m_firstScene != null) | ||
63 | { | ||
64 | return m_firstScene.SceneGridService.RegionLoginsEnabled; | ||
65 | } | ||
66 | else | ||
67 | { | ||
68 | return false; | ||
69 | } | ||
70 | } | ||
71 | } | ||
72 | |||
73 | protected HGLoginAuthService m_loginService; | ||
74 | |||
75 | #region IRegionModule Members | ||
76 | |||
77 | public void Initialise(Scene scene, IConfigSource source) | ||
78 | { | ||
79 | if (m_firstScene == null) | ||
80 | { | ||
81 | m_firstScene = scene; | ||
82 | |||
83 | IConfig startupConfig = source.Configs["Startup"]; | ||
84 | if (startupConfig != null) | ||
85 | { | ||
86 | m_enabled = !startupConfig.GetBoolean("gridmode", false); | ||
87 | } | ||
88 | |||
89 | if (m_enabled) | ||
90 | { | ||
91 | m_log.Debug("[HGLogin]: HGlogin module enabled"); | ||
92 | bool authenticate = true; | ||
93 | string welcomeMessage = "Welcome to OpenSim"; | ||
94 | IConfig standaloneConfig = source.Configs["StandAlone"]; | ||
95 | if (standaloneConfig != null) | ||
96 | { | ||
97 | authenticate = standaloneConfig.GetBoolean("accounts_authenticate", true); | ||
98 | welcomeMessage = standaloneConfig.GetString("welcome_message"); | ||
99 | } | ||
100 | |||
101 | //TODO: fix casting. | ||
102 | LibraryRootFolder rootFolder = m_firstScene.CommsManager.UserProfileCacheService.LibraryRoot as LibraryRootFolder; | ||
103 | |||
104 | IHttpServer httpServer = MainServer.Instance; | ||
105 | |||
106 | //TODO: fix the casting of the user service, maybe by registering the userManagerBase with scenes, or refactoring so we just need a IUserService reference | ||
107 | m_loginService | ||
108 | = new HGLoginAuthService( | ||
109 | (UserManagerBase)m_firstScene.CommsManager.UserAdminService, | ||
110 | welcomeMessage, | ||
111 | m_firstScene.CommsManager.InterServiceInventoryService, | ||
112 | m_firstScene.CommsManager.NetworkServersInfo, | ||
113 | authenticate, | ||
114 | rootFolder, | ||
115 | this); | ||
116 | |||
117 | httpServer.AddXmlRPCHandler("hg_login", m_loginService.XmlRpcLoginMethod); | ||
118 | httpServer.AddXmlRPCHandler("check_auth_session", m_loginService.XmlRPCCheckAuthSession, false); | ||
119 | httpServer.AddXmlRPCHandler("get_avatar_appearance", XmlRPCGetAvatarAppearance); | ||
120 | httpServer.AddXmlRPCHandler("update_avatar_appearance", XmlRPCUpdateAvatarAppearance); | ||
121 | |||
122 | } | ||
123 | } | ||
124 | |||
125 | if (m_enabled) | ||
126 | { | ||
127 | AddScene(scene); | ||
128 | } | ||
129 | } | ||
130 | |||
131 | public void PostInitialise() | ||
132 | { | ||
133 | |||
134 | } | ||
135 | |||
136 | public void Close() | ||
137 | { | ||
138 | |||
139 | } | ||
140 | |||
141 | public string Name | ||
142 | { | ||
143 | get { return "HGStandaloneLoginModule"; } | ||
144 | } | ||
145 | |||
146 | public bool IsSharedModule | ||
147 | { | ||
148 | get { return true; } | ||
149 | } | ||
150 | |||
151 | #endregion | ||
152 | |||
153 | protected void AddScene(Scene scene) | ||
154 | { | ||
155 | lock (m_scenes) | ||
156 | { | ||
157 | if (!m_scenes.Contains(scene)) | ||
158 | { | ||
159 | m_scenes.Add(scene); | ||
160 | } | ||
161 | } | ||
162 | } | ||
163 | |||
164 | public bool NewUserConnection(ulong regionHandle, AgentCircuitData agent, out string reason) | ||
165 | { | ||
166 | reason = String.Empty; | ||
167 | return true; | ||
168 | } | ||
169 | |||
170 | public void LogOffUserFromGrid(ulong regionHandle, UUID AvatarID, UUID RegionSecret, string message) | ||
171 | { | ||
172 | Scene scene; | ||
173 | if (TryGetRegion(regionHandle, out scene)) | ||
174 | { | ||
175 | scene.HandleLogOffUserFromGrid(AvatarID, RegionSecret, message); | ||
176 | } | ||
177 | } | ||
178 | |||
179 | public RegionInfo RequestNeighbourInfo(ulong regionhandle) | ||
180 | { | ||
181 | Scene scene; | ||
182 | if (TryGetRegion(regionhandle, out scene)) | ||
183 | { | ||
184 | return scene.RegionInfo; | ||
185 | } | ||
186 | return null; | ||
187 | } | ||
188 | |||
189 | public RegionInfo RequestClosestRegion(string region) | ||
190 | { | ||
191 | Scene scene; | ||
192 | if (TryGetRegion(region, out scene)) | ||
193 | { | ||
194 | return scene.RegionInfo; | ||
195 | } | ||
196 | else if (m_scenes.Count > 0) | ||
197 | { | ||
198 | return m_scenes[0].RegionInfo; | ||
199 | } | ||
200 | return null; | ||
201 | } | ||
202 | |||
203 | public RegionInfo RequestNeighbourInfo(UUID regionID) | ||
204 | { | ||
205 | Scene scene; | ||
206 | if (TryGetRegion(regionID, out scene)) | ||
207 | { | ||
208 | return scene.RegionInfo; | ||
209 | } | ||
210 | return null; | ||
211 | } | ||
212 | |||
213 | protected bool TryGetRegion(ulong regionHandle, out Scene scene) | ||
214 | { | ||
215 | lock (m_scenes) | ||
216 | { | ||
217 | foreach (Scene nextScene in m_scenes) | ||
218 | { | ||
219 | if (nextScene.RegionInfo.RegionHandle == regionHandle) | ||
220 | { | ||
221 | scene = nextScene; | ||
222 | return true; | ||
223 | } | ||
224 | } | ||
225 | } | ||
226 | |||
227 | scene = null; | ||
228 | return false; | ||
229 | } | ||
230 | |||
231 | protected bool TryGetRegion(UUID regionID, out Scene scene) | ||
232 | { | ||
233 | lock (m_scenes) | ||
234 | { | ||
235 | foreach (Scene nextScene in m_scenes) | ||
236 | { | ||
237 | if (nextScene.RegionInfo.RegionID == regionID) | ||
238 | { | ||
239 | scene = nextScene; | ||
240 | return true; | ||
241 | } | ||
242 | } | ||
243 | } | ||
244 | |||
245 | scene = null; | ||
246 | return false; | ||
247 | } | ||
248 | |||
249 | protected bool TryGetRegion(string regionName, out Scene scene) | ||
250 | { | ||
251 | lock (m_scenes) | ||
252 | { | ||
253 | foreach (Scene nextScene in m_scenes) | ||
254 | { | ||
255 | if (nextScene.RegionInfo.RegionName.Equals(regionName, StringComparison.InvariantCultureIgnoreCase)) | ||
256 | { | ||
257 | scene = nextScene; | ||
258 | return true; | ||
259 | } | ||
260 | } | ||
261 | } | ||
262 | |||
263 | scene = null; | ||
264 | return false; | ||
265 | } | ||
266 | |||
267 | public XmlRpcResponse XmlRPCGetAvatarAppearance(XmlRpcRequest request, IPEndPoint remoteClient) | ||
268 | { | ||
269 | XmlRpcResponse response = new XmlRpcResponse(); | ||
270 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
271 | AvatarAppearance appearance; | ||
272 | Hashtable responseData; | ||
273 | if (requestData.Contains("owner")) | ||
274 | { | ||
275 | appearance = m_firstScene.CommsManager.AvatarService.GetUserAppearance(new UUID((string)requestData["owner"])); | ||
276 | if (appearance == null) | ||
277 | { | ||
278 | responseData = new Hashtable(); | ||
279 | responseData["error_type"] = "no appearance"; | ||
280 | responseData["error_desc"] = "There was no appearance found for this avatar"; | ||
281 | } | ||
282 | else | ||
283 | { | ||
284 | responseData = appearance.ToHashTable(); | ||
285 | } | ||
286 | } | ||
287 | else | ||
288 | { | ||
289 | responseData = new Hashtable(); | ||
290 | responseData["error_type"] = "unknown_avatar"; | ||
291 | responseData["error_desc"] = "The avatar appearance requested is not in the database"; | ||
292 | } | ||
293 | |||
294 | response.Value = responseData; | ||
295 | return response; | ||
296 | } | ||
297 | |||
298 | public XmlRpcResponse XmlRPCUpdateAvatarAppearance(XmlRpcRequest request, IPEndPoint remoteClient) | ||
299 | { | ||
300 | XmlRpcResponse response = new XmlRpcResponse(); | ||
301 | Hashtable requestData = (Hashtable)request.Params[0]; | ||
302 | Hashtable responseData; | ||
303 | if (requestData.Contains("owner")) | ||
304 | { | ||
305 | AvatarAppearance appearance = new AvatarAppearance(requestData); | ||
306 | |||
307 | // TODO: Sometime in the future we may have a database layer that is capable of updating appearance when | ||
308 | // the TextureEntry is null. When that happens, this check can be removed | ||
309 | if (appearance.Texture != null) | ||
310 | m_firstScene.CommsManager.AvatarService.UpdateUserAppearance(new UUID((string)requestData["owner"]), appearance); | ||
311 | |||
312 | responseData = new Hashtable(); | ||
313 | responseData["returnString"] = "TRUE"; | ||
314 | } | ||
315 | else | ||
316 | { | ||
317 | responseData = new Hashtable(); | ||
318 | responseData["error_type"] = "unknown_avatar"; | ||
319 | responseData["error_desc"] = "The avatar appearance requested is not in the database"; | ||
320 | } | ||
321 | response.Value = responseData; | ||
322 | return response; | ||
323 | } | ||
324 | } | ||
325 | |||
326 | } | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs index 0aa753d..044764b 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs | |||
@@ -366,18 +366,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
366 | 366 | ||
367 | public string GetUserAssetServer(UUID userID) | 367 | public string GetUserAssetServer(UUID userID) |
368 | { | 368 | { |
369 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | 369 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, userID); |
370 | if ((uinfo != null) && (uinfo.UserProfile != null)) | 370 | |
371 | { | 371 | if (account != null && account.ServiceURLs.ContainsKey("AssetServerURI") && account.ServiceURLs["AssetServerURI"] != null) |
372 | if ((uinfo.UserProfile.UserAssetURI == string.Empty) || (uinfo.UserProfile.UserAssetURI == "")) | 372 | return account.ServiceURLs["AssetServerURI"].ToString(); |
373 | return m_LocalAssetServiceURI; | 373 | |
374 | return uinfo.UserProfile.UserAssetURI.Trim('/'); | 374 | return string.Empty; |
375 | } | ||
376 | else | ||
377 | { | ||
378 | // we don't know anyting about this user | ||
379 | return string.Empty; | ||
380 | } | ||
381 | } | 375 | } |
382 | 376 | ||
383 | public string GetSimAssetServer() | 377 | public string GetSimAssetServer() |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs index 501f730..3c1f7b6 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/HGGridConnector.cs | |||
@@ -38,6 +38,7 @@ using OpenSim.Region.Framework.Scenes; | |||
38 | using OpenSim.Region.Framework.Scenes.Hypergrid; | 38 | using OpenSim.Region.Framework.Scenes.Hypergrid; |
39 | using OpenSim.Services.Interfaces; | 39 | using OpenSim.Services.Interfaces; |
40 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 40 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
41 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; | ||
41 | using OpenSim.Server.Base; | 42 | using OpenSim.Server.Base; |
42 | using OpenSim.Services.Connectors.Grid; | 43 | using OpenSim.Services.Connectors.Grid; |
43 | using OpenSim.Framework.Console; | 44 | using OpenSim.Framework.Console; |
@@ -603,93 +604,105 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
603 | 604 | ||
604 | public bool SendUserInformation(GridRegion regInfo, AgentCircuitData agentData) | 605 | public bool SendUserInformation(GridRegion regInfo, AgentCircuitData agentData) |
605 | { | 606 | { |
606 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID); | 607 | // REFACTORING PROBLEM. This needs to change. Some of this info should go with the agent circuit data. |
607 | 608 | ||
608 | if (uinfo == null) | 609 | //UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, agentData.AgentID); |
609 | return false; | 610 | //if (account == null) |
610 | 611 | // return false; | |
611 | if ((IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) || | ||
612 | (!IsLocalUser(uinfo) && !IsGoingHome(uinfo, regInfo))) | ||
613 | { | ||
614 | m_log.Info("[HGrid]: Local user is going to foreign region or foreign user is going elsewhere"); | ||
615 | |||
616 | // Set the position of the region on the remote grid | ||
617 | // ulong realHandle = FindRegionHandle(regInfo.RegionHandle); | ||
618 | uint x = 0, y = 0; | ||
619 | Utils.LongToUInts(regInfo.RegionHandle, out x, out y); | ||
620 | GridRegion clonedRegion = new GridRegion(regInfo); | ||
621 | clonedRegion.RegionLocX = (int)x; | ||
622 | clonedRegion.RegionLocY = (int)y; | ||
623 | |||
624 | // Get the user's home region information and adapt the region handle | ||
625 | GridRegion home = GetRegionByUUID(m_aScene.RegionInfo.ScopeID, uinfo.UserProfile.HomeRegionID); | ||
626 | if (m_HyperlinkHandles.ContainsKey(uinfo.UserProfile.HomeRegionID)) | ||
627 | { | ||
628 | ulong realHandle = m_HyperlinkHandles[uinfo.UserProfile.HomeRegionID]; | ||
629 | Utils.LongToUInts(realHandle, out x, out y); | ||
630 | m_log.DebugFormat("[HGrid]: Foreign user is going elsewhere. Adjusting home handle from {0}-{1} to {2}-{3}", home.RegionLocX, home.RegionLocY, x, y); | ||
631 | home.RegionLocX = (int)x; | ||
632 | home.RegionLocY = (int)y; | ||
633 | } | ||
634 | 612 | ||
635 | // Get the user's service URLs | 613 | //if ((IsLocalUser(account) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) || |
636 | string serverURI = ""; | 614 | // (!IsLocalUser(account) && !IsGoingHome(uinfo, regInfo))) |
637 | if (uinfo.UserProfile is ForeignUserProfileData) | ||
638 | serverURI = Util.ServerURI(((ForeignUserProfileData)uinfo.UserProfile).UserServerURI); | ||
639 | string userServer = (serverURI == "") || (serverURI == null) ? LocalUserServerURI : serverURI; | ||
640 | |||
641 | string assetServer = Util.ServerURI(uinfo.UserProfile.UserAssetURI); | ||
642 | if ((assetServer == null) || (assetServer == "")) | ||
643 | assetServer = LocalAssetServerURI; | ||
644 | |||
645 | string inventoryServer = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); | ||
646 | if ((inventoryServer == null) || (inventoryServer == "")) | ||
647 | inventoryServer = LocalInventoryServerURI; | ||
648 | |||
649 | if (!m_HypergridServiceConnector.InformRegionOfUser(clonedRegion, agentData, home, userServer, assetServer, inventoryServer)) | ||
650 | { | ||
651 | m_log.Warn("[HGrid]: Could not inform remote region of transferring user."); | ||
652 | return false; | ||
653 | } | ||
654 | } | ||
655 | //if ((uinfo == null) || !IsGoingHome(uinfo, regInfo)) | ||
656 | //{ | 615 | //{ |
657 | // m_log.Info("[HGrid]: User seems to be going to foreign region."); | 616 | // m_log.Info("[HGrid]: Local user is going to foreign region or foreign user is going elsewhere"); |
658 | // if (!InformRegionOfUser(regInfo, agentData)) | 617 | |
618 | // PresenceInfo pinfo = m_aScene.PresenceService.GetAgent(agentData.SessionID); | ||
619 | // if (pinfo != null) | ||
620 | // { | ||
621 | // // Set the position of the region on the remote grid | ||
622 | // // ulong realHandle = FindRegionHandle(regInfo.RegionHandle); | ||
623 | // uint x = 0, y = 0; | ||
624 | // Utils.LongToUInts(regInfo.RegionHandle, out x, out y); | ||
625 | // GridRegion clonedRegion = new GridRegion(regInfo); | ||
626 | // clonedRegion.RegionLocX = (int)x; | ||
627 | // clonedRegion.RegionLocY = (int)y; | ||
628 | |||
629 | // // Get the user's home region information and adapt the region handle | ||
630 | // GridRegion home = GetRegionByUUID(m_aScene.RegionInfo.ScopeID, pinfo.HomeRegionID); | ||
631 | // if (m_HyperlinkHandles.ContainsKey(pinfo.HomeRegionID)) | ||
632 | // { | ||
633 | // ulong realHandle = m_HyperlinkHandles[pinfo.HomeRegionID]; | ||
634 | // Utils.LongToUInts(realHandle, out x, out y); | ||
635 | // m_log.DebugFormat("[HGrid]: Foreign user is going elsewhere. Adjusting home handle from {0}-{1} to {2}-{3}", home.RegionLocX, home.RegionLocY, x, y); | ||
636 | // home.RegionLocX = (int)x; | ||
637 | // home.RegionLocY = (int)y; | ||
638 | // } | ||
639 | |||
640 | // // Get the user's service URLs | ||
641 | // string serverURI = ""; | ||
642 | // if (uinfo.UserProfile is ForeignUserProfileData) | ||
643 | // serverURI = Util.ServerURI(((ForeignUserProfileData)uinfo.UserProfile).UserServerURI); | ||
644 | // string userServer = (serverURI == "") || (serverURI == null) ? LocalUserServerURI : serverURI; | ||
645 | |||
646 | // string assetServer = Util.ServerURI(uinfo.UserProfile.UserAssetURI); | ||
647 | // if ((assetServer == null) || (assetServer == "")) | ||
648 | // assetServer = LocalAssetServerURI; | ||
649 | |||
650 | // string inventoryServer = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); | ||
651 | // if ((inventoryServer == null) || (inventoryServer == "")) | ||
652 | // inventoryServer = LocalInventoryServerURI; | ||
653 | |||
654 | // if (!m_HypergridServiceConnector.InformRegionOfUser(clonedRegion, agentData, home, userServer, assetServer, inventoryServer)) | ||
655 | // { | ||
656 | // m_log.Warn("[HGrid]: Could not inform remote region of transferring user."); | ||
657 | // return false; | ||
658 | // } | ||
659 | // } | ||
660 | // else | ||
659 | // { | 661 | // { |
660 | // m_log.Warn("[HGrid]: Could not inform remote region of transferring user."); | 662 | // m_log.Warn("[HGrid]: Unable to find local presence of transferring user."); |
661 | // return false; | 663 | // return false; |
662 | // } | 664 | // } |
663 | //} | 665 | //} |
664 | //else | 666 | ////if ((uinfo == null) || !IsGoingHome(uinfo, regInfo)) |
665 | // m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName); | 667 | ////{ |
666 | 668 | //// m_log.Info("[HGrid]: User seems to be going to foreign region."); | |
667 | // May need to change agent's name | 669 | //// if (!InformRegionOfUser(regInfo, agentData)) |
668 | if (IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) | 670 | //// { |
669 | { | 671 | //// m_log.Warn("[HGrid]: Could not inform remote region of transferring user."); |
670 | agentData.firstname = agentData.firstname + "." + agentData.lastname; | 672 | //// return false; |
671 | agentData.lastname = "@" + LocalUserServerURI.Replace("http://", ""); ; //HGNetworkServersInfo.Singleton.LocalUserServerURI; | 673 | //// } |
672 | } | 674 | ////} |
675 | ////else | ||
676 | //// m_log.Info("[HGrid]: User seems to be going home " + uinfo.UserProfile.FirstName + " " + uinfo.UserProfile.SurName); | ||
677 | |||
678 | //// May need to change agent's name | ||
679 | //if (IsLocalUser(uinfo) && (GetHyperlinkRegion(regInfo.RegionHandle) != null)) | ||
680 | //{ | ||
681 | // agentData.firstname = agentData.firstname + "." + agentData.lastname; | ||
682 | // agentData.lastname = "@" + LocalUserServerURI.Replace("http://", ""); ; //HGNetworkServersInfo.Singleton.LocalUserServerURI; | ||
683 | //} | ||
673 | 684 | ||
674 | return true; | 685 | return true; |
675 | } | 686 | } |
676 | 687 | ||
677 | public void AdjustUserInformation(AgentCircuitData agentData) | 688 | public void AdjustUserInformation(AgentCircuitData agentData) |
678 | { | 689 | { |
679 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID); | 690 | // REFACTORING PROBLEM!!! This needs to change |
680 | if ((uinfo != null) && (uinfo.UserProfile != null) && | 691 | |
681 | (IsLocalUser(uinfo) || !(uinfo.UserProfile is ForeignUserProfileData))) | 692 | //CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(agentData.AgentID); |
682 | { | 693 | //if ((uinfo != null) && (uinfo.UserProfile != null) && |
683 | //m_log.Debug("---------------> Local User!"); | 694 | // (IsLocalUser(uinfo) || !(uinfo.UserProfile is ForeignUserProfileData))) |
684 | string[] parts = agentData.firstname.Split(new char[] { '.' }); | 695 | //{ |
685 | if (parts.Length == 2) | 696 | // //m_log.Debug("---------------> Local User!"); |
686 | { | 697 | // string[] parts = agentData.firstname.Split(new char[] { '.' }); |
687 | agentData.firstname = parts[0]; | 698 | // if (parts.Length == 2) |
688 | agentData.lastname = parts[1]; | 699 | // { |
689 | } | 700 | // agentData.firstname = parts[0]; |
690 | } | 701 | // agentData.lastname = parts[1]; |
691 | //else | 702 | // } |
692 | // m_log.Debug("---------------> Foreign User!"); | 703 | //} |
704 | ////else | ||
705 | //// m_log.Debug("---------------> Foreign User!"); | ||
693 | } | 706 | } |
694 | 707 | ||
695 | // Check if a local user exists with the same UUID as the incoming foreign user | 708 | // Check if a local user exists with the same UUID as the incoming foreign user |
@@ -699,16 +712,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
699 | if (!m_aScene.SceneGridService.RegionLoginsEnabled) | 712 | if (!m_aScene.SceneGridService.RegionLoginsEnabled) |
700 | return false; | 713 | return false; |
701 | 714 | ||
702 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | 715 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, userID); |
703 | if (uinfo != null) | 716 | if (account != null) |
704 | { | 717 | { |
705 | // uh-oh we have a potential intruder | 718 | if (m_aScene.AuthenticationService.Verify(userID, sessionID.ToString(), 30)) |
706 | if (uinfo.SessionID != sessionID) | 719 | { |
707 | // can't have a foreigner with a local UUID | ||
708 | return false; | ||
709 | else | ||
710 | // oh, so it's you! welcome back | 720 | // oh, so it's you! welcome back |
711 | comingHome = true; | 721 | comingHome = true; |
722 | } | ||
723 | else | ||
724 | // can't have a foreigner with a local UUID | ||
725 | return false; | ||
712 | } | 726 | } |
713 | 727 | ||
714 | // OK, user can come in | 728 | // OK, user can come in |
@@ -717,7 +731,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
717 | 731 | ||
718 | public void AcceptUser(ForeignUserProfileData user, GridRegion home) | 732 | public void AcceptUser(ForeignUserProfileData user, GridRegion home) |
719 | { | 733 | { |
720 | m_aScene.CommsManager.UserProfileCacheService.PreloadUserCache(user); | 734 | // REFACTORING PROBLEM. uh-oh, commenting this breaks HG completely |
735 | // Needs to be rewritten | ||
736 | //m_aScene.CommsManager.UserProfileCacheService.PreloadUserCache(user); | ||
737 | |||
721 | ulong realHandle = home.RegionHandle; | 738 | ulong realHandle = home.RegionHandle; |
722 | // Change the local coordinates | 739 | // Change the local coordinates |
723 | // X=0 on the map | 740 | // X=0 on the map |
@@ -733,8 +750,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
733 | 750 | ||
734 | public bool IsLocalUser(UUID userID) | 751 | public bool IsLocalUser(UUID userID) |
735 | { | 752 | { |
736 | CachedUserInfo uinfo = m_aScene.CommsManager.UserProfileCacheService.GetUserDetails(userID); | 753 | UserAccount account = m_aScene.UserAccountService.GetUserAccount(m_aScene.RegionInfo.ScopeID, userID); |
737 | return IsLocalUser(uinfo); | 754 | return IsLocalUser(account); |
738 | } | 755 | } |
739 | 756 | ||
740 | #endregion | 757 | #endregion |
@@ -767,13 +784,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
767 | return (uinfo.UserProfile.HomeRegionID == rinfo.RegionID); | 784 | return (uinfo.UserProfile.HomeRegionID == rinfo.RegionID); |
768 | } | 785 | } |
769 | 786 | ||
770 | protected bool IsLocalUser(CachedUserInfo uinfo) | 787 | protected bool IsLocalUser(UserAccount account) |
771 | { | 788 | { |
772 | if (uinfo == null) | 789 | if (account != null && |
773 | return false; | 790 | account.ServiceURLs.ContainsKey("HomeURI") && |
791 | account.ServiceURLs["HomeURI"] != null) | ||
774 | 792 | ||
775 | return !(uinfo.UserProfile is ForeignUserProfileData); | 793 | return (account.ServiceURLs["HomeURI"].ToString() == LocalUserServerURI); |
776 | 794 | ||
795 | return false; | ||
777 | } | 796 | } |
778 | 797 | ||
779 | 798 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index 7584dd8..5ed2b7a 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs | |||
@@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
50 | private bool m_Enabled = false; | 50 | private bool m_Enabled = false; |
51 | private bool m_Initialized = false; | 51 | private bool m_Initialized = false; |
52 | private Scene m_Scene; | 52 | private Scene m_Scene; |
53 | private UserProfileCacheService m_UserProfileService; // This should change to IUserProfileService | 53 | private IUserAccountService m_UserAccountService; // This should change to IUserProfileService |
54 | 54 | ||
55 | private IInventoryService m_GridService; | 55 | private IInventoryService m_GridService; |
56 | private ISessionAuthInventoryService m_HGService; | 56 | private ISessionAuthInventoryService m_HGService; |
@@ -157,10 +157,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
157 | if (!m_Initialized) | 157 | if (!m_Initialized) |
158 | { | 158 | { |
159 | m_Scene = scene; | 159 | m_Scene = scene; |
160 | // HACK for now. Ugh! | 160 | m_UserAccountService = m_Scene.UserAccountService; |
161 | m_UserProfileService = m_Scene.CommsManager.UserProfileCacheService; | ||
162 | // ugh! | ||
163 | m_UserProfileService.SetInventoryService(this); | ||
164 | 161 | ||
165 | m_Initialized = true; | 162 | m_Initialized = true; |
166 | } | 163 | } |
@@ -514,58 +511,66 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
514 | 511 | ||
515 | private UUID GetSessionID(UUID userID) | 512 | private UUID GetSessionID(UUID userID) |
516 | { | 513 | { |
517 | CachedUserInfo uinfo = m_UserProfileService.GetUserDetails(userID); | 514 | ScenePresence sp = null; |
518 | if (uinfo != null) | 515 | if (m_Scene.TryGetAvatar(userID, out sp)) |
519 | return uinfo.SessionID; | 516 | { |
517 | return sp.ControllingClient.SessionId; | ||
518 | } | ||
520 | 519 | ||
521 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: user profile for {0} not found", userID); | 520 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: scene presence for {0} not found", userID); |
522 | return UUID.Zero; | 521 | return UUID.Zero; |
523 | } | 522 | } |
524 | 523 | ||
525 | private bool IsLocalGridUser(UUID userID) | 524 | private bool IsLocalGridUser(UUID userID) |
526 | { | 525 | { |
527 | if (m_UserProfileService == null) | 526 | return true; |
528 | { | ||
529 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: IsLocalGridUser, no profile service. Returning false."); | ||
530 | return false; | ||
531 | } | ||
532 | 527 | ||
533 | CachedUserInfo uinfo = m_UserProfileService.GetUserDetails(userID); | 528 | // REFACTORING PROBLEM. This needs to be rewritten |
534 | if (uinfo == null) | ||
535 | { | ||
536 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: IsLocalGridUser, no profile for user {0}. Returning true.", userID); | ||
537 | return true; | ||
538 | } | ||
539 | 529 | ||
540 | if ((uinfo.UserProfile.UserInventoryURI == null) || (uinfo.UserProfile.UserInventoryURI == "")) | 530 | //if (m_UserAccountService == null) |
541 | // this happens in standalone profiles, apparently | 531 | //{ |
542 | return true; | 532 | // m_log.DebugFormat("[HG INVENTORY CONNECTOR]: IsLocalGridUser, no user account service. Returning false."); |
533 | // return false; | ||
534 | //} | ||
535 | |||
536 | //UserAccount uinfo = m_UserAccountService.GetUserAccount(m_Scene.RegionInfo.ScopeID, userID); | ||
537 | //if (uinfo == null) | ||
538 | //{ | ||
539 | // m_log.DebugFormat("[HG INVENTORY CONNECTOR]: IsLocalGridUser, no account for user {0}. Returning false.", userID); | ||
540 | // return false; | ||
541 | //} | ||
542 | |||
543 | //if ((uinfo.UserProfile.UserInventoryURI == null) || (uinfo.UserProfile.UserInventoryURI == "")) | ||
544 | // // this happens in standalone profiles, apparently | ||
545 | // return true; | ||
543 | 546 | ||
544 | string userInventoryServerURI = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); | 547 | //string userInventoryServerURI = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); |
545 | 548 | ||
546 | string uri = LocalGridInventory.TrimEnd('/'); | 549 | //string uri = LocalGridInventory.TrimEnd('/'); |
547 | 550 | ||
548 | if ((userInventoryServerURI == uri) || (userInventoryServerURI == "")) | 551 | //if ((userInventoryServerURI == uri) || (userInventoryServerURI == "")) |
549 | { | 552 | //{ |
550 | return true; | 553 | // return true; |
551 | } | 554 | //} |
552 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: user {0} is foreign({1} - {2})", userID, userInventoryServerURI, uri); | 555 | //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: user {0} is foreign({1} - {2})", userID, userInventoryServerURI, uri); |
553 | return false; | 556 | //return false; |
554 | } | 557 | } |
555 | 558 | ||
556 | private string GetUserInventoryURI(UUID userID) | 559 | private string GetUserInventoryURI(UUID userID) |
557 | { | 560 | { |
558 | string invURI = LocalGridInventory; | 561 | string invURI = LocalGridInventory; |
562 | // REFACTORING PROBLEM!!! This needs to be rewritten | ||
563 | |||
564 | //CachedUserInfo uinfo = m_UserAccountService.GetUserDetails(userID); | ||
565 | //if ((uinfo == null) || (uinfo.UserProfile == null)) | ||
566 | // return invURI; | ||
559 | 567 | ||
560 | CachedUserInfo uinfo = m_UserProfileService.GetUserDetails(userID); | 568 | //string userInventoryServerURI = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); |
561 | if ((uinfo == null) || (uinfo.UserProfile == null)) | ||
562 | return invURI; | ||
563 | 569 | ||
564 | string userInventoryServerURI = Util.ServerURI(uinfo.UserProfile.UserInventoryURI); | 570 | //if ((userInventoryServerURI != null) && |
571 | // (userInventoryServerURI != "")) | ||
572 | // invURI = userInventoryServerURI; | ||
565 | 573 | ||
566 | if ((userInventoryServerURI != null) && | ||
567 | (userInventoryServerURI != "")) | ||
568 | invURI = userInventoryServerURI; | ||
569 | return invURI; | 574 | return invURI; |
570 | } | 575 | } |
571 | 576 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs index f2e344f..9d6da4f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs | |||
@@ -131,8 +131,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
131 | 131 | ||
132 | if (!m_Initialized) | 132 | if (!m_Initialized) |
133 | { | 133 | { |
134 | // ugh! | ||
135 | scene.CommsManager.UserProfileCacheService.SetInventoryService(this); | ||
136 | m_Initialized = true; | 134 | m_Initialized = true; |
137 | } | 135 | } |
138 | 136 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs index 3580c27..575a190 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs | |||
@@ -49,7 +49,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
49 | private bool m_Enabled = false; | 49 | private bool m_Enabled = false; |
50 | private bool m_Initialized = false; | 50 | private bool m_Initialized = false; |
51 | private Scene m_Scene; | 51 | private Scene m_Scene; |
52 | private UserProfileCacheService m_UserProfileService; | ||
53 | private InventoryServicesConnector m_RemoteConnector; | 52 | private InventoryServicesConnector m_RemoteConnector; |
54 | 53 | ||
55 | public Type ReplaceableInterface | 54 | public Type ReplaceableInterface |
@@ -114,8 +113,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
114 | 113 | ||
115 | if (!m_Initialized) | 114 | if (!m_Initialized) |
116 | { | 115 | { |
117 | // ugh! | ||
118 | scene.CommsManager.UserProfileCacheService.SetInventoryService(this); | ||
119 | m_Initialized = true; | 116 | m_Initialized = true; |
120 | } | 117 | } |
121 | 118 | ||
@@ -133,10 +130,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
133 | 130 | ||
134 | public void RegionLoaded(Scene scene) | 131 | public void RegionLoaded(Scene scene) |
135 | { | 132 | { |
136 | m_UserProfileService = m_Scene.CommsManager.UserProfileCacheService; | ||
137 | if (m_UserProfileService != null) | ||
138 | m_log.Debug("[XXXX] Set m_UserProfileService in " + m_Scene.RegionInfo.RegionName); | ||
139 | |||
140 | if (!m_Enabled) | 133 | if (!m_Enabled) |
141 | return; | 134 | return; |
142 | 135 | ||
@@ -344,21 +337,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
344 | 337 | ||
345 | private UUID GetSessionID(UUID userID) | 338 | private UUID GetSessionID(UUID userID) |
346 | { | 339 | { |
347 | //if (m_Scene == null) | 340 | ScenePresence sp = null; |
348 | //{ | 341 | if (m_Scene.TryGetAvatar(userID, out sp)) |
349 | // m_log.Debug("[INVENTORY CONNECTOR]: OOPS! scene is null"); | ||
350 | //} | ||
351 | |||
352 | if (m_UserProfileService == null) | ||
353 | { | 342 | { |
354 | //m_log.Debug("[INVENTORY CONNECTOR]: OOPS! UserProfileCacheService is null"); | 343 | return sp.ControllingClient.SessionId; |
355 | return UUID.Zero; | ||
356 | } | 344 | } |
357 | 345 | ||
358 | CachedUserInfo uinfo = m_UserProfileService.GetUserDetails(userID); | 346 | m_log.DebugFormat("[INVENTORY CONNECTOR]: scene presence for {0} not found", userID); |
359 | if (uinfo != null) | ||
360 | return uinfo.SessionID; | ||
361 | m_log.DebugFormat("[INVENTORY CONNECTOR]: user profile for {0} not found", userID); | ||
362 | return UUID.Zero; | 347 | return UUID.Zero; |
363 | 348 | ||
364 | } | 349 | } |
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 52add23..4c43389 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | |||
@@ -42,6 +42,7 @@ using OpenSim.Framework.Communications.Cache; | |||
42 | using OpenSim.Region.CoreModules.World.Terrain; | 42 | using OpenSim.Region.CoreModules.World.Terrain; |
43 | using OpenSim.Region.Framework.Interfaces; | 43 | using OpenSim.Region.Framework.Interfaces; |
44 | using OpenSim.Region.Framework.Scenes; | 44 | using OpenSim.Region.Framework.Scenes; |
45 | using OpenSim.Services.Interfaces; | ||
45 | 46 | ||
46 | namespace OpenSim.Region.CoreModules.World.Archiver | 47 | namespace OpenSim.Region.CoreModules.World.Archiver |
47 | { | 48 | { |
@@ -292,8 +293,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
292 | { | 293 | { |
293 | if (!m_validUserUuids.ContainsKey(uuid)) | 294 | if (!m_validUserUuids.ContainsKey(uuid)) |
294 | { | 295 | { |
295 | CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(uuid); | 296 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, uuid); |
296 | if (profile != null && profile.UserProfile != null) | 297 | if (account != null) |
297 | m_validUserUuids.Add(uuid, true); | 298 | m_validUserUuids.Add(uuid, true); |
298 | else | 299 | else |
299 | m_validUserUuids.Add(uuid, false); | 300 | m_validUserUuids.Add(uuid, false); |
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index ae3dc2e..aaebd00 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -491,10 +491,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
491 | 491 | ||
492 | if (m_allowGridGods) | 492 | if (m_allowGridGods) |
493 | { | 493 | { |
494 | CachedUserInfo profile = m_scene.CommsManager.UserProfileCacheService.GetUserDetails(user); | 494 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, user); |
495 | if (profile != null && profile.UserProfile != null) | 495 | if (account != null) |
496 | { | 496 | { |
497 | if (profile.UserProfile.GodLevel >= 200) | 497 | if (account.UserLevel >= 200) |
498 | return true; | 498 | return true; |
499 | } | 499 | } |
500 | } | 500 | } |