コード例 #1
0
        private void FixPerms(InventoryNodeBase node)
        {
            m_log.DebugFormat("[LIBRARY MODULE]: Fixing perms for {0} {1}", node.Name, node.ID);

            if (node is InventoryItemBase)
            {
                InventoryItemBase item = (InventoryItemBase)node;
                item.BasePermissions = (uint)PermissionMask.All;
                item.EveryOnePermissions = (uint)PermissionMask.All - (uint)PermissionMask.Modify;
                item.CurrentPermissions = (uint)PermissionMask.All;
                item.NextPermissions = (uint)PermissionMask.All;
            }
        }
コード例 #2
0
ファイル: VWHClientView.cs プロジェクト: intari/OpenSimMirror
 public void SendBulkUpdateInventory(InventoryNodeBase node)
 {
     throw new System.NotImplementedException();
 }
コード例 #3
0
 public string NodeToPath(UUID agent_id, InventoryNodeBase node)
 {
     string path = "";
     UUID parentID = UUID.Zero;
     InventoryFolderBase currentFolder = null;
     if (node is InventoryFolderBase) { parentID = ((InventoryFolderBase)node).ParentID; path = node.Name + "/"; }
     if (node is InventoryItemBase) { parentID = ((InventoryItemBase)node).Folder; path = node.Name; }
     List<InventoryFolderBase> folders = m_InventoryService.GetInventorySkeleton(agent_id);
     while (parentID != UUID.Zero)
     {
         InventoryFolderBase fetchFolder = new InventoryFolderBase(parentID, agent_id);
         currentFolder = m_InventoryService.GetFolder(fetchFolder);
         if (currentFolder.ParentID != UUID.Zero)
         {
             path = currentFolder.Name + "/" + path;
         }
         parentID = currentFolder.ParentID;
     }
     return path;
 }
コード例 #4
0
 private HttpStatusCode CopyItemToNonExistentDestination(UUID agent_id,
                                               string local_destination,
                                               InventoryNodeBase source_node,
                                               Dictionary<string, HttpStatusCode> status_values,
                                               string destName) 
 {
     InventoryFolderBase destinationParentFolder = CreateFolderPath(agent_id, local_destination, true);
     //fetch item and copy it
     InventoryItemBase sourceItemBase = m_InventoryService.GetItem(new InventoryItemBase(source_node.ID, agent_id));
     HttpStatusCode created = CopyItem(agent_id, sourceItemBase, destinationParentFolder, destName);
     if (created == HttpStatusCode.Created) // copy item properties
     {
         //m_InventoryPropertyHandler.CopyProperties(path, "/inventory/" + agent_id.ToString() + "/" + local_destination);
         m_InventoryPropertyHandler.CopyProperties(agent_id, source_node, "/inventory/" + agent_id.ToString() + "/" + local_destination);
     }
     status_values.Add(NodeToPath(agent_id, source_node), created);
     return (HttpStatusCode)207;
 }
コード例 #5
0
 private HttpStatusCode SetErrorsAndReturnMultiStatus(UUID agent_id, InventoryNodeBase source_node, ref Dictionary<string, HttpStatusCode> multiStatus, HttpStatusCode[] errors) 
 {
     foreach (HttpStatusCode hsc in errors) {
         multiStatus.Add(NodeToPath(agent_id, source_node), hsc);
     }
     return (HttpStatusCode)207;
 }
コード例 #6
0
 public static IWebDAVResource InventoryToDAV(string path, InventoryNodeBase invObject)
 {
     if (invObject is InventoryFolderBase)
     {
         InventoryFolderBase folder = (InventoryFolderBase)invObject;
         return new WebDAVFolder(path, Utils.Epoch, Utils.Epoch, DateTime.UtcNow, false);
     }
     else if (invObject is InventoryItemBase)
     {
         InventoryItemBase item = (InventoryItemBase)invObject;
         DateTime creationDate = Utils.UnixTimeToDateTime(item.CreationDate);
         string contentType = CableBeachUtils.SLAssetTypeToContentType(item.AssetType);
         return new WebDAVFile(path, contentType, 0, creationDate, creationDate, DateTime.UtcNow, false, false);
     }
     else
     {
         return null;
     }
 }
