Skip to content
Open
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
4 changes: 2 additions & 2 deletions Source/GlobalAssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AssemblyVersion("2025.11.16.0")]
[assembly: AssemblyFileVersion("2025.11.16.0")]
[assembly: AssemblyVersion("2025.12.10.0")]
[assembly: AssemblyFileVersion("2025.12.10.0")]

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using System;
using NETworkManager.Utilities;
using System;
using System.Globalization;
using System.Text.RegularExpressions;
using System.Windows.Data;
using NETworkManager.Utilities;

namespace NETworkManager.Converters;

public sealed class StringIsNotNullOrEmptyOrIPv4AddressToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !string.IsNullOrEmpty(value as string) && !Regex.IsMatch((string)value, RegexHelper.IPv4AddressRegex);
return !string.IsNullOrEmpty(value as string) && !RegexHelper.IPv4AddressRegex().IsMatch((string)value);
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System.Globalization;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Windows.Data;
using NETworkManager.Models.Network;
using NETworkManager.Utilities;
Expand Down Expand Up @@ -40,7 +39,7 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur
};

// Support subnetmask like 255.255.255.0
int newCidr = Regex.IsMatch(newSubnetmaskOrCidr, RegexHelper.SubnetmaskRegex)
int newCidr = RegexHelper.SubnetmaskRegex().IsMatch(newSubnetmaskOrCidr)
? System.Convert.ToByte(Subnetmask.ConvertSubnetmaskToCidr(IPAddress.Parse(newSubnetmaskOrCidr)))
: System.Convert.ToByte(newSubnetmaskOrCidr.TrimStart('/'));

