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
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ProjectGuid>{95CE4AD5-14C0-4486-9C11-5D6A5EC48176}</ProjectGuid>
<OutputType>Library</OutputType>
Expand Down
18 changes: 18 additions & 0 deletions Source/NETworkManager.Localization/Resources/Strings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Source/NETworkManager.Localization/Resources/Strings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -3945,4 +3945,10 @@ If you click Cancel, the profile file will remain unencrypted.</value>
<data name="ToolTip_RestartRequired" xml:space="preserve">
<value>A restart is required to apply changes such as language settings.</value>
</data>
<data name="CouldNotParseOrResolveDNSServers" xml:space="preserve">
<value>Could not parse or resolve any of the specified DNS servers.</value>
</data>
<data name="CouldNotParseX" xml:space="preserve">
<value>Could not parse DNS server "{0}".</value>
</data>
</root>
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
41 changes: 23 additions & 18 deletions Source/NETworkManager.Models/Network/DNSServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,39 @@ 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("Quad9",
[
new ("9.9.9.9", 53, TransportProtocol.Udp),
new ("149.112.112.112", 53 , TransportProtocol.Udp)
]),
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,6 +24,7 @@ public DNSServerConnectionInfoProfile()
/// <param name="servers">List of servers as <see cref="ServerConnectionInfo" />.</param>
public DNSServerConnectionInfoProfile(string name, List<ServerConnectionInfo> servers) : base(name, servers)
{

}

/// <summary>
Expand Down
16 changes: 8 additions & 8 deletions Source/NETworkManager.Models/Network/HostRangeHelper.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using System.Collections.Concurrent;
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 +46,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 +71,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 +86,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 Expand Up @@ -147,7 +147,7 @@ private static (List<(IPAddress ipAddress, string hostname)> hosts, List<string>
break;

// example.com
case var _ when Regex.IsMatch(host, RegexHelper.HostnameOrDomainRegex):
case var _ when RegexHelper.HostnameOrDomainRegex().IsMatch(host):
using (var dnsResolverTask =
DNSClientHelper.ResolveAorAaaaAsync(host, dnsResolveHostnamePreferIPv4))
{
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
Loading