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)); }
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))); }
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() })); } }