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); }
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(); }
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); }
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()); }
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); }
public StorageWrapper(DataStoreConsumer consumer, CdnStorageSettings current) { StorageWrapperInit(consumer, current); }
public void UploadCdn(int tenantId, string relativePath, string mappedPath, CdnStorageSettings settings = null) { Channel.UploadCdn(tenantId, relativePath, mappedPath, settings); }
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()); }