Beispiel #1
0
        private (ObservableCollection <string>, ObservableCollection <string>, bool userHaveAccess) getDirContent(DirectoryInfo currentDirectory)
        {
            ObservableCollection <string> files = new ObservableCollection <string>();
            ObservableCollection <string> dirs  = new ObservableCollection <string>();
            bool userHaveAccess = false;

            try
            {
                if (currentDirectory.FullName.Equals("/storage"))
                {
                    dirs = currentDirectory.GetDirectories().Where(d => !d.Name.Equals("emulated")).OrderBy(d => d.Name).Select(d => d.Name)
                           .ToObservableCollection();
                    dirs.Add("/storage/emulated/0");
                }
                else
                {
                    dirs = currentDirectory.GetDirectories().OrderBy(d => d.Name).Select(d => d.Name)
                           .ToObservableCollection();
                }

                MediaFileManager mediaFileManager = new MediaFileManager();
                files = mediaFileManager.GetMediaFilesFromDirectory(currentDirectory).OrderByDescending(f => f.CreationTime)
                        .Select(f => f.FullName).ToArray().ToObservableCollection();;
                userHaveAccess = true;
            }
            catch (IOException ioException)
            {
                HandleError.Process("Settings", "getDirContent", ioException, false, currentDirectory.FullName);
            }
            catch (UnauthorizedAccessException e)
            {
                HandleError.Process("Settings", "getDirContent", e, false, currentDirectory.FullName);
            }
            return(files, dirs, userHaveAccess);
        }
Beispiel #2
0
        public async void StartDialog()
        {
            PermissionManager permissions = new PermissionManager();
            var taskPermissionRead        = await permissions.CheckAndRequestStorageReadPermission();

            if (taskPermissionRead.HasFlag(Xamarin.Essentials.PermissionStatus.Granted))
            {
                ImagesCacheDbManager imagesCache      = new ImagesCacheDbManager(new ImageManager(), DateTime.Now.AddDays(90), DateTime.Now);
                ParameterManager     parameterManager = new ParameterManager();
                _initDCIMDirectory = string.Empty;
                if (!parameterManager.Get("CameraDirectoryFullPath", out _initDCIMDirectory))
                {
                    //параметр заполняется при старте индексации, уже должен быть заполнен
                    _initDCIMDirectory = imagesCache.GetPublicDirectoryDcim();
                }

                PathToDefaultDCIM = imagesCache.GetPublicDirectoryDcim();
                PathToCustomDCIM  = _initDCIMDirectory;
                IsUsageMainMemory = _initDCIMDirectory.Equals(PathToDefaultDCIM);

                await Task.Run(() =>
                {
                    MediaFileManager mediaFileManager = new MediaFileManager();
                    CountOfPhotoDefaultDCIM           = mediaFileManager.GetMediaFilesFromDirectory(new DirectoryInfo(PathToDefaultDCIM)).Count();
                    _pathToImagesDir       = _initDCIMDirectory;
                    CountOfPhotoCustomDCIM = mediaFileManager.GetMediaFilesFromDirectory(new DirectoryInfo(_initDCIMDirectory)).Count();
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountOfPhotoDefaultDCIM"));
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CountOfPhotoCustomDCIM"));
                    updateDirContent(new DirectoryInfo(_pathToImagesDir));
                });
            }
        }
 public CurrentUserController(
     MediaFileManager mediaFileManager,
     IOptions <ContentSettings> contentSettings,
     IHostingEnvironment hostingEnvironment,
     IImageUrlGenerator imageUrlGenerator,
     IBackOfficeSecurityAccessor backofficeSecurityAccessor,
     IUserService userService,
     IUmbracoMapper umbracoMapper,
     IBackOfficeUserManager backOfficeUserManager,
     ILoggerFactory loggerFactory,
     ILocalizedTextService localizedTextService,
     AppCaches appCaches,
     IShortStringHelper shortStringHelper,
     IPasswordChanger <BackOfficeIdentityUser> passwordChanger) : this(
         mediaFileManager,
         StaticServiceProvider.Instance.GetRequiredService <IOptionsSnapshot <ContentSettings> >(),
         hostingEnvironment,
         imageUrlGenerator,
         backofficeSecurityAccessor,
         userService,
         umbracoMapper,
         backOfficeUserManager,
         localizedTextService,
         appCaches,
         shortStringHelper,
         passwordChanger,
         StaticServiceProvider.Instance.GetRequiredService <IUserDataService>())
 {
 }
 public CurrentUserController(
     MediaFileManager mediaFileManager,
     IOptionsSnapshot <ContentSettings> contentSettings,
     IHostingEnvironment hostingEnvironment,
     IImageUrlGenerator imageUrlGenerator,
     IBackOfficeSecurityAccessor backofficeSecurityAccessor,
     IUserService userService,
     IUmbracoMapper umbracoMapper,
     IBackOfficeUserManager backOfficeUserManager,
     ILocalizedTextService localizedTextService,
     AppCaches appCaches,
     IShortStringHelper shortStringHelper,
     IPasswordChanger <BackOfficeIdentityUser> passwordChanger,
     IUserDataService userDataService)
 {
     _mediaFileManager           = mediaFileManager;
     _contentSettings            = contentSettings.Value;
     _hostingEnvironment         = hostingEnvironment;
     _imageUrlGenerator          = imageUrlGenerator;
     _backofficeSecurityAccessor = backofficeSecurityAccessor;
     _userService           = userService;
     _umbracoMapper         = umbracoMapper;
     _backOfficeUserManager = backOfficeUserManager;
     _localizedTextService  = localizedTextService;
     _appCaches             = appCaches;
     _shortStringHelper     = shortStringHelper;
     _passwordChanger       = passwordChanger;
     _userDataService       = userDataService;
 }
    private ScopeProvider GetScopeProvider(out Mock <IEventAggregator> eventAggregatorMock)
    {
        var loggerFactory = NullLoggerFactory.Instance;

        var fileSystems = new FileSystems(
            loggerFactory,
            Mock.Of <IIOHelper>(),
            Options.Create(new GlobalSettings()),
            Mock.Of <IHostingEnvironment>());

        var mediaFileManager = new MediaFileManager(
            Mock.Of <IFileSystem>(),
            Mock.Of <IMediaPathScheme>(),
            loggerFactory.CreateLogger <MediaFileManager>(),
            Mock.Of <IShortStringHelper>(),
            Mock.Of <IServiceProvider>(),
            Options.Create(new ContentSettings()));

        eventAggregatorMock = new Mock <IEventAggregator>();

        return(new ScopeProvider(
                   new AmbientScopeStack(),
                   new AmbientScopeContextStack(), Mock.Of <IDistributedLockingMechanismFactory>(),
                   Mock.Of <IUmbracoDatabaseFactory>(),
                   fileSystems,
                   new TestOptionsMonitor <CoreDebugSettings>(new CoreDebugSettings()),
                   mediaFileManager,
                   loggerFactory,

                   eventAggregatorMock.Object));
    }
Beispiel #6
0
        /// <summary>
        /// Sets the posted file value of a property.
        /// </summary>
        public static void SetValue(
            this IContentBase content,
            MediaFileManager mediaFileManager,
            MediaUrlGeneratorCollection mediaUrlGenerators,
            IShortStringHelper shortStringHelper,
            IContentTypeBaseServiceProvider contentTypeBaseServiceProvider,
            string propertyTypeAlias,
            string filename,
            Stream filestream,
            string culture = null,
            string segment = null)
        {
            if (filename == null || filestream == null)
            {
                return;
            }

            filename = shortStringHelper.CleanStringForSafeFileName(filename);
            if (string.IsNullOrWhiteSpace(filename))
            {
                return;
            }
            filename = filename.ToLower();

            SetUploadFile(content, mediaFileManager, mediaUrlGenerators, contentTypeBaseServiceProvider, propertyTypeAlias, filename, filestream, culture, segment);
        }
 /// <summary>
 ///     Initializes a new instance of the <see cref="CreatedPackageSchemaRepository" /> class.
 /// </summary>
 public CreatedPackageSchemaRepository(
     IUmbracoDatabaseFactory umbracoDatabaseFactory,
     IHostingEnvironment hostingEnvironment,
     IOptions <GlobalSettings> globalSettings,
     FileSystems fileSystems,
     IEntityXmlSerializer serializer,
     IDataTypeService dataTypeService,
     ILocalizationService localizationService,
     IFileService fileService,
     IMediaService mediaService,
     IMediaTypeService mediaTypeService,
     IContentService contentService,
     MediaFileManager mediaFileManager,
     IMacroService macroService,
     IContentTypeService contentTypeService,
     string?mediaFolderPath = null,
     string?tempFolderPath  = null)
 {
     _umbracoDatabase           = umbracoDatabaseFactory.CreateDatabase();
     _hostingEnvironment        = hostingEnvironment;
     _fileSystems               = fileSystems;
     _serializer                = serializer;
     _dataTypeService           = dataTypeService;
     _localizationService       = localizationService;
     _fileService               = fileService;
     _mediaService              = mediaService;
     _mediaTypeService          = mediaTypeService;
     _contentService            = contentService;
     _mediaFileManager          = mediaFileManager;
     _macroService              = macroService;
     _contentTypeService        = contentTypeService;
     _xmlParser                 = new PackageDefinitionXmlParser();
     _createdPackagesFolderPath = mediaFolderPath ?? Constants.SystemDirectories.CreatedPackages;
     _tempFolderPath            = tempFolderPath ?? Constants.SystemDirectories.TempData + "/PackageFiles";
 }
Beispiel #8
0
        private static void SetUploadFile(
            this IContentBase content,
            MediaFileManager mediaFileManager,
            MediaUrlGeneratorCollection mediaUrlGenerators,
            IContentTypeBaseServiceProvider contentTypeBaseServiceProvider,
            string propertyTypeAlias,
            string filename,
            Stream filestream,
            string culture = null,
            string segment = null)
        {
            var property = GetProperty(content, contentTypeBaseServiceProvider, propertyTypeAlias);

            // Fixes https://github.com/umbraco/Umbraco-CMS/issues/3937 - Assigning a new file to an
            // existing IMedia with extension SetValue causes exception 'Illegal characters in path'
            string oldpath = null;

            if (content.TryGetMediaPath(property.Alias, mediaUrlGenerators, out string mediaFilePath, culture, segment))
            {
                oldpath = mediaFileManager.FileSystem.GetRelativePath(mediaFilePath);
            }

            var filepath = mediaFileManager.StoreFile(content, property.PropertyType, filename, filestream, oldpath);

            // NOTE: Here we are just setting the value to a string which means that any file based editor
            // will need to handle the raw string value and save it to it's correct (i.e. JSON)
            // format. I'm unsure how this works today with image cropper but it does (maybe events?)
            property.SetValue(mediaFileManager.FileSystem.GetUrl(filepath), culture, segment);
        }
Beispiel #9
0
        private ScopeProvider GetScopeProvider(NullLoggerFactory instance)
        {
            var fileSystems = new FileSystems(
                instance,
                Mock.Of <IIOHelper>(),
                Options.Create(new GlobalSettings()),
                Mock.Of <IHostingEnvironment>());

            var mediaFileManager = new MediaFileManager(
                Mock.Of <IFileSystem>(),
                Mock.Of <IMediaPathScheme>(),
                instance.CreateLogger <MediaFileManager>(),
                Mock.Of <IShortStringHelper>(),
                Mock.Of <IServiceProvider>(),
                Options.Create(new ContentSettings()));

            return(new ScopeProvider(
                       Mock.Of <IUmbracoDatabaseFactory>(),
                       fileSystems,
                       Options.Create(new CoreDebugSettings()),
                       mediaFileManager,
                       Mock.Of <ILogger <ScopeProvider> >(),
                       instance,
                       Mock.Of <IRequestCache>(),
                       Mock.Of <IEventAggregator>()
                       ));
        }
 public ImagesController(
     MediaFileManager mediaFileManager,
     IImageUrlGenerator imageUrlGenerator)
 {
     _mediaFileManager  = mediaFileManager;
     _imageUrlGenerator = imageUrlGenerator;
 }
Beispiel #11
0
        public void MediaFileManager_writes_to_physical_file_system_when_scoped_and_scope_is_completed()
        {
            string           rootPath            = HostingEnvironment.MapPathWebRoot(GlobalSettings.UmbracoMediaPhysicalRootPath);
            string           rootUrl             = HostingEnvironment.ToAbsolute(GlobalSettings.UmbracoMediaPath);
            var              physMediaFileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, GetRequiredService <ILogger <PhysicalFileSystem> >(), rootPath, rootUrl);
            MediaFileManager mediaFileManager    = MediaFileManager;

            Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt"));

            using (IScope scope = ScopeProvider.CreateScope(scopeFileSystems: true))
            {
                using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("foo")))
                {
                    mediaFileManager.FileSystem.AddFile("f1.txt", ms);
                }

                Assert.IsTrue(mediaFileManager.FileSystem.FileExists("f1.txt"));
                Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt"));

                scope.Complete();

                Assert.IsTrue(mediaFileManager.FileSystem.FileExists("f1.txt"));
                Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt"));
            }

            // After scope is disposed ensure shadow wrapper writes to physical file system
            Assert.IsTrue(mediaFileManager.FileSystem.FileExists("f1.txt"));
            Assert.IsTrue(physMediaFileSystem.FileExists("f1.txt"));
        }
Beispiel #12
0
        public ScopeProvider(
            IAmbientScopeStack ambientScopeStack,
            IAmbientScopeContextStack ambientContextStack,
            IDistributedLockingMechanismFactory distributedLockingMechanismFactory,
            IUmbracoDatabaseFactory databaseFactory,
            FileSystems fileSystems,
            IOptionsMonitor <CoreDebugSettings> coreDebugSettings,
            MediaFileManager mediaFileManager,
            ILoggerFactory loggerFactory,
            IEventAggregator eventAggregator)
        {
            DistributedLockingMechanismFactory = distributedLockingMechanismFactory;
            DatabaseFactory      = databaseFactory;
            _ambientScopeStack   = ambientScopeStack;
            _ambientContextStack = ambientContextStack;
            _fileSystems         = fileSystems;
            _coreDebugSettings   = coreDebugSettings.CurrentValue;
            _mediaFileManager    = mediaFileManager;
            _logger          = loggerFactory.CreateLogger <ScopeProvider>();
            _loggerFactory   = loggerFactory;
            _eventAggregator = eventAggregator;
            // take control of the FileSystems
            _fileSystems.IsScoped = () => AmbientScope != null && AmbientScope.ScopedFileSystems;

            coreDebugSettings.OnChange(x => _coreDebugSettings = x);
        }
Beispiel #13
0
        public void MediaFileManager_Is_Singleton()
        {
            MediaFileManager fileManager1 = GetRequiredService <MediaFileManager>();
            MediaFileManager fileManager2 = GetRequiredService <MediaFileManager>();

            Assert.AreSame(fileManager1, fileManager2);
        }
Beispiel #14
0
        private ScopeProvider GetScopeProvider(out Mock <IEventAggregator> eventAggregatorMock)
        {
            NullLoggerFactory loggerFactory = NullLoggerFactory.Instance;

            var fileSystems = new FileSystems(
                loggerFactory,
                Mock.Of <IIOHelper>(),
                Options.Create(new GlobalSettings()),
                Mock.Of <IHostingEnvironment>());

            var mediaFileManager = new MediaFileManager(
                Mock.Of <IFileSystem>(),
                Mock.Of <IMediaPathScheme>(),
                loggerFactory.CreateLogger <MediaFileManager>(),
                Mock.Of <IShortStringHelper>(),
                Mock.Of <IServiceProvider>(),
                Options.Create(new ContentSettings()));

            eventAggregatorMock = new Mock <IEventAggregator>();

            return(new ScopeProvider(
                       Mock.Of <IUmbracoDatabaseFactory>(),
                       fileSystems,
                       Options.Create(new CoreDebugSettings()),
                       mediaFileManager,
                       loggerFactory.CreateLogger <ScopeProvider>(),
                       loggerFactory,
                       Mock.Of <IRequestCache>(),
                       eventAggregatorMock.Object
                       ));
        }
        /// <inheritdoc />
        public string GetFilePath(MediaFileManager fileManager, Guid itemGuid, Guid propertyGuid, string filename)
        {
            var combinedGuid = GuidUtils.Combine(itemGuid, propertyGuid);
            var directory    = GuidUtils.ToBase32String(combinedGuid, DirectoryLength);

            return(Path.Combine(directory, filename).Replace('\\', '/'));
        }
Beispiel #16
0
        public void Can_Generate_Xml_Representation_Of_Media()
        {
            // Arrange
            var mediaType = MockedContentTypes.CreateImageMediaType("image2");

            ServiceContext.MediaTypeService.Save(mediaType);

            // reference, so static ctor runs, so event handlers register
            // and then, this will reset the width, height... because the file does not exist, of course ;-(
            var loggerFactory   = NullLoggerFactory.Instance;
            var scheme          = Mock.Of <IMediaPathScheme>();
            var contentSettings = new ContentSettings();

            var mediaFileManager = new MediaFileManager(Mock.Of <IFileSystem>(), scheme,
                                                        loggerFactory.CreateLogger <MediaFileManager>(), ShortStringHelper);
            var ignored = new FileUploadPropertyEditor(DataValueEditorFactory, mediaFileManager, Microsoft.Extensions.Options.Options.Create(contentSettings), DataTypeService, LocalizationService, LocalizedTextService, UploadAutoFillProperties, ContentService);

            var media = MockedMedia.CreateMediaImage(mediaType, -1);

            media.WriterId = -1; // else it's zero and that's not a user and it breaks the tests
            ServiceContext.MediaService.Save(media, Constants.Security.SuperUserId);

            // so we have to force-reset these values because the property editor has cleared them
            media.SetValue(Constants.Conventions.Media.Width, "200");
            media.SetValue(Constants.Conventions.Media.Height, "200");
            media.SetValue(Constants.Conventions.Media.Bytes, "100");
            media.SetValue(Constants.Conventions.Media.Extension, "png");

            var nodeName = media.ContentType.Alias.ToSafeAlias(ShortStringHelper);
            var urlName  = media.GetUrlSegment(ShortStringHelper, new[] { new DefaultUrlSegmentProvider(ShortStringHelper) });

            // Act
            XElement element = media.ToXml(Factory.GetRequiredService <IEntityXmlSerializer>());

            // Assert
            Assert.That(element, Is.Not.Null);
            Assert.That(element.Name.LocalName, Is.EqualTo(nodeName));
            Assert.AreEqual(media.Id.ToString(), (string)element.Attribute("id"));
            Assert.AreEqual(media.ParentId.ToString(), (string)element.Attribute("parentID"));
            Assert.AreEqual(media.Level.ToString(), (string)element.Attribute("level"));
            Assert.AreEqual(media.SortOrder.ToString(), (string)element.Attribute("sortOrder"));
            Assert.AreEqual(media.CreateDate.ToString("s"), (string)element.Attribute("createDate"));
            Assert.AreEqual(media.UpdateDate.ToString("s"), (string)element.Attribute("updateDate"));
            Assert.AreEqual(media.Name, (string)element.Attribute("nodeName"));
            Assert.AreEqual(urlName, (string)element.Attribute("urlName"));
            Assert.AreEqual(media.Path, (string)element.Attribute("path"));
            Assert.AreEqual("", (string)element.Attribute("isDoc"));
            Assert.AreEqual(media.ContentType.Id.ToString(), (string)element.Attribute("nodeType"));
            Assert.AreEqual(media.GetCreatorProfile(ServiceContext.UserService).Name, (string)element.Attribute("writerName"));
            Assert.AreEqual(media.CreatorId.ToString(), (string)element.Attribute("writerID"));
            Assert.IsNull(element.Attribute("template"));

            Assert.AreEqual(media.Properties[Constants.Conventions.Media.File].GetValue().ToString(), element.Elements(Constants.Conventions.Media.File).Single().Value);
            Assert.AreEqual(media.Properties[Constants.Conventions.Media.Width].GetValue().ToString(), element.Elements(Constants.Conventions.Media.Width).Single().Value);
            Assert.AreEqual(media.Properties[Constants.Conventions.Media.Height].GetValue().ToString(), element.Elements(Constants.Conventions.Media.Height).Single().Value);
            Assert.AreEqual(media.Properties[Constants.Conventions.Media.Bytes].GetValue().ToString(), element.Elements(Constants.Conventions.Media.Bytes).Single().Value);
            Assert.AreEqual(media.Properties[Constants.Conventions.Media.Extension].GetValue().ToString(), element.Elements(Constants.Conventions.Media.Extension).Single().Value);
        }
Beispiel #17
0
        private void deleteMedia(ViewRoutePointMediaObject media)
        {
            _log.AddStringEvent($"image deleted, passed mediaid:{media.RoutePointMediaObjectId}");
            _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, false, true);
            _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, true, true);
            MediaFileManager fileManager = new MediaFileManager();

            fileManager.Delete(media.RoutePointMediaObjectId, media.MediaType);
        }
        /// <inheritdoc />
        public string GetFilePath(MediaFileManager fileManager, Guid itemGuid, Guid propertyGuid, string filename)
        {
            // assumes that cuid and puid keys can be trusted - and that a single property type
            // for a single content cannot store two different files with the same name

            var combinedGuid = GuidUtils.Combine(itemGuid, propertyGuid);
            var directory    = HexEncoder.Encode(combinedGuid.ToByteArray() /*'/', 2, 4*/); // could use ext to fragment path eg 12/e4/f2/...

            return(Path.Combine(directory, filename).Replace('\\', '/'));
        }
Beispiel #19
0
 public UploadAutoFillProperties(
     MediaFileManager mediaFileManager,
     ILogger <UploadAutoFillProperties> logger,
     IImageUrlGenerator imageUrlGenerator,
     IImageDimensionExtractor imageDimensionExtractor)
 {
     _mediaFileManager        = mediaFileManager ?? throw new ArgumentNullException(nameof(mediaFileManager));
     _logger                  = logger ?? throw new ArgumentNullException(nameof(logger));
     _imageUrlGenerator       = imageUrlGenerator ?? throw new ArgumentNullException(nameof(imageUrlGenerator));
     _imageDimensionExtractor = imageDimensionExtractor ?? throw new ArgumentNullException(nameof(imageDimensionExtractor));
 }
 public MigrateToPackageData(
     IPackagingService packagingService,
     IMediaService mediaService,
     MediaFileManager mediaFileManager,
     MediaUrlGeneratorCollection mediaUrlGenerators,
     IShortStringHelper shortStringHelper,
     IContentTypeBaseServiceProvider contentTypeBaseServiceProvider,
     IMigrationContext context)
     : base(packagingService, mediaService, mediaFileManager, mediaUrlGenerators, shortStringHelper, contentTypeBaseServiceProvider, context)
 {
 }
Beispiel #21
0
        /// <summary>
        /// Creates a ScopeProvider with mocked internals.
        /// </summary>
        /// <param name="syntaxProviderMock">The mock of the ISqlSyntaxProvider2, used to count method calls.</param>
        /// <returns></returns>
        private ScopeProvider GetScopeProvider(out Mock <IDistributedLockingMechanism> lockingMechanism)
        {
            var loggerFactory = NullLoggerFactory.Instance;
            var fileSystems   = new FileSystems(
                loggerFactory,
                Mock.Of <IIOHelper>(),
                Mock.Of <IOptions <GlobalSettings> >(),
                Mock.Of <IHostingEnvironment>());
            var mediaFileManager = new MediaFileManager(
                Mock.Of <IFileSystem>(),
                Mock.Of <IMediaPathScheme>(),
                loggerFactory.CreateLogger <MediaFileManager>(),
                Mock.Of <IShortStringHelper>(),
                Mock.Of <IServiceProvider>(),
                Options.Create(new ContentSettings()));
            var databaseFactory = new Mock <IUmbracoDatabaseFactory>();
            var database        = new Mock <IUmbracoDatabase>();
            var sqlContext      = new Mock <ISqlContext>();

            lockingMechanism = new Mock <IDistributedLockingMechanism>();
            lockingMechanism.Setup(x => x.ReadLock(It.IsAny <int>(), It.IsAny <TimeSpan?>()))
            .Returns(Mock.Of <IDistributedLock>());
            lockingMechanism.Setup(x => x.WriteLock(It.IsAny <int>(), It.IsAny <TimeSpan?>()))
            .Returns(Mock.Of <IDistributedLock>());

            var lockingMechanismFactory = new Mock <IDistributedLockingMechanismFactory>();

            lockingMechanismFactory.Setup(x => x.DistributedLockingMechanism)
            .Returns(lockingMechanism.Object);

            // Setup mock of database factory to return mock of database.
            databaseFactory.Setup(x => x.CreateDatabase()).Returns(database.Object);
            databaseFactory.Setup(x => x.SqlContext).Returns(sqlContext.Object);

            // Setup mock of database to return mock of sql SqlContext
            database.Setup(x => x.SqlContext).Returns(sqlContext.Object);

            var syntaxProviderMock = new Mock <ISqlSyntaxProvider>();

            // Setup mock of ISqlContext to return syntaxProviderMock
            sqlContext.Setup(x => x.SqlSyntax).Returns(syntaxProviderMock.Object);

            return(new ScopeProvider(
                       new AmbientScopeStack(),
                       new AmbientScopeContextStack(),
                       lockingMechanismFactory.Object,
                       databaseFactory.Object,
                       fileSystems,
                       new TestOptionsMonitor <CoreDebugSettings>(new CoreDebugSettings()),
                       mediaFileManager,
                       loggerFactory,
                       Mock.Of <IEventAggregator>()));
        }
Beispiel #22
0
    internal static IActionResult PostSetAvatarInternal(IList<IFormFile> files, IUserService userService,
        IAppCache cache, MediaFileManager mediaFileManager, IShortStringHelper shortStringHelper,
        ContentSettings contentSettings, IHostingEnvironment hostingEnvironment, IImageUrlGenerator imageUrlGenerator,
        int id)
    {
        if (files is null)
        {
            return new UnsupportedMediaTypeResult();
        }

        var root = hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.TempFileUploads);
        //ensure it exists
        Directory.CreateDirectory(root);

        //must have a file
        if (files.Count == 0)
        {
            return new NotFoundResult();
        }

        IUser? user = userService.GetUserById(id);
        if (user == null)
        {
            return new NotFoundResult();
        }

        if (files.Count > 1)
        {
            return new ValidationErrorResult(
                "The request was not formatted correctly, only one file can be attached to the request");
        }

        //get the file info
        IFormFile file = files.First();
        var fileName = file.FileName.Trim(new[] { '\"' }).TrimEnd();
        var safeFileName = fileName.ToSafeFileName(shortStringHelper);
        var ext = safeFileName.Substring(safeFileName.LastIndexOf('.') + 1).ToLower();

        if (contentSettings.DisallowedUploadFiles.Contains(ext) == false)
        {
            //generate a path of known data, we don't want this path to be guessable
            user.Avatar = "UserAvatars/" + (user.Id + safeFileName).GenerateHash<SHA1>() + "." + ext;

            using (Stream fs = file.OpenReadStream())
            {
                mediaFileManager.FileSystem.AddFile(user.Avatar, fs, true);
            }

            userService.Save(user);
        }

        return new OkObjectResult(user.GetUserAvatarUrls(cache, mediaFileManager, imageUrlGenerator));
    }
Beispiel #23
0
        /// <summary>
        /// Stores a file.
        /// </summary>
        /// <param name="content"><see cref="IContentBase"/>A content item.</param>
        /// <param name="propertyTypeAlias">The property alias.</param>
        /// <param name="filename">The name of the file.</param>
        /// <param name="filestream">A stream containing the file data.</param>
        /// <param name="filepath">The original file path, if any.</param>
        /// <returns>The path to the file, relative to the media filesystem.</returns>
        /// <remarks>
        /// <para>Does NOT set the property value, so one should probably store the file and then do
        /// something alike: property.Value = MediaHelper.FileSystem.GetUrl(filepath).</para>
        /// <para>The original file path is used, in the old media file path scheme, to try and reuse
        /// the "folder number" that was assigned to the previous file referenced by the property,
        /// if any.</para>
        /// </remarks>
        public static string StoreFile(this IContentBase content, MediaFileManager mediaFileManager, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, string propertyTypeAlias, string filename, Stream filestream, string filepath)
        {
            var contentType  = contentTypeBaseServiceProvider.GetContentTypeOf(content);
            var propertyType = contentType
                               .CompositionPropertyTypes.FirstOrDefault(x => x.Alias.InvariantEquals(propertyTypeAlias));

            if (propertyType == null)
            {
                throw new ArgumentException("Invalid property type alias " + propertyTypeAlias + ".");
            }
            return(mediaFileManager.StoreFile(content, propertyType, filename, filestream, filepath));
        }
