chore: added refresh ping statuses

This commit is contained in:
Wainaina George (Swagfin) 2023-03-10 00:22:48 +03:00
parent ee038ca7cf
commit b882ddac6a
4 changed files with 80 additions and 56 deletions

View File

@ -13,7 +13,7 @@ namespace PortProxyGUI.Data
public int ConnectPort { get; set; }
public string Comment { get; set; }
public string Group { get; set; }
public string PingStatus { get; set; } = "Checking...";
public string PingStatus { get; set; } = "Not checked";
public bool Valid => ListenPort > 0 && ConnectPort > 0;

View File

@ -44,6 +44,7 @@
this.toolStripMenuItem_Disable = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_Refresh = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem_RefreshPingStatus = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem_FlushDnsCache = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_New = new System.Windows.Forms.ToolStripMenuItem();
@ -52,7 +53,6 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_About = new System.Windows.Forms.ToolStripMenuItem();
this.imageListProxies = new System.Windows.Forms.ImageList(this.components);
this.TimerPingTargets = new System.Windows.Forms.Timer(this.components);
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
@ -122,6 +122,7 @@
this.toolStripMenuItem_Disable,
this.toolStripSeparator3,
this.toolStripMenuItem_Refresh,
this.toolStripMenuItem_RefreshPingStatus,
this.toolStripMenuItem_FlushDnsCache,
this.toolStripSeparator2,
this.toolStripMenuItem_New,
@ -153,6 +154,11 @@
this.toolStripMenuItem_Refresh.Name = "toolStripMenuItem_Refresh";
resources.ApplyResources(this.toolStripMenuItem_Refresh, "toolStripMenuItem_Refresh");
//
// toolStripMenuItem_RefreshPingStatus
//
this.toolStripMenuItem_RefreshPingStatus.Name = "toolStripMenuItem_RefreshPingStatus";
resources.ApplyResources(this.toolStripMenuItem_RefreshPingStatus, "toolStripMenuItem_RefreshPingStatus");
//
// toolStripMenuItem_FlushDnsCache
//
this.toolStripMenuItem_FlushDnsCache.Name = "toolStripMenuItem_FlushDnsCache";
@ -196,12 +202,6 @@
this.imageListProxies.Images.SetKeyName(0, "disable.png");
this.imageListProxies.Images.SetKeyName(1, "enable.png");
//
// TimerPingTargets
//
this.TimerPingTargets.Enabled = true;
this.TimerPingTargets.Interval = 5000;
this.TimerPingTargets.Tick += new System.EventHandler(this.TimerPingTargets_Tick);
//
// PortProxyGUI
//
resources.ApplyResources(this, "$this");
@ -238,7 +238,7 @@
internal System.Windows.Forms.ListView listViewProxies;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_FlushDnsCache;
private System.Windows.Forms.ColumnHeader columnPingStatus;
private System.Windows.Forms.Timer TimerPingTargets;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_RefreshPingStatus;
}
}

View File

@ -162,7 +162,7 @@ namespace PortProxyGUI
{
Tag ="Connect To Ping Status",
ForeColor = rule.PingStatus.Equals("Success") ? Color.Green
: rule.PingStatus.Equals("Checking...") ? Color.DarkGray
: rule.PingStatus.Equals("Pending") ? Color.DarkGray
: Color.MediumVioletRed
},
new ListViewSubItem(item, rule.Comment ?? string.Empty)
@ -183,28 +183,36 @@ namespace PortProxyGUI
public void RefreshProxyList()
{
var proxies = CmdUtil.GetProxies();
var rules = Program.SqliteDbScope.Rules.ToArray();
foreach (var proxy in proxies)
try
{
var matchedRule = rules.FirstOrDefault(r => r.EqualsWithKeys(proxy));
proxy.Id = matchedRule?.Id;
var proxies = CmdUtil.GetProxies();
var rules = Program.SqliteDbScope.Rules.ToArray();
foreach (var proxy in proxies)
{
var matchedRule = rules.FirstOrDefault(r => r.EqualsWithKeys(proxy));
proxy.Id = matchedRule?.Id;
}
var pendingAdds = proxies.Where(x => x.Valid && x.Id == null);
var pendingUpdates =
from proxy in proxies
let exsist = rules.FirstOrDefault(r => r.Id == proxy.Id)
where exsist is not null
where proxy.Valid && proxy.Id is not null
select proxy;
Program.SqliteDbScope.AddRange(pendingAdds);
Program.SqliteDbScope.UpdateRange(pendingUpdates);
rules = Program.SqliteDbScope.Rules.ToArray();
InitProxyGroups(rules);
InitProxyItems(rules, proxies);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error Refreshing");
}
var pendingAdds = proxies.Where(x => x.Valid && x.Id == null);
var pendingUpdates =
from proxy in proxies
let exsist = rules.FirstOrDefault(r => r.Id == proxy.Id)
where exsist is not null
where proxy.Valid && proxy.Id is not null
select proxy;
Program.SqliteDbScope.AddRange(pendingAdds);
Program.SqliteDbScope.UpdateRange(pendingUpdates);
rules = Program.SqliteDbScope.Rules.ToArray();
InitProxyGroups(rules);
InitProxyItems(rules, proxies);
}
public void FlushDnsCache()
@ -248,6 +256,9 @@ namespace PortProxyGUI
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
RefreshProxyList();
break;
case ToolStripMenuItem item when item == toolStripMenuItem_RefreshPingStatus:
RefreshConnectHostPingStatus();
break;
case ToolStripMenuItem item when item == toolStripMenuItem_FlushDnsCache:
FlushDnsCache();
break;
@ -326,9 +337,8 @@ namespace PortProxyGUI
}
}
private void TimerPingTargets_Tick(object sender, EventArgs e)
private void RefreshConnectHostPingStatus()
{
TimerPingTargets.Stop();
try
{
var items = listViewProxies.Items.OfType<ListViewItem>();
@ -362,7 +372,6 @@ namespace PortProxyGUI
}
}
catch { }
TimerPingTargets.Start();
}
}
}

