From 123440db10d41687e85fd7fb0f255a7bec68570e Mon Sep 17 00:00:00 2001 From: BornToBeRoot Date: Mon, 5 Feb 2018 23:57:28 +0100 Subject: [PATCH 1/6] Enter multiple hosts and dns server --- .../{HistoryListHelper.cs => ListHelper.cs} | 2 +- .../Models/Network/DNSLookup.cs | 140 ++++++++++++------ .../Models/Network/DNSLookupOptions.cs | 6 +- .../Models/Network/DNSLookupRecordArgs.cs | 6 +- .../Models/Network/DNSLookupRecordInfo.cs | 8 +- .../Models/Settings/SettingsInfo.cs | 12 +- Source/NETworkManager/NETworkManager.csproj | 3 +- .../Localization/Resources.de-DE.xaml | 5 +- .../Localization/Resources.en-US.xaml | 3 +- .../MultipleIPAddressesValidator.cs | 21 +++ .../Applications/DNSLookupViewModel.cs | 88 +++++------ .../Applications/HTTPHeadersViewModel.cs | 2 +- .../Applications/IPScannerViewModel.cs | 2 +- .../Applications/LookupOUILookupViewModel.cs | 2 +- .../Applications/LookupPortViewModel.cs | 2 +- .../ViewModels/Applications/PingViewModel.cs | 2 +- .../Applications/PortScannerViewModel.cs | 4 +- .../Applications/SNMPv1v2cViewModel.cs | 4 +- .../Applications/SNMPv3ViewModel.cs | 4 +- ...SubnetCalculatorIPv4CalculatorViewModel.cs | 2 +- .../SubnetCalculatorIPv4SplitterViewModel.cs | 4 +- .../Applications/TracerouteViewModel.cs | 2 +- .../SettingsApplicationDNSLookupViewModel.cs | 7 +- .../Views/Applications/DNSLookupView.xaml | 2 + .../SettingsApplicationDNSLookupView.xaml | 2 +- 25 files changed, 206 insertions(+), 129 deletions(-) rename Source/NETworkManager/Helpers/{HistoryListHelper.cs => ListHelper.cs} (91%) create mode 100644 Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs diff --git a/Source/NETworkManager/Helpers/HistoryListHelper.cs b/Source/NETworkManager/Helpers/ListHelper.cs similarity index 91% rename from Source/NETworkManager/Helpers/HistoryListHelper.cs rename to Source/NETworkManager/Helpers/ListHelper.cs index 71d16acade..9f0a608aba 100644 --- a/Source/NETworkManager/Helpers/HistoryListHelper.cs +++ b/Source/NETworkManager/Helpers/ListHelper.cs @@ -2,7 +2,7 @@ namespace NETworkManager.Helpers { - public static class HistoryListHelper + public static class ListHelper { public static List Modify(List list, string entry, int length) { diff --git a/Source/NETworkManager/Models/Network/DNSLookup.cs b/Source/NETworkManager/Models/Network/DNSLookup.cs index 7e6005dc2e..0c79fae2fb 100644 --- a/Source/NETworkManager/Models/Network/DNSLookup.cs +++ b/Source/NETworkManager/Models/Network/DNSLookup.cs @@ -1,6 +1,9 @@ using Heijden.DNS; using System; +using System.Collections.Generic; +using System.Linq; using System.Net; +using System.Net.NetworkInformation; using System.Threading.Tasks; namespace NETworkManager.Models.Network @@ -8,7 +11,7 @@ namespace NETworkManager.Models.Network public class DNSLookup { #region Variables - Resolver DNSResolver = new Resolver(); + Resolver dnsResolver = new Resolver(); #endregion #region Events @@ -26,103 +29,144 @@ protected virtual void OnLookupError(DNSLookupErrorArgs e) LookupError?.Invoke(this, e); } - public event EventHandler LookupComplete; + public event EventHandler LookupComplete; - protected virtual void OnLookupComplete(DNSLookupCompleteArgs e) + protected virtual void OnLookupComplete() { - LookupComplete?.Invoke(this, e); + LookupComplete?.Invoke(this, EventArgs.Empty); } #endregion #region Methods - public void LookupAsync(string hostnameOrIPAddress, DNSLookupOptions DNSLookupOptions) + public void LookupAsync(List hosts, DNSLookupOptions dnsLookupOptions) { Task.Run(() => { - // This will convert the query to an Arpa request - if (DNSLookupOptions.Type == QType.PTR) - { - if (IPAddress.TryParse(hostnameOrIPAddress, out IPAddress ip)) - hostnameOrIPAddress = Resolver.GetArpaFromIp(ip); - } + // DNS server list + List dnsServers = new List(); - if (DNSLookupOptions.Type == QType.NAPTR) - hostnameOrIPAddress = Resolver.GetArpaFromEnum(hostnameOrIPAddress); + if (dnsLookupOptions.UseCustomDNSServer) + dnsLookupOptions.CustomDNSServers.ForEach(x => dnsServers.Add(x)); + else // Use windows default dns server, but filter/remove IPv6 site local addresses (fec0:0:0:0:ffff::) + dnsResolver.DnsServers.Where(x => !x.Address.ToString().StartsWith(@"fec0")).Select(y => y.Address.ToString()).ToList().ForEach(x => dnsServers.Add(x)); - if (DNSLookupOptions.UseCustomDNSServer) - DNSResolver.DnsServer = DNSLookupOptions.CustomDNSServer; + // Foreach host + foreach (string host in hosts) + { + // Default + string name = host.Trim(); - DNSResolver.Recursion = DNSLookupOptions.Recursion; - DNSResolver.TransportType = DNSLookupOptions.TransportType; - DNSResolver.Retries = DNSLookupOptions.Attempts; - DNSResolver.TimeOut = DNSLookupOptions.Timeout; + string dnsSuffix = string.Empty; - Response dnsResponse = DNSResolver.Query(hostnameOrIPAddress, DNSLookupOptions.Type, DNSLookupOptions.Class); + if (name.IndexOf(".", StringComparison.OrdinalIgnoreCase) == -1) + { + if (dnsLookupOptions.AddDNSSuffix) + { + if (dnsLookupOptions.UseCustomDNSSuffix) + dnsSuffix = dnsLookupOptions.CustomDNSSuffix; + else + dnsSuffix = IPGlobalProperties.GetIPGlobalProperties().DomainName; + } + } - // If there was an error... return - if (!string.IsNullOrEmpty(dnsResponse.Error)) - { - OnLookupError(new DNSLookupErrorArgs(dnsResponse.Error, DNSResolver.DnsServer)); - return; - } + // Append dns suffix to hostname + if (!string.IsNullOrEmpty(dnsSuffix)) + name += string.Format(".{0}", dnsSuffix); - // Process the results... - ProcessResponse(dnsResponse); + // PTR + if (dnsLookupOptions.Type == QType.PTR) + { + if (IPAddress.TryParse(name, out IPAddress ip)) + name = Resolver.GetArpaFromIp(ip); + } - // If we get a CNAME back (from a result), do a second request and try to get the A, AAAA etc... - if (DNSLookupOptions.ResolveCNAME && DNSLookupOptions.Type != QType.CNAME) - { - foreach (RecordCNAME r in dnsResponse.RecordsCNAME) + // NAPTR + if (dnsLookupOptions.Type == QType.NAPTR) + name = Resolver.GetArpaFromEnum(name); + + Parallel.ForEach(dnsServers, dnsServer => { - Response DNSResponse2 = DNSResolver.Query(r.CNAME, DNSLookupOptions.Type, DNSLookupOptions.Class); + // Create a new for each request + Resolver resolver = new Resolver(dnsServer) + { + Recursion = dnsLookupOptions.Recursion, + TransportType = dnsLookupOptions.TransportType, + Retries = dnsLookupOptions.Attempts, + TimeOut = dnsLookupOptions.Timeout + }; - if (!string.IsNullOrEmpty(DNSResponse2.Error)) + Response dnsResponse = resolver.Query(name, dnsLookupOptions.Type, dnsLookupOptions.Class); + + // If there was an error... return + if (!string.IsNullOrEmpty(dnsResponse.Error)) { - OnLookupError(new DNSLookupErrorArgs(DNSResponse2.Error, DNSResolver.DnsServer)); - continue; + // OnLookupError(new DNSLookupErrorArgs(dnsResponse.Error, resolver.DnsServer)); + // return; } - ProcessResponse(DNSResponse2); - } + // Process the results... + ProcessResponse(dnsResponse); + + // If we get a CNAME back (from a result), do a second request and try to get the A, AAAA etc... + if (dnsLookupOptions.ResolveCNAME && dnsLookupOptions.Type != QType.CNAME) + { + foreach (RecordCNAME r in dnsResponse.RecordsCNAME) + { + Response dnsResponse2 = resolver.Query(r.CNAME, dnsLookupOptions.Type, dnsLookupOptions.Class); + + if (!string.IsNullOrEmpty(dnsResponse2.Error)) + { + OnLookupError(new DNSLookupErrorArgs(dnsResponse2.Error, resolver.DnsServer)); + continue; + } + + ProcessResponse(dnsResponse2); + } + } + }); } - - OnLookupComplete(new DNSLookupCompleteArgs(dnsResponse.Server.ToString(), dnsResponse.Questions.Count, dnsResponse.Answers.Count, dnsResponse.Authorities.Count, dnsResponse.Additionals.Count, dnsResponse.MessageSize)); + + OnLookupComplete(); + //OnLookupComplete(new DNSLookupCompleteArgs(dnsResponse.Server.ToString(), dnsResponse.Questions.Count, dnsResponse.Answers.Count, dnsResponse.Authorities.Count, dnsResponse.Additionals.Count, dnsResponse.MessageSize)); }); } private void ProcessResponse(Response dnsResponse) { + string dnsServer = dnsResponse.Server.Address.ToString(); + int port = dnsResponse.Server.Port; + // A foreach (RecordA r in dnsResponse.RecordsA) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // AAAA foreach (RecordAAAA r in dnsResponse.RecordsAAAA) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // CNAME foreach (RecordCNAME r in dnsResponse.RecordsCNAME) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // MX foreach (RecordMX r in dnsResponse.RecordsMX) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // NS foreach (RecordNS r in dnsResponse.RecordsNS) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // PTR foreach (RecordPTR r in dnsResponse.RecordsPTR) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // SOA foreach (RecordSOA r in dnsResponse.RecordsSOA) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); // TXT foreach (RecordTXT r in dnsResponse.RecordsTXT) - OnRecordReceived(new DNSLookupRecordArgs(r.RR, r)); + OnRecordReceived(new DNSLookupRecordArgs(r.RR, r, dnsServer, port)); } #endregion } diff --git a/Source/NETworkManager/Models/Network/DNSLookupOptions.cs b/Source/NETworkManager/Models/Network/DNSLookupOptions.cs index 6fa2f2d879..7ad3a21342 100644 --- a/Source/NETworkManager/Models/Network/DNSLookupOptions.cs +++ b/Source/NETworkManager/Models/Network/DNSLookupOptions.cs @@ -1,11 +1,15 @@ using Heijden.DNS; +using System.Collections.Generic; namespace NETworkManager.Models.Network { public class DNSLookupOptions { public bool UseCustomDNSServer { get; set; } - public string CustomDNSServer { get; set; } + public List CustomDNSServers { get; set; } + public bool AddDNSSuffix { get; set; } + public bool UseCustomDNSSuffix { get; set; } + public string CustomDNSSuffix { get; set; } public QClass Class { get; set; } public QType Type { get; set; } public bool Recursion { get; set; } diff --git a/Source/NETworkManager/Models/Network/DNSLookupRecordArgs.cs b/Source/NETworkManager/Models/Network/DNSLookupRecordArgs.cs index 5e47b1a3c4..ef94667382 100644 --- a/Source/NETworkManager/Models/Network/DNSLookupRecordArgs.cs +++ b/Source/NETworkManager/Models/Network/DNSLookupRecordArgs.cs @@ -6,16 +6,20 @@ public class DNSLookupRecordArgs : System.EventArgs { public RR ResourceRecord { get; set; } public string Result { get; set; } + public string DNSServer { get; set; } + public int Port { get; set; } public DNSLookupRecordArgs() { } - public DNSLookupRecordArgs(RR resourceRecord, object result) + public DNSLookupRecordArgs(RR resourceRecord, object result, string dnsServer, int port) { ResourceRecord = resourceRecord; Result = result.ToString().TrimEnd(); + DNSServer = dnsServer; + Port = port; } } } diff --git a/Source/NETworkManager/Models/Network/DNSLookupRecordInfo.cs b/Source/NETworkManager/Models/Network/DNSLookupRecordInfo.cs index 432d23bb5f..c29f3f6ed9 100644 --- a/Source/NETworkManager/Models/Network/DNSLookupRecordInfo.cs +++ b/Source/NETworkManager/Models/Network/DNSLookupRecordInfo.cs @@ -9,24 +9,28 @@ public class DNSLookupRecordInfo public string Class { get; set; } public string Type { get; set; } public string Result { get; set; } + public string DNSServer { get; set; } + public int Port { get; set; } public DNSLookupRecordInfo() { } - public DNSLookupRecordInfo(RR resourceRecord, string result) + public DNSLookupRecordInfo(RR resourceRecord, string result, string dnsServer, int port) { Name = resourceRecord.NAME; TTL = resourceRecord.TTL; Class = resourceRecord.Class.ToString(); Type = resourceRecord.Type.ToString(); Result = result; + DNSServer = dnsServer; + Port = port; } public static DNSLookupRecordInfo Parse(DNSLookupRecordArgs e) { - return new DNSLookupRecordInfo(e.ResourceRecord, e.Result); + return new DNSLookupRecordInfo(e.ResourceRecord, e.Result, e.DNSServer, e.Port); } } } diff --git a/Source/NETworkManager/Models/Settings/SettingsInfo.cs b/Source/NETworkManager/Models/Settings/SettingsInfo.cs index 0a7d55832a..a098f152ce 100644 --- a/Source/NETworkManager/Models/Settings/SettingsInfo.cs +++ b/Source/NETworkManager/Models/Settings/SettingsInfo.cs @@ -903,16 +903,16 @@ public bool DNSLookup_UseCustomDNSServer } } - private string _dnsLookup_CustomDNSServer; - public string DNSLookup_CustomDNSServer + private List _dnsLookup_CustomDNSServers; + public List DNSLookup_CustomDNSServers { - get { return _dnsLookup_CustomDNSServer; } + get { return _dnsLookup_CustomDNSServers; } set { - if (value == _dnsLookup_CustomDNSServer) + if (value == _dnsLookup_CustomDNSServers) return; - _dnsLookup_CustomDNSServer = value; + _dnsLookup_CustomDNSServers = value; SettingsChanged = true; } } @@ -973,7 +973,7 @@ public bool DNSLookup_UseCustomDNSSuffix } } - private string _dnsLookup_CustomDNSSuffix; + private string _dnsLookup_CustomDNSSuffix = string.Empty; public string DNSLookup_CustomDNSSuffix { get { return _dnsLookup_CustomDNSSuffix; } diff --git a/Source/NETworkManager/NETworkManager.csproj b/Source/NETworkManager/NETworkManager.csproj index c12b8316e4..354a4fec82 100644 --- a/Source/NETworkManager/NETworkManager.csproj +++ b/Source/NETworkManager/NETworkManager.csproj @@ -214,6 +214,7 @@ + @@ -676,7 +677,7 @@ - + diff --git a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml index 27e91aec42..797f9b23c3 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml @@ -214,7 +214,7 @@ Dienst Geschlossene Ports anzeigen Hostname oder IP-Adresse - Ports + Port(s) Anzahl gespeicherter Einträge Die Netzwerkadresse kann nicht erreicht werden. Überprüfen Sie, ob Ihr Computer mit dem Netzwerk verbunden ist. Informationen zur Netzwerk-Fehlersuche finden Sie in der Windows-Hilfe. Anzahl Fehler nach denen abgebrochen wird: @@ -496,7 +496,8 @@ Geben Sie eine gültige Webseite ein (z.B. https://example.com/index.html) Geben Sie gültige Hosts ein (mehrere Hosts dürfen nicht mit ";" enden)! Geben Sie eine gültige Zahl ein! - + Geben Sie eine oder mehrere gültige IP-Adressen ein! + IP-Scanner Netzwerkinterface diff --git a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml index 4e6c38cc9f..7249455ba2 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml @@ -214,7 +214,7 @@ Service Show closed ports Hostname or IP address - Ports + Port(s) Number of stored entries The network address cannot be reached. Check if your computer is connected to the network. For information about network troubleshooting, see Windows Help. Number of errors after which is canceled: @@ -496,6 +496,7 @@ Enter a valid website (like https://example.com/index.html) Enter valid hosts (multiple hosts can not end with ";")! Enter a valid number! + Enter one or more valid IP addresses! IP Scanner diff --git a/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs b/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs new file mode 100644 index 0000000000..a9cf08b1b6 --- /dev/null +++ b/Source/NETworkManager/Validators/MultipleIPAddressesValidator.cs @@ -0,0 +1,21 @@ +using NETworkManager.Helpers; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Windows; +using System.Windows.Controls; + +namespace NETworkManager.Validators +{ + public class MultipleIPAddressesValidator : ValidationRule + { + public override ValidationResult Validate(object value, CultureInfo cultureInfo) + { + foreach (string ipAddress in (value as string).Split(';')) + { + if (!Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv4AddressRegex) && !Regex.IsMatch(ipAddress.Trim(), RegexHelper.IPv6AddressRegex)) + return new ValidationResult(false, Application.Current.Resources["String_ValidateError_EnterOneOrMoreValidIPAddresses"] as string); + } + return ValidationResult.ValidResult; + } + } +} diff --git a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs index 37a31c2f22..4f2e748fe7 100644 --- a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs @@ -392,14 +392,14 @@ private void StartLookup() AddHostToHistory(Host); - DNSLookupOptions DNSLookupOptions = new DNSLookupOptions(); + DNSLookupOptions dnsLookupOptions = new DNSLookupOptions(); if (SettingsManager.Current.DNSLookup_UseCustomDNSServer) { - if (!string.IsNullOrEmpty(SettingsManager.Current.DNSLookup_CustomDNSServer)) + if (SettingsManager.Current.DNSLookup_CustomDNSServers != null) { - DNSLookupOptions.UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; - DNSLookupOptions.CustomDNSServer = SettingsManager.Current.DNSLookup_CustomDNSServer; + dnsLookupOptions.UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; + dnsLookupOptions.CustomDNSServers = SettingsManager.Current.DNSLookup_CustomDNSServers; } else { @@ -408,41 +408,30 @@ private void StartLookup() } } - DNSLookupOptions.Class = SettingsManager.Current.DNSLookup_Class; - DNSLookupOptions.Type = Type; - DNSLookupOptions.Recursion = SettingsManager.Current.DNSLookup_Recursion; - DNSLookupOptions.UseResolverCache = SettingsManager.Current.DNSLookup_UseResolverCache; - DNSLookupOptions.TransportType = SettingsManager.Current.DNSLookup_TransportType; - DNSLookupOptions.Attempts = SettingsManager.Current.DNSLookup_Attempts; - DNSLookupOptions.Timeout = SettingsManager.Current.DNSLookup_Timeout; - DNSLookupOptions.ResolveCNAME = SettingsManager.Current.DNSLookup_ResolveCNAME; + dnsLookupOptions.AddDNSSuffix = SettingsManager.Current.DNSLookup_AddDNSSuffix; + + if (SettingsManager.Current.DNSLookup_UseCustomDNSSuffix) + { + dnsLookupOptions.UseCustomDNSSuffix = true; + dnsLookupOptions.CustomDNSSuffix = SettingsManager.Current.DNSLookup_CustomDNSSuffix.TrimStart('.'); + } + + dnsLookupOptions.Class = SettingsManager.Current.DNSLookup_Class; + dnsLookupOptions.Type = Type; + dnsLookupOptions.Recursion = SettingsManager.Current.DNSLookup_Recursion; + dnsLookupOptions.UseResolverCache = SettingsManager.Current.DNSLookup_UseResolverCache; + dnsLookupOptions.TransportType = SettingsManager.Current.DNSLookup_TransportType; + dnsLookupOptions.Attempts = SettingsManager.Current.DNSLookup_Attempts; + dnsLookupOptions.Timeout = SettingsManager.Current.DNSLookup_Timeout; + dnsLookupOptions.ResolveCNAME = SettingsManager.Current.DNSLookup_ResolveCNAME; DNSLookup DNSLookup = new DNSLookup(); DNSLookup.RecordReceived += DNSLookup_RecordReceived; DNSLookup.LookupError += DNSLookup_LookupError; - DNSLookup.LookupComplete += DNSLookup_LookupComplete; - - string hostnameOrIPAddress = Host; - string dnsSuffix = string.Empty; - - // Detect hostname (usually they don't contain ".") - if (Host.IndexOf(".", StringComparison.OrdinalIgnoreCase) == -1) - { - if (SettingsManager.Current.DNSLookup_AddDNSSuffix) - { - if (SettingsManager.Current.DNSLookup_UseCustomDNSSuffix) - dnsSuffix = SettingsManager.Current.DNSLookup_CustomDNSSuffix; - else - dnsSuffix = IPGlobalProperties.GetIPGlobalProperties().DomainName; - } - } - - // Append dns suffix to hostname - if (!string.IsNullOrEmpty(dnsSuffix)) - hostnameOrIPAddress += string.Format("{0}{1}", dnsSuffix.StartsWith(".") ? "" : ".", dnsSuffix); + DNSLookup.LookupComplete += DNSLookup_LookupComplete; ; - DNSLookup.LookupAsync(hostnameOrIPAddress, DNSLookupOptions); + DNSLookup.LookupAsync(Host.Split(';').ToList(), dnsLookupOptions); } private void LookupFinished() @@ -463,7 +452,7 @@ private void LookupFinished() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.DNSLookup_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.DNSLookup_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.DNSLookup_HostHistory.Clear(); @@ -497,24 +486,27 @@ private void DNSLookup_LookupError(object sender, DNSLookupErrorArgs e) LookupFinished(); } - private void DNSLookup_LookupComplete(object sender, DNSLookupCompleteArgs e) + private void DNSLookup_LookupComplete(object sender, EventArgs e) { - DNSServerAndPort = e.ServerAndPort; - Questions = e.QuestionsCount; - Answers = e.AnswersCount; - Authorities = e.AuthoritiesCount; - Additionals = e.AdditionalsCount; - MessageSize = e.MessageSize; - - if (e.AnswersCount == 0) - { - StatusMessage = string.Format(Application.Current.Resources["String_NoDNSRecordFoundCheckYourInputAndSettings"] as string, Host); - DisplayStatusMessage = true; - } - LookupFinished(); } + /* private void DNSLookup_LookupComplete1(object sender, DNSLookupCompleteArgs e) + { + DNSServerAndPort = e.ServerAndPort; + Questions = e.QuestionsCount; + Answers = e.AnswersCount; + Authorities = e.AuthoritiesCount; + Additionals = e.AdditionalsCount; + MessageSize = e.MessageSize; + + if (e.AnswersCount == 0) + { + StatusMessage = string.Format(Application.Current.Resources["String_NoDNSRecordFoundCheckYourInputAndSettings"] as string, Host); + DisplayStatusMessage = true; + } + }*/ + private void DispatcherTimer_Tick(object sender, EventArgs e) { Duration = stopwatch.Elapsed; diff --git a/Source/NETworkManager/ViewModels/Applications/HTTPHeadersViewModel.cs b/Source/NETworkManager/ViewModels/Applications/HTTPHeadersViewModel.cs index 2adb7ecc04..9f24c90b18 100644 --- a/Source/NETworkManager/ViewModels/Applications/HTTPHeadersViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/HTTPHeadersViewModel.cs @@ -253,7 +253,7 @@ private async void Check() private void AddWebsiteUriToHistory(string websiteUri) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.HTTPHeaders_WebsiteUriHistory.ToList(), websiteUri, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.HTTPHeaders_WebsiteUriHistory.ToList(), websiteUri, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.HTTPHeaders_WebsiteUriHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/IPScannerViewModel.cs b/Source/NETworkManager/ViewModels/Applications/IPScannerViewModel.cs index 068e740cfa..1f089751ad 100644 --- a/Source/NETworkManager/ViewModels/Applications/IPScannerViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/IPScannerViewModel.cs @@ -724,7 +724,7 @@ private void ScanFinished() private void AddIPRangeToHistory(string ipRange) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.IPScanner_IPRangeHistory.ToList(), ipRange, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.IPScanner_IPRangeHistory.ToList(), ipRange, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.IPScanner_IPRangeHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/LookupOUILookupViewModel.cs b/Source/NETworkManager/ViewModels/Applications/LookupOUILookupViewModel.cs index cc62fa713b..e125cd541f 100644 --- a/Source/NETworkManager/ViewModels/Applications/LookupOUILookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/LookupOUILookupViewModel.cs @@ -199,7 +199,7 @@ private void CopySelectedVendorAction() private void AddMACAddressOrVendorToHistory(string macAddressOrVendor) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.Lookup_OUI_MACAddressOrVendorHistory.ToList(), macAddressOrVendor, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.Lookup_OUI_MACAddressOrVendorHistory.ToList(), macAddressOrVendor, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.Lookup_OUI_MACAddressOrVendorHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/LookupPortViewModel.cs b/Source/NETworkManager/ViewModels/Applications/LookupPortViewModel.cs index 07589a95fd..3670839b7c 100644 --- a/Source/NETworkManager/ViewModels/Applications/LookupPortViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/LookupPortViewModel.cs @@ -255,7 +255,7 @@ private void CopySelectedDescriptionAction() private void AddPortOrServiceToHistory(string portOrService) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.Lookup_Port_PortsHistory.ToList(), portOrService, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.Lookup_Port_PortsHistory.ToList(), portOrService, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.Lookup_Port_PortsHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/PingViewModel.cs b/Source/NETworkManager/ViewModels/Applications/PingViewModel.cs index 4b033320e8..3adca2324a 100644 --- a/Source/NETworkManager/ViewModels/Applications/PingViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/PingViewModel.cs @@ -417,7 +417,7 @@ private void PingFinished() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.Ping_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.Ping_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.Ping_HostHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/PortScannerViewModel.cs b/Source/NETworkManager/ViewModels/Applications/PortScannerViewModel.cs index d432525727..e378151fba 100644 --- a/Source/NETworkManager/ViewModels/Applications/PortScannerViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/PortScannerViewModel.cs @@ -821,7 +821,7 @@ private void CheckCanScanProfile() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.PortScanner_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.PortScanner_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.PortScanner_HostHistory.Clear(); @@ -834,7 +834,7 @@ private void AddHostToHistory(string host) private void AddPortToHistory(string port) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.PortScanner_PortHistory.ToList(), port, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.PortScanner_PortHistory.ToList(), port, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.PortScanner_PortHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/SNMPv1v2cViewModel.cs b/Source/NETworkManager/ViewModels/Applications/SNMPv1v2cViewModel.cs index 6df73f1e1b..c3a858823d 100644 --- a/Source/NETworkManager/ViewModels/Applications/SNMPv1v2cViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/SNMPv1v2cViewModel.cs @@ -428,7 +428,7 @@ private void QueryFinished() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SNMP_v1v2c_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SNMP_v1v2c_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SNMP_v1v2c_HostHistory.Clear(); @@ -441,7 +441,7 @@ private void AddHostToHistory(string host) private void AddOIDToHistory(string oid) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SNMP_v1v2c_OIDHistory.ToList(), oid, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SNMP_v1v2c_OIDHistory.ToList(), oid, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SNMP_v1v2c_OIDHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/SNMPv3ViewModel.cs b/Source/NETworkManager/ViewModels/Applications/SNMPv3ViewModel.cs index 40cce85280..b09d916a69 100644 --- a/Source/NETworkManager/ViewModels/Applications/SNMPv3ViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/SNMPv3ViewModel.cs @@ -499,7 +499,7 @@ private void QueryFinished() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SNMP_v3_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SNMP_v3_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SNMP_v3_HostHistory.Clear(); @@ -512,7 +512,7 @@ private void AddHostToHistory(string host) private void AddOIDToHistory(string oid) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SNMP_v3_OIDHistory.ToList(), oid, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SNMP_v3_OIDHistory.ToList(), oid, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SNMP_v3_OIDHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4CalculatorViewModel.cs b/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4CalculatorViewModel.cs index de814955c4..1205fe17cd 100644 --- a/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4CalculatorViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4CalculatorViewModel.cs @@ -208,7 +208,7 @@ private void CalculateIPv4SubnetAction() private void AddSubnetToHistory(string subnet) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Calculator_SubnetHistory.ToList(), subnet, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Calculator_SubnetHistory.ToList(), subnet, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SubnetCalculator_IPv4Calculator_SubnetHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4SplitterViewModel.cs b/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4SplitterViewModel.cs index 5b49ecc507..c44780b10b 100644 --- a/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4SplitterViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/SubnetCalculatorIPv4SplitterViewModel.cs @@ -329,7 +329,7 @@ private void StopSplit() private void AddSubnetToHistory(string subnet) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Splitter_SubnetHistory.ToList(), subnet, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Splitter_SubnetHistory.ToList(), subnet, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SubnetCalculator_IPv4Splitter_SubnetHistory.Clear(); @@ -342,7 +342,7 @@ private void AddSubnetToHistory(string subnet) private void AddNewSubnetmaskOrCIDRToHistory(string newSubnetmaskOrCIDR) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Splitter_NewSubnetmaskOrCIDRHistory.ToList(), newSubnetmaskOrCIDR, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.SubnetCalculator_IPv4Splitter_NewSubnetmaskOrCIDRHistory.ToList(), newSubnetmaskOrCIDR, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.SubnetCalculator_IPv4Splitter_NewSubnetmaskOrCIDRHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Applications/TracerouteViewModel.cs b/Source/NETworkManager/ViewModels/Applications/TracerouteViewModel.cs index 66d1864b40..fd3cc1afd1 100644 --- a/Source/NETworkManager/ViewModels/Applications/TracerouteViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/TracerouteViewModel.cs @@ -434,7 +434,7 @@ private void TracerouteFinished() private void AddHostToHistory(string host) { // Create the new list - List list = HistoryListHelper.Modify(SettingsManager.Current.Traceroute_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); + List list = ListHelper.Modify(SettingsManager.Current.Traceroute_HostHistory.ToList(), host, SettingsManager.Current.General_HistoryListEntries); // Clear the old items SettingsManager.Current.Traceroute_HostHistory.Clear(); diff --git a/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs index 47a3158fd1..af2553add3 100644 --- a/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs @@ -38,7 +38,7 @@ public string CustomDNSServer return; if (!_isLoading) - SettingsManager.Current.DNSLookup_CustomDNSServer = value; + SettingsManager.Current.DNSLookup_CustomDNSServers = value.Split(';').ToList(); _customDNSServer = value; OnPropertyChanged(); @@ -231,7 +231,10 @@ public SettingsApplicationDNSLookupViewModel() private void LoadSettings() { UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; - CustomDNSServer = SettingsManager.Current.DNSLookup_CustomDNSServer; + + if (SettingsManager.Current.DNSLookup_CustomDNSServers != null) + CustomDNSServer = string.Join("; ", SettingsManager.Current.DNSLookup_CustomDNSServers); + AddDNSSuffix = SettingsManager.Current.DNSLookup_AddDNSSuffix; UseCustomDNSSuffix = SettingsManager.Current.DNSLookup_UseCustomDNSSuffix; CustomDNSSuffix = SettingsManager.Current.DNSLookup_CustomDNSSuffix; diff --git a/Source/NETworkManager/Views/Applications/DNSLookupView.xaml b/Source/NETworkManager/Views/Applications/DNSLookupView.xaml index 6da4e0438b..644c5dcd72 100644 --- a/Source/NETworkManager/Views/Applications/DNSLookupView.xaml +++ b/Source/NETworkManager/Views/Applications/DNSLookupView.xaml @@ -183,6 +183,8 @@ + + diff --git a/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml b/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml index b25ac8f2d1..4fd304b508 100644 --- a/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml +++ b/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml @@ -14,7 +14,7 @@ - + From ea7a0af692dc1750c678707a24e2227080a4674d Mon Sep 17 00:00:00 2001 From: BornToBeRoot Date: Tue, 6 Feb 2018 22:25:52 +0100 Subject: [PATCH 2/6] Add option for custom port --- .../Models/Network/DNSLookup.cs | 5 ++-- .../Models/Network/DNSLookupOptions.cs | 1 + .../Models/Settings/SettingsInfo.cs | 24 +++++++++++++++---- .../Localization/Resources.de-DE.xaml | 4 +++- .../Localization/Resources.en-US.xaml | 6 +++-- .../Applications/DNSLookupViewModel.cs | 13 +++------- .../SettingsApplicationDNSLookupViewModel.cs | 24 ++++++++++++++++--- .../SettingsApplicationDNSLookupView.xaml | 14 ++++++++++- 8 files changed, 67 insertions(+), 24 deletions(-) diff --git a/Source/NETworkManager/Models/Network/DNSLookup.cs b/Source/NETworkManager/Models/Network/DNSLookup.cs index 0c79fae2fb..21206a9a15 100644 --- a/Source/NETworkManager/Models/Network/DNSLookup.cs +++ b/Source/NETworkManager/Models/Network/DNSLookup.cs @@ -84,10 +84,12 @@ public void LookupAsync(List hosts, DNSLookupOptions dnsLookupOptions) if (dnsLookupOptions.Type == QType.NAPTR) name = Resolver.GetArpaFromEnum(name); + int port = dnsLookupOptions.UseCustomDNSServer ? dnsLookupOptions.Port : Resolver.DefaultPort; + Parallel.ForEach(dnsServers, dnsServer => { // Create a new for each request - Resolver resolver = new Resolver(dnsServer) + Resolver resolver = new Resolver(dnsServer, port) { Recursion = dnsLookupOptions.Recursion, TransportType = dnsLookupOptions.TransportType, @@ -127,7 +129,6 @@ public void LookupAsync(List hosts, DNSLookupOptions dnsLookupOptions) } OnLookupComplete(); - //OnLookupComplete(new DNSLookupCompleteArgs(dnsResponse.Server.ToString(), dnsResponse.Questions.Count, dnsResponse.Answers.Count, dnsResponse.Authorities.Count, dnsResponse.Additionals.Count, dnsResponse.MessageSize)); }); } diff --git a/Source/NETworkManager/Models/Network/DNSLookupOptions.cs b/Source/NETworkManager/Models/Network/DNSLookupOptions.cs index 7ad3a21342..9a6e48f499 100644 --- a/Source/NETworkManager/Models/Network/DNSLookupOptions.cs +++ b/Source/NETworkManager/Models/Network/DNSLookupOptions.cs @@ -7,6 +7,7 @@ public class DNSLookupOptions { public bool UseCustomDNSServer { get; set; } public List CustomDNSServers { get; set; } + public int Port { get; set; } public bool AddDNSSuffix { get; set; } public bool UseCustomDNSSuffix { get; set; } public string CustomDNSSuffix { get; set; } diff --git a/Source/NETworkManager/Models/Settings/SettingsInfo.cs b/Source/NETworkManager/Models/Settings/SettingsInfo.cs index a098f152ce..a5ad9c623e 100644 --- a/Source/NETworkManager/Models/Settings/SettingsInfo.cs +++ b/Source/NETworkManager/Models/Settings/SettingsInfo.cs @@ -903,16 +903,30 @@ public bool DNSLookup_UseCustomDNSServer } } - private List _dnsLookup_CustomDNSServers; - public List DNSLookup_CustomDNSServers + private List _dnsLookup_CustomDNSServer; + public List DNSLookup_CustomDNSServer { - get { return _dnsLookup_CustomDNSServers; } + get { return _dnsLookup_CustomDNSServer; } set { - if (value == _dnsLookup_CustomDNSServers) + if (value == _dnsLookup_CustomDNSServer) return; - _dnsLookup_CustomDNSServers = value; + _dnsLookup_CustomDNSServer = value; + SettingsChanged = true; + } + } + + private int _dnsLookup_Port = 53; + public int DNSLookup_Port + { + get { return _dnsLookup_Port; } + set + { + if (value == _dnsLookup_Port) + return; + + _dnsLookup_Port = value; SettingsChanged = true; } } diff --git a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml index 797f9b23c3..db0a24df56 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.de-DE.xaml @@ -150,7 +150,7 @@ Ja Nein DNS-Suffix - DNS-Servers + DNS-Server(s) Dynamische IPv4-Adresse Statische IPv4-Address Statischer IPv4-DNS-Server @@ -437,6 +437,7 @@ SERVER-01 192.168.178.255 7 + 53 161 192.168.178.55 255.255.255.0 @@ -449,6 +450,7 @@ /24 oder 255.255.255.0 192.168.178.1 8.8.8.8 + 192.168.178.1; 8.8.8.8; 8.8.4.4 22; 80; https; ldaps; 777 - 999; 8080 192.168.178.133/22 oder 192.168.178.133/255.255.252.0 Filter... diff --git a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml index 7249455ba2..995e1bbb4f 100644 --- a/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml +++ b/Source/NETworkManager/Resources/Localization/Resources.en-US.xaml @@ -150,7 +150,7 @@ Yes No DNS Suffix - DNS Servers + DNS Server(s) Dynamic IPv4 Address Static IPv4 Address Static IPv4 DNS Server @@ -437,6 +437,7 @@ SERVER-01 192.168.178.255 7 + 53 161 192.168.178.55 255.255.255.0 @@ -449,6 +450,7 @@ /24 or 255.255.255.0 192.168.178.1 8.8.8.8 + 192.168.178.1; 8.8.8.8; 8.8.4.4 22; 80; https; ldaps; 777 - 999; 8080 192.168.178.133/22 or 192.168.178.133/255.255.252.0 Filter... @@ -468,7 +470,7 @@ (not changed) 1.3.6.1.2.1.1 Public - snmp-user + snmp-user Set static IP address and gateway... diff --git a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs index 4f2e748fe7..fadac582cf 100644 --- a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs @@ -396,16 +396,9 @@ private void StartLookup() if (SettingsManager.Current.DNSLookup_UseCustomDNSServer) { - if (SettingsManager.Current.DNSLookup_CustomDNSServers != null) - { - dnsLookupOptions.UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; - dnsLookupOptions.CustomDNSServers = SettingsManager.Current.DNSLookup_CustomDNSServers; - } - else - { - StatusMessage = Application.Current.Resources["String_CustomDNSServerIsEmptyCheckYourSettingsUseWindowsOwnDNSServer"] as string; - DisplayStatusMessage = true; - } + dnsLookupOptions.UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; + dnsLookupOptions.CustomDNSServers = SettingsManager.Current.DNSLookup_CustomDNSServer; + dnsLookupOptions.Port = SettingsManager.Current.DNSLookup_Port; } dnsLookupOptions.AddDNSSuffix = SettingsManager.Current.DNSLookup_AddDNSSuffix; diff --git a/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs index af2553add3..27e30ee130 100644 --- a/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Settings/SettingsApplicationDNSLookupViewModel.cs @@ -38,13 +38,30 @@ public string CustomDNSServer return; if (!_isLoading) - SettingsManager.Current.DNSLookup_CustomDNSServers = value.Split(';').ToList(); + SettingsManager.Current.DNSLookup_CustomDNSServer = value.Split(';').ToList(); _customDNSServer = value; OnPropertyChanged(); } } + private int _port; + public int Port + { + get { return _port;} + set + { + if (value == _port) + return; + + if (!_isLoading) + SettingsManager.Current.DNSLookup_Port = value; + + _port = value; + OnPropertyChanged(); + } + } + private bool _addDNSSuffix; public bool AddDNSSuffix { @@ -232,11 +249,12 @@ private void LoadSettings() { UseCustomDNSServer = SettingsManager.Current.DNSLookup_UseCustomDNSServer; - if (SettingsManager.Current.DNSLookup_CustomDNSServers != null) - CustomDNSServer = string.Join("; ", SettingsManager.Current.DNSLookup_CustomDNSServers); + if (SettingsManager.Current.DNSLookup_CustomDNSServer != null) + CustomDNSServer = string.Join("; ", SettingsManager.Current.DNSLookup_CustomDNSServer); AddDNSSuffix = SettingsManager.Current.DNSLookup_AddDNSSuffix; UseCustomDNSSuffix = SettingsManager.Current.DNSLookup_UseCustomDNSSuffix; + Port = SettingsManager.Current.DNSLookup_Port; CustomDNSSuffix = SettingsManager.Current.DNSLookup_CustomDNSSuffix; ResolveCNAME = SettingsManager.Current.DNSLookup_ResolveCNAME; Recursion = SettingsManager.Current.DNSLookup_Recursion; diff --git a/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml b/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml index 4fd304b508..e1c1b46723 100644 --- a/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml +++ b/Source/NETworkManager/Views/Settings/SettingsApplicationDNSLookupView.xaml @@ -9,7 +9,8 @@ - + + @@ -19,6 +20,17 @@ + + + + + + + + + + + From 4e24b3d858c41a8b07cfecd12ac91fa844412915 Mon Sep 17 00:00:00 2001 From: BornToBeRoot Date: Tue, 6 Feb 2018 22:45:15 +0100 Subject: [PATCH 3/6] Grouping by server address added, copy dnsserver/port --- .../Applications/DNSLookupViewModel.cs | 22 ++++- .../Views/Applications/DNSLookupView.xaml | 97 ++++++++++++++----- 2 files changed, 93 insertions(+), 26 deletions(-) diff --git a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs index fadac582cf..918cf8ed82 100644 --- a/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs +++ b/Source/NETworkManager/ViewModels/Applications/DNSLookupViewModel.cs @@ -6,7 +6,6 @@ using System.Windows; using System.Windows.Input; using NETworkManager.Collections; -using System.Net.NetworkInformation; using System.Windows.Threading; using System.Diagnostics; using Heijden.DNS; @@ -287,6 +286,7 @@ public DNSLookupViewModel() { _hostHistoryView = CollectionViewSource.GetDefaultView(SettingsManager.Current.DNSLookup_HostHistory); _lookupResultView = CollectionViewSource.GetDefaultView(LookupResult); + _lookupResultView.GroupDescriptions.Add(new PropertyGroupDescription("DNSServer")); LoadSettings(); @@ -363,6 +363,26 @@ private void CopySelectedResultAction() { Clipboard.SetText(SelectedLookupResult.Result); } + + public ICommand CopySelectedDNSServerCommand + { + get { return new RelayCommand(p => CopySelectedDNSServerAction()); } + } + + private void CopySelectedDNSServerAction() + { + Clipboard.SetText(SelectedLookupResult.DNSServer); + } + + public ICommand CopySelectedPortCommand + { + get { return new RelayCommand(p => CopySelectedPortAction()); } + } + + private void CopySelectedPortAction() + { + Clipboard.SetText(SelectedLookupResult.Port.ToString()); + } #endregion #region Methods diff --git a/Source/NETworkManager/Views/Applications/DNSLookupView.xaml b/Source/NETworkManager/Views/Applications/DNSLookupView.xaml index 644c5dcd72..6072a0efa9 100644 --- a/Source/NETworkManager/Views/Applications/DNSLookupView.xaml +++ b/Source/NETworkManager/Views/Applications/DNSLookupView.xaml @@ -32,31 +32,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +