private static async Task InitializeSettings(IWebHost webHost, string[] args) { using var scope = webHost.Services.GetService <IServiceScopeFactory>().CreateScope(); var settingsService = scope.ServiceProvider.GetRequiredService <ISettingsService>(); var existsResult = settingsService.ConnectionStringExist(); if (!existsResult.Success)// do need to initialize database { // Find file var filePath = Path.Combine(Directory.GetCurrentDirectory(), "init.json"); if (File.Exists(filePath)) { Log.LogEvent($"Try initialize from {filePath}"); // Get content var startupContent = await File.ReadAllTextAsync(filePath); var startup = JsonConvert.DeserializeObject <StartupInitializeModel>(startupContent); // Apply settings var updateConnectionResult = await settingsService.UpdateConnectionString(startup.InitialSettings); if (!updateConnectionResult.Success) { throw new Exception("Init error: " + updateConnectionResult.Message); } var adminSettingsUpdateModel = new AdminSettingsModel { S3SettingsModel = startup.S3SettingsModel, SMTPSettingsModel = startup.SMTPSettingsModel, SdkSettingsModel = startup.SdkSettingsModel, SendGridSettingsModel = startup.SendGridSettingsModel, SwiftSettingsModel = startup.SwiftSettingsModel, }; var updateAdminSettingsResult = await settingsService.UpdateAdminSettings(adminSettingsUpdateModel); if (!updateAdminSettingsResult.Success) { throw new Exception("Init error: " + updateAdminSettingsResult.Message); } EnabledPlugins = PluginHelper.GetPlugins(_defaultConnectionString); DisabledPlugins = PluginHelper.GetDisablePlugins(_defaultConnectionString); // Enable plugins foreach (var pluginId in startup.PluginsList) { var pluginObject = DisabledPlugins.FirstOrDefault(x => x.PluginId == pluginId); if (pluginObject != null) { var contextFactory = new BaseDbContextFactory(); await using var dbContext = contextFactory.CreateDbContext(new[] { _defaultConnectionString }); var eformPlugin = await dbContext.EformPlugins .Where(x => x.Status == (int)PluginStatus.Disabled) .FirstOrDefaultAsync(x => x.PluginId == pluginObject.PluginId); if (eformPlugin != null) { eformPlugin.Status = (int)PluginStatus.Enabled; dbContext.EformPlugins.Update(eformPlugin); await dbContext.SaveChangesAsync(); var pluginMenu = pluginObject.GetNavigationMenu(scope.ServiceProvider); // Load to database all navigation menu from plugin by id var pluginMenuItemsLoader = new PluginMenuItemsLoader(dbContext, pluginId); pluginMenuItemsLoader.Load(pluginMenu); } } } // not need because settingsService.UpdateAdminSettings call restart // Restart(); // restart IF some plugins has been enabled } else if (args.Any()) { Log.LogEvent("Try initialize from args"); var defaultConfig = new ConfigurationBuilder() .AddCommandLine(args) .AddEnvironmentVariables(prefix: "ASPNETCORE_") .Build(); var firstName = defaultConfig.GetValue("FirstName", ""); var lastName = defaultConfig.GetValue("LastName", ""); var email = defaultConfig.GetValue("Email", ""); var password = defaultConfig.GetValue("Password", ""); var token = defaultConfig.GetValue("Token", ""); if (!string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(firstName) && !string.IsNullOrEmpty(lastName) && !string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(password)) { var sdkConnectionString = _defaultConnectionString.Replace("_Angular", "_SDK"); // get customer number const RegexOptions options = RegexOptions.Multiline | RegexOptions.CultureInvariant; const string pattern = @"[D|d]atabase=(\D*)(\d*)_Angular"; if (int.TryParse(Regex.Match(_defaultConnectionString, pattern, options).Groups[^ 1].Value, out var customerNumber)) { var adminTools = new AdminTools(sdkConnectionString); // Setup SDK DB await adminTools.DbSetup(token); var core = new Core(); await core.StartSqlOnly(sdkConnectionString); await core.SetSdkSetting(Settings.customerNo, customerNumber.ToString()); // setup admin var adminSetupModel = new AdminSetupModel() { DarkTheme = false, FirstName = firstName, LastName = lastName, Email = email, Password = password, }; var contextFactory = new BaseDbContextFactory(); await using var dbContext = contextFactory.CreateDbContext(new[] { _defaultConnectionString }); var connectionStringsSdk = scope.ServiceProvider.GetRequiredService <IDbOptions <ConnectionStringsSdk> >(); await connectionStringsSdk.UpdateDb( options => { options.SdkConnection = sdkConnectionString; }, dbContext); await SeedAdminHelper.SeedAdmin(adminSetupModel, "", dbContext); Restart(); } } } } }
public async Task <OperationResult> UpdateAdminSettings(AdminSettingsModel adminSettingsModel) { try { var core = await _coreHelper.GetCore(); if (adminSettingsModel.SMTPSettingsModel != null) { await _emailSettings.UpdateDb((option) => { option.SmtpHost = adminSettingsModel.SMTPSettingsModel.Host; option.SmtpPort = int.Parse(adminSettingsModel.SMTPSettingsModel.Port); option.Login = adminSettingsModel.SMTPSettingsModel.Login; option.Password = adminSettingsModel.SMTPSettingsModel.Password; option.SendGridKey = adminSettingsModel.SendGridSettingsModel.ApiKey; }, _dbContext); } if (adminSettingsModel.HeaderSettingsModel != null) { await _headerSettings.UpdateDb((option) => { option.ImageLink = adminSettingsModel.HeaderSettingsModel.ImageLink; option.ImageLinkVisible = adminSettingsModel.HeaderSettingsModel.ImageLinkVisible; option.MainText = adminSettingsModel.HeaderSettingsModel.MainText; option.MainTextVisible = adminSettingsModel.HeaderSettingsModel.MainTextVisible; option.SecondaryText = adminSettingsModel.HeaderSettingsModel.SecondaryText; option.SecondaryTextVisible = adminSettingsModel.HeaderSettingsModel.SecondaryTextVisible; }, _dbContext); } if (adminSettingsModel.LoginPageSettingsModel != null) { await _loginPageSettings.UpdateDb((option) => { option.ImageLink = adminSettingsModel.LoginPageSettingsModel.ImageLink; option.ImageLinkVisible = adminSettingsModel.LoginPageSettingsModel.ImageLinkVisible; option.MainText = adminSettingsModel.LoginPageSettingsModel.MainText; option.MainTextVisible = adminSettingsModel.LoginPageSettingsModel.MainTextVisible; option.SecondaryText = adminSettingsModel.LoginPageSettingsModel.SecondaryText; option.SecondaryTextVisible = adminSettingsModel.LoginPageSettingsModel.SecondaryTextVisible; }, _dbContext); } if (!string.IsNullOrEmpty(adminSettingsModel.SiteLink)) { await core.SetSdkSetting(Settings.httpServerAddress, adminSettingsModel.SiteLink); } if (adminSettingsModel.SwiftSettingsModel != null) { await core.SetSdkSetting( Settings.swiftEnabled, adminSettingsModel.SwiftSettingsModel.SwiftEnabled.ToString()); await core.SetSdkSetting( Settings.swiftUserName, adminSettingsModel.SwiftSettingsModel.SwiftUserName); if (adminSettingsModel.SwiftSettingsModel.SwiftPassword != "SOMESECRETPASSWORD") { await core.SetSdkSetting(Settings.swiftPassword, adminSettingsModel.SwiftSettingsModel.SwiftPassword); } await core.SetSdkSetting(Settings.swiftEndPoint, adminSettingsModel.SwiftSettingsModel.SwiftEndpoint); await core.SetSdkSetting(Settings.keystoneEndPoint, adminSettingsModel.SwiftSettingsModel.KeystoneEndpoint); } if (adminSettingsModel.SdkSettingsModel != null) { await core.SetSdkSetting(Settings.customerNo, adminSettingsModel.SdkSettingsModel.CustomerNo); await core.SetSdkSetting(Settings.logLevel, adminSettingsModel.SdkSettingsModel.LogLevel); await core.SetSdkSetting(Settings.logLimit, adminSettingsModel.SdkSettingsModel.LogLimit); await core.SetSdkSetting(Settings.fileLocationPicture, adminSettingsModel.SdkSettingsModel.FileLocationPicture); await core.SetSdkSetting(Settings.fileLocationPdf, adminSettingsModel.SdkSettingsModel.FileLocationPdf); await core.SetSdkSetting(Settings.fileLocationJasper, adminSettingsModel.SdkSettingsModel.FileLocationReports); await core.SetSdkSetting(Settings.httpServerAddress, adminSettingsModel.SdkSettingsModel.HttpServerAddress); } if (adminSettingsModel.S3SettingsModel != null) { await core.SetSdkSetting(Settings.s3Enabled, adminSettingsModel.S3SettingsModel.S3Enabled.ToString()); await core.SetSdkSetting(Settings.s3AccessKeyId, adminSettingsModel.S3SettingsModel.S3AccessKeyId); await core.SetSdkSetting(Settings.s3BucketName, adminSettingsModel.S3SettingsModel.S3BucketName); if (adminSettingsModel.S3SettingsModel.S3SecrectAccessKey != "SOMESECRETPASSWORD") { await core.SetSdkSetting(Settings.s3SecrectAccessKey, adminSettingsModel.S3SettingsModel.S3SecrectAccessKey); } await core.SetSdkSetting(Settings.s3Endpoint, adminSettingsModel.S3SettingsModel.S3Endpoint); } return(new OperationResult(true, _localizationService.GetString("SettingsUpdatedSuccessfully"))); } catch (Exception e) { _logger.LogError(e.Message); return(new OperationResult(false, _localizationService.GetString("CantUpdateSettingsInWebConfig"))); } }
public async Task <OperationResult> UpdateAdminSettings([FromBody] AdminSettingsModel adminSettingsModel) { await _settingsService.IntegrityCheck(); return(await _settingsService.UpdateAdminSettings(adminSettingsModel)); }
public async Task <OperationDataResult <AdminSettingsModel> > GetAdminSettings() { try { var core = await _coreHelper.GetCore(); var model = new AdminSettingsModel() { SMTPSettingsModel = new SMTPSettingsModel() { Host = _emailSettings.Value.SmtpHost, Port = _emailSettings.Value.SmtpPort.ToString(), Login = _emailSettings.Value.Login, Password = _emailSettings.Value.Password, }, SendGridSettingsModel = new SendGridSettingsModel() { ApiKey = _emailSettings.Value.SendGridKey, }, HeaderSettingsModel = new HeaderSettingsModel() { ImageLink = _headerSettings.Value.ImageLink, ImageLinkVisible = _headerSettings.Value.ImageLinkVisible, MainText = _headerSettings.Value.MainText, MainTextVisible = _headerSettings.Value.MainTextVisible, SecondaryText = _headerSettings.Value.SecondaryText, SecondaryTextVisible = _headerSettings.Value.SecondaryTextVisible, }, LoginPageSettingsModel = new LoginPageSettingsModel() { ImageLink = _loginPageSettings.Value.ImageLink, ImageLinkVisible = _loginPageSettings.Value.ImageLinkVisible, MainText = _loginPageSettings.Value.MainText, MainTextVisible = _loginPageSettings.Value.MainTextVisible, SecondaryText = _loginPageSettings.Value.SecondaryText, SecondaryTextVisible = _loginPageSettings.Value.SecondaryTextVisible, IsSendGridExists = !_emailSettings.Value.SendGridKey.IsNullOrEmpty(), }, SwiftSettingsModel = new SwiftSettingsModel() { SwiftEnabled = (core.GetSdkSetting(Settings.swiftEnabled).Result.ToLower() == "true"), SwiftUserName = await core.GetSdkSetting(Settings.swiftUserName), SwiftPassword = "******", SwiftEndpoint = await core.GetSdkSetting(Settings.swiftEndPoint), KeystoneEndpoint = await core.GetSdkSetting(Settings.keystoneEndPoint) }, S3SettingsModel = new S3SettingsModel() { S3Enabled = (core.GetSdkSetting(Settings.s3Enabled).Result.ToLower() == "true"), S3AccessKeyId = await core.GetSdkSetting(Settings.s3AccessKeyId), S3SecrectAccessKey = "SOMESECRETPASSWORD", S3Endpoint = await core.GetSdkSetting(Settings.s3Endpoint), S3BucketName = await core.GetSdkSetting(Settings.s3BucketName) }, SdkSettingsModel = new SDKSettingsModel() { CustomerNo = await core.GetSdkSetting(Settings.customerNo), LogLevel = await core.GetSdkSetting(Settings.logLevel), LogLimit = await core.GetSdkSetting(Settings.logLimit), FileLocationPicture = await core.GetSdkSetting(Settings.fileLocationPicture), FileLocationPdf = await core.GetSdkSetting(Settings.fileLocationPdf), FileLocationReports = await core.GetSdkSetting(Settings.fileLocationJasper), HttpServerAddress = await core.GetSdkSetting(Settings.httpServerAddress) }, SiteLink = await core.GetSdkSetting(Settings.httpServerAddress), AssemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString() }; return(new OperationDataResult <AdminSettingsModel>(true, model)); } catch (Exception e) { _logger.LogError(e.Message); return(new OperationDataResult <AdminSettingsModel>(false, _localizationService.GetString("CantObtainSettingsFromWebConfig"))); } }