Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Source/NETworkManager.Models/Network/Ping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace NETworkManager.Models.Network;

public sealed class Ping
{
#region Varaibles
#region Variables

public int WaitTime = 1000;
public int Timeout = 4000;
Expand Down
53 changes: 42 additions & 11 deletions Source/NETworkManager.Utilities/DNSClient.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
using System.Collections.Generic;
using DnsClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using DnsClient;
using log4net;

namespace NETworkManager.Utilities;

public class DNSClient : SingletonBase<DNSClient>
{
private static readonly ILog Log = LogManager.GetLogger(typeof(DNSClient));

/// <summary>
/// Error message which is returned when the DNS client is not configured.
/// </summary>
Expand Down Expand Up @@ -36,34 +40,41 @@ public void Configure(DNSClientSettings settings)
{
_settings = settings;

Log.Debug("Configuring DNS client...");

if (_settings.UseCustomDNSServers)
{
Log.Debug("Using custom DNS servers...");

// Setup custom DNS servers
List<NameServer> servers = new();
List<NameServer> servers = [];

foreach (var (server, port) in _settings.DNSServers)
{
Log.Debug($"Adding custom DNS server: {server}:{port}");
servers.Add(new IPEndPoint(IPAddress.Parse(server), port));
}

Log.Debug("Creating LookupClient with custom DNS servers...");
_client = new LookupClient(new LookupClientOptions(servers.ToArray()));
}
else
{
UpdateFromWindows();
Log.Debug("Creating LookupClient with Windows default DNS servers...");
_client = new LookupClient();
}


Log.Debug("DNS client configured.");
_isConfigured = true;
}

/// <summary>
/// Method to update the (Windows) name servers of the DNS client
/// when they may have changed due to a network update.
/// </summary>
public void UpdateFromWindows()
public void UpdateWindowsDNSSever()
{
// Default (Windows) settings
if (_settings.UseCustomDNSServers)
return;

Log.Debug("Recreating LookupClient with with Windows default DNS servers...");
_client = new LookupClient();
}

Expand Down Expand Up @@ -98,6 +109,11 @@ public async Task<DNSClientResultIPAddress> ResolveAAsync(string query)
{
return new DNSClientResultIPAddress(true, ex.Message);
}
catch (Exception ex)
{
Log.Error($"Error while resolving A record (Query string is \"{query}\".", ex);
return new DNSClientResultIPAddress(true, ex.Message);
}
}

/// <summary>
Expand Down Expand Up @@ -131,6 +147,11 @@ public async Task<DNSClientResultIPAddress> ResolveAaaaAsync(string query)
{
return new DNSClientResultIPAddress(true, ex.Message);
}
catch (Exception ex)
{
Log.Error($"Error while resolving AAAA record (Query string is \"{query}\".", ex);
return new DNSClientResultIPAddress(true, ex.Message);
}
}

/// <summary>
Expand Down Expand Up @@ -164,6 +185,11 @@ public async Task<DNSClientResultString> ResolveCnameAsync(string query)
{
return new DNSClientResultString(true, ex.Message);
}
catch (Exception ex)
{
Log.Error($"Error while resolving CNAME record (Query string is \"{query}\".", ex);
return new DNSClientResultString(true, ex.Message);
}
}

/// <summary>
Expand Down Expand Up @@ -197,5 +223,10 @@ public async Task<DNSClientResultString> ResolvePtrAsync(IPAddress ipAddress)
{
return new DNSClientResultString(true, ex.Message);
}
catch (Exception ex)
{
Log.Error($"Error while resolving PTR record (IP address is \"{ipAddress}\".", ex);
return new DNSClientResultString(true, ex.Message);
}
}
}
}
46 changes: 24 additions & 22 deletions Source/NETworkManager/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ private void SettingsManager_PropertyChanged(object sender, PropertyChangedEvent
// Update DNS server if changed in the settings
case nameof(SettingsInfo.Network_UseCustomDNSServer):
case nameof(SettingsInfo.Network_CustomDNSServer):
ConfigureDNS();
ConfigureDNSServer();

break;

Expand Down Expand Up @@ -466,8 +466,8 @@ public MainWindow()
// Load and change appearance
AppearanceManager.Load();

// Load and configure DNS
ConfigureDNS();
// Load and configure DNS server
ConfigureDNSServer();

// Set window title
Title = $"NETworkManager {AssemblyManager.Current.Version}";
Expand Down Expand Up @@ -1542,7 +1542,9 @@ private void ProfileManager_OnLoadedProfileFileChangedEvent(object sender, Profi
private void CheckForUpdates()
{
var updater = new Updater();

updater.UpdateAvailable += Updater_UpdateAvailable;

updater.CheckOnGitHub(Properties.Resources.NETworkManager_GitHub_User,
Properties.Resources.NETworkManager_GitHub_Repo, AssemblyManager.Current.Version,
SettingsManager.Current.Update_CheckForPreReleases);
Expand Down Expand Up @@ -1873,9 +1875,9 @@ private void BringWindowToFront()
Activate();
}

private void ConfigureDNS()
private void ConfigureDNSServer()
{
Log.Info("Configure application DNS...");
Log.Info("Configure application DNS servers...");

DNSClientSettings dnsSettings = new();

Expand All @@ -1885,41 +1887,33 @@ private void ConfigureDNS()
{
Log.Info($"Use custom DNS servers ({SettingsManager.Current.Network_CustomDNSServer})...");

List<(string Server, int Port)> dnsServers = new();

foreach (var dnsServer in SettingsManager.Current.Network_CustomDNSServer.Split(";"))
dnsServers.Add((dnsServer, 53));
List<(string Server, int Port)> dnsServers = SettingsManager.Current.Network_CustomDNSServer.Split(";")
.Select(dnsServer => (dnsServer, 53))
.ToList();

dnsSettings.UseCustomDNSServers = true;
dnsSettings.DNSServers = dnsServers;
}
else
{
Log.Info(
$"Custom DNS servers could not be set (Setting \"{nameof(SettingsManager.Current.Network_CustomDNSServer)}\" has value \"{SettingsManager.Current.Network_CustomDNSServer}\")! Fallback to Windows DNS servers...");
$"Custom DNS servers could not be set (Setting \"{nameof(SettingsManager.Current.Network_CustomDNSServer)}\" has value \"{SettingsManager.Current.Network_CustomDNSServer}\")! Fallback to Windows default DNS servers...");
}
}
else
{
Log.Info("Use Windows DNS servers...");
Log.Info("Use Windows default DNS servers...");
}

DNSClient.GetInstance().Configure(dnsSettings);
}

private void UpdateDNS()
{
Log.Info("Update Windows DNS servers...");

DNSClient.GetInstance().UpdateFromWindows();
}

private void WriteDefaultPowerShellProfileToRegistry()
{
if (!SettingsManager.Current.Appearance_PowerShellModifyGlobalProfile)
return;

HashSet<string> paths = new();
HashSet<string> paths = [];

// PowerShell
if (!string.IsNullOrEmpty(SettingsManager.Current.PowerShell_ApplicationFilePath) &&
Expand Down Expand Up @@ -1958,12 +1952,20 @@ private async void OnNetworkHasChanged()

// Update DNS server if network changed
if (!SettingsManager.Current.Network_UseCustomDNSServer)
UpdateDNS();
{
Log.Info("Update Windows default DNS servers...");
DNSClient.GetInstance().UpdateWindowsDNSSever();
}

// Show status window on network change
if (SettingsManager.Current.Status_ShowWindowOnNetworkChange)
await Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate { OpenStatusWindow(true); }));

{
await Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(delegate
{
OpenStatusWindow(true);
}));
}

_isNetworkChanging = false;
}

Expand Down
3 changes: 3 additions & 0 deletions Website/docs/changelog/next-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ Release date: **xx.xx.2024**

## Bugfixes

- **Ping Monitor**
- A problem has been fixed where the ping does not start if the DNS server is not configured. This can occur if the network interface via which the Windows DNS server was configured is deactivated/disconnected. [#2876](https://github.com/BornToBeRoot/NETworkManager/pull/2876)

- TextBox content not centered because of ScrollViewer issue. [#2763](https://github.com/BornToBeRoot/NETworkManager/pull/2763)

## Dependencies, Refactoring & Documentation
Expand Down