Skip to content

Commit dc12ddc

Browse files
committed
DNS Lookup improved, some changes
1 parent 94c3aa2 commit dc12ddc

15 files changed

Lines changed: 83 additions & 26 deletions

Source/NETworkManager/App.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ private void Application_Startup(object sender, StartupEventArgs e)
2323

2424
if (CommandLineManager.Current.Help)
2525
{
26-
StartupUri = new Uri("/Views/Others/HelpCommandLineWindow.xaml", UriKind.Relative);
26+
StartupUri = new Uri("/Views/Help/HelpCommandLineWindow.xaml", UriKind.Relative);
2727
return;
2828
}
2929

Source/NETworkManager/Models/Network/DNSLookup.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class DNSLookup
99
{
1010
#region Variables
1111
Resolver dnsResolver = new Resolver();
12+
13+
int resourceRecordsCount;
1214
#endregion
1315

1416
#region Events
@@ -26,11 +28,11 @@ protected virtual void OnLookupError(DNSLookupErrorArgs e)
2628
LookupError?.Invoke(this, e);
2729
}
2830

29-
public event EventHandler LookupComplete;
31+
public event EventHandler<DNSLookupCompleteArgs> LookupComplete;
3032

31-
protected virtual void OnLookupComplete()
33+
protected virtual void OnLookupComplete(DNSLookupCompleteArgs e)
3234
{
33-
LookupComplete?.Invoke(this, EventArgs.Empty);
35+
LookupComplete?.Invoke(this, e);
3436
}
3537
#endregion
3638

@@ -71,7 +73,7 @@ public void LookupAsync(string hostnameOrIPAddress, DNSLookupOptions dnsLookupOp
7173
ProcessResponse(dnsResponse);
7274

7375
// If we get a CNAME back (from a result), do a second request and try to get the A, AAAA etc...
74-
if(dnsLookupOptions.Type != QType.CNAME)
76+
if(dnsLookupOptions.ResolveCNAME && dnsLookupOptions.Type != QType.CNAME)
7577
{
7678
foreach (RecordCNAME r in dnsResponse.RecordsCNAME)
7779
{
@@ -87,43 +89,43 @@ public void LookupAsync(string hostnameOrIPAddress, DNSLookupOptions dnsLookupOp
8789
}
8890
}
8991

90-
OnLookupComplete();
92+
OnLookupComplete(new DNSLookupCompleteArgs(dnsResponse.RecordsA.Length + dnsResponse.RecordsAAAA.Length + dnsResponse.RecordsCNAME.Length + dnsResponse.RecordsMX.Length + dnsResponse.RecordsNS.Length + dnsResponse.RecordsPTR.Length + dnsResponse.RecordsSOA.Length + dnsResponse.RecordsTXT.Length));
9193
});
9294
}
9395

9496
private void ProcessResponse(Response dnsResponse)
9597
{
9698
// A
9799
foreach (RecordA r in dnsResponse.RecordsA)
98-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
100+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
99101

100102
// AAAA
101103
foreach (RecordAAAA r in dnsResponse.RecordsAAAA)
102-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
104+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
103105

104106
// CNAME
105107
foreach (RecordCNAME r in dnsResponse.RecordsCNAME)
106-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
108+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
107109

108110
// MX
109111
foreach (RecordMX r in dnsResponse.RecordsMX)
110-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
112+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
111113

112114
// NS
113115
foreach (RecordNS r in dnsResponse.RecordsNS)
114-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
116+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
115117

116118
// PTR
117119
foreach (RecordPTR r in dnsResponse.RecordsPTR)
118-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
120+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
119121

120122
// SOA
121123
foreach (RecordSOA r in dnsResponse.RecordsSOA)
122-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
124+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
123125

124126
// TXT
125127
foreach (RecordTXT r in dnsResponse.RecordsTXT)
126-
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r.ToString().TrimEnd()));
128+
OnRecordReceived(new DNSLookupRecordArgs(r.RR, r));
127129
}
128130
#endregion
129131
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace NETworkManager.Models.Network
2+
{
3+
public class DNSLookupCompleteArgs : System.EventArgs
4+
{
5+
public int ResourceRecordsCount { get; set; }
6+
7+
public DNSLookupCompleteArgs()
8+
{
9+
10+
}
11+
12+
public DNSLookupCompleteArgs(int resourceRecordsCount)
13+
{
14+
ResourceRecordsCount = resourceRecordsCount;
15+
}
16+
}
17+
}

Source/NETworkManager/Models/Network/DNSLookupOptions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class DNSLookupOptions
1313
public TransportType TransportType { get; set; }
1414
public int Attempts { get; set; }
1515
public int Timeout { get; set;}
16+
public bool ResolveCNAME { get; set; }
1617

1718
public DNSLookupOptions()
1819
{

Source/NETworkManager/Models/Network/DNSLookupRecordArgs.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public DNSLookupRecordArgs()
1515
public DNSLookupRecordArgs(RR resourceRecord, object result)
1616
{
1717
ResourceRecord = resourceRecord;
18-
Result = result.ToString();
18+
Result = result.ToString().TrimEnd();
1919
}
2020
}
2121
}

Source/NETworkManager/Models/Settings/SettingsInfo.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,20 @@ public QType DNSLookup_Type
793793
}
794794
}
795795

