Skip to content

Commit 656191c

Browse files
committed
1 parent 0572ff8 commit 656191c

10 files changed

Lines changed: 151 additions & 108 deletions

File tree

Source/NETworkManager/GlobalStaticConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ public class GlobalStaticConfiguration
5656
public static int IPScanner_ICMPAttempts => 2;
5757
public static int IPScanner_ICMPBuffer => 32;
5858
public static int IPScanner_DNSPort => 53;
59-
public static TransportType IPScanner_DNSTransportType => TransportType.Udp;
60-
public static int IPScanner_DNSAttempts => 2;
59+
public static bool IPScanner_DNSTCPOnly => false;
6160
public static int IPScanner_DNSTimeout => 2000;
61+
public static int IPScanner_DNSRetries => 3;
6262
public static int IPScanner_ICMPTimeout => 4000;
6363
public static ExportManager.ExportFileType IPScanner_ExportFileType => ExportManager.ExportFileType.CSV;
64-
64+
6565
// Application: Port Scanner
6666
public static int PortScanner_HostThreads => 5;
6767
public static int PortScanner_PortThreds => 100;

Source/NETworkManager/MainWindow.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
using NETworkManager.ViewModels;
2424
using NETworkManager.Models.EventSystem;
2525
using ContextMenu = System.Windows.Controls.ContextMenu;
26+
using DnsClient;
2627

