public bool ArchiveInventory( Guid id, string firstName, string lastName, string invPath, Stream saveStream, Dictionary <string, object> options) { UserAccount userInfo = m_registry.RequestModuleInterface <IUserAccountService>() .GetUserAccount(null, firstName, lastName); if (userInfo != null) { try { bool UseAssets = true; if (options.ContainsKey("assets")) { object Assets; options.TryGetValue("assets", out Assets); bool.TryParse(Assets.ToString(), out UseAssets); } string checkPermissions = ""; if (options.ContainsKey("checkPermissions")) { Object temp; if (options.TryGetValue("checkPermissions", out temp)) { checkPermissions = temp.ToString().ToUpper(); } } var saveArchive = new InventoryArchiveWriteRequest( id, this, m_registry, userInfo, invPath, saveStream, UseAssets, null, new List <AssetBase>(), checkPermissions); saveArchive.Execute(); } catch (EntryPointNotFoundException e) { MainConsole.Instance.ErrorFormat( "[Archiver]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); MainConsole.Instance.Error(e); return(false); } return(true); } return(false); }
public bool ArchiveInventory( Guid id, string firstName, string lastName, string invPath, Stream saveStream, Dictionary<string, object> options) { UserAccount userInfo = m_registry.RequestModuleInterface<IUserAccountService>() .GetUserAccount(null, firstName, lastName); if (userInfo != null) { try { bool UseAssets = true; if (options.ContainsKey("assets")) { object Assets; options.TryGetValue("assets", out Assets); bool.TryParse(Assets.ToString(), out UseAssets); } string checkPermissions = ""; if (options.ContainsKey("checkPermissions")) { Object temp; if (options.TryGetValue("checkPermissions", out temp)) checkPermissions = temp.ToString().ToUpper(); } var saveArchive = new InventoryArchiveWriteRequest( id, this, m_registry, userInfo, invPath, saveStream, UseAssets, null, new List<AssetBase>(), checkPermissions); saveArchive.Execute(); } catch (EntryPointNotFoundException e) { MainConsole.Instance.ErrorFormat( "[Archiver]: Mismatch between Mono and zlib1g library version when trying to create compression stream." + "If you've manually installed Mono, have you appropriately updated zlib1g as well?"); MainConsole.Instance.Error(e); return false; } return true; } return false; }
/// <summary> /// Handles the default inventory save. /// </summary> /// <param name="scene">Scene.</param> /// <param name="cmd">Cmd.</param> private void HandleDefInvSave( IScene scene, string[] cmd ) { if (!m_enabled) return; if (m_busy) return; string fileName = IARName; // optional filename int el = cmd.Length; if (el >= 4) { fileName = cmd[3]; // some file sanity checks string extension = Path.GetExtension (fileName); if (extension == string.Empty) { fileName = fileName + ".iar"; } } string fileDir = Path.GetDirectoryName (fileName); if (fileDir == "") { fileDir = "./DefaultInventory"; fileName = fileDir + '/' + fileName; } if (!Directory.Exists (fileDir)) { MainConsole.Instance.Info ("[LIBDEF]: The folder specified, '" + fileDir + "' does not exist!"); return; } // don't try and write to an existing file if (File.Exists (fileName)) { if (MainConsole.Instance.Prompt ("[LIBDEF]: The inventory file '" + fileName + "' exists. Overwrite?", "yes") != "yes") return; File.Delete (fileName); } // good to go... do it... m_busy = true; m_service = m_registry.RequestModuleInterface<ILibraryService>(); RegionInfo regInfo = new RegionInfo(); IScene m_MockScene = null; //Make the scene for the IAR loader if (m_registry is IScene) m_MockScene = (IScene)m_registry; else { m_MockScene = new Scene(); m_MockScene.Initialize(regInfo); m_MockScene.AddModuleInterfaces(m_registry.GetInterfaces()); } UserAccount uinfo = m_MockScene.UserAccountService.GetUserAccount(null, m_service.LibraryOwner); //Make the user account for the default IAR if (uinfo == null) { uinfo = new UserAccount(m_service.LibraryOwner); uinfo.Name = m_service.LibraryOwnerName; m_MockScene.InventoryService.CreateUserInventory(m_service.LibraryOwner, false); } List<AssetBase> assets = new List<AssetBase> (); if (m_MockScene.InventoryService != null) { //Add the folders to the user's inventory InventoryCollection i = m_MockScene.InventoryService.GetFolderContent (m_service.LibraryOwner, UUID.Zero); if (i != null) { foreach (InventoryItemBase item in i.Items) { AssetBase asset = m_MockScene.RequestModuleInterface<IAssetService> ().Get (item.AssetID.ToString ()); if (asset != null) assets.Add (asset); } } } InventoryFolderBase rootFolder = null; List<InventoryFolderBase> rootFolders = m_MockScene.InventoryService.GetRootFolders (m_service.LibraryOwner); foreach (InventoryFolderBase folder in rootFolders) { if (folder.Name == "My Inventory") continue; rootFolder = folder; break; } if (rootFolder != null) { //Save the IAR of the default assets MainConsole.Instance.Info ("[LIBDEF]: Saving default inventory to " + fileName); InventoryArchiveWriteRequest write = new InventoryArchiveWriteRequest (Guid.NewGuid (), null, m_MockScene, uinfo, "/", new GZipStream (new FileStream (fileName, FileMode.Create), CompressionMode.Compress), true, rootFolder, assets); write.Execute (); } m_busy = false; }