コード例 #7
0
 private HttpStatusCode MoveItemToNonExistentDestination(UUID agent_id,
                                               string local_destination,
                                               InventoryNodeBase source_node,
                                               Dictionary<string, HttpStatusCode> status_values,
                                               string destName) 
 {
     InventoryFolderBase destinationParentFolder = CreateFolderPath(agent_id, local_destination, true);
     InventoryItemBase sourceItemBase = m_InventoryService.GetItem(new InventoryItemBase(source_node.ID, agent_id));
     string sourcePath = "/inventory/" + agent_id.ToString() + "/" + NodeToPath(agent_id, sourceItemBase);
     sourceItemBase.Folder = destinationParentFolder.ID;
     sourceItemBase.Name = destName;
     if (m_InventoryService.UpdateItem(sourceItemBase))
     {
         m_InventoryPropertyHandler.MoveProperties(sourcePath, "/inventory/" + agent_id.ToString() + "/" + local_destination);
         status_values.Add(NodeToPath(agent_id, source_node), HttpStatusCode.OK);
     }
     else 
     {
         status_values.Add(NodeToPath(agent_id, source_node), HttpStatusCode.InternalServerError);
     }
     return HttpStatusCode.OK;
 }
コード例 #8
0
        private string CollectObjectProperties(InventoryNodeBase node, ref List<IWebDAVResource> dav_entries, string path)
        {
            string resourcePath;
            string name = node.Name;
            name = HttpUtility.UrlPathEncode(name); //encode spaces to %20 etc
            if (path.EndsWith("/"))
                resourcePath = path + name;
            else
                resourcePath = path + "/" + name;

            if (node is InventoryFolderBase)
                resourcePath = resourcePath + "/";

            IWebDAVResource resource = m_PropertyProvider.Load(resourcePath);
            if (resource == null)
            {
                resource = WebDAVServerConnector.InventoryToDAV(resourcePath, node);
                m_PropertyProvider.Save(resource);
            }
            if (resource != null)
                dav_entries.Add(resource);
            return resourcePath;
        }
コード例 #9
0
 internal void MoveProperties(UUID agent_id, InventoryNodeBase source_node, List<string> custom_properties)
 {
     string rootOrigin = custom_properties[custom_properties.Count - 1];
     custom_properties.Remove(rootOrigin);
     string rootDestiny = "/" + m_SubDomain + "/" + agent_id.ToString() + "/" + m_WebDAVServerConnector.NodeToPath(agent_id, source_node);
     IWebDAVResource folder = m_PropertyProvider.Load(rootOrigin);
     m_PropertyProvider.Remove(folder);
     folder.Path = rootDestiny;
     m_PropertyProvider.Save(folder);
     foreach (string path in custom_properties)
     {
         IWebDAVResource resource = m_PropertyProvider.Load(path);
         m_PropertyProvider.Remove(resource);
         string endPart = resource.Path.Substring(rootOrigin.Length);
         resource.Path = rootDestiny + endPart;
         m_PropertyProvider.Save(resource);
     }
 }
コード例 #10
0
 private HttpStatusCode CopyFolderToNonExistentDestination(UUID agent_id,
                                               string local_destionation,
                                               InventoryNodeBase source_node,
                                               DepthHeader depth, 
                                               Dictionary<string, HttpStatusCode> status_values,
                                               string destName)
 {
     InventoryFolderBase destinationParentFolder = CreateFolderPath(agent_id, local_destionation, true);
     //fetch folder and copy it
     InventoryFolderBase sourceFolderToCopy = m_InventoryService.GetFolder(new InventoryFolderBase(source_node.ID, agent_id));
     sourceFolderToCopy.Name = destName;
     HttpStatusCode ret = RecursiveCopyFolder(agent_id, sourceFolderToCopy, destinationParentFolder,
                                              depth, status_values);
     status_values.Add(NodeToPath(agent_id, source_node), ret);
     return (HttpStatusCode)207;
 }
コード例 #11
0
 internal List<string> PreparePropertiesMove(UUID agent_id, InventoryNodeBase source_node)
 {
     string rootPath = "/" + m_SubDomain + "/" + agent_id.ToString() + "/" + m_WebDAVServerConnector.NodeToPath(agent_id, source_node);
     List<string> allPaths = m_PropertyProvider.LoadFolderCustomPropertiesPresentation(rootPath);
     // set root path to last element
     allPaths.Remove(rootPath);
     allPaths.Add(rootPath); 
     return allPaths;
 }
コード例 #12
0
 public bool MoveProperties(UUID agent_id, InventoryNodeBase node, string destiny_path)
 {
     string originalPath = m_WebDAVServerConnector.NodeToPath(agent_id, node);
     MoveProperties(originalPath, destiny_path);
     return true;
 }
コード例 #13
0
 public bool CopyProperties(UUID agent_id, InventoryNodeBase node, string destiny_path)
 {
     string originalPath = "/inventory/" + agent_id.ToString() + "/" + m_WebDAVServerConnector.NodeToPath(agent_id, node);
     CopyProperties(originalPath, destiny_path);
     return true;
 }
コード例 #14
0
 private void FixPerms(InventoryNodeBase node)
 {
     if (node is InventoryItemBase)
     {
         InventoryItemBase item = (InventoryItemBase) node;
         item.BasePermissions = 0x7FFFFFFF;
         item.EveryOnePermissions = 0x7FFFFFFF;
         item.CurrentPermissions = 0x7FFFFFFF;
         item.NextPermissions = 0x7FFFFFFF;
     }
 }
コード例 #15
0
 private HttpStatusCode MoveFolderToNonExistentDestination(UUID agent_id,
                                               string local_destination,
                                               InventoryNodeBase source_node,
                                               DepthHeader depth, 
                                               Dictionary<string, HttpStatusCode> status_values,
                                               string destName)
 {
     InventoryFolderBase destinationParentFolder = CreateFolderPath(agent_id, local_destination, true);
     InventoryFolderBase sourceFolderBase = m_InventoryService.GetFolder(new InventoryFolderBase(source_node.ID, agent_id));
     List<string> customProperties = m_InventoryPropertyHandler.PreparePropertiesMove(agent_id, source_node);
     sourceFolderBase.ParentID = destinationParentFolder.ID;
     sourceFolderBase.Name = destName;
     if (m_InventoryService.UpdateFolder(sourceFolderBase))
     {
         m_InventoryPropertyHandler.MoveProperties(agent_id, sourceFolderBase, customProperties);
         status_values.Add(NodeToPath(agent_id, source_node), HttpStatusCode.OK);
     }
     else
     {
         status_values.Add(NodeToPath(agent_id, source_node), HttpStatusCode.InternalServerError);
     }
     return HttpStatusCode.OK;
 }
コード例 #16
0
ファイル: MyNpcCharacter.cs プロジェクト: AlphaStaxLLC/taiga
 public virtual void SendBulkUpdateInventory(InventoryNodeBase node)
 {
 }
コード例 #17
0
ファイル: ServiceHelper.cs プロジェクト: AlphaStaxLLC/taiga
        public static InventoryBlock InventoryToMessage(InventoryNodeBase obj)
        {
            if (obj is InventoryItemBase)
            {
                // Inventory item
                InventoryItemBase item = (InventoryItemBase)obj;
                InventoryBlockItem itemObj = new InventoryBlockItem();

                itemObj.AssetID = item.AssetID;
                itemObj.ContentType = CableBeachUtils.SLAssetTypeToContentType(item.AssetType);
                itemObj.CreationDate = OpenMetaverse.Utils.UnixTimeToDateTime(item.CreationDate);
                UUID.TryParse(item.CreatorId, out itemObj.CreatorID);
                itemObj.Description = item.Description;
                itemObj.Flags = item.Flags;
                itemObj.GroupID = item.GroupID;
                itemObj.GroupOwned = item.GroupOwned;
                itemObj.ID = item.ID;
                itemObj.Name = item.Name;
                itemObj.OwnerID = item.Owner;
                itemObj.ParentID = item.Folder;
                itemObj.PermsBase = item.BasePermissions;
                itemObj.PermsEveryone = item.EveryOnePermissions;
                itemObj.PermsGroup = item.GroupPermissions;
                itemObj.PermsNext = item.NextPermissions;
                itemObj.PermsOwner = item.CurrentPermissions;
                itemObj.SalePrice = item.SalePrice;
                itemObj.SaleType = item.SaleType;

                return itemObj;
            }
            else if (obj is InventoryFolderImpl)
            {
                // Inventory folder that potentially contains child objects
                InventoryFolderImpl folder = (InventoryFolderImpl)obj;
                InventoryBlockFolder folderObj = new InventoryBlockFolder();

                folderObj.ID = folder.ID;
                folderObj.Name = folder.Name;
                folderObj.OwnerID = folder.Owner;
                folderObj.ParentID = folder.ParentID;
                folderObj.PreferredContentType = CableBeachUtils.SLAssetTypeToContentType(folder.Type);
                folderObj.Version = folder.Version;

                if (folder.Items != null)
                {
                    folderObj.Children = new InventoryBlock[folder.Items.Count];
                    int i = 0;
                    foreach (InventoryNodeBase child in folder.Items.Values)
                        folderObj.Children[i++] = InventoryToMessage(child);
                }
                else
                {
                    folderObj.Children = new InventoryBlock[0];
                }

                return folderObj;
            }
            else if (obj is InventoryFolderBase)
            {
                // Basic inventory folder object, no children
                InventoryFolderBase folder = (InventoryFolderBase)obj;
                InventoryBlockFolder folderObj = new InventoryBlockFolder();

                folderObj.ID = folder.ID;
                folderObj.Name = folder.Name;
                folderObj.OwnerID = folder.Owner;
                folderObj.ParentID = folder.ParentID;
                folderObj.PreferredContentType = CableBeachUtils.SLAssetTypeToContentType(folder.Type);
                folderObj.Version = folder.Version;
                folderObj.Children = new InventoryBlock[0];

                return folderObj;
            }
            else
            {
                throw new ArgumentException("Unrecognized inventory node type " + obj.GetType().FullName);
            }
        }