2728
namespace NETworkManager
2829
{

Source/NETworkManager/Models/Network/IPScanner.cs

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
using NETworkManager.Models.Lookup;
1+
using DnsClient;
2+
using NETworkManager.Models.Lookup;
23
using System;
3-
using System.Collections.Generic;
4-
using System.Diagnostics;
54
using System.Linq;
65
using System.Net;
76
using System.Net.NetworkInformation;
87
using System.Threading;
98
using System.Threading.Tasks;
10-
using TransportType = Heijden.DNS.TransportType;
119

1210
namespace NETworkManager.Models.Network
1311
{
@@ -21,16 +19,23 @@ public class IPScanner
2119
public byte[] ICMPBuffer = new byte[32];
2220
public int ICMPAttempts = 2;
2321
public bool ResolveHostname = true;
22+
23+
// ToDo:
2424
public bool UseCustomDNSServer = false;
25-
public List<string> CustomDNSServer = new List<string>();
26-
public int DNSPort = 53;
27-
public int DNSAttempts = 2;
28-
public int DNSTimeout = 2000;
25+
public IPAddress CustomDNSServer;
26+
public int CustomDNSPort = 53;
27+
public bool DNSTCPOnly = false;
28+
public bool DNSUseCache = true;
29+
public bool DNSRecursion = true;
30+
public TimeSpan DNSTimeout = new TimeSpan(2000);
31+
public int DNSRetries = 3;
32+
2933
public bool ResolveMACAddress = false;
3034
public bool ShowScanResultForAllIPAddresses = false;
31-
public TransportType DNSTransportType = TransportType.Udp;
32-
public bool DNSUseResolverCache = false;
33-
public bool DNSRecursion = false;
35+
36+
// ToDo - End
37+
38+
private LookupClient DnsLookupClient;
3439
#endregion
3540

3641
#region Events
@@ -71,6 +76,18 @@ public void ScanAsync(IPAddress[] ipAddresses, CancellationToken cancellationTok
7176
{
7277
_progressValue = 0;
7378

79+
// Create dns client and set options
80+
81+
if (ResolveHostname)
82+
{
83+
DnsLookupClient = UseCustomDNSServer ? new LookupClient(new IPEndPoint(CustomDNSServer, CustomDNSPort)) : new LookupClient();
84+
DnsLookupClient.UseCache = DNSUseCache;
85+
DnsLookupClient.Recursion = DNSRecursion;
86+
DnsLookupClient.Timeout = DNSTimeout;
87+
DnsLookupClient.Retries = DNSRetries;
88+
DnsLookupClient.UseTcpOnly = DNSTCPOnly;
89+
}
90+
7491
// Modify the ThreadPool for better performance
7592
ThreadPool.GetMinThreads(out var workerThreads, out var completionPortThreads);
7693
ThreadPool.SetMinThreads(workerThreads + Threads, completionPortThreads + Threads);
@@ -109,9 +126,7 @@ public void ScanAsync(IPAddress[] ipAddresses, CancellationToken cancellationTok
109126
pingInfo = new PingInfo(ipAddress, pingReply.Status);
110127
}
111128
catch (PingException)
112-
{
113-
114-
}
129+
{ }
115130

116131
// Don't scan again, if the user has canceled (when more than 1 attempt)
117132
if (cancellationToken.IsCancellationRequested)
@@ -126,27 +141,13 @@ public void ScanAsync(IPAddress[] ipAddresses, CancellationToken cancellationTok
126141

127142
if (ResolveHostname)
128143
{
129-
var dnsLookup = new DNSLookup
130-
{
131-
UseCustomDNSServer = UseCustomDNSServer,
132-
CustomDNSServers = CustomDNSServer,
133-
Port = DNSPort,
134-
Attempts = DNSAttempts,
135-
Timeout = DNSTimeout,
136-
TransportType = DNSTransportType,
137-
UseResolverCache = DNSUseResolverCache,
138-
Recursion = DNSRecursion
139-
};
144+
var dnsQueryResponse = DnsLookupClient.QueryReverse(ipAddress);
140145

141-
try
142-
{
143-
hostname = dnsLookup.ResolvePTR(ipAddress).Item2.FirstOrDefault();
144-
}
145-
catch
146-
{
147-
// Could not resolve hostname... e.g. no dns server is configured
148-
}
149-
}
146+
if (!dnsQueryResponse.HasError)
147+
hostname = dnsQueryResponse.Answers.PtrRecords().FirstOrDefault()?.PtrDomainName;
148+
else
149+
hostname = $"{Resources.Localization.Strings.Error}: {dnsQueryResponse.ErrorMessage}";
150+
}
150151

151152
// ARP
152153
PhysicalAddress macAddress = null;

Source/NETworkManager/Models/Settings/SettingsInfo.cs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ public string Dashboard_PublicDNSTestIPAddress
463463
SettingsChanged = true;
464464
}
465465
}
466-
466+
467467
private bool _dashboard_CheckPublicIPAddress = true;
468468
public bool Dashboard_CheckPublicIPAddress
469469
{
@@ -680,8 +680,8 @@ public bool IPScanner_UseCustomDNSServer
680680
}
681681
}
682682

683-
private List<string> _ipScanner_CustomDNSServer = new List<string>();
684-
public List<string> IPScanner_CustomDNSServer
683+
private string _ipScanner_CustomDNSServer;
684+
public string IPScanner_CustomDNSServer
685685
{
686686
get => _ipScanner_CustomDNSServer;
687687
set
@@ -695,16 +695,16 @@ public List<string> IPScanner_CustomDNSServer
695695
}
696696
}
697697

698-
private int _ipScanner_DNSPort = GlobalStaticConfiguration.IPScanner_DNSPort;
699-
public int IPScanner_DNSPort
698+
private int _ipScanner_CustomDNSPort = GlobalStaticConfiguration.IPScanner_DNSPort;
699+
public int IPScanner_CustomDNSPort
700700
{
701-
get => _ipScanner_DNSPort;
701+
get => _ipScanner_CustomDNSPort;
702702
set
703703
{
704-
if (value == _ipScanner_DNSPort)
704+
if (value == _ipScanner_CustomDNSPort)
705705
return;
706706

707-
_ipScanner_DNSPort = value;
707+
_ipScanner_CustomDNSPort = value;
708708
OnPropertyChanged();
709709
SettingsChanged = true;
710710
}
@@ -725,61 +725,61 @@ public bool IPScanner_DNSRecursion
725725
}
726726
}
727727

728-
private bool _ipScanner_DNSUseResolverCache;
729-
public bool IPScanner_DNSUseResolverCache
728+
private bool _ipScanner_DNSUseCache;
729+
public bool IPScanner_DNSUseCache
730730
{
731-
get => _ipScanner_DNSUseResolverCache;
731+
get => _ipScanner_DNSUseCache;
732732
set
733733
{
734-
if (value == _ipScanner_DNSUseResolverCache)
734+
if (value == _ipScanner_DNSUseCache)
735735
return;
736736

737-
_ipScanner_DNSUseResolverCache = value;
737+
_ipScanner_DNSUseCache = value;
738738
OnPropertyChanged();
739739
SettingsChanged = true;
740740
}
741741
}
742742

743-
private TransportType _ipScanner_DNSTransportType = GlobalStaticConfiguration.IPScanner_DNSTransportType;
744-
public TransportType IPScanner_DNSTransportType
743+
private bool _ipScanner_DNSTCPOnly = GlobalStaticConfiguration.IPScanner_DNSTCPOnly;
744+
public bool IPScanner_DNSTCPOnly
745745
{
746-
get => _ipScanner_DNSTransportType;
746+
get => _ipScanner_DNSTCPOnly;
747747
set
748748
{
749-
if (value == _ipScanner_DNSTransportType)
749+
if (value == _ipScanner_DNSTCPOnly)
750750
return;
751751

752-
_ipScanner_DNSTransportType = value;
752+
_ipScanner_DNSTCPOnly = value;
753753
OnPropertyChanged();
754754
SettingsChanged = true;
755755
}
756756
}
757757

758-
private int _ipScanner_DNSAttempts = GlobalStaticConfiguration.IPScanner_DNSAttempts;
759-
public int IPScanner_DNSAttempts
758+
private int _ipScanner_DNSTimeout = GlobalStaticConfiguration.IPScanner_DNSTimeout;
759+
public int IPScanner_DNSTimeout
760760
{
761-
get => _ipScanner_DNSAttempts;
761+
get => _ipScanner_DNSTimeout;
762762
set
763763
{
764-
if (value == _ipScanner_DNSAttempts)
764+
if (value == _ipScanner_DNSTimeout)
765765
return;
766766

767-
_ipScanner_DNSAttempts = value;
767+
_ipScanner_DNSTimeout = value;
768768
OnPropertyChanged();
769769
SettingsChanged = true;
770770
}
771771
}
772772

773-
private int _ipScanner_DNSTimeout = GlobalStaticConfiguration.IPScanner_DNSTimeout;
774-
public int IPScanner_DNSTimeout
773+
private int _ipScanner_DNSRetries = GlobalStaticConfiguration.IPScanner_DNSRetries;
774+
public int IPScanner_DNSRetries
775775
{
776-
get => _ipScanner_DNSTimeout;
776+
get => _ipScanner_DNSRetries;
777777
set
778778
{
779-
if (value == _ipScanner_DNSTimeout)
779+
if (value == _ipScanner_DNSRetries)
780780
return;
781781

782-
_ipScanner_DNSTimeout = value;
782+
_ipScanner_DNSRetries = value;
783783
OnPropertyChanged();
784784
SettingsChanged = true;
785785
}

Source/NETworkManager/NETworkManager.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1375,6 +1375,9 @@
13751375
<PackageReference Include="AirspaceFixer">
13761376
<Version>1.0.5</Version>
13771377
</PackageReference>
1378+
<PackageReference Include="DnsClient">
1379+
<Version>1.2.0</Version>
1380+
</PackageReference>
13781381
<PackageReference Include="Dragablz">
13791382
<Version>0.0.3.203</Version>
13801383
</PackageReference>

Source/NETworkManager/Resources/Localization/Strings.Designer.cs

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/NETworkManager/Resources/Localization/Strings.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,4 +2400,13 @@ $$hostname$$ --&gt; Hostname</value>
24002400
<data name="TotalUpload" xml:space="preserve">
24012401
<value>Total upload</value>
24022402
</data>
2403+
<data name="Retries" xml:space="preserve">
2404+
<value>Retries</value>
2405+
</data>
2406+
<data name="UseCache" xml:space="preserve">
2407+
<value>Use cache</value>
2408+
</data>
2409+
<data name="UseOnlyTCP" xml:space="preserve">
2410+
<value>Use only TCP</value>
2411+
</data>
24032412
</root>

0 commit comments

Comments
 (0)