Exemplo n.º 1
0
        public string DoJob()
        {
            try
            {
                var tenant = CoreContext.TenantManager.GetTenant(tenantId);
                CoreContext.TenantManager.SetCurrentTenant(tenant);
                SecurityContext.AuthenticateMe(tenant.OwnerId);

                var dataStore = CdnStorageSettings.Load().DataStore;

                if (File.Exists(mappedPath))
                {
                    if (!dataStore.IsFile(path))
                    {
                        using (var stream = File.OpenRead(mappedPath))
                        {
                            dataStore.Save(path, stream);
                        }
                    }

                    Result = dataStore.GetInternalUri("", path, TimeSpan.Zero, null).AbsoluteUri.ToLower();
                    LogManager.GetLogger("ASC").DebugFormat("UploadFile {0}", Result);
                    return(Result);
                }
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
            return(null);
        }
Exemplo n.º 2
0
        public void UploadCdn(int tenantId, string relativePath, string mappedPath, CdnStorageSettings cdnStorageSettings = null)
        {
            using var scope = ServiceProvider.CreateScope();
            var tenantManager = scope.ServiceProvider.GetService <TenantManager>();

            tenantManager.SetCurrentTenant(tenantId);

            StaticUploader.UploadDir(relativePath, mappedPath);
            Log.DebugFormat("UploadDir {0}", mappedPath);
        }
        public void ResetCdnToDefault()
        {
            SecurityContext.DemandPermissions(Tenant, SecutiryConstants.EditPortalSettings);
            if (!CoreContext.Configuration.Standalone)
            {
                return;
            }

            CdnStorageSettings.Load().Clear();
        }
Exemplo n.º 4
0
        public static bool CanUpload()
        {
            var current = CdnStorageSettings.Load().DataStoreConsumer;

            if (current == null || !current.IsSet || (string.IsNullOrEmpty(current["cnamessl"]) && string.IsNullOrEmpty(current["cname"])))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 5
0
        public void UploadCdn(int tenantId, string relativePath, string mappedPath, CdnStorageSettings cdnStorageSettings = null)
        {
            CoreContext.TenantManager.SetCurrentTenant(tenantId);

            if (cdnStorageSettings != null)
            {
                cdnStorageSettings.Save();
            }

            StaticUploader.UploadDir(relativePath, mappedPath);
            LogManager.GetLogger("ASC").DebugFormat("UploadDir {0}", mappedPath);
        }
        public List <StorageWrapper> GetAllCdnStorages()
        {
            SecurityContext.DemandPermissions(Tenant, SecutiryConstants.EditPortalSettings);
            if (!CoreContext.Configuration.Standalone)
            {
                return(null);
            }

            var current   = CdnStorageSettings.Load();
            var consumers = ConsumerFactory.GetAll <DataStoreConsumer>().Where(r => r.Cdn != null).ToList();

            return(consumers.Select(consumer => new StorageWrapper(consumer, current)).ToList());
        }
Exemplo n.º 7
0
        public void UploadCdn(int tenantId, string relativePath, string mappedPath, CdnStorageSettings settings = null)
        {
            var cdnStorSettings = new CdnStorSettings {
                ID = settings.ID.ToString(), Module = settings.Module
            };

            UploadCdnMigrationNotify.Publish(new MigrationUploadCdn
            {
                Tenant          = tenantId,
                RelativePath    = relativePath,
                MappedPath      = mappedPath,
                CdnStorSettings = cdnStorSettings
            },
                                             CacheNotifyAction.Insert);
        }
        public CdnStorageSettings UpdateCdn(StorageModel model)
        {
            SecurityContext.DemandPermissions(Tenant, SecutiryConstants.EditPortalSettings);
            if (!CoreContext.Configuration.Standalone)
            {
                return(null);
            }

            var consumer = ConsumerFactory.GetByName(model.Module);

            if (!consumer.IsSet)
            {
                throw new ArgumentException("module");
            }

            var settings = CdnStorageSettings.Load();

            if (settings.Module == model.Module)
            {
                return(settings);
            }

            settings.Module = model.Module;
            settings.Props  = model.Props.ToDictionary(r => r.Key, b => b.Value);

            try
            {
                using var migrateClient = new ServiceClient();
                migrateClient.UploadCdn(Tenant.TenantId, "/", WebHostEnvironment.ContentRootPath, settings);
            }
            catch (Exception e)
            {
                LogManager.GetLogger("ASC").Error("UpdateCdn", e);
                throw;
            }

            return(settings);
        }
Exemplo n.º 9
0
 public StorageWrapper(DataStoreConsumer consumer, CdnStorageSettings current)
 {
     StorageWrapperInit(consumer, current);
 }
Exemplo n.º 10
0
 public void UploadCdn(int tenantId, string relativePath, string mappedPath, CdnStorageSettings settings = null)
 {
     Channel.UploadCdn(tenantId, relativePath, mappedPath, settings);
 }
Exemplo n.º 11
0
        public static string GetPath(string relativePath)
        {
            if (relativePath.StartsWith("~"))
            {
                throw new ArgumentException(string.Format("bad path format {0} remove '~'", relativePath), "relativePath");
            }

            var result = relativePath;
            var ext    = Path.GetExtension(relativePath).ToLowerInvariant();

            if (CoreContext.Configuration.Standalone && StaticUploader.CanUpload())
            {
                try
                {
                    result = CdnStorageSettings.Load().DataStore.GetInternalUri("", relativePath, TimeSpan.Zero, null).AbsoluteUri.ToLower();
                    if (!string.IsNullOrEmpty(result))
                    {
                        return(result);
                    }
                }
                catch (Exception)
                {
                }
            }

            if (Appenders.Any())
            {
                var avaliableAppenders      = Appenders.Where(x => x.Extensions.Split('|').Contains(ext) || String.IsNullOrEmpty(ext)).ToList();
                var avaliableAppendersCount = avaliableAppenders.LongCount();

                AppenderConfigurationElement appender;
                if (avaliableAppendersCount > 1)
                {
                    appender = avaliableAppenders[(int)(relativePath.Length % avaliableAppendersCount)];
                }
                else if (avaliableAppendersCount == 1)
                {
                    appender = avaliableAppenders.First();
                }
                else
                {
                    appender = Appenders.First();
                }

                if (appender.Append.StartsWith("~"))
                {
                    var query = string.Empty;
                    //Rel path
                    if (relativePath.IndexOfAny(new[] { '?', '=', '&' }) != -1)
                    {
                        //Cut it
                        query        = relativePath.Substring(relativePath.IndexOf('?'));
                        relativePath = relativePath.Substring(0, relativePath.IndexOf('?'));
                    }
                    if (HostingEnvironment.IsHosted)
                    {
                        result = VirtualPathUtility.ToAbsolute(string.Format("{0}/{1}{2}", appender.Append.TrimEnd('/'), relativePath.TrimStart('/'), query));
                    }
                    else
                    {
                        result = string.Format("{0}/{1}{2}", appender.Append.TrimEnd('/').TrimStart('~'), relativePath.TrimStart('/'), query);
                    }
                }
                else
                {
                    if (HostingEnvironment.IsHosted && SecureHelper.IsSecure() && !string.IsNullOrEmpty(appender.AppendSecure))
                    {
                        result = string.Format("{0}/{1}", appender.AppendSecure.TrimEnd('/'), relativePath.TrimStart('/'));
                    }
                    else
                    {
                        //Append directly
                        result = string.Format("{0}/{1}", appender.Append.TrimEnd('/'), relativePath.TrimStart('/'));
                    }
                }
            }
            //To LOWER! cause Amazon is CASE SENSITIVE!
            return(result.ToLowerInvariant());
        }