Ejemplo n.º 1
0
        public async Task <IActionResult> DynamicDnsServices(string hostname)
        {
            var settings = (await _SettingsRepository.GetSettingAsync <DynamicDnsSettings>()) ?? new DynamicDnsSettings();
            var service  = settings.Services.FirstOrDefault(s => s.Hostname.Equals(hostname, StringComparison.OrdinalIgnoreCase));

            if (service == null)
            {
                return(NotFound());
            }
            var vm = new DynamicDnsViewModel();

            vm.Modify   = true;
            vm.Settings = service;
            return(View(nameof(DynamicDnsService), vm));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> DynamicDnsService(DynamicDnsViewModel viewModel, string hostname, string command = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }
            var settings = (await _SettingsRepository.GetSettingAsync <DynamicDnsSettings>()) ?? new DynamicDnsSettings();

            var i = settings.Services.FindIndex(d => d.Hostname.Equals(hostname, StringComparison.OrdinalIgnoreCase));

            if (i == -1)
            {
                return(NotFound());
            }
            if (viewModel.Settings.Password == null)
            {
                viewModel.Settings.Password = settings.Services[i].Password;
            }
            if (viewModel.Settings.Hostname != null)
            {
                viewModel.Settings.Hostname = viewModel.Settings.Hostname.Trim().ToLowerInvariant();
            }
            if (!viewModel.Settings.Enabled)
            {
                StatusMessage = $"The Dynamic DNS service has been disabled";
                viewModel.Settings.LastUpdated = null;
            }
            else
            {
                string errorMessage = await viewModel.Settings.SendUpdateRequest(HttpClientFactory.CreateClient());

                if (errorMessage == null)
                {
                    StatusMessage = $"The Dynamic DNS has been successfully queried, your configuration is saved";
                    viewModel.Settings.LastUpdated = DateTimeOffset.UtcNow;
                }
                else
                {
                    ModelState.AddModelError(string.Empty, errorMessage);
                    return(View(viewModel));
                }
            }
            settings.Services[i] = viewModel.Settings;
            await _SettingsRepository.UpdateSetting(settings);

            this.RouteData.Values.Remove(nameof(hostname));
            return(RedirectToAction(nameof(DynamicDnsServices)));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> DynamicDnsService(DynamicDnsViewModel viewModel, string command = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }
            if (command == "Save")
            {
                var settings = (await _SettingsRepository.GetSettingAsync <DynamicDnsSettings>()) ?? new DynamicDnsSettings();
                var i        = settings.Services.FindIndex(d => d.Hostname.Equals(viewModel.Settings.Hostname, StringComparison.OrdinalIgnoreCase));
                if (i != -1)
                {
                    ModelState.AddModelError(nameof(viewModel.Settings.Hostname), "This hostname already exists");
                    return(View(viewModel));
                }
                if (viewModel.Settings.Hostname != null)
                {
                    viewModel.Settings.Hostname = viewModel.Settings.Hostname.Trim().ToLowerInvariant();
                }
                string errorMessage = await viewModel.Settings.SendUpdateRequest(HttpClientFactory.CreateClient());

                if (errorMessage == null)
                {
                    StatusMessage = $"The Dynamic DNS has been successfully queried, your configuration is saved";
                    viewModel.Settings.LastUpdated = DateTimeOffset.UtcNow;
                    settings.Services.Add(viewModel.Settings);
                    await _SettingsRepository.UpdateSetting(settings);

                    return(RedirectToAction(nameof(DynamicDnsServices)));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, errorMessage);
                    return(View(viewModel));
                }
            }
            else
            {
                return(View(new DynamicDnsViewModel()
                {
                    Settings = new DynamicDnsService()
                }));
            }
        }