Beispiel #24
0
 public SetupuSync(
     IPackagingService packagingService,
     IMediaService mediaService,
     MediaFileManager mediaFileManager,
     MediaUrlGeneratorCollection mediaUrlGenerators,
     IShortStringHelper shortStringHelper,
     IContentTypeBaseServiceProvider contentTypeBaseServiceProvider,
     IMigrationContext context,
     IOptions <PackageMigrationSettings> packageMigrationsSettings)
     : base(packagingService, mediaService, mediaFileManager, mediaUrlGenerators, shortStringHelper, contentTypeBaseServiceProvider, context, packageMigrationsSettings)
 {
 }
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);

            MediaFileManager.Initialize(Forms.Context);

            LoadApplication(new App());
        }
Beispiel #26
0
 public FileUploadPropertyValueEditor(
     DataEditorAttribute attribute,
     MediaFileManager mediaFileManager,
     ILocalizedTextService localizedTextService,
     IShortStringHelper shortStringHelper,
     IOptions <ContentSettings> contentSettings,
     IJsonSerializer jsonSerializer,
     IIOHelper ioHelper)
     : base(localizedTextService, shortStringHelper, jsonSerializer, ioHelper, attribute)
 {
     _mediaFileManager = mediaFileManager ?? throw new ArgumentNullException(nameof(mediaFileManager));
     _contentSettings  = contentSettings.Value ?? throw new ArgumentNullException(nameof(contentSettings));
 }
 public ScopeProvider(IUmbracoDatabaseFactory databaseFactory, FileSystems fileSystems, IOptions <CoreDebugSettings> coreDebugSettings, MediaFileManager mediaFileManager, ILogger <ScopeProvider> logger, ILoggerFactory loggerFactory, IRequestCache requestCache, IEventAggregator eventAggregator)
 {
     DatabaseFactory    = databaseFactory;
     _fileSystems       = fileSystems;
     _coreDebugSettings = coreDebugSettings.Value;
     _mediaFileManager  = mediaFileManager;
     _logger            = logger;
     _loggerFactory     = loggerFactory;
     _requestCache      = requestCache;
     _eventAggregator   = eventAggregator;
     // take control of the FileSystems
     _fileSystems.IsScoped = () => AmbientScope != null && AmbientScope.ScopedFileSystems;
 }
Beispiel #28
0
        protected override void Compose()
        {
            base.Compose();
            _publishedSnapshotAccessorMock = new Mock <IPublishedSnapshotAccessor>();
            Builder.Services.AddUnique <IPublishedSnapshotAccessor>(_publishedSnapshotAccessorMock.Object);

            Builder.Services.AddUnique <IPublishedModelFactory>(f => new PublishedModelFactory(f.GetRequiredService <TypeLoader>().GetTypes <PublishedContentModel>(), f.GetRequiredService <IPublishedValueFallback>()));
            Builder.Services.AddUnique <IPublishedContentTypeFactory, PublishedContentTypeFactory>();
            Builder.Services.AddUnique <IPublishedValueFallback, PublishedValueFallback>();

            var loggerFactory = NullLoggerFactory.Instance;
            var mediaService  = Mock.Of <IMediaService>();
            var contentTypeBaseServiceProvider = Mock.Of <IContentTypeBaseServiceProvider>();
            var umbracoContextAccessor         = Mock.Of <IUmbracoContextAccessor>();
            var backOfficeSecurityAccessor     = Mock.Of <IBackOfficeSecurityAccessor>();
            var publishedUrlProvider           = Mock.Of <IPublishedUrlProvider>();
            var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider);
            var serializer        = new ConfigurationEditorJsonSerializer();
            var mediaFileService  = new MediaFileManager(Mock.Of <IFileSystem>(), Mock.Of <IMediaPathScheme>(),
                                                         loggerFactory.CreateLogger <MediaFileManager>(), Mock.Of <IShortStringHelper>());
            var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, loggerFactory.CreateLogger <RichTextEditorPastedImages>(), HostingEnvironment, mediaService, contentTypeBaseServiceProvider, mediaFileService, ShortStringHelper, publishedUrlProvider, serializer);
            var linkParser   = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider);

            var dataTypeService = new TestObjects.TestDataTypeService(
                new DataType(new VoidEditor(DataValueEditorFactory), serializer)
            {
                Id = 1
            },
                new DataType(new TrueFalsePropertyEditor(DataValueEditorFactory, IOHelper), serializer)
            {
                Id = 1001
            },
                new DataType(new RichTextPropertyEditor(DataValueEditorFactory, backOfficeSecurityAccessor, imageSourceParser, linkParser, pastedImages, IOHelper, Mock.Of <IImageUrlGenerator>()), serializer)
            {
                Id = 1002
            },
                new DataType(new IntegerPropertyEditor(DataValueEditorFactory), serializer)
            {
                Id = 1003
            },
                new DataType(new TextboxPropertyEditor(DataValueEditorFactory, IOHelper), serializer)
            {
                Id = 1004
            },
                new DataType(new MediaPickerPropertyEditor(DataValueEditorFactory, IOHelper), serializer)
            {
                Id = 1005
            });

            Builder.Services.AddUnique <IDataTypeService>(f => dataTypeService);
        }