View File

@ -111,67 +111,85 @@
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="toolStripMenuItem_Enable.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_Enable.Text" xml:space="preserve">
<value>Enable (&amp;E)</value>
</data>
<data name="toolStripMenuItem_Enable.ToolTipText" xml:space="preserve">
<value>Enable current Proxy</value>
</data>
<data name="toolStripMenuItem_Disable.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_Disable.Text" xml:space="preserve">
<value>Disable (&amp;I)</value>
</data>
<data name="toolStripMenuItem_Disable.ToolTipText" xml:space="preserve">
<value>Disable Current Proxy</value>
</data>
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 6</value>
<value>177, 6</value>
</data>
<data name="toolStripMenuItem_Refresh.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_Refresh.Text" xml:space="preserve">
<value>Refresh (&amp;F)</value>
</data>
<data name="toolStripMenuItem_Refresh.ToolTipText" xml:space="preserve">
<value>Refresh Port Proxies</value>
</data>
<data name="toolStripMenuItem_RefreshPingStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_RefreshPingStatus.Text" xml:space="preserve">
<value>Refresh Ping Status</value>
</data>
<data name="toolStripMenuItem_RefreshPingStatus.ToolTipText" xml:space="preserve">
<value>Refresh Host Ping Statuses</value>
</data>
<data name="toolStripMenuItem_FlushDnsCache.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_FlushDnsCache.Text" xml:space="preserve">
<value>Flush DNS Cache</value>
</data>
<data name="toolStripMenuItem_FlushDnsCache.ToolTipText" xml:space="preserve">
<value>Will perform ipconfig/flushDNS</value>
<value>Click to perform ipconfig/flushDNS</value>
</data>
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 6</value>
<value>177, 6</value>
</data>
<data name="toolStripMenuItem_New.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_New.Text" xml:space="preserve">
<value>New (&amp;N) ...</value>
</data>
<data name="toolStripMenuItem_Modify.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_Modify.Text" xml:space="preserve">
<value>Modify (&amp;M) ...</value>
</data>
<data name="toolStripMenuItem_Delete.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_Delete.Text" xml:space="preserve">
<value>Delete (&amp;D)</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 6</value>
<value>177, 6</value>
</data>
<data name="toolStripMenuItem_About.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 22</value>
<value>180, 22</value>
</data>
<data name="toolStripMenuItem_About.Text" xml:space="preserve">
<value>About</value>
</data>
<data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 198</value>
<value>181, 242</value>
</data>
<data name="&gt;&gt;contextMenuStrip1.Name" xml:space="preserve">
<value>contextMenuStrip1</value>
@ -203,7 +221,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA3AgAAAJNU0Z0AUkBTAIBAQIB
AAFYAQEBWAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
AAFwAQEBcAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
AAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB
AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB
kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC
@ -258,9 +276,6 @@
<data name="&gt;&gt;listViewProxies.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="TimerPingTargets.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>324, 17</value>
</metadata>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -2512,6 +2527,12 @@
<data name="&gt;&gt;toolStripMenuItem_Refresh.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RefreshPingStatus.Name" xml:space="preserve">
<value>toolStripMenuItem_RefreshPingStatus</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_RefreshPingStatus.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripMenuItem_FlushDnsCache.Name" xml:space="preserve">
<value>toolStripMenuItem_FlushDnsCache</value>
</data>
@ -2560,12 +2581,6 @@
<data name="&gt;&gt;imageListProxies.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TimerPingTargets.Name" xml:space="preserve">
<value>TimerPingTargets</value>
</data>
<data name="&gt;&gt;TimerPingTargets.Type" xml:space="preserve">
<value>System.Windows.Forms.Timer, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PortProxyGUI</value>
</data>