Expand Down
1 change: 1 addition & 0 deletions Source/NETworkManager.Models/Network/DNSLookupErrorArgs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ public class DNSLookupErrorArgs : EventArgs
{
public DNSLookupErrorArgs()
{

}

public DNSLookupErrorArgs(string query, string server, string ipEndPoint, string errorMessage)
Expand Down
36 changes: 18 additions & 18 deletions Source/NETworkManager.Models/Network/DNSServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,34 @@ public static class DNSServer
/// <returns>List of common dns servers.</returns>
public static List<DNSServerConnectionInfoProfile> GetDefaultList()
{
return new List<DNSServerConnectionInfoProfile>
{
return
[
new(), // Windows DNS server
new("Cloudflare", new List<ServerConnectionInfo>
{
new("Cloudflare",
[
new("1.1.1.1", 53, TransportProtocol.Udp),
new("1.0.0.1", 53, TransportProtocol.Udp)
}),
new("DNS.Watch", new List<ServerConnectionInfo>
{
]),
new("DNS.Watch",
[
new("84.200.69.80", 53, TransportProtocol.Udp),
new("84.200.70.40", 53, TransportProtocol.Udp)
}),
new("Google Public DNS", new List<ServerConnectionInfo>
{
]),
new("Google Public DNS",
[
new("8.8.8.8", 53, TransportProtocol.Udp),
new("8.8.4.4", 53, TransportProtocol.Udp)
}),
new("Level3", new List<ServerConnectionInfo>
{
]),
new("Level3",
[
new("209.244.0.3", 53, TransportProtocol.Udp),
new("209.244.0.4", 53, TransportProtocol.Udp)
}),
new("Verisign", new List<ServerConnectionInfo>
{
]),
new("Verisign",
[
new("64.6.64.6", 53, TransportProtocol.Udp),
new("64.6.65.6", 53, TransportProtocol.Udp)
})
};
])
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class DNSServerConnectionInfoProfile : ServerConnectionInfoProfile
/// </summary>
public DNSServerConnectionInfoProfile()
{
Name = "[Windows DNS]";
UseWindowsDNSServer = true;
}

Expand All @@ -23,10 +24,11 @@ public DNSServerConnectionInfoProfile()
/// <param name="servers">List of servers as <see cref="ServerConnectionInfo" />.</param>
public DNSServerConnectionInfoProfile(string name, List<ServerConnectionInfo> servers) : base(name, servers)
{

}

/// <summary>
/// Use the DNS server from Windows.
/// </summary>
public bool UseWindowsDNSServer { get; set; }
public bool UseWindowsDNSServer { get; set; }
}
15 changes: 8 additions & 7 deletions Source/NETworkManager.Models/Network/HostRangeHelper.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
using System.Collections.Concurrent;
using ControlzEx.Standard;
using NETworkManager.Utilities;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using NETworkManager.Utilities;

namespace NETworkManager.Models.Network;

Expand Down Expand Up @@ -46,17 +47,17 @@ private static (List<(IPAddress ipAddress, string hostname)> hosts, List<string>
switch (host)
{
// 192.168.0.1
case var _ when Regex.IsMatch(host, RegexHelper.IPv4AddressRegex):
case var _ when RegexHelper.IPv4AddressRegex().IsMatch(host):
// 2001:db8:85a3::8a2e:370:7334
case var _ when Regex.IsMatch(host, RegexHelper.IPv6AddressRegex):
hostsBag.Add((IPAddress.Parse(host), string.Empty));

break;

// 192.168.0.0/24
case var _ when Regex.IsMatch(host, RegexHelper.IPv4AddressCidrRegex):
case var _ when RegexHelper.IPv4AddressCidrRegex().IsMatch(host):
// 192.168.0.0/255.255.255.0
case var _ when Regex.IsMatch(host, RegexHelper.IPv4AddressSubnetmaskRegex):
case var _ when RegexHelper.IPv4AddressSubnetmaskRegex().IsMatch(host):
var network = IPNetwork2.Parse(host);

Parallel.For(IPv4Address.ToInt32(network.Network), IPv4Address.ToInt32(network.Broadcast) + 1,
Expand All @@ -71,7 +72,7 @@ private static (List<(IPAddress ipAddress, string hostname)> hosts, List<string>
break;

// 192.168.0.0 - 192.168.0.100
case var _ when Regex.IsMatch(host, RegexHelper.IPv4AddressRangeRegex):
case var _ when RegexHelper.IPv4AddressRangeRegex().IsMatch(host):
var range = host.Split('-');

Parallel.For(IPv4Address.ToInt32(IPAddress.Parse(range[0])),
Expand All @@ -86,7 +87,7 @@ private static (List<(IPAddress ipAddress, string hostname)> hosts, List<string>
break;

// 192.168.[50-100].1
case var _ when Regex.IsMatch(host, RegexHelper.IPv4AddressSpecialRangeRegex):
case var _ when RegexHelper.IPv4AddressSpecialRangeRegex().IsMatch(host):
var octets = host.Split('.');

var list = new List<ConcurrentBag<int>>();
Expand Down
7 changes: 4 additions & 3 deletions Source/NETworkManager.Models/Network/SNTPLookup.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using System;
using ControlzEx.Standard;
using NETworkManager.Utilities;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using NETworkManager.Utilities;

namespace NETworkManager.Models.Network;

Expand Down Expand Up @@ -102,7 +103,7 @@ public void QueryAsync(IEnumerable<ServerConnectionInfo> servers, bool dnsResolv
// NTP requires an IP address to connect to
IPAddress serverIP = null;

if (Regex.IsMatch(server.Server, RegexHelper.IPv4AddressRegex) ||
if (RegexHelper.IPv4AddressRegex().IsMatch(server.Server) ||
Regex.IsMatch(server.Server, RegexHelper.IPv6AddressRegex))
{
serverIP = IPAddress.Parse(server.Server);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,10 @@ public ServerConnectionInfoProfile(string name, List<ServerConnectionInfo> serve
/// <summary>
/// List of servers as <see cref="ServerConnectionInfo" />.
/// </summary>
public List<ServerConnectionInfo> Servers { get; set; } = new();
public List<ServerConnectionInfo> Servers { get; set; } = [];

public override string ToString()
{
return Name;
}
}
30 changes: 15 additions & 15 deletions Source/NETworkManager.Settings/SettingsInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1723,7 +1723,7 @@ public ExportFileType Traceroute_ExportFileType

#region DNS Lookup

private ObservableCollection<string> _dnsLookup_HostHistory = new();
private ObservableCollection<string> _dnsLookup_HostHistory = [];

public ObservableCollection<string> DNSLookup_HostHistory
{
Expand All @@ -1738,7 +1738,7 @@ public ObservableCollection<string> DNSLookup_HostHistory
}
}

private ObservableCollection<DNSServerConnectionInfoProfile> _dnsLookup_DNSServers = new();
private ObservableCollection<DNSServerConnectionInfoProfile> _dnsLookup_DNSServers = [];

public ObservableCollection<DNSServerConnectionInfoProfile> DNSLookup_DNSServers
{
Expand All @@ -1753,8 +1753,10 @@ public ObservableCollection<DNSServerConnectionInfoProfile> DNSLookup_DNSServers
}
}

private DNSServerConnectionInfoProfile _dnsLookup_SelectedDNSServer = new();
[Obsolete("Use DNSLookup_SelectedDNSServer_v2 instead.")]
private DNSServerConnectionInfoProfile _dnsLookup_SelectedDNSServer = null;

[Obsolete("Use DNSLookup_SelectedDNSServer_v2 instead.")]
public DNSServerConnectionInfoProfile DNSLookup_SelectedDNSServer
{
get => _dnsLookup_SelectedDNSServer;
Expand All @@ -1768,37 +1770,35 @@ public DNSServerConnectionInfoProfile DNSLookup_SelectedDNSServer
}
}

private QueryClass _dnsLookup_QueryClass = GlobalStaticConfiguration.DNSLookup_QueryClass;
private string _dnsLookup_SelectedDNSServer_v2;

public QueryClass DNSLookup_QueryClass
public string DNSLookup_SelectedDNSServer_v2
{
get => _dnsLookup_QueryClass;
get => _dnsLookup_SelectedDNSServer_v2;
set
{
if (value == _dnsLookup_QueryClass)
if (value == _dnsLookup_SelectedDNSServer_v2)
return;

_dnsLookup_QueryClass = value;
_dnsLookup_SelectedDNSServer_v2 = value;
OnPropertyChanged();
}
}

/*
private bool _dnsLookup_ShowOnlyMostCommonQueryTypes = true;
private QueryClass _dnsLookup_QueryClass = GlobalStaticConfiguration.DNSLookup_QueryClass;

public bool DNSLookup_ShowOnlyMostCommonQueryTypes
public QueryClass DNSLookup_QueryClass
{
get => _dnsLookup_ShowOnlyMostCommonQueryTypes;
get => _dnsLookup_QueryClass;
set
{
if (value == _dnsLookup_ShowOnlyMostCommonQueryTypes)
if (value == _dnsLookup_QueryClass)
return;

_dnsLookup_ShowOnlyMostCommonQueryTypes = value;
_dnsLookup_QueryClass = value;
OnPropertyChanged();
}
}
*/

private QueryType _dnsLookup_QueryType = GlobalStaticConfiguration.DNSLookup_QueryType;

Expand Down
10 changes: 10 additions & 0 deletions Source/NETworkManager.Settings/SettingsManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,16 @@ private static void UpgradeToLatest(Version version)
{
Log.Info($"Apply upgrade to {version}...");

// DNS Lookup

Log.Info("Migrate DNS Lookup settings to new structure...");

Current.DNSLookup_SelectedDNSServer_v2 = Current.DNSLookup_SelectedDNSServer?.Name;

Log.Info($"Selected DNS server set to \"{Current.DNSLookup_SelectedDNSServer_v2}\"");

// AWS Session Manager

Log.Info("Removing deprecated app \"AWS Session Manager\", if it exists...");

var appToRemove = Current.General_ApplicationList
Expand Down
Loading