Esempio n. 1
0
        private dtoContainerQuota CalculateRepositoryMaxSize(String filePath, DiskSettings settings, Boolean overrideQuota, long usedSize = 0)
        {
            dtoContainerQuota item = new dtoContainerQuota();

            item.UsedSize = usedSize;
            try
            {
                if (!String.IsNullOrEmpty(filePath))
                {
                    item.DiskSize = -1;
                }
                ulong space = 0;
                if (!String.IsNullOrEmpty(filePath))
                {
                    File.ContentOf.DriveFreeBytes(filePath, out space);
                    item.DiskSize = (long)space;
                }
                if (settings != null)
                {
                    item.Initialize(settings, overrideQuota, usedSize);
                }
            }
            catch (Exception ex)
            {
            }
            return(item);
        }
Esempio n. 2
0
        /// <summary>
        /// Instantiate the object.
        /// </summary>
        /// <param name="disk">Disk settings.</param>
        public StorageSettings(DiskSettings disk)
        {
            if (disk == null)
            {
                throw new ArgumentNullException(nameof(disk));
            }

            Disk = disk;
        }
Esempio n. 3
0
        static void InitializeClient()
        {
            switch (_StorageType)
            {
            case StorageType.AwsS3:
                Console.WriteLine("For S3-compatible storage, endpoint should be of the form http://[hostname]:[port]/");
                string endpoint = InputString("Endpoint   :", null, true);

                if (String.IsNullOrEmpty(endpoint))
                {
                    _AwsSettings = new AwsSettings(
                        InputString("Access key :", null, false),
                        InputString("Secret key :", null, false),
                        InputString("Region     :", "USWest1", false),
                        InputString("Bucket     :", null, false)
                        );
                }
                else
                {
                    _AwsSettings = new AwsSettings(
                        endpoint,
                        InputBoolean("SSL        :", true),
                        InputString("Access key :", null, false),
                        InputString("Secret key :", null, false),
                        InputString("Region     :", "USWest1", false),
                        InputString("Bucket     :", null, false)
                        );
                }
                _Blobs = new Blobs(_AwsSettings);
                break;

            case StorageType.Azure:
                _AzureSettings = new AzureSettings(
                    InputString("Account name :", null, false),
                    InputString("Access key   :", null, false),
                    InputString("Endpoint URL :", null, false),
                    InputString("Container    :", null, false));
                _Blobs = new Blobs(_AzureSettings);
                break;

            case StorageType.Disk:
                _DiskSettings = new DiskSettings(
                    InputString("Directory :", null, false));
                _Blobs = new Blobs(_DiskSettings);
                break;

            case StorageType.Kvpbase:
                _KvpbaseSettings = new KvpbaseSettings(
                    InputString("Endpoint URL :", null, false),
                    InputString("User GUID    :", null, false),
                    InputString("Container    :", null, true),
                    InputString("API key      :", null, false));
                _Blobs = new Blobs(_KvpbaseSettings);
                break;
            }
        }
Esempio n. 4
0
        private void SaveDiskSetting()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay("MaxFileCount", "MaxFileSize", "DiskSpaceSize", "EnableDisk", "AllowFileExtensions", "DefaultViewMode"
                                                             , "new_MaxFileCount", "new_MaxFileSize", "new_DiskSpaceSize", "new_EnableDisk", "new_AllowFileExtensions", "new_DefaultViewMode");

            DiskSettings diskSetting = new DiskSettings();

            //diskSetting.Import = new ExceptableItem_bool().GetExceptable("Import", msgDisplay);
            //diskSetting.Export = new ExceptableItem_bool().GetExceptable("Export", msgDisplay);
            diskSetting.MaxFileCount        = new ExceptableItem_Int_MoreThenZero().GetExceptable("MaxFileCount", msgDisplay);
            diskSetting.MaxFileSize         = new ExceptableItem_FileSize().GetExceptable("MaxFileSize", msgDisplay);
            diskSetting.DiskSpaceSize       = new ExceptableItem_FileSize().GetExceptable("DiskSpaceSize", msgDisplay);
            diskSetting.EnableDisk          = _Request.Get <bool>("EnableDisk", Method.Post, false);
            diskSetting.AllowFileExtensions = new ExceptableItem_ExtensionList().GetExceptable("AllowFileExtensions", msgDisplay);
            diskSetting.DefaultViewMode     = new ExceptableItem_Enum <FileViewMode>().GetExceptable("DefaultViewMode", msgDisplay);
            if (!msgDisplay.HasAnyError())
            {
                SettingManager.SaveSettings(diskSetting);

                JumpTo("app/setting-netdisk.aspx?success=1");
            }
        }
