Projects STRLCPY ADReplStatus Commits bf0f5a13
🤬
  • ■ ■ ■ ■ ■ ■
    ADReplStatus.csproj
    skipped 64 lines
    65 65   <Compile Include="AlternateCredsForm.Designer.cs">
    66 66   <DependentUpon>AlternateCredsForm.cs</DependentUpon>
    67 67   </Compile>
     68 + <Compile Include="PortTester.cs">
     69 + <SubType>Form</SubType>
     70 + </Compile>
     71 + <Compile Include="PortTester.Designer.cs">
     72 + <DependentUpon>PortTester.cs</DependentUpon>
     73 + </Compile>
    68 74   <Compile Include="Program.cs" />
    69 75   <Compile Include="Properties\AssemblyInfo.cs" />
    70 76   <Compile Include="SetForestNameForm.cs">
    skipped 8 lines
    79 85   <EmbeddedResource Include="AlternateCredsForm.resx">
    80 86   <DependentUpon>AlternateCredsForm.cs</DependentUpon>
    81 87   </EmbeddedResource>
     88 + <EmbeddedResource Include="PortTester.resx">
     89 + <DependentUpon>PortTester.cs</DependentUpon>
     90 + </EmbeddedResource>
    82 91   <EmbeddedResource Include="Properties\Resources.resx">
    83 92   <Generator>ResXFileCodeGenerator</Generator>
    84 93   <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    skipped 2 lines
    87 96   <Compile Include="Properties\Resources.Designer.cs">
    88 97   <AutoGen>True</AutoGen>
    89 98   <DependentUpon>Resources.resx</DependentUpon>
     99 + <DesignTime>True</DesignTime>
    90 100   </Compile>
    91 101   <EmbeddedResource Include="SetForestNameForm.resx">
    92 102   <DependentUpon>SetForestNameForm.cs</DependentUpon>
    skipped 21 lines
  • ■ ■ ■ ■ ■
    ADReplStatusForm.Designer.cs
    skipped 155 lines
    156 156   this.treeListView1.UseFiltering = true;
    157 157   this.treeListView1.View = System.Windows.Forms.View.Details;
    158 158   this.treeListView1.VirtualMode = true;
     159 + this.treeListView1.CellRightClick += new System.EventHandler<BrightIdeasSoftware.CellRightClickEventArgs>(this.DCNameColumn_RightClick);
    159 160   this.treeListView1.FormatRow += new System.EventHandler<BrightIdeasSoftware.FormatRowEventArgs>(this.treeListView1_FormatRow);
    160 161   //
    161 162   // DCNameColumn
    skipped 148 lines
  • ■ ■ ■ ■ ■ ■
    ADReplStatusForm.cs
    skipped 4 lines
    5 5  using System.Drawing;
    6 6  using System.Linq;
    7 7  using System.Text;
     8 +using System.Diagnostics;
    8 9  using System.Threading.Tasks;
    9 10  using System.Windows.Forms;
    10 11  using System.DirectoryServices;
    11 12  using System.DirectoryServices.ActiveDirectory;
    12 13  using Microsoft.Win32;
    13 14  using BrightIdeasSoftware;
     15 + 
     16 +using System.Net.NetworkInformation;
     17 +using System.IO;
     18 +using System.Reflection;
     19 +using System.Threading;
    14 20   
    15 21  namespace ADReplStatus
    16 22  {
    skipped 12 lines
    29 35   public static string gUsername = string.Empty;
    30 36   
    31 37   public static string gPassword = string.Empty;
     38 + 
     39 + public static string gTarget = string.Empty;
    32 40   
    33 41   public static List<ADREPLDC> gDCs = new List<ADREPLDC>();
    34 42  
    skipped 427 lines
    462 470   }
    463 471   }
    464 472   
     473 + private void DCNameColumn_RightClick(object sender, CellRightClickEventArgs e)
     474 + {
     475 + try
     476 + {
     477 + //Only display the menu in the context of the "DC Name" column
     478 + if (e.Column.Text == "DC Name")
     479 + {
     480 + //Only display the menu if the cell is populated
     481 + if (this.treeListView1.SelectedItem.Text != "")
     482 + {
     483 + //Create the menustrip
     484 + ContextMenuStrip diagnosticMenu = new ContextMenuStrip();
     485 + 
     486 + //Add menuItem click handler
     487 + diagnosticMenu.ItemClicked += new ToolStripItemClickedEventHandler(diagnosticMenuSelector);
     488 + 
     489 + //Create a List view of all the diagnostics we want to add
     490 + ObjectListView olv = e.ListView;
     491 + 
     492 + //Add the "Ping" option
     493 + ToolStripMenuItem pingMenuItem = new ToolStripMenuItem(String.Format($"Ping"));
     494 + diagnosticMenu.Items.Add(pingMenuItem);
     495 + 
     496 + //Add the "RDP" option
     497 + ToolStripMenuItem rdpMenuItem = new ToolStripMenuItem(String.Format($"Initiate RDP connection"));
     498 + diagnosticMenu.Items.Add(rdpMenuItem);
     499 + 
     500 + //Add the "Enter-PSSession" option
     501 + ToolStripMenuItem enterPSSessionMenuItem = new ToolStripMenuItem(String.Format($"Enter PowerShell session"));
     502 + diagnosticMenu.Items.Add(enterPSSessionMenuItem);
     503 + 
     504 + //Add the "Port Tester" option
     505 + ToolStripMenuItem portTesterMenuItem = new ToolStripMenuItem(String.Format($"Port Tester"));
     506 + diagnosticMenu.Items.Add(portTesterMenuItem);
     507 + 
     508 + //Actually attach the menu to the cell
     509 + e.MenuStrip = diagnosticMenu;
     510 + }
     511 + }
     512 + }
     513 + catch
     514 + {
     515 + //Do nothing, the user simply right-clicked somewhere else, this is the handler ONLY when the selected column is "DC name"
     516 + }
     517 + }
     518 + 
     519 + private void diagnosticMenuSelector(object sender, ToolStripItemClickedEventArgs e)
     520 + {
     521 + switch(e.ClickedItem.ToString())
     522 + {
     523 + case "Ping":
     524 + diagnosticPing(sender, e);
     525 + break;
     526 + case "Initiate RDP connection":
     527 + diagnosticRdp(sender,e);
     528 + break;
     529 + case "Enter PowerShell session":
     530 + diagnosticPSSession(sender, e);
     531 + break;
     532 + case "Port Tester":
     533 + diagnosticNetworkTester(sender, e);
     534 + break;
     535 + }
     536 + }
     537 + 
     538 + private void diagnosticPing(object sender, ToolStripItemClickedEventArgs e)
     539 + {
     540 + string destination = this.treeListView1.SelectedItem.Text;
     541 +
     542 + if(destination != "")
     543 + {
     544 + try
     545 + {
     546 + Ping p = new Ping();
     547 + PingReply r;
     548 + r = p.Send(destination);
     549 + if (gLoggingEnabled)
     550 + {
     551 + System.IO.File.AppendAllText(gLogfileName, $"[{DateTime.Now}] Ping to {this.treeListView1.SelectedItem.Text}\nIPAddress:{r.Address.ToString()} is successful!\n");
     552 + }
     553 + 
     554 + string successMessage = $"Success:\nDCName: {this.treeListView1.SelectedItem.Text}\nIPAddress: {r.Address.ToString()}\nProtocol: ICMP";
     555 + 
     556 + new Thread(() => System.Windows.Forms.MessageBox.Show(successMessage, "Ping Successful", MessageBoxButtons.OK, MessageBoxIcon.Information)).Start();
     557 + }
     558 + catch (Exception ex)
     559 + {
     560 + string errorMessage = $"ERROR: Ping to {this.treeListView1.SelectedItem.Text} failed!\n{ex.Message}\n";
     561 + 
     562 + new Thread(() => System.Windows.Forms.MessageBox.Show(errorMessage, "Ping Successful", MessageBoxButtons.OK, MessageBoxIcon.Information)).Start();
     563 + 
     564 + if (gLoggingEnabled)
     565 + {
     566 + System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n");
     567 + }
     568 + }
     569 + }
     570 + }
     571 + 
     572 + private void diagnosticRdp(object sender, ToolStripItemClickedEventArgs e)
     573 + {
     574 + try
     575 + {
     576 + string args = $"/v {this.treeListView1.SelectedItem.Text}";
     577 + Process.Start($"mstsc.exe", args);
     578 + }
     579 + catch (Exception ex)
     580 + {
     581 + string errorMessage = $"ERROR: RDP to {this.treeListView1.SelectedItem.Text} failed!\n{ex.Message}\n";
     582 + 
     583 + new Thread(() => MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error));
     584 + 
     585 + if (gLoggingEnabled)
     586 + {
     587 + System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n");
     588 + }
     589 + }
     590 + }
     591 + 
     592 + private void diagnosticPSSession(object sender, ToolStripItemClickedEventArgs e)
     593 + {
     594 +
     595 + try
     596 + {
     597 + string powershellArgs = $"-NoExit $Cred = Get-Credential;Enter-PSSession -ComputerName {this.treeListView1.SelectedItem.Text} -Credential $Cred";
     598 + Process.Start($"powershell.exe", powershellArgs);
     599 + }
     600 + catch (Exception ex)
     601 + {
     602 + string errorMessage = $"ERROR: Enter-PsSession -ComputerName {this.treeListView1.SelectedItem.Text} failed!\n{ex.Message}\n";
     603 + 
     604 + new Thread(() => MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error));
     605 + 
     606 + if (gLoggingEnabled)
     607 + {
     608 + System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n");
     609 + }
     610 + }
     611 + }
     612 + 
     613 + private void diagnosticNetworkTester(object sender, ToolStripItemClickedEventArgs e)
     614 + {
     615 + gTarget = this.treeListView1.SelectedItem.Text;
     616 + 
     617 + PortTester protocolTesterForm = new PortTester();
     618 + 
     619 + if (gLoggingEnabled)
     620 + {
     621 + System.IO.File.AppendAllText(gLogfileName, $"[{DateTime.Now}] Port Tester button was clicked.\n");
     622 + }
     623 + 
     624 + protocolTesterForm.ShowDialog();
     625 + 
     626 + protocolTesterForm.Dispose();
     627 + }
     628 + 
    465 629   private void DarkModeButton_Click(object sender, EventArgs e)
    466 630   {
    467 631   gDarkMode = !gDarkMode;
    skipped 29 lines
    497 661   {
    498 662   string errorMessage = $"ERROR: Failed to write to the HKCU\\ADREPLSTATUS registry key!\n{ex.Message}\n";
    499 663   
    500  - MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     664 + new Thread(() => MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error));
    501 665   
    502 666   if (gLoggingEnabled)
    503 667   {
    skipped 116 lines
  • ■ ■ ■ ■
    ADReplStatusForm.resx
    skipped 284 lines
    285 285   <data name="DarkModeButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    286 286   <value>
    287 287   iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
    288  - vQAADr0BR/uQrQAABuNJREFUWEetV2lMVFcUnmGTVbYBgWEYmRn2XVkdiqy2LOlQMalQqfWHmhorrSlp
     288 + vAAADrwBlbxySQAABuNJREFUWEetV2lMVFcUnmGTVbYBgWEYmRn2XVkdiqy2LOlQMalQqfWHmhorrSlp
    289 289   rBSsEYOITYo2Vm2J0mpj2qiRfybGxihtk9rK0iY29A9CamKRxYVl5r3T811nBhSp0eEkNzPz5t5zzj3f
    290 290   d5aneJ4YjUblcq3WxfrTLo2NjZqamprM9evX662PlNbPxRNdpM7Z+lXx+ZF274KCgre1EdrO8DB1v1YT
    291 291   MRERriGNOpxSUlLexJ7oqCj7foek9LVSZUhwiFDWerDVJ0Kj+VAdpr4dFhJKAX7+Yvn7+pHfUt8pXhQc
    skipped 25 lines
    317 317   3piSl5dXzm9Uu4uLi9dxfidu3bp1xeDwbdEdbcLj3v/cWqH4D1XtrlaXqlsUAAAAAElFTkSuQmCC
    318 318  </value>
    319 319   </data>
     320 + <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     321 + <value>171</value>
     322 + </metadata>
    320 323   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    321 324   <value>
    322 325   AAABAAYAICAQAAEABADoAgAAZgAAABAQEAABAAQAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
    skipped 171 lines
  • ■ ■ ■ ■ ■ ■
    PortTester.Designer.cs
     1 +namespace ADReplStatus
     2 +{
     3 + partial class PortTester
     4 + {
     5 + /// <summary>
     6 + /// Required designer variable.
     7 + /// </summary>
     8 + private System.ComponentModel.IContainer components = null;
     9 + 
     10 + /// <summary>
     11 + /// Clean up any resources being used.
     12 + /// </summary>
     13 + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
     14 + protected override void Dispose(bool disposing)
     15 + {
     16 + if (disposing && (components != null))
     17 + {
     18 + components.Dispose();
     19 + }
     20 + base.Dispose(disposing);
     21 + }
     22 + 
     23 + #region Windows Form Designer generated code
     24 + 
     25 + /// <summary>
     26 + /// Required method for Designer support - do not modify
     27 + /// the contents of this method with the code editor.
     28 + /// </summary>
     29 + private void InitializeComponent()
     30 + {
     31 + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PortTester));
     32 + this.results_label = new System.Windows.Forms.Label();
     33 + this.results_txtbox = new System.Windows.Forms.TextBox();
     34 + this.Target_label = new System.Windows.Forms.Label();
     35 + this.target_txtbox = new System.Windows.Forms.TextBox();
     36 + this.portOverride_btn = new System.Windows.Forms.CheckBox();
     37 + this.port_label = new System.Windows.Forms.Label();
     38 + this.port_txtbox = new System.Windows.Forms.TextBox();
     39 + this.manualTest_btn = new System.Windows.Forms.Button();
     40 + this.protocolTesterListBox = new System.Windows.Forms.CheckedListBox();
     41 + this.runTest_btn = new System.Windows.Forms.Button();
     42 + this.selectAll_rbtn = new System.Windows.Forms.RadioButton();
     43 + this.exportResults_btn = new System.Windows.Forms.Button();
     44 + this.SuspendLayout();
     45 + //
     46 + // results_label
     47 + //
     48 + resources.ApplyResources(this.results_label, "results_label");
     49 + this.results_label.Name = "results_label";
     50 + //
     51 + // results_txtbox
     52 + //
     53 + resources.ApplyResources(this.results_txtbox, "results_txtbox");
     54 + this.results_txtbox.Name = "results_txtbox";
     55 + //
     56 + // Target_label
     57 + //
     58 + resources.ApplyResources(this.Target_label, "Target_label");
     59 + this.Target_label.Name = "Target_label";
     60 + //
     61 + // target_txtbox
     62 + //
     63 + resources.ApplyResources(this.target_txtbox, "target_txtbox");
     64 + this.target_txtbox.Name = "target_txtbox";
     65 + //
     66 + // portOverride_btn
     67 + //
     68 + resources.ApplyResources(this.portOverride_btn, "portOverride_btn");
     69 + this.portOverride_btn.Name = "portOverride_btn";
     70 + this.portOverride_btn.UseVisualStyleBackColor = true;
     71 + this.portOverride_btn.CheckedChanged += new System.EventHandler(this.portOverride_btn_CheckedChanged);
     72 + //
     73 + // port_label
     74 + //
     75 + resources.ApplyResources(this.port_label, "port_label");
     76 + this.port_label.Name = "port_label";
     77 + //
     78 + // port_txtbox
     79 + //
     80 + resources.ApplyResources(this.port_txtbox, "port_txtbox");
     81 + this.port_txtbox.Name = "port_txtbox";
     82 + //
     83 + // manualTest_btn
     84 + //
     85 + resources.ApplyResources(this.manualTest_btn, "manualTest_btn");
     86 + this.manualTest_btn.ForeColor = System.Drawing.SystemColors.ControlText;
     87 + this.manualTest_btn.Name = "manualTest_btn";
     88 + this.manualTest_btn.UseVisualStyleBackColor = true;
     89 + this.manualTest_btn.Click += new System.EventHandler(this.manualTest_btn_Click);
     90 + //
     91 + // protocolTesterListBox
     92 + //
     93 + this.protocolTesterListBox.FormattingEnabled = true;
     94 + resources.ApplyResources(this.protocolTesterListBox, "protocolTesterListBox");
     95 + this.protocolTesterListBox.Name = "protocolTesterListBox";
     96 + this.protocolTesterListBox.ThreeDCheckBoxes = true;
     97 + //
     98 + // runTest_btn
     99 + //
     100 + resources.ApplyResources(this.runTest_btn, "runTest_btn");
     101 + this.runTest_btn.Name = "runTest_btn";
     102 + this.runTest_btn.UseVisualStyleBackColor = true;
     103 + this.runTest_btn.Click += new System.EventHandler(this.runTest_btn_Click);
     104 + //
     105 + // selectAll_rbtn
     106 + //
     107 + resources.ApplyResources(this.selectAll_rbtn, "selectAll_rbtn");
     108 + this.selectAll_rbtn.Name = "selectAll_rbtn";
     109 + this.selectAll_rbtn.TabStop = true;
     110 + this.selectAll_rbtn.UseVisualStyleBackColor = true;
     111 + this.selectAll_rbtn.CheckedChanged += new System.EventHandler(this.selectAll_rbtn_CheckedChanged);
     112 + this.selectAll_rbtn.Click += new System.EventHandler(this.selectAll_rbtn_Click);
     113 + //
     114 + // exportResults_btn
     115 + //
     116 + resources.ApplyResources(this.exportResults_btn, "exportResults_btn");
     117 + this.exportResults_btn.Name = "exportResults_btn";
     118 + this.exportResults_btn.UseVisualStyleBackColor = true;
     119 + this.exportResults_btn.Click += new System.EventHandler(this.exportResults_btn_Click);
     120 + //
     121 + // PortTester
     122 + //
     123 + resources.ApplyResources(this, "$this");
     124 + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     125 + this.Controls.Add(this.exportResults_btn);
     126 + this.Controls.Add(this.selectAll_rbtn);
     127 + this.Controls.Add(this.runTest_btn);
     128 + this.Controls.Add(this.protocolTesterListBox);
     129 + this.Controls.Add(this.manualTest_btn);
     130 + this.Controls.Add(this.port_txtbox);
     131 + this.Controls.Add(this.port_label);
     132 + this.Controls.Add(this.portOverride_btn);
     133 + this.Controls.Add(this.target_txtbox);
     134 + this.Controls.Add(this.Target_label);
     135 + this.Controls.Add(this.results_txtbox);
     136 + this.Controls.Add(this.results_label);
     137 + this.Cursor = System.Windows.Forms.Cursors.Default;
     138 + this.Name = "PortTester";
     139 + this.ResumeLayout(false);
     140 + this.PerformLayout();
     141 + 
     142 + }
     143 + 
     144 + #endregion
     145 + 
     146 + private System.Windows.Forms.Label results_label;
     147 + private System.Windows.Forms.TextBox results_txtbox;
     148 + private System.Windows.Forms.Label Target_label;
     149 + private System.Windows.Forms.TextBox target_txtbox;
     150 + private System.Windows.Forms.CheckBox portOverride_btn;
     151 + private System.Windows.Forms.Label port_label;
     152 + private System.Windows.Forms.TextBox port_txtbox;
     153 + private System.Windows.Forms.Button manualTest_btn;
     154 + private System.Windows.Forms.CheckedListBox protocolTesterListBox;
     155 + private System.Windows.Forms.Button runTest_btn;
     156 + private System.Windows.Forms.RadioButton selectAll_rbtn;
     157 + private System.Windows.Forms.Button exportResults_btn;
     158 + }
     159 +}
  • ■ ■ ■ ■ ■ ■
    PortTester.cs
     1 +using System;
     2 +using System.Net.Sockets;
     3 +using System.Threading;
     4 +using System.Threading.Tasks;
     5 +using System.Windows.Forms;
     6 + 
     7 +namespace ADReplStatus
     8 +{
     9 + public partial class PortTester : Form
     10 + {
     11 + bool g_checkAll_rbtn_isChecked = false;
     12 + bool g_tnc_firstRun_onMulti = false;
     13 + public PortTester()
     14 + {
     15 + InitializeComponent();
     16 + this.target_txtbox.Text = $"{ADReplStatusForm.gTarget.ToString()}";
     17 + portProtocolList();
     18 + }
     19 + 
     20 + private void portOverride_btn_CheckedChanged(object sender, EventArgs e)
     21 + {
     22 + if(this.port_label.Visible == false)
     23 + {
     24 + this.port_label.Visible = true;
     25 + this.port_txtbox.Visible = true;
     26 + this.manualTest_btn.Visible = true;
     27 + }
     28 + else
     29 + {
     30 + this.port_label.Visible = false;
     31 + this.port_txtbox.Visible = false;
     32 + this.manualTest_btn.Visible = false;
     33 + }
     34 + }
     35 + 
     36 + private void portProtocolList()
     37 + {
     38 + this.protocolTesterListBox.CheckOnClick = true;
     39 + 
     40 + string rpcEpmString = "Remote Procedure Call // EndpointMapper";
     41 + string ldapString = "LDAP";
     42 + string ldapSSLString = "LDAP SSL";
     43 + string dnsString = "Domain Name Service";
     44 + string globalCatalogLDAPString = "Global Catalog LDAP";
     45 + string globalCatalogLDAPSSLString = "Global Catalog LDAP SSL";
     46 + string kerberosString = "Kerberos authentication";
     47 + string smbString = "SMB, NetLogon, SamR";
     48 + 
     49 + string[] stringArray;
     50 + stringArray = new string[] { rpcEpmString, ldapString, ldapSSLString, dnsString, globalCatalogLDAPString, globalCatalogLDAPSSLString, kerberosString, smbString };
     51 + 
     52 + foreach(String s in stringArray)
     53 + {
     54 + this.protocolTesterListBox.Items.Add(s);
     55 + }
     56 + 
     57 + }
     58 + 
     59 + private async void manualTest_btn_Click(object sender, EventArgs e)
     60 + {
     61 + if(this.port_txtbox.Text == "" || this.port_txtbox.Text == null)
     62 + {
     63 + string errorMessage = "When using the manual test method you MUST provide a port to test with!";
     64 + MessageBox.Show(errorMessage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     65 + return;
     66 + }
     67 + 
     68 + try
     69 + {
     70 + Int32 port = Int32.Parse(this.port_txtbox.Text);
     71 + await testNetConnection(this.target_txtbox.Text, port, false);
     72 + }
     73 + catch
     74 + {
     75 + //Do nothing, the exception should've already been caught in testNetConnection
     76 + }
     77 + }
     78 + 
     79 + private async Task testNetConnection(string target, Int32 port, bool isMulti)
     80 + {
     81 + if(g_tnc_firstRun_onMulti && isMulti)
     82 + {
     83 + this.results_txtbox.Text = "";
     84 + }
     85 + else if(!isMulti)
     86 + {
     87 + this.results_txtbox.Text = "";
     88 + }
     89 + 
     90 + try
     91 + {
     92 + Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     93 + 
     94 + this.results_txtbox.AppendText($"Testing TCP connection to {target} on port {port}:{Environment.NewLine}");
     95 + await client.ConnectAsync(target, port);
     96 + 
     97 + if (ADReplStatusForm.gLoggingEnabled)
     98 + {
     99 + System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] Connection to {target} was successful on {port}{Environment.NewLine}");
     100 + }
     101 +
     102 + string successMessage = $"Connection successful! {Environment.NewLine}===========================";
     103 + this.results_txtbox.AppendText(successMessage);
     104 + this.results_txtbox.AppendText($"{Environment.NewLine}Local IP Address: {client.LocalEndPoint.ToString()}{Environment.NewLine}");
     105 + this.results_txtbox.AppendText($"{Environment.NewLine}Remote IP Address: {client.RemoteEndPoint.ToString()}{Environment.NewLine}{Environment.NewLine}");
     106 + 
     107 + new Thread(() => client.Disconnect(true));
     108 + 
     109 + }
     110 + catch (Exception ex)
     111 + {
     112 + string errorMessage = $"ERROR: Connection to {target} using port {port} failed!{Environment.NewLine}{Environment.NewLine}{ex.Message}{Environment.NewLine}";
     113 + this.results_txtbox.AppendText($"{Environment.NewLine}{errorMessage}{Environment.NewLine}");
     114 + 
     115 + if (ADReplStatusForm.gLoggingEnabled)
     116 + {
     117 + System.IO.File.AppendAllText(ADReplStatusForm.gLogfileName, $"[{DateTime.Now}] {errorMessage}\n");
     118 + }
     119 + }
     120 + }
     121 + 
     122 + private void selectAll_rbtn_CheckedChanged(object sender, EventArgs e)
     123 + {
     124 + g_checkAll_rbtn_isChecked = this.selectAll_rbtn.Checked;
     125 + }
     126 + 
     127 + private void selectAll_rbtn_Click(object sender, EventArgs e)
     128 + {
     129 + if(selectAll_rbtn.Checked && !g_checkAll_rbtn_isChecked)
     130 + {
     131 + selectAll_rbtn.Checked = false;
     132 + for (int i = 0; i < this.protocolTesterListBox.Items.Count; i++)
     133 + {
     134 + this.protocolTesterListBox.SetItemChecked(i, false);
     135 + }
     136 + }
     137 + else
     138 + {
     139 + selectAll_rbtn.Checked = true;
     140 + g_checkAll_rbtn_isChecked = false;
     141 + for (int i = 0; i < this.protocolTesterListBox.Items.Count; i++)
     142 + {
     143 + this.protocolTesterListBox.SetItemChecked(i, true);
     144 + }
     145 + }
     146 + }
     147 + 
     148 + private async void runTest_btn_Click(object sender, EventArgs e)
     149 + {
     150 + 
     151 + Int32 rpcEpmPort = 135;
     152 + Int32 ldapPort = 389;
     153 + Int32 ldapSSLPort = 636;
     154 + Int32 globalCatalogLDAPPort = 3268;
     155 + Int32 globalCatalogLDAPSSLPort = 3269;
     156 + Int32 kerberosPort = 88;
     157 + Int32 dnsPort = 53;
     158 + Int32 smbPort = 445;
     159 + 
     160 + try
     161 + {
     162 + g_tnc_firstRun_onMulti = true;
     163 + foreach (var item in protocolTesterListBox.CheckedItems)
     164 + {
     165 + string protocolname = item.ToString();
     166 + Int32 selectedPort;
     167 + switch (protocolname)
     168 + {
     169 + case "Remote Procedure Call // EndpointMapper":
     170 + selectedPort = rpcEpmPort;
     171 + break;
     172 + case "LDAP":
     173 + selectedPort = ldapPort;
     174 + break;
     175 + case "LDAP SSL":
     176 + selectedPort = ldapSSLPort;
     177 + break;
     178 + case "Domain Name Service":
     179 + selectedPort = globalCatalogLDAPPort;
     180 + break;
     181 + case "Global Catalog LDAP":
     182 + selectedPort = globalCatalogLDAPSSLPort;
     183 + break;
     184 + case "Global Catalog LDAP SSL":
     185 + selectedPort = kerberosPort;
     186 + break;
     187 + case "Kerberos authentication":
     188 + selectedPort = dnsPort;
     189 + break;
     190 + case "SMB, NetLogon, SamR":
     191 + selectedPort = smbPort;
     192 + break;
     193 + default:
     194 + return;
     195 + }
     196 + await testNetConnection(this.target_txtbox.Text, selectedPort, true);
     197 + g_tnc_firstRun_onMulti = false;
     198 + }
     199 + }
     200 + catch(Exception ex)
     201 + {
     202 + MessageBox.Show($"{ex.Message}", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     203 + g_tnc_firstRun_onMulti = false;
     204 + }
     205 + 
     206 + }
     207 + 
     208 + private void exportResults_btn_Click(object sender, EventArgs e)
     209 + {
     210 + if(results_txtbox.Text.Length <= 0)
     211 + {
     212 + new Thread(() => MessageBox.Show("Cannot export an empty results report!", "No results available", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)).Start();
     213 + }
     214 + else
     215 + {
     216 + try
     217 + {
     218 + System.IO.File.WriteAllLines("PortTester_Results.txt", results_txtbox.Lines);
     219 + new Thread(() => MessageBox.Show($"Results exported to: {Application.StartupPath.ToString()}\\PortTester_Results.txt", "Successfl export", MessageBoxButtons.OK, MessageBoxIcon.Information)).Start();
     220 + }
     221 + catch(Exception ex)
     222 + {
     223 + MessageBox.Show($"{ex.Message}", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     224 + }
     225 + }
     226 + }
     227 + }
     228 +}
     229 + 
  • ■ ■ ■ ■ ■ ■
    PortTester.resx
     1 +<?xml version="1.0" encoding="utf-8"?>
     2 +<root>
     3 + <!--
     4 + Microsoft ResX Schema
     5 +
     6 + Version 2.0
     7 +
     8 + The primary goals of this format is to allow a simple XML format
     9 + that is mostly human readable. The generation and parsing of the
     10 + various data types are done through the TypeConverter classes
     11 + associated with the data types.
     12 +
     13 + Example:
     14 +
     15 + ... ado.net/XML headers & schema ...
     16 + <resheader name="resmimetype">text/microsoft-resx</resheader>
     17 + <resheader name="version">2.0</resheader>
     18 + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
     19 + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
     20 + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
     21 + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
     22 + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
     23 + <value>[base64 mime encoded serialized .NET Framework object]</value>
     24 + </data>
     25 + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     26 + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
     27 + <comment>This is a comment</comment>
     28 + </data>
     29 +
     30 + There are any number of "resheader" rows that contain simple
     31 + name/value pairs.
     32 +
     33 + Each data row contains a name, and value. The row also contains a
     34 + type or mimetype. Type corresponds to a .NET class that support
     35 + text/value conversion through the TypeConverter architecture.
     36 + Classes that don't support this are serialized and stored with the
     37 + mimetype set.
     38 +
     39 + The mimetype is used for serialized objects, and tells the
     40 + ResXResourceReader how to depersist the object. This is currently not
     41 + extensible. For a given mimetype the value must be set accordingly:
     42 +
     43 + Note - application/x-microsoft.net.object.binary.base64 is the format
     44 + that the ResXResourceWriter will generate, however the reader can
     45 + read any of the formats listed below.
     46 +
     47 + mimetype: application/x-microsoft.net.object.binary.base64
     48 + value : The object must be serialized with
     49 + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
     50 + : and then encoded with base64 encoding.
     51 +
     52 + mimetype: application/x-microsoft.net.object.soap.base64
     53 + value : The object must be serialized with
     54 + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
     55 + : and then encoded with base64 encoding.
     56 + 
     57 + mimetype: application/x-microsoft.net.object.bytearray.base64
     58 + value : The object must be serialized into a byte array
     59 + : using a System.ComponentModel.TypeConverter
     60 + : and then encoded with base64 encoding.
     61 + -->
     62 + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
     63 + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
     64 + <xsd:element name="root" msdata:IsDataSet="true">
     65 + <xsd:complexType>
     66 + <xsd:choice maxOccurs="unbounded">
     67 + <xsd:element name="metadata">
     68 + <xsd:complexType>
     69 + <xsd:sequence>
     70 + <xsd:element name="value" type="xsd:string" minOccurs="0" />
     71 + </xsd:sequence>
     72 + <xsd:attribute name="name" use="required" type="xsd:string" />
     73 + <xsd:attribute name="type" type="xsd:string" />
     74 + <xsd:attribute name="mimetype" type="xsd:string" />
     75 + <xsd:attribute ref="xml:space" />
     76 + </xsd:complexType>
     77 + </xsd:element>
     78 + <xsd:element name="assembly">
     79 + <xsd:complexType>
     80 + <xsd:attribute name="alias" type="xsd:string" />
     81 + <xsd:attribute name="name" type="xsd:string" />
     82 + </xsd:complexType>
     83 + </xsd:element>
     84 + <xsd:element name="data">
     85 + <xsd:complexType>
     86 + <xsd:sequence>
     87 + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
     88 + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
     89 + </xsd:sequence>
     90 + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
     91 + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
     92 + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
     93 + <xsd:attribute ref="xml:space" />
     94 + </xsd:complexType>
     95 + </xsd:element>
     96 + <xsd:element name="resheader">
     97 + <xsd:complexType>
     98 + <xsd:sequence>
     99 + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
     100 + </xsd:sequence>
     101 + <xsd:attribute name="name" type="xsd:string" use="required" />
     102 + </xsd:complexType>
     103 + </xsd:element>
     104 + </xsd:choice>
     105 + </xsd:complexType>
     106 + </xsd:element>
     107 + </xsd:schema>
     108 + <resheader name="resmimetype">
     109 + <value>text/microsoft-resx</value>
     110 + </resheader>
     111 + <resheader name="version">
     112 + <value>2.0</value>
     113 + </resheader>
     114 + <resheader name="reader">
     115 + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     116 + </resheader>
     117 + <resheader name="writer">
     118 + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     119 + </resheader>
     120 + <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     121 + <data name="results_label.AutoSize" type="System.Boolean, mscorlib">
     122 + <value>True</value>
     123 + </data>
     124 + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
     125 + <data name="results_label.Font" type="System.Drawing.Font, System.Drawing">
     126 + <value>Microsoft Sans Serif, 8.25pt, style=Bold, Underline</value>
     127 + </data>
     128 + <data name="results_label.Location" type="System.Drawing.Point, System.Drawing">
     129 + <value>321, 14</value>
     130 + </data>
     131 + <data name="results_label.Size" type="System.Drawing.Size, System.Drawing">
     132 + <value>68, 13</value>
     133 + </data>
     134 + <data name="results_label.TabIndex" type="System.Int32, mscorlib">
     135 + <value>0</value>
     136 + </data>
     137 + <data name="results_label.Text" xml:space="preserve">
     138 + <value>RESULTS:</value>
     139 + </data>
     140 + <data name="&gt;&gt;results_label.Name" xml:space="preserve">
     141 + <value>results_label</value>
     142 + </data>
     143 + <data name="&gt;&gt;results_label.Type" xml:space="preserve">
     144 + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     145 + </data>
     146 + <data name="&gt;&gt;results_label.Parent" xml:space="preserve">
     147 + <value>$this</value>
     148 + </data>
     149 + <data name="&gt;&gt;results_label.ZOrder" xml:space="preserve">
     150 + <value>11</value>
     151 + </data>
     152 + <data name="results_txtbox.Location" type="System.Drawing.Point, System.Drawing">
     153 + <value>324, 31</value>
     154 + </data>
     155 + <data name="results_txtbox.Multiline" type="System.Boolean, mscorlib">
     156 + <value>True</value>
     157 + </data>
     158 + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
     159 + <data name="results_txtbox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
     160 + <value>Vertical</value>
     161 + </data>
     162 + <data name="results_txtbox.Size" type="System.Drawing.Size, System.Drawing">
     163 + <value>231, 208</value>
     164 + </data>
     165 + <data name="results_txtbox.TabIndex" type="System.Int32, mscorlib">
     166 + <value>1</value>
     167 + </data>
     168 + <data name="&gt;&gt;results_txtbox.Name" xml:space="preserve">
     169 + <value>results_txtbox</value>
     170 + </data>
     171 + <data name="&gt;&gt;results_txtbox.Type" xml:space="preserve">
     172 + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     173 + </data>
     174 + <data name="&gt;&gt;results_txtbox.Parent" xml:space="preserve">
     175 + <value>$this</value>
     176 + </data>
     177 + <data name="&gt;&gt;results_txtbox.ZOrder" xml:space="preserve">
     178 + <value>10</value>
     179 + </data>
     180 + <data name="Target_label.AutoSize" type="System.Boolean, mscorlib">
     181 + <value>True</value>
     182 + </data>
     183 + <data name="Target_label.Font" type="System.Drawing.Font, System.Drawing">
     184 + <value>Consolas, 8.25pt</value>
     185 + </data>
     186 + <data name="Target_label.Location" type="System.Drawing.Point, System.Drawing">
     187 + <value>6, 34</value>
     188 + </data>
     189 + <data name="Target_label.Size" type="System.Drawing.Size, System.Drawing">
     190 + <value>49, 13</value>
     191 + </data>
     192 + <data name="Target_label.TabIndex" type="System.Int32, mscorlib">
     193 + <value>18</value>
     194 + </data>
     195 + <data name="Target_label.Text" xml:space="preserve">
     196 + <value>Target:</value>
     197 + </data>
     198 + <data name="&gt;&gt;Target_label.Name" xml:space="preserve">
     199 + <value>Target_label</value>
     200 + </data>
     201 + <data name="&gt;&gt;Target_label.Type" xml:space="preserve">
     202 + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     203 + </data>
     204 + <data name="&gt;&gt;Target_label.Parent" xml:space="preserve">
     205 + <value>$this</value>
     206 + </data>
     207 + <data name="&gt;&gt;Target_label.ZOrder" xml:space="preserve">
     208 + <value>9</value>
     209 + </data>
     210 + <data name="target_txtbox.Location" type="System.Drawing.Point, System.Drawing">
     211 + <value>6, 51</value>
     212 + </data>
     213 + <data name="target_txtbox.Size" type="System.Drawing.Size, System.Drawing">
     214 + <value>258, 20</value>
     215 + </data>
     216 + <data name="target_txtbox.TabIndex" type="System.Int32, mscorlib">
     217 + <value>19</value>
     218 + </data>
     219 + <data name="&gt;&gt;target_txtbox.Name" xml:space="preserve">
     220 + <value>target_txtbox</value>
     221 + </data>
     222 + <data name="&gt;&gt;target_txtbox.Type" xml:space="preserve">
     223 + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     224 + </data>
     225 + <data name="&gt;&gt;target_txtbox.Parent" xml:space="preserve">
     226 + <value>$this</value>
     227 + </data>
     228 + <data name="&gt;&gt;target_txtbox.ZOrder" xml:space="preserve">
     229 + <value>8</value>
     230 + </data>
     231 + <data name="portOverride_btn.AutoSize" type="System.Boolean, mscorlib">
     232 + <value>True</value>
     233 + </data>
     234 + <data name="portOverride_btn.Font" type="System.Drawing.Font, System.Drawing">
     235 + <value>Consolas, 8.25pt</value>
     236 + </data>
     237 + <data name="portOverride_btn.Location" type="System.Drawing.Point, System.Drawing">
     238 + <value>6, 7</value>
     239 + </data>
     240 + <data name="portOverride_btn.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
     241 + <value>No</value>
     242 + </data>
     243 + <data name="portOverride_btn.Size" type="System.Drawing.Size, System.Drawing">
     244 + <value>146, 17</value>
     245 + </data>
     246 + <data name="portOverride_btn.TabIndex" type="System.Int32, mscorlib">
     247 + <value>20</value>
     248 + </data>
     249 + <data name="portOverride_btn.Text" xml:space="preserve">
     250 + <value>Manual Port Override</value>
     251 + </data>
     252 + <data name="portOverride_btn.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
     253 + <value>MiddleRight</value>
     254 + </data>
     255 + <data name="&gt;&gt;portOverride_btn.Name" xml:space="preserve">
     256 + <value>portOverride_btn</value>
     257 + </data>
     258 + <data name="&gt;&gt;portOverride_btn.Type" xml:space="preserve">
     259 + <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     260 + </data>
     261 + <data name="&gt;&gt;portOverride_btn.Parent" xml:space="preserve">
     262 + <value>$this</value>
     263 + </data>
     264 + <data name="&gt;&gt;portOverride_btn.ZOrder" xml:space="preserve">
     265 + <value>7</value>
     266 + </data>
     267 + <data name="port_label.AutoSize" type="System.Boolean, mscorlib">
     268 + <value>True</value>
     269 + </data>
     270 + <data name="port_label.Font" type="System.Drawing.Font, System.Drawing">
     271 + <value>Consolas, 8.25pt</value>
     272 + </data>
     273 + <data name="port_label.Location" type="System.Drawing.Point, System.Drawing">
     274 + <value>158, 7</value>
     275 + </data>
     276 + <data name="port_label.Size" type="System.Drawing.Size, System.Drawing">
     277 + <value>37, 13</value>
     278 + </data>
     279 + <data name="port_label.TabIndex" type="System.Int32, mscorlib">
     280 + <value>21</value>
     281 + </data>
     282 + <data name="port_label.Text" xml:space="preserve">
     283 + <value>Port:</value>
     284 + </data>
     285 + <data name="port_label.Visible" type="System.Boolean, mscorlib">
     286 + <value>False</value>
     287 + </data>
     288 + <data name="&gt;&gt;port_label.Name" xml:space="preserve">
     289 + <value>port_label</value>
     290 + </data>
     291 + <data name="&gt;&gt;port_label.Type" xml:space="preserve">
     292 + <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     293 + </data>
     294 + <data name="&gt;&gt;port_label.Parent" xml:space="preserve">
     295 + <value>$this</value>
     296 + </data>
     297 + <data name="&gt;&gt;port_label.ZOrder" xml:space="preserve">
     298 + <value>6</value>
     299 + </data>
     300 + <data name="port_txtbox.Location" type="System.Drawing.Point, System.Drawing">
     301 + <value>161, 23</value>
     302 + </data>
     303 + <data name="port_txtbox.Size" type="System.Drawing.Size, System.Drawing">
     304 + <value>68, 20</value>
     305 + </data>
     306 + <data name="port_txtbox.TabIndex" type="System.Int32, mscorlib">
     307 + <value>22</value>
     308 + </data>
     309 + <data name="port_txtbox.Visible" type="System.Boolean, mscorlib">
     310 + <value>False</value>
     311 + </data>
     312 + <data name="&gt;&gt;port_txtbox.Name" xml:space="preserve">
     313 + <value>port_txtbox</value>
     314 + </data>
     315 + <data name="&gt;&gt;port_txtbox.Type" xml:space="preserve">
     316 + <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     317 + </data>
     318 + <data name="&gt;&gt;port_txtbox.Parent" xml:space="preserve">
     319 + <value>$this</value>
     320 + </data>
     321 + <data name="&gt;&gt;port_txtbox.ZOrder" xml:space="preserve">
     322 + <value>5</value>
     323 + </data>
     324 + <data name="manualTest_btn.Font" type="System.Drawing.Font, System.Drawing">
     325 + <value>Consolas, 8.25pt</value>
     326 + </data>
     327 + <data name="manualTest_btn.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
     328 + <value>NoControl</value>
     329 + </data>
     330 + <data name="manualTest_btn.Location" type="System.Drawing.Point, System.Drawing">
     331 + <value>64, 23</value>
     332 + </data>
     333 + <data name="manualTest_btn.Size" type="System.Drawing.Size, System.Drawing">
     334 + <value>91, 23</value>
     335 + </data>
     336 + <data name="manualTest_btn.TabIndex" type="System.Int32, mscorlib">
     337 + <value>23</value>
     338 + </data>
     339 + <data name="manualTest_btn.Text" xml:space="preserve">
     340 + <value>Test port</value>
     341 + </data>
     342 + <data name="manualTest_btn.Visible" type="System.Boolean, mscorlib">
     343 + <value>False</value>
     344 + </data>
     345 + <data name="&gt;&gt;manualTest_btn.Name" xml:space="preserve">
     346 + <value>manualTest_btn</value>
     347 + </data>
     348 + <data name="&gt;&gt;manualTest_btn.Type" xml:space="preserve">
     349 + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     350 + </data>
     351 + <data name="&gt;&gt;manualTest_btn.Parent" xml:space="preserve">
     352 + <value>$this</value>
     353 + </data>
     354 + <data name="&gt;&gt;manualTest_btn.ZOrder" xml:space="preserve">
     355 + <value>4</value>
     356 + </data>
     357 + <data name="protocolTesterListBox.Location" type="System.Drawing.Point, System.Drawing">
     358 + <value>6, 100</value>
     359 + </data>
     360 + <data name="protocolTesterListBox.Size" type="System.Drawing.Size, System.Drawing">
     361 + <value>312, 139</value>
     362 + </data>
     363 + <data name="protocolTesterListBox.TabIndex" type="System.Int32, mscorlib">
     364 + <value>24</value>
     365 + </data>
     366 + <data name="&gt;&gt;protocolTesterListBox.Name" xml:space="preserve">
     367 + <value>protocolTesterListBox</value>
     368 + </data>
     369 + <data name="&gt;&gt;protocolTesterListBox.Type" xml:space="preserve">
     370 + <value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     371 + </data>
     372 + <data name="&gt;&gt;protocolTesterListBox.Parent" xml:space="preserve">
     373 + <value>$this</value>
     374 + </data>
     375 + <data name="&gt;&gt;protocolTesterListBox.ZOrder" xml:space="preserve">
     376 + <value>3</value>
     377 + </data>
     378 + <data name="runTest_btn.Location" type="System.Drawing.Point, System.Drawing">
     379 + <value>91, 245</value>
     380 + </data>
     381 + <data name="runTest_btn.Size" type="System.Drawing.Size, System.Drawing">
     382 + <value>104, 23</value>
     383 + </data>
     384 + <data name="runTest_btn.TabIndex" type="System.Int32, mscorlib">
     385 + <value>25</value>
     386 + </data>
     387 + <data name="runTest_btn.Text" xml:space="preserve">
     388 + <value>Run Test</value>
     389 + </data>
     390 + <data name="&gt;&gt;runTest_btn.Name" xml:space="preserve">
     391 + <value>runTest_btn</value>
     392 + </data>
     393 + <data name="&gt;&gt;runTest_btn.Type" xml:space="preserve">
     394 + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     395 + </data>
     396 + <data name="&gt;&gt;runTest_btn.Parent" xml:space="preserve">
     397 + <value>$this</value>
     398 + </data>
     399 + <data name="&gt;&gt;runTest_btn.ZOrder" xml:space="preserve">
     400 + <value>2</value>
     401 + </data>
     402 + <data name="selectAll_rbtn.AutoSize" type="System.Boolean, mscorlib">
     403 + <value>True</value>
     404 + </data>
     405 + <data name="selectAll_rbtn.Location" type="System.Drawing.Point, System.Drawing">
     406 + <value>9, 78</value>
     407 + </data>
     408 + <data name="selectAll_rbtn.Size" type="System.Drawing.Size, System.Drawing">
     409 + <value>85, 17</value>
     410 + </data>
     411 + <data name="selectAll_rbtn.TabIndex" type="System.Int32, mscorlib">
     412 + <value>26</value>
     413 + </data>
     414 + <data name="selectAll_rbtn.Text" xml:space="preserve">
     415 + <value>Select all</value>
     416 + </data>
     417 + <data name="&gt;&gt;selectAll_rbtn.Name" xml:space="preserve">
     418 + <value>selectAll_rbtn</value>
     419 + </data>
     420 + <data name="&gt;&gt;selectAll_rbtn.Type" xml:space="preserve">
     421 + <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     422 + </data>
     423 + <data name="&gt;&gt;selectAll_rbtn.Parent" xml:space="preserve">
     424 + <value>$this</value>
     425 + </data>
     426 + <data name="&gt;&gt;selectAll_rbtn.ZOrder" xml:space="preserve">
     427 + <value>1</value>
     428 + </data>
     429 + <data name="exportResults_btn.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
     430 + <value>NoControl</value>
     431 + </data>
     432 + <data name="exportResults_btn.Location" type="System.Drawing.Point, System.Drawing">
     433 + <value>383, 245</value>
     434 + </data>
     435 + <data name="exportResults_btn.Size" type="System.Drawing.Size, System.Drawing">
     436 + <value>104, 23</value>
     437 + </data>
     438 + <data name="exportResults_btn.TabIndex" type="System.Int32, mscorlib">
     439 + <value>27</value>
     440 + </data>
     441 + <data name="exportResults_btn.Text" xml:space="preserve">
     442 + <value>Export results</value>
     443 + </data>
     444 + <data name="&gt;&gt;exportResults_btn.Name" xml:space="preserve">
     445 + <value>exportResults_btn</value>
     446 + </data>
     447 + <data name="&gt;&gt;exportResults_btn.Type" xml:space="preserve">
     448 + <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     449 + </data>
     450 + <data name="&gt;&gt;exportResults_btn.Parent" xml:space="preserve">
     451 + <value>$this</value>
     452 + </data>
     453 + <data name="&gt;&gt;exportResults_btn.ZOrder" xml:space="preserve">
     454 + <value>0</value>
     455 + </data>
     456 + <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     457 + <value>True</value>
     458 + </metadata>
     459 + <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
     460 + <value>6, 13</value>
     461 + </data>
     462 + <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
     463 + <value>567, 270</value>
     464 + </data>
     465 + <data name="$this.Font" type="System.Drawing.Font, System.Drawing">
     466 + <value>Consolas, 8.25pt</value>
     467 + </data>
     468 + <data name="$this.Text" xml:space="preserve">
     469 + <value>ADReplStatus Port Tester</value>
     470 + </data>
     471 + <data name="&gt;&gt;$this.Name" xml:space="preserve">
     472 + <value>PortTester</value>
     473 + </data>
     474 + <data name="&gt;&gt;$this.Type" xml:space="preserve">
     475 + <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     476 + </data>
     477 +</root>
  • ■ ■ ■ ■ ■ ■
    Properties/Resources.Designer.cs
    skipped 7 lines
    8 8  // </auto-generated>
    9 9  //------------------------------------------------------------------------------
    10 10   
    11  -namespace ADReplStatus.Properties
    12  -{
     11 +namespace ADReplStatus.Properties {
     12 + using System;
    13 13  
    14 14  
    15 15   /// <summary>
    skipped 3 lines
    19 19   // class via a tool like ResGen or Visual Studio.
    20 20   // To add or remove a member, edit your .ResX file then rerun ResGen
    21 21   // with the /str option, or rebuild your VS project.
    22  - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     22 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
    23 23   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    24 24   [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    25  - internal class Resources
    26  - {
     25 + internal class Resources {
    27 26  
    28 27   private static global::System.Resources.ResourceManager resourceMan;
    29 28  
    30 29   private static global::System.Globalization.CultureInfo resourceCulture;
    31 30  
    32 31   [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    33  - internal Resources()
    34  - {
     32 + internal Resources() {
    35 33   }
    36 34  
    37 35   /// <summary>
    38 36   /// Returns the cached ResourceManager instance used by this class.
    39 37   /// </summary>
    40 38   [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    41  - internal static global::System.Resources.ResourceManager ResourceManager
    42  - {
    43  - get
    44  - {
    45  - if ((resourceMan == null))
    46  - {
     39 + internal static global::System.Resources.ResourceManager ResourceManager {
     40 + get {
     41 + if (object.ReferenceEquals(resourceMan, null)) {
    47 42   global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ADReplStatus.Properties.Resources", typeof(Resources).Assembly);
    48 43   resourceMan = temp;
    49 44   }
    skipped 6 lines
    56 51   /// resource lookups using this strongly typed resource class.
    57 52   /// </summary>
    58 53   [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    59  - internal static global::System.Globalization.CultureInfo Culture
    60  - {
    61  - get
    62  - {
     54 + internal static global::System.Globalization.CultureInfo Culture {
     55 + get {
    63 56   return resourceCulture;
    64 57   }
    65  - set
    66  - {
     58 + set {
    67 59   resourceCulture = value;
    68 60   }
    69 61   }
    skipped 3 lines
  • ■ ■ ■ ■ ■ ■
    Properties/Resources.resx
    skipped 45 lines
    46 46  
    47 47   mimetype: application/x-microsoft.net.object.binary.base64
    48 48   value : The object must be serialized with
    49  - : System.Serialization.Formatters.Binary.BinaryFormatter
     49 + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
    50 50   : and then encoded with base64 encoding.
    51 51  
    52 52   mimetype: application/x-microsoft.net.object.soap.base64
    skipped 7 lines
    60 60   : and then encoded with base64 encoding.
    61 61   -->
    62 62   <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
     63 + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    63 64   <xsd:element name="root" msdata:IsDataSet="true">
    64 65   <xsd:complexType>
    65 66   <xsd:choice maxOccurs="unbounded">
    skipped 2 lines
    68 69   <xsd:sequence>
    69 70   <xsd:element name="value" type="xsd:string" minOccurs="0" />
    70 71   </xsd:sequence>
    71  - <xsd:attribute name="name" type="xsd:string" />
     72 + <xsd:attribute name="name" use="required" type="xsd:string" />
    72 73   <xsd:attribute name="type" type="xsd:string" />
    73 74   <xsd:attribute name="mimetype" type="xsd:string" />
     75 + <xsd:attribute ref="xml:space" />
    74 76   </xsd:complexType>
    75 77   </xsd:element>
    76 78   <xsd:element name="assembly">
    skipped 8 lines
    85 87   <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    86 88   <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    87 89   </xsd:sequence>
    88  - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
     90 + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
    89 91   <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    90 92   <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
     93 + <xsd:attribute ref="xml:space" />
    91 94   </xsd:complexType>
    92 95   </xsd:element>
    93 96   <xsd:element name="resheader">
    skipped 15 lines
    109 112   <value>2.0</value>
    110 113   </resheader>
    111 114   <resheader name="reader">
    112  - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     115 + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    113 116   </resheader>
    114 117   <resheader name="writer">
    115  - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     118 + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    116 119   </resheader>
     120 + <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    117 121  </root>
Please wait...
Page is in error, reload to recover