Esempio n. 1
0
        public async Task <bool> IsFileTypeAllowed(string fileType, SiteTypeEnum siteType)
        {
            using (var scope = Services.CreateScope())
            {
                var optionAccessor =
                    scope.ServiceProvider
                    .GetRequiredService <IOptionAccessor>();

                var optionmetaFileTypes = await optionAccessor.GetOptionValuesBySectionAsync(SectionEnum.AdminAttachmentFileTypes, siteType);

                var isFileTypeAllowed = optionmetaFileTypes
                                        .SingleOrDefault(x => x.KeyDescription == fileType)?
                                        .Value == ValueEnum.AttachmentFileType__Allowed;

                return(isFileTypeAllowed);
            }
        }
Esempio n. 2
0
        public async Task <List <OptionmetaResult> > GetOptionValuesBySectionAsync(SectionEnum section, SiteTypeEnum siteType)
        {
            var option = await _context.Options.SingleOrDefaultAsync(x => x.Section == section && x.Site.SiteType == siteType);

            var optionmetaResult = new List <OptionmetaResult>();

            foreach (var optionmeta in option.Optionmetas)
            {
                optionmetaResult.Add(new OptionmetaResult {
                    PublicKeyName    = optionmeta.PublicKeyName,
                    Key              = optionmeta.Key,
                    KeyDescription   = optionmeta.KeyDescription,
                    Value            = optionmeta.Value,
                    ValueDescription = optionmeta.ValueDescription,
                    AdditionalInfo   = optionmeta.AdditionalInfo
                });
            }

            return(optionmetaResult);
        }
Esempio n. 3
0
 /// <summary>
 /// 获取站点地址
 /// </summary>
 /// <param name="siteType"></param>
 /// <returns></returns>
 public string GetUrl(SiteTypeEnum type)
 {
     return getUrl(type.ToString());
 }
Esempio n. 4
0
 public async Task <ActionResult <SiteDto> > Details(SiteTypeEnum siteType)
 {
     return(await Mediator.Send(new Details.Query {
         SiteType = siteType
     }));
 }
Esempio n. 5
0
        public async Task SaveTusFileInfoAsync(ITusFile file, SiteTypeEnum siteType, string refreshToken, UploadLocationEnum location, UploadLinkAccessibilityEnum linkAccessibility, CancellationToken cancellationToken)
        {
            var metadata = await file.GetMetadataAsync(cancellationToken);

            string name = metadata["name"].GetString(Encoding.UTF8);
            string type = metadata["type"].GetString(Encoding.UTF8);


            using (var scope = Services.CreateScope())
            {
                var httpContextAccessor =
                    scope.ServiceProvider
                    .GetRequiredService <IHttpContextAccessor>();

                var context =
                    scope.ServiceProvider
                    .GetRequiredService <DataContext>();

                var logger =
                    scope.ServiceProvider
                    .GetRequiredService <IActivityLogger>();

                var token = context.Tokens.SingleOrDefault(x => x.RefreshToken == refreshToken);
                var user  = token.CreatedBy;

                var    storePath         = Path.Combine(UploadFolderName, user.UserName);
                var    extension         = Path.GetExtension(name);
                var    fileName          = file.Id;
                var    filePublicName    = name;
                var    mimeType          = type;
                var    fileRelativePath  = Path.Combine(storePath, fileName);
                long   size              = 0;
                string fileThumbnailPath = "";
                var    fileType          = TusCheckFileType(type);

                if (location == UploadLocationEnum.LocalHost)
                {
                    size = new FileInfo(Path.Combine(UploadFolderName, user.UserName, fileName)).Length;
                    fileThumbnailPath = fileType == AttachmentTypeEnum.Photo ? await GenerateImageThumbnailAsync(file, extension, storePath, user.UserName, cancellationToken) : "";
                }
                if (location == UploadLocationEnum.FtpServer)
                {
                    // create an FTP client
                    FtpClient client = new FtpClient(_baseUri, _port, _username, _password);
                    // begin connecting to the server
                    await client.ConnectAsync();

                    size = await client.GetFileSizeAsync($"{storePath}/{fileName}");

                    //
                    await client.DisconnectAsync();
                }

                var site = await context.Sites.SingleOrDefaultAsync(x => x.SiteType == siteType);

                user.CreatedAttachments.Add(new Attachment
                {
                    SiteId            = site.Id,
                    UploadLocation    = location,
                    Type              = fileType,
                    RelativePath      = fileRelativePath,
                    ThumbnailPath     = fileThumbnailPath,
                    MimeType          = mimeType,
                    FileName          = fileName,
                    PublicFileName    = filePublicName,
                    FileExtension     = extension,
                    FileSize          = size,
                    LinkAccessibility = linkAccessibility
                });

                var success = await context.SaveChangesAsync() > 0;

                if (success)
                {
                    await logger.LogActivity(
                        site.Id,
                        ActivityCodeEnum.AttachmentAdd,
                        ActivitySeverityEnum.Medium,
                        ActivityObjectEnum.Attachemnt,
                        $"The {fileType} file with the name {fileName} has been uploaded");
                }
                else
                {
                    throw new Exception("Problem saving file information in database!");
                }
            }
        }