Esempio n. 5
0
        private dtoFolderSize GetRepositoryAvailabilityInfo(String filePath, DiskSettings diskSettings, List <liteRepositoryItem> items, IEnumerable <dtoDisplayRepositoryItem> allItems)
        {
            dtoFolderSize rFolder = new dtoFolderSize()
            {
                FolderType = FolderType.none, IdFolder = 0
            };
            long viewSize     = 0;
            long usedSize     = 0;
            long versionSize  = 0;
            long deletedSize  = 0;
            long childrenSize = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type == ItemType.Folder).Select(i => i.Size).DefaultIfEmpty().Sum();

            if (items.Any(i => i.Type != ItemType.Folder && i.Type != ItemType.Link))
            {
                usedSize = items.Where(i => i.Type != ItemType.Folder && i.Type != ItemType.Link).Select(i => i.Size + i.VersionsSize).Sum();
            }
            if (allItems.Any(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type != ItemType.Folder && i.Type != ItemType.Link))
            {
                viewSize = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type != ItemType.Folder && i.Type != ItemType.Link).Select(i => i.Size).Sum();
            }

            rFolder.Items.Add(new FolderSizeItem()
            {
                Number = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.IsUserAvailable && i.Type == ItemType.Folder).Count(), Type = FolderSizeItemType.folder
            });
            rFolder.Items.Add(new FolderSizeItem()
            {
                Number = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.Type != ItemType.Link).Count(), Type = FolderSizeItemType.file, Size = viewSize
            });
            viewSize += childrenSize;
            if (allItems.Any(i => i.Deleted == BaseStatusDeleted.None && i.Type == ItemType.Link))
            {
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type == ItemType.Link).Count(), Type = FolderSizeItemType.link
                });
            }

            if (allItems.Any(i => i.Deleted != BaseStatusDeleted.None))
            {
                deletedSize = allItems.Where(i => i.Deleted == BaseStatusDeleted.Manual).Select(i => i.Size + i.VersionsSize).Sum();
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = allItems.Where(i => i.Deleted != BaseStatusDeleted.None).Count(),
                    Type   = FolderSizeItemType.deleted,
                    Size   = deletedSize
                });
            }
            if (allItems.Any(i => i.Deleted == BaseStatusDeleted.None && i.HasVersions))
            {
                versionSize = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.HasVersions).Select(i => i.VersionsSize).Sum();
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = allItems.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.HasVersions).Count(),
                    Type   = FolderSizeItemType.version,
                    Size   = versionSize
                });
            }
            if ((viewSize + versionSize + deletedSize) < usedSize)
            {
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = items.Where(i => !allItems.Any(it => it.Id == i.Id)).Count(), Type = FolderSizeItemType.unavailableItems, Size = usedSize - (viewSize + versionSize + deletedSize)
                });
            }

            if (rFolder.Items.Any())
            {
                rFolder.Size = rFolder.Items.Select(i => i.Size).DefaultIfEmpty(0).Sum();
            }

            rFolder.Quota = CalculateRepositoryMaxSize(filePath, diskSettings, IsValidAdministrator(UC.CurrentUserID), rFolder.Size);

            rFolder.UploadAvailable = (rFolder.Quota.AvailableSize == -1 || rFolder.FreeSpace > 0);
            if (rFolder.OverSize > 0)
            {
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = 0, Type = FolderSizeItemType.overflow, Size = rFolder.OverSize
                });
            }

            if (rFolder.UploadAvailable)
            {
                rFolder.Items.Add(new FolderSizeItem()
                {
                    Number = 0, Size = rFolder.FreeSpace, Type = FolderSizeItemType.freespace
                });
            }
            else if (rFolder.Quota.HasAllowedSpace())
            {
                rFolder.UploadAvailable = true;
            }
            rFolder.SetPercentage();
            return(rFolder);
        }
Esempio n. 6
0
        private dtoFolderTreeItem CreateRootFolderTreeItem(String filePath, long idCurrentFolder, IEnumerable <RepositoryItem> items, DiskSettings diskSpace, ModuleRepository permissions)
        {
            dtoFolderTreeItem root = new dtoFolderTreeItem()
            {
                Id = 0, IsHome = true, Name = "", IsCurrent = (idCurrentFolder == 0)
            };

            if (items.Any(i => i.Type != ItemType.Link && i.Deleted == BaseStatusDeleted.None))
            {
                root.Size = items.Where(i => i.Type != ItemType.Link && i.Deleted == BaseStatusDeleted.None).Select(i => i.Size).Sum();
            }

            if (items.Any(i => i.Deleted != BaseStatusDeleted.None))
            {
                root.DeletedSize = items.Where(i => i.Deleted == BaseStatusDeleted.Manual).Select(i => i.Size + i.VersionsSize).Sum();
            }
            if (items.Any(i => i.Type == ItemType.Folder && i.Deleted == BaseStatusDeleted.None && i.DeletedSize > 0))
            {
                root.DeletedSize += items.Where(i => i.Type == ItemType.Folder && i.Deleted == BaseStatusDeleted.None && i.DeletedSize > 0).Select(i => i.DeletedSize).Sum();
            }

            if (items.Any(i => i.Deleted == BaseStatusDeleted.None && i.HasVersions))
            {
                root.VersionsSize = items.Where(i => i.Deleted == BaseStatusDeleted.None && i.Type != ItemType.Folder && i.HasVersions).Select(i => i.VersionsSize).Sum();
            }

            root.Quota           = CalculateRepositoryMaxSize(filePath, diskSpace, IsValidAdministrator(UC.CurrentUserID), root.FullSize);
            root.UploadAvailable = root.MoveIntoAvailable && (permissions.Administration || permissions.ManageItems || permissions.UploadFile || permissions.EditOthersFiles);
            return(root);
        }