796+
private bool _dnsLookup_ResolveCNAME = true;
797+
public bool DNSLookup_ResolveCNAME
798+
{
799+
get { return _dnsLookup_ResolveCNAME; }
800+
set
801+
{
802+
if (value == _dnsLookup_ResolveCNAME)
803+
return;
804+
805+
_dnsLookup_ResolveCNAME = value;
806+
SettingsChanged = true;
807+
}
808+
}
809+
796810
private bool _dnsLookup_Recursion = true;
797811
public bool DNSLookup_Recursion
798812
{
@@ -861,7 +875,7 @@ public int DNSLookup_Timeout
861875
_dnsLookup_Timeout = value;
862876
SettingsChanged = true;
863877
}
864-
}
878+
}
865879
#endregion
866880
#endregion
867881

Source/NETworkManager/NETworkManager.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@
164164
<Compile Include="3rdParty\Heijden.DNS\Structs.cs" />
165165
<Compile Include="Converters\NullableDateTimeToStringConverter.cs" />
166166
<Compile Include="Models\Network\DNSLookup.cs" />
167+
<Compile Include="Models\Network\DNSLookupCompleteArgs.cs" />
167168
<Compile Include="Models\Network\DNSLookupOptions.cs" />
168169
<Compile Include="Models\Network\DNSLookupErrorArgs.cs" />
169170
<Compile Include="Models\Network\DNSLookupRecordInfo.cs" />
@@ -179,7 +180,7 @@
179180
<Compile Include="Views\Settings\SettingsApplicationWakeOnLANView.xaml.cs">
180181
<DependentUpon>SettingsApplicationWakeOnLANView.xaml</DependentUpon>
181182
</Compile>
182-
<Compile Include="Views\Others\HelpCommandLineWindow.xaml.cs">
183+
<Compile Include="Views\Help\HelpCommandLineWindow.xaml.cs">
183184
<DependentUpon>HelpCommandLineWindow.xaml</DependentUpon>
184185
</Compile>
185186
<Compile Include="WpfHelper\ProtocolSettingsLayout.cs" />
@@ -319,7 +320,7 @@
319320
<Generator>MSBuild:Compile</Generator>
320321
<SubType>Designer</SubType>
321322
</Page>
322-
<Page Include="Views\Others\HelpCommandLineWindow.xaml">
323+
<Page Include="Views\Help\HelpCommandLineWindow.xaml">
323324
<Generator>MSBuild:Compile</Generator>
324325
<SubType>Designer</SubType>
325326
</Page>

Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@
215215
<system:String x:Key="String_NoDnsRecordFoundCheckYourInputAndSettings">Kein DNS-Eintrag für "{0}" gefunden! Überprüfe deine Eingabe und die Einstellungen.</system:String>
216216
<system:String x:Key="String_UnkownError">Unbekannter Fehler!</system:String>
217217
<system:String x:Key="String_TimeoutWhenQueryingDNSServer">Timeout beim Abfragen des DNS-Servers mit der IP-Adresse "{0}"!</system:String>
218+
<system:String x:Key="String_ResolveCNAME">CNAME auflösen</system:String>
218219

219220
<!-- Buttons -->
220221
<system:String x:Key="String_Button_Change">Wechseln</system:String>

Source/NETworkManager/Resources/Localization/Resources.en-US.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@
217217
<system:String x:Key="String_NoDnsRecordFoundCheckYourInputAndSettings">No dns record found for "{0}"! Check your input and the settings.</system:String>
218218
<system:String x:Key="String_UnkownError">Unkown error!</system:String>
219219
<system:String x:Key="String_TimeoutWhenQueryingDNSServer">Timeout when querying the DNS server with the IP-Address "{0}"!</system:String>
220+
<system:String x:Key="String_ResolveCNAME">Resolve CNAME</system:String>
220221

221222
<!-- Buttons -->
222223
<system:String x:Key="String_Button_Change">Change</system:String>

Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ private void StartLookup()
164164
UseResolverCache = SettingsManager.Current.DNSLookup_UseResolverCache,
165165
TransportType = SettingsManager.Current.DNSLookup_TransportType,
166166
Attempts = SettingsManager.Current.DNSLookup_Attempts,
167-
Timeout = SettingsManager.Current.DNSLookup_Timeout
167+
Timeout = SettingsManager.Current.DNSLookup_Timeout,
168+
ResolveCNAME = SettingsManager.Current.DNSLookup_ResolveCNAME
168169
};
169170

170171
DNSLookup dnsLookup = new DNSLookup();
@@ -182,7 +183,7 @@ private void DnsLookup_RecordReceived(object sender, DNSLookupRecordArgs e)
182183
{
183184
DNSLookupRecordInfo dnsLookupRecordInfo = DNSLookupRecordInfo.Parse(e);
184185

185-
Application.Current.Dispatcher.BeginInvoke(new Action(delegate ()
186+
Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send,new Action(delegate ()
186187
{
187188
LookupResult.Add(dnsLookupRecordInfo);
188189
}));
@@ -200,9 +201,9 @@ private void DnsLookup_LookupError(object sender, DNSLookupErrorArgs e)
200201
IsLookupRunning = false;
201202
}
202203

203-
private void DnsLookup_LookupComplete(object sender, EventArgs e)
204+
private void DnsLookup_LookupComplete(object sender, DNSLookupCompleteArgs e)
204205
{
205-
if (LookupResult.Count == 0)
206+
if (e.ResourceRecordsCount == 0)
206207
{
207208
ErrorMessage = string.Format(Application.Current.Resources["String_NoDnsRecordFoundCheckYourInputAndSettings"] as string, HostnameOrIPAddress);
208209
DisplayErrorMessage = true;

0 commit comments

Comments
 (0)