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 int ConnectPort { get; set; }
public string Comment { get; set; } public string Comment { get; set; }
public string Group { 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; public bool Valid => ListenPort > 0 && ConnectPort > 0;

View File

@ -44,6 +44,7 @@
this.toolStripMenuItem_Disable = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem_Disable = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_Refresh = new System.Windows.Forms.ToolStripMenuItem(); 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.toolStripMenuItem_FlushDnsCache = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_New = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem_New = new System.Windows.Forms.ToolStripMenuItem();
@ -52,7 +53,6 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItem_About = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem_About = new System.Windows.Forms.ToolStripMenuItem();
this.imageListProxies = new System.Windows.Forms.ImageList(this.components); this.imageListProxies = new System.Windows.Forms.ImageList(this.components);
this.TimerPingTargets = new System.Windows.Forms.Timer(this.components);
this.contextMenuStrip1.SuspendLayout(); this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -122,6 +122,7 @@
this.toolStripMenuItem_Disable, this.toolStripMenuItem_Disable,
this.toolStripSeparator3, this.toolStripSeparator3,
this.toolStripMenuItem_Refresh, this.toolStripMenuItem_Refresh,
this.toolStripMenuItem_RefreshPingStatus,
this.toolStripMenuItem_FlushDnsCache, this.toolStripMenuItem_FlushDnsCache,
this.toolStripSeparator2, this.toolStripSeparator2,
this.toolStripMenuItem_New, this.toolStripMenuItem_New,
@ -153,6 +154,11 @@
this.toolStripMenuItem_Refresh.Name = "toolStripMenuItem_Refresh"; this.toolStripMenuItem_Refresh.Name = "toolStripMenuItem_Refresh";
resources.ApplyResources(this.toolStripMenuItem_Refresh, "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 // toolStripMenuItem_FlushDnsCache
// //
this.toolStripMenuItem_FlushDnsCache.Name = "toolStripMenuItem_FlushDnsCache"; this.toolStripMenuItem_FlushDnsCache.Name = "toolStripMenuItem_FlushDnsCache";
@ -196,12 +202,6 @@
this.imageListProxies.Images.SetKeyName(0, "disable.png"); this.imageListProxies.Images.SetKeyName(0, "disable.png");
this.imageListProxies.Images.SetKeyName(1, "enable.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 // PortProxyGUI
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -238,7 +238,7 @@
internal System.Windows.Forms.ListView listViewProxies; internal System.Windows.Forms.ListView listViewProxies;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_FlushDnsCache; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_FlushDnsCache;
private System.Windows.Forms.ColumnHeader columnPingStatus; 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", Tag ="Connect To Ping Status",
ForeColor = rule.PingStatus.Equals("Success") ? Color.Green ForeColor = rule.PingStatus.Equals("Success") ? Color.Green
: rule.PingStatus.Equals("Checking...") ? Color.DarkGray : rule.PingStatus.Equals("Pending") ? Color.DarkGray
: Color.MediumVioletRed : Color.MediumVioletRed
}, },
new ListViewSubItem(item, rule.Comment ?? string.Empty) new ListViewSubItem(item, rule.Comment ?? string.Empty)
@ -183,28 +183,36 @@ namespace PortProxyGUI
public void RefreshProxyList() public void RefreshProxyList()
{ {
var proxies = CmdUtil.GetProxies(); try
var rules = Program.SqliteDbScope.Rules.ToArray();
foreach (var proxy in proxies)
{ {
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() public void FlushDnsCache()
@ -248,6 +256,9 @@ namespace PortProxyGUI
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh: case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
RefreshProxyList(); RefreshProxyList();
break; break;
case ToolStripMenuItem item when item == toolStripMenuItem_RefreshPingStatus:
RefreshConnectHostPingStatus();
break;
case ToolStripMenuItem item when item == toolStripMenuItem_FlushDnsCache: case ToolStripMenuItem item when item == toolStripMenuItem_FlushDnsCache:
FlushDnsCache(); FlushDnsCache();
break; break;
@ -326,9 +337,8 @@ namespace PortProxyGUI
} }
} }
private void TimerPingTargets_Tick(object sender, EventArgs e) private void RefreshConnectHostPingStatus()
{ {
TimerPingTargets.Stop();
try try
{ {
var items = listViewProxies.Items.OfType<ListViewItem>(); var items = listViewProxies.Items.OfType<ListViewItem>();
@ -362,7 +372,6 @@ namespace PortProxyGUI
} }
} }
catch { } catch { }
TimerPingTargets.Start();
} }
} }
} }

View File

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