This commit is contained in:
EonaCat 2023-02-13 19:08:20 +01:00
parent 31ed3a99aa
commit c795fd71f5
2 changed files with 81 additions and 22 deletions

View File

@ -47,6 +47,8 @@
this.CustomDns2 = new System.Windows.Forms.TextBox();
this.lslStatus = new System.Windows.Forms.Label();
this.StatusBox = new System.Windows.Forms.ListBox();
this.chkDns1 = new System.Windows.Forms.CheckBox();
this.chkDns2 = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// ResultView
@ -224,13 +226,39 @@
this.StatusBox.Size = new System.Drawing.Size(2209, 376);
this.StatusBox.TabIndex = 23;
//
// TesterUI
// chkDns1
//
this.chkDns1.AutoSize = true;
this.chkDns1.Checked = true;
this.chkDns1.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkDns1.Location = new System.Drawing.Point(277, 205);
this.chkDns1.Name = "chkDns1";
this.chkDns1.Size = new System.Drawing.Size(245, 36);
this.chkDns1.TabIndex = 24;
this.chkDns1.Text = "Test dns server";
this.chkDns1.UseVisualStyleBackColor = true;
//
// chkDns2
//
this.chkDns2.AutoSize = true;
this.chkDns2.Checked = true;
this.chkDns2.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkDns2.Location = new System.Drawing.Point(1229, 205);
this.chkDns2.Name = "chkDns2";
this.chkDns2.Size = new System.Drawing.Size(245, 36);
this.chkDns2.TabIndex = 25;
this.chkDns2.Text = "Test dns server";
this.chkDns2.UseVisualStyleBackColor = true;
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(240F, 240F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.AutoSize = true;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.ClientSize = new System.Drawing.Size(2517, 1693);
this.Controls.Add(this.chkDns2);
this.Controls.Add(this.chkDns1);
this.Controls.Add(this.StatusBox);
this.Controls.Add(this.lslStatus);
this.Controls.Add(this.CustomDns2);
@ -247,7 +275,7 @@
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(8, 7, 8, 7);
this.MaximizeBox = false;
this.Name = "TesterUI";
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "EonaCat.DnsTester";
this.Load += new System.EventHandler(this.TesterUI_Load);
@ -276,6 +304,8 @@
private System.Windows.Forms.TextBox CustomDns2;
private System.Windows.Forms.Label lslStatus;
private System.Windows.Forms.ListBox StatusBox;
private System.Windows.Forms.CheckBox chkDns1;
private System.Windows.Forms.CheckBox chkDns2;
}
}

View File

@ -6,6 +6,7 @@ using System.Net.Sockets;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace EonaCat.DnsTester
@ -15,6 +16,8 @@ namespace EonaCat.DnsTester
private bool UseCustomDnsServers = false;
public string DNS1, DNS2;
public bool IsRunning { get; private set; }
public MainForm()
{
InitializeComponent();
@ -27,14 +30,28 @@ namespace EonaCat.DnsTester
int CleanNamesCount = 0;
if (this.UseCustomDnsServers)
{
if (chkDns1.Checked)
{
DNS1 = CustomDns1.Text;
}
if (chkDns2.Checked)
{
DNS2 = CustomDns2.Text;
}
}
else
{
if (chkDns1.Checked)
{
DNS1 = DnsList1.SelectedValue.ToString();
}
if (chkDns2.Checked)
{
DNS2 = DnsList2.SelectedValue.ToString();
}
}
@ -62,7 +79,17 @@ namespace EonaCat.DnsTester
ResultView.Update();
Application.DoEvents();
if (IsRunning)
{
return;
}
Task.Run(() =>
{
IsRunning = true;
CheckDNS(CleanNames, CleanNamesCount, DNS1, DNS2);
IsRunning = false;
});
}
@ -233,13 +260,13 @@ namespace EonaCat.DnsTester
DNSsocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, DNSReceiveTimeout);
IPEndPoint dnsEP1 = null;
if (!string.IsNullOrWhiteSpace(DNSAddress1))
if (chkDns1.Checked && !string.IsNullOrWhiteSpace(DNSAddress1))
{
dnsEP1 = new IPEndPoint(IPAddress.Parse(DNSAddress1), IPPort);
}
IPEndPoint dnsEP2 = null;
if (!string.IsNullOrWhiteSpace(DNSAddress2))
if (chkDns2.Checked && !string.IsNullOrWhiteSpace(DNSAddress2))
{
dnsEP2 = new IPEndPoint(IPAddress.Parse(DNSAddress2), IPPort);
}
@ -247,20 +274,23 @@ namespace EonaCat.DnsTester
// Start the clock
StartTime = DateTime.Now.Ticks;
// i=0; // for testing - do one
for (i = 0; i < URLNamescount; i++)
{
URLNameStart = URLNames[i].Substring(0, URLNames[i].IndexOf("."));
DomainName = URLNames[i].Substring(URLNames[i].IndexOf(".") + 1, URLNames[i].Length - URLNames[i].IndexOf(".") - 1);
// Build the query
if (chkDns1.Checked)
{
QueryString = TransactionID1 + TypeString + (char)URLNameStart.Length + URLNameStart + (char)DomainName.Length + DomainName + TrailerString;
Sendbytes = Encoding.ASCII.GetBytes(QueryString);
if (dnsEP1 != null)
{
DNSsocket.SendTo(Sendbytes, Sendbytes.Length, SocketFlags.None, dnsEP1);
}
}
// send the same message to both DNS servers except for the transaction ID
if (chkDns2.Checked)
{
QueryString = TransactionID2 + TypeString + (char)URLNameStart.Length + URLNameStart + (char)DomainName.Length + DomainName + TrailerString;
Sendbytes = Encoding.ASCII.GetBytes(QueryString);
if (dnsEP2 != null)
@ -268,6 +298,7 @@ namespace EonaCat.DnsTester
DNSsocket.SendTo(Sendbytes, Sendbytes.Length, SocketFlags.None, dnsEP2);
}
}
}
byte[] Receivebytes = new byte[512];
@ -275,8 +306,6 @@ namespace EonaCat.DnsTester
{
// wait for a response up to timeout
more: DNSsocket.Receive(Receivebytes);
// make sure the message returned is ours
if (Receivebytes[0] == Sendbytes[0] && (Receivebytes[1] == 0x31) || (Receivebytes[1] == 0x32))
{