public IActionResult DeleteConfig(int id)
        {
            ConfigsModel model = new ConfigsModel();

            model.Configs        = _appEntities.GetAllConfigs().ToList();
            model.SelectedConfig = model.Configs.FirstOrDefault(x => x.Id == id);

            return(View(model));
        }
 public IActionResult Index(ConfigsModel configsModel)
 {
     if (configsModel != null)
     {
         configsModel.ContriesISO = GetCountriesISO();
         return(View("Index", configsModel));
     }
     return(BadRequest());
 }
        public IActionResult Config(ConfigsModel model)
        {
            if (ModelState.IsValid && model?.SelectedConfig != null)
            {
                _appEntities.UpsertConfig(model.SelectedConfig);
            }
            model.Configs = _appEntities.GetAllConfigs().ToList();

            return(View(model));
        }
 public IActionResult DisableConfig(ConfigsModel model)
 {
     if (ModelState.IsValid && model?.SelectedConfig != null)
     {
         _appEntities.DisableConfig(model.SelectedConfig);
     }
     model.Configs        = _appEntities.GetAllConfigs().ToList();
     model.SelectedConfig = model.Configs.FirstOrDefault(x => x.Id == model.SelectedConfig.Id);
     return(View(model));
 }
Exemple #5
0
        /// <summary>
        /// 获取配置信息
        /// </summary>
        /// <returns></returns>
        public List <ConfigsModel> FindList()
        {
            string sql = @"select * from Sys_Configs order by F_SortNum";

            List <ConfigsModel> configs = new List <ConfigsModel>();

            using (DbDataReader dr = DbHelper.ExecuteReader(sql))
            {
                while (dr.Read())
                {
                    ConfigsModel config = ReaderToModel <ConfigsModel>(dr);

                    configs.Add(config);
                }
            }
            return(configs);
        }
Exemple #6
0
        private IActionResult config(ConfigsModel model, [AspMvcView] String view)
        {
            if (ModelState.IsValid)
            {
                addErrors(model.Save());
            }

            if (!ModelState.IsValid)
            {
                return(View(view, model));
            }

            if (!String.IsNullOrEmpty(model.BackTo))
            {
                return(Redirect(model.BackTo));
            }

            return(RedirectToAction());
        }
        public async Task <IActionResult> Index()
        {
            var model = new ConfigsModel
            {
                AllowedRegistration    = NodeSettings.Configs.AllowedRegistration,
                AnotherNodesUrls       = NodeSettings.Configs.AnotherNodesUrls,
                BlockchainDbConnection = NodeSettings.Configs.BlockchainDbConnection ?? new DatabaseConnectionInfo(),
                CacheServerConnection  = NodeSettings.Configs.CacheServerConnection ?? new CacheServerConnectionInfo(),
                Certificate            = NodeSettings.Configs.Certificate,
                ConfirmUsers           = NodeSettings.Configs.ConfirmUsers,
                LicensorUrl            = NodeSettings.Configs.LicensorUrl,
                MaxDbBackups           = NodeSettings.Configs.MaxDbBackups,
                MessengerDbConnection  = NodeSettings.Configs.MessengerDbConnection ?? new DatabaseConnectionInfo(),
                Node                      = NodeSettings.Configs.Node,
                NodesUrls                 = NodeSettings.Configs.NodesUrls,
                NotificationServerURL     = NodeSettings.Configs.NotificationServerURL,
                OpenStackOptions          = NodeSettings.Configs.OpenStackOptions ?? new OpenStackOptions(),
                SmtpClient                = NodeSettings.Configs.SmtpClient ?? new SmtpClientInfo(),
                NodeKeys                  = NodeData.Instance.NodeKeys,
                RecoveryMode              = NodeSettings.Configs.RecoveryMode,
                TrustedIps                = NodeSettings.Configs.TrustedIps,
                BlockchainInfo            = await BlockchainReadService.GetBlockchainInformationAsync().ConfigureAwait(false),
                ClientsPort               = NodeSettings.Configs.Node.ClientsPort,
                NodesPort                 = NodeSettings.Configs.Node.NodesPort,
                License                   = NodeSettings.Configs.License,
                S3FileStorageOptions      = NodeSettings.Configs.S3FileStorageOptions,
                ContriesISO               = GetCountriesISO(),
                SMSRUServiceConfiguration = NodeSettings.Configs.SmsServiceConfiguration is SMSRUServiceConfiguration
                    ? (SMSRUServiceConfiguration)NodeSettings.Configs.SmsServiceConfiguration : new SMSRUServiceConfiguration(),
                SMSIntelServiceConfiguration = NodeSettings.Configs.SmsServiceConfiguration is SMSIntelServiceConfiguration
                    ? (SMSIntelServiceConfiguration)NodeSettings.Configs.SmsServiceConfiguration : new SMSIntelServiceConfiguration(),
                BSGServiceConfiguration = NodeSettings.Configs.SmsServiceConfiguration is BSGServiceConfiguration
                    ? (BSGServiceConfiguration)NodeSettings.Configs.SmsServiceConfiguration : new BSGServiceConfiguration(),
                GolosAlohaServiceConfiguration = NodeSettings.Configs.SmsServiceConfiguration is VoiceServiceConfiguration
                    ? (VoiceServiceConfiguration)NodeSettings.Configs.SmsServiceConfiguration : new VoiceServiceConfiguration()
            };

            return(View(model));
        }
        public async Task <IActionResult> Update([FromForm] ConfigsModel configsModel)
        {
            ErrorModel errorModel            = new ErrorModel();
            bool       encryptionChangedFlag = false;

            try
            {
                if (!configsModel.SmtpClient.IsValid() && configsModel.Node.RegistrationMethod == RegistrationMethod.EmailRequired)
                {
                    errorModel.Errors.Add("RegistrationMethod", "Selected registration method requires specifying the correct SmtpClient settings.");
                }
                int settingsCount = 0;
                SmsServiceConfiguration smsConfiguration = NodeSettings.Configs.SmsServiceConfiguration;
                if (configsModel.BSGServiceConfiguration.IsValid() && NodeSettings.Configs.SmsServiceConfiguration.GetType() != typeof(BSGServiceConfiguration))
                {
                    settingsCount++;
                    smsConfiguration = configsModel.BSGServiceConfiguration;
                }
                if (configsModel.SMSIntelServiceConfiguration.IsValid() && NodeSettings.Configs.SmsServiceConfiguration.GetType() != typeof(SMSIntelServiceConfiguration))
                {
                    settingsCount++;
                    smsConfiguration = configsModel.SMSIntelServiceConfiguration;
                }
                if (configsModel.SMSRUServiceConfiguration.IsValid() && NodeSettings.Configs.SmsServiceConfiguration.GetType() != typeof(SMSRUServiceConfiguration))
                {
                    settingsCount++;
                    smsConfiguration = configsModel.SMSRUServiceConfiguration;
                }
                if (configsModel.GolosAlohaServiceConfiguration.IsValid() && NodeSettings.Configs.SmsServiceConfiguration.GetType() != typeof(VoiceServiceConfiguration))
                {
                    settingsCount++;
                    smsConfiguration = configsModel.GolosAlohaServiceConfiguration;
                }
                if (settingsCount > 1)
                {
                    errorModel.Errors.Add("SmsServiceConfiguration", "Found more than one SMS service configuration");
                }
                if (settingsCount == 0 && configsModel.Node.RegistrationMethod == RegistrationMethod.PhoneRequired && !smsConfiguration.IsValid())
                {
                    errorModel.Errors.Add("RegistrationMethod", "Selected registration method requires specifying the correct SmsService settings.");
                }
                if (errorModel.Errors.Any())
                {
                    configsModel.ErrorModel = errorModel;
                    return(Index(configsModel));
                }
                if (settingsCount == 0)
                {
                    if (configsModel.SMSIntelServiceConfiguration.IsValid())
                    {
                        smsConfiguration = configsModel.SMSIntelServiceConfiguration;
                    }
                    else if (configsModel.SMSRUServiceConfiguration.IsValid())
                    {
                        smsConfiguration = configsModel.SMSRUServiceConfiguration;
                    }
                    else if (configsModel.BSGServiceConfiguration.IsValid())
                    {
                        smsConfiguration = configsModel.BSGServiceConfiguration;
                    }
                    else if (configsModel.GolosAlohaServiceConfiguration.IsValid())
                    {
                        smsConfiguration = configsModel.GolosAlohaServiceConfiguration;
                    }
                }
                NodeSettings.Configs.AllowedRegistration      = configsModel.AllowedRegistration;
                NodeSettings.Configs.BlockchainDbConnection   = configsModel.BlockchainDbConnection;
                NodeSettings.Configs.CacheServerConnection    = configsModel.CacheServerConnection;
                NodeSettings.Configs.ConfirmUsers             = configsModel.ConfirmUsers;
                NodeSettings.Configs.LicensorUrl              = configsModel.LicensorUrl;
                NodeSettings.Configs.MaxDbBackups             = configsModel.MaxDbBackups;
                NodeSettings.Configs.MessengerDbConnection    = configsModel.MessengerDbConnection;
                NodeSettings.Configs.OpenStackOptions         = configsModel.OpenStackOptions;
                NodeSettings.Configs.S3FileStorageOptions     = configsModel.S3FileStorageOptions;
                NodeSettings.Configs.SmtpClient               = configsModel.SmtpClient;
                NodeSettings.Configs.RecoveryMode             = configsModel.RecoveryMode;
                NodeSettings.Configs.Node.ClientsPort         = configsModel.ClientsPort;
                NodeSettings.Configs.Node.NodesPort           = configsModel.NodesPort;
                NodeSettings.Configs.Node.SupportEmail        = configsModel.Node.SupportEmail;
                NodeSettings.Configs.Node.AdminEmail          = configsModel.Node.AdminEmail;
                NodeSettings.Configs.Node.PermanentlyDeleting = configsModel.Node.PermanentlyDeleting;
                NodeSettings.Configs.Node.RegistrationMethod  = configsModel.Node.RegistrationMethod;
                NodeSettings.Configs.Node.Country             = configsModel.Node.Country;
                NodeSettings.Configs.SmsServiceConfiguration  = smsConfiguration;
                if (configsModel.Node.EncryptionType != NodeSettings.Configs.Node.EncryptionType)
                {
                    NodeSettings.Configs.Node.EncryptionType = configsModel.Node.EncryptionType;
                    encryptionChangedFlag = true;
                }
                if (configsModel.RecoveryMode)
                {
                    _connectionsService.CloseAllClientConnections();
                }

                if (configsModel.Node != null)
                {
                    NodeSettings.Configs.Node.About   = configsModel.Node.About;
                    NodeSettings.Configs.Node.Name    = configsModel.Node.Name;
                    NodeSettings.Configs.Node.Storage = configsModel.Node.Storage;
                    NodeSettings.Configs.Node.Visible = configsModel.Node.Visible;
                    NodeSettings.Configs.Node.Routing = configsModel.Node.Routing;
                    NodeSettings.Configs.Node.UserRegistrationAllowed = configsModel.Node.UserRegistrationAllowed;
                    if (configsModel.NodeImage != null && configsModel.NodeImage.Length > 0)
                    {
                        string path = _fileStorage.StorageName == "Local"
                            ? Path.Combine(
                            NodeSettings.LOCAL_FILE_STORAGE_PATH,
                            $"[{RandomExtensions.NextString(10)}]{configsModel.NodeImage.FileName}")
                            : null;
                        using (SHA256 sha256 = SHA256.Create())
                        {
                            var fileHash = sha256.ComputeHash(configsModel.NodeImage.OpenReadStream());
                            var fileInfo = await _filesService.SaveFileAsync(
                                null,
                                configsModel.NodeImage.FileName,
                                path,
                                configsModel.NodeImage.Length,
                                fileHash,
                                _fileStorage.StorageName).ConfigureAwait(false);

                            await _fileStorage.UploadAsync(configsModel.NodeImage.OpenReadStream(), path ?? fileInfo.FileId).ConfigureAwait(false);

                            NodeSettings.Configs.Node.Photo = fileInfo.FileId;
                        }
                    }
                    if (LicensorClient.Instance.IsAuthentificated)
                    {
                        var editedNode = await LicensorClient.Instance.EditNodeAsync(NodeSettings.Configs.Node).ConfigureAwait(false);

                        _nodesService.CreateOrUpdateNodeInformationAsync(editedNode);
                    }
                }
                await NodeSettings.Configs.UpdateConfigurationFileAsync().ConfigureAwait(false);

                if (encryptionChangedFlag)
                {
                    _connectionsService.RestartNodeConnections();
                }
                NodeSettings.AppShutdownTokenSource.CancelAfter(TimeSpan.FromSeconds(3));
                return(Index(configsModel));
            }
            catch (Exception ex)
            {
                errorModel.Errors.Add("Internal server error", ex.Message);
                configsModel.ErrorModel = errorModel;
                return(Index(configsModel));
            }
        }