private int _autoConfigRetryCount;\r
private readonly Timer _timer = new Timer {Interval = 1000};\r
private bool _initiated;\r
+ private DateTime _pacFileTime;\r
\r
public ProxyManager(Config config, Control parent)\r
{\r
\r
private void SetAutoConfigUrl()\r
{\r
- var count = _autoConfigRetryCount == 0 ? "" : _autoConfigRetryCount.ToString();\r
+ var suffix = (DateTime.Now - _pacFileTime < TimeSpan.FromHours(6)\r
+ ? (int)_pacFileTime.TimeOfDay.TotalSeconds\r
+ : 0) + _autoConfigRetryCount;\r
_systemProxy.SetAutoConfigUrl(\r
- $"http://localhost:{_config.Proxy.Listen}/proxy{count}.pac");\r
+ $"http://localhost:{_config.Proxy.Listen}/proxy{(suffix == 0 ? "" : suffix.ToString("x"))}.pac");\r
}\r
\r
private void RestoreSystemProxy()\r
\r
public void UpdatePacFile()\r
{\r
- var request = (HttpWebRequest)WebRequest.Create("https://kancollesniffer.osdn.jp/proxy.pac");\r
- if (File.Exists("proxy.pac"))\r
+ var pacFile = "proxy.pac";\r
+ var request = (HttpWebRequest)WebRequest.Create($"https://kancollesniffer.osdn.jp/{pacFile}");\r
+ if (File.Exists(pacFile))\r
{\r
- var date = File.GetLastWriteTime("proxy.pac");\r
- request.IfModifiedSince = date;\r
+ _pacFileTime = File.GetLastWriteTime(pacFile);\r
+ request.IfModifiedSince = _pacFileTime;\r
}\r
try\r
{\r
using (var stream = response.GetResponseStream())\r
stream?.CopyTo(mem);\r
mem.Position = 0;\r
- using (var file = new FileStream("proxy.pac", FileMode.Create))\r
+ using (var file = new FileStream(pacFile, FileMode.Create))\r
mem.CopyTo(file);\r
+ _pacFileTime = File.GetLastWriteTime(pacFile);\r
}\r
// ReSharper disable once EmptyGeneralCatchClause\r
catch\r