Beispiel #29
0
        private async Task <bool> updateImages(MediaForUpdate media, bool loadOnlyPreviewImg)
        {
            bool result = false;

            if (!media.IsDeleted)
            {
                if ((media.MediaType == MediaObjectTypeEnum.Audio || (media.MediaType == MediaObjectTypeEnum.Image && !loadOnlyPreviewImg)) && (!media.OriginalServerSynced))
                {
                    var httpStatus = await updateMediaFileAsync(media.RoutePointId, media.RoutePointMediaObjectId,
                                                                media.MediaType, false);

                    result = httpStatus == HttpStatusCode.OK;
                    _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, false,
                                                          result);
                    if (!result)
                    {
                        _log.AddStringEvent(
                            $"media file update {media.RoutePointMediaObjectId}, original, http status:{HttpStatusCode.OK}");
                    }
                }

                if ((!media.PreviewServerSynced) && (media.MediaType == MediaObjectTypeEnum.Image))
                {
                    var httpStatus = await updateMediaFileAsync(media.RoutePointId, media.RoutePointMediaObjectId,
                                                                media.MediaType, true);

                    bool resultPreview = httpStatus == HttpStatusCode.OK;
                    _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, true, resultPreview);
                    if (!resultPreview)
                    {
                        _log.AddStringEvent(
                            $"media file update {media.RoutePointMediaObjectId}, preview, http status:{HttpStatusCode.OK}");
                    }
                    if (result)
                    {
                        result = resultPreview;
                    }
                }
            }
            else
            {
                _log.AddStringEvent($"image deleted, passed mediaid:{media.RoutePointMediaObjectId}");
                _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, false, true);
                _routePointMediaManager.SetSyncStatus(media.RoutePointMediaObjectId, true, true);
                MediaFileManager fileManager = new MediaFileManager();
                fileManager.Delete(media.RoutePointMediaObjectId, media.MediaType);
                result = true;
            }

            return(result);
        }
    /// <summary>
    ///     Registers the default required middleware to run Umbraco.
    /// </summary>
    public void RegisterDefaultRequiredMiddleware()
    {
        UseUmbracoCoreMiddleware();

        // Important we handle image manipulations before the static files, otherwise the querystring is just ignored.
        AppBuilder.UseImageSharp();

        // Get media file provider and request path/URL
        MediaFileManager mediaFileManager = AppBuilder.ApplicationServices.GetRequiredService <MediaFileManager>();

        if (mediaFileManager.FileSystem.TryCreateFileProvider(out IFileProvider? mediaFileProvider))
        {
            GlobalSettings globalSettings =
                AppBuilder.ApplicationServices.GetRequiredService <IOptions <GlobalSettings> >().Value;
            IHostingEnvironment?hostingEnvironment = AppBuilder.ApplicationServices.GetService <IHostingEnvironment>();
            var mediaRequestPath = hostingEnvironment?.ToAbsolute(globalSettings.UmbracoMediaPath);

            // Configure custom file provider for media
            IWebHostEnvironment?webHostEnvironment = AppBuilder.ApplicationServices.GetService <IWebHostEnvironment>();
            if (webHostEnvironment is not null)
            {
                webHostEnvironment.WebRootFileProvider =
                    webHostEnvironment.WebRootFileProvider.ConcatComposite(
                        new PrependBasePathFileProvider(mediaRequestPath, mediaFileProvider));
            }
        }

        AppBuilder.UseStaticFiles();

        AppBuilder.UseUmbracoPluginsStaticFiles();

        // UseRouting adds endpoint routing middleware, this means that middlewares registered after this one
        // will execute after endpoint routing. The ordering of everything is quite important here, see
        // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-5.0
        // where we need to have UseAuthentication and UseAuthorization proceeding this call but before
        // endpoints are defined.
        AppBuilder.UseRouting();
        AppBuilder.UseAuthentication();
        AppBuilder.UseAuthorization();

        // This must come after auth because the culture is based on the auth'd user
        AppBuilder.UseRequestLocalization();

        // Must be called after UseRouting and before UseEndpoints
        AppBuilder.UseSession();

        // DO NOT PUT ANY UseEndpoints declarations here!! Those must all come very last in the pipeline,
        // endpoints are terminating middleware. All of our endpoints are declared in ext of IUmbracoApplicationBuilder
    }
 public static void GetAllTitles(MediaFileManager manager, BackgroundWorker worker, DoWorkEventArgs e)
 {
     GetAllTitles(manager.GetMediaFiles("*"), worker, e);
 }