diff --git a/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs b/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs index 5740954b..f6d9a3d6 100644 --- a/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs +++ b/shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs @@ -238,7 +238,7 @@ namespace Shadowsocks.Controller { AppendRecord(server.Identifier(), record); } - logger.Debug($"Ping {server.FriendlyName()} {e.RoundtripTime.Count} times, {(100 - record.PackageLoss * 100)}% packages loss, min {record.MinResponse} ms, max {record.MaxResponse} ms, avg {record.AverageResponse} ms"); + logger.Debug($"Ping {server} {e.RoundtripTime.Count} times, {(100 - record.PackageLoss * 100)}% packages loss, min {record.MinResponse} ms, max {record.MaxResponse} ms, avg {record.AverageResponse} ms"); if (Interlocked.Decrement(ref state.counter) == 0) { Save(); @@ -450,7 +450,7 @@ namespace Shadowsocks.Controller { try { - logger.Debug($"Ping {server.FriendlyName()}"); + logger.Debug($"Ping {server}"); if (ip == null) { ip = Dns.GetHostAddresses(server.server) @@ -466,7 +466,7 @@ namespace Shadowsocks.Controller } catch (Exception e) { - logger.Error($"An exception occured while eveluating {server.FriendlyName()}"); + logger.Error($"An exception occured while eveluating {server}"); logger.LogUsefulException(e); FireCompleted(e, userstate); } @@ -478,19 +478,19 @@ namespace Shadowsocks.Controller { if (e.Reply.Status == IPStatus.Success) { - logger.Debug($"Ping {server.FriendlyName()} {e.Reply.RoundtripTime} ms"); + logger.Debug($"Ping {server} {e.Reply.RoundtripTime} ms"); RoundtripTime.Add((int?)e.Reply.RoundtripTime); } else { - logger.Debug($"Ping {server.FriendlyName()} timeout"); + logger.Debug($"Ping {server} timeout"); RoundtripTime.Add(null); } TestNext(e.UserState); } catch (Exception ex) { - logger.Error($"An exception occured while eveluating {server.FriendlyName()}"); + logger.Error($"An exception occured while eveluating {server}"); logger.LogUsefulException(ex); FireCompleted(ex, e.UserState); } diff --git a/shadowsocks-csharp/Controller/Service/TCPRelay.cs b/shadowsocks-csharp/Controller/Service/TCPRelay.cs index 0653d8dd..f971c5a2 100644 --- a/shadowsocks-csharp/Controller/Service/TCPRelay.cs +++ b/shadowsocks-csharp/Controller/Service/TCPRelay.cs @@ -803,7 +803,7 @@ namespace Shadowsocks.Controller AsyncSession session = timer.Session; Server server = timer.Server; OnFailed?.Invoke(this, new SSRelayEventArgs(_server)); - Logger.Info($"{server.FriendlyName()} timed out"); + Logger.Info($"{server.ToString()} timed out"); session.Remote.Close(); Close(); } @@ -830,7 +830,7 @@ namespace Shadowsocks.Controller _destConnected = true; - Logger.Debug($"Socket connected to ss server: {_server.FriendlyName()}"); + Logger.Debug($"Socket connected to ss server: {_server.ToString()}"); TimeSpan latency = DateTime.Now - _startConnectTime; diff --git a/shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs b/shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs index 61356543..d19ea24a 100644 --- a/shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs +++ b/shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs @@ -114,7 +114,7 @@ namespace Shadowsocks.Controller.Strategy 100 * 1000 * Math.Min(5 * 60, (now - status.lastFailure).TotalSeconds) -2 * 5 * (Math.Min(2000, status.latency.TotalMilliseconds) / (1 + (now - status.lastTimeDetectLatency).TotalSeconds / 30 / 10) + -0.5 * 200 * Math.Min(5, (status.lastRead - status.lastWrite).TotalSeconds)); - logger.Debug(String.Format("server: {0} latency:{1} score: {2}", status.server.FriendlyName(), status.latency, status.score)); + logger.Debug(String.Format("server: {0} latency:{1} score: {2}", status.server.ToString(), status.latency, status.score)); } ServerStatus max = null; foreach (var status in servers) @@ -136,14 +136,14 @@ namespace Shadowsocks.Controller.Strategy if (_currentServer == null || max.score - _currentServer.score > 200) { _currentServer = max; - logger.Info($"HA switching to server: {_currentServer.server.FriendlyName()}"); + logger.Info($"HA switching to server: {_currentServer.server.ToString()}"); } } } public void UpdateLatency(Model.Server server, TimeSpan latency) { - logger.Debug($"latency: {server.FriendlyName()} {latency}"); + logger.Debug($"latency: {server.ToString()} {latency}"); ServerStatus status; if (_serverStatus.TryGetValue(server, out status)) @@ -155,7 +155,7 @@ namespace Shadowsocks.Controller.Strategy public void UpdateLastRead(Model.Server server) { - logger.Debug($"last read: {server.FriendlyName()}"); + logger.Debug($"last read: {server.ToString()}"); ServerStatus status; if (_serverStatus.TryGetValue(server, out status)) @@ -166,7 +166,7 @@ namespace Shadowsocks.Controller.Strategy public void UpdateLastWrite(Model.Server server) { - logger.Debug($"last write: {server.FriendlyName()}"); + logger.Debug($"last write: {server.ToString()}"); ServerStatus status; if (_serverStatus.TryGetValue(server, out status)) @@ -177,7 +177,7 @@ namespace Shadowsocks.Controller.Strategy public void SetFailure(Model.Server server) { - logger.Debug($"failure: {server.FriendlyName()}"); + logger.Debug($"failure: {server.ToString()}"); ServerStatus status; if (_serverStatus.TryGetValue(server, out status)) diff --git a/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs b/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs index 57f37989..a2d9bfc7 100644 --- a/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs +++ b/shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs @@ -109,7 +109,7 @@ namespace Shadowsocks.Controller.Strategy var bestResult = serversWithStatistics .Aggregate((server1, server2) => server1.score > server2.score ? server1 : server2); - LogWhenEnabled($"Switch to server: {bestResult.server.FriendlyName()} by statistics: score {bestResult.score}"); + LogWhenEnabled($"Switch to server: {bestResult.server.ToString()} by statistics: score {bestResult.score}"); _currentServer = bestResult.server; } catch (Exception e) @@ -147,7 +147,7 @@ namespace Shadowsocks.Controller.Strategy public void SetFailure(Server server) { - logger.Debug($"failure: {server.FriendlyName()}"); + logger.Debug($"failure: {server.ToString()}"); } public void UpdateLastRead(Server server) diff --git a/shadowsocks-csharp/Model/Server.cs b/shadowsocks-csharp/Model/Server.cs index 6e08f50e..f23cfd41 100755 --- a/shadowsocks-csharp/Model/Server.cs +++ b/shadowsocks-csharp/Model/Server.cs @@ -15,9 +15,8 @@ namespace Shadowsocks.Model public const int DefaultPort = 8388; #region ParseLegacyURL - public static readonly Regex - UrlFinder = new Regex(@"ss://(?[A-Za-z0-9+-/=_]+)(?:#(?\S+))?", RegexOptions.IgnoreCase), - DetailsParser = new Regex(@"^((?.+?):(?.*)@(?.+?):(?\d+?))$", RegexOptions.IgnoreCase); + private static readonly Regex UrlFinder = new Regex(@"ss://(?[A-Za-z0-9+-/=_]+)(?:#(?\S+))?", RegexOptions.IgnoreCase); + private static readonly Regex DetailsParser = new Regex(@"^((?.+?):(?.*)@(?.+?):(?\d+?))$", RegexOptions.IgnoreCase); #endregion ParseLegacyURL private const int DefaultServerTimeoutSec = 5; @@ -44,7 +43,7 @@ namespace Shadowsocks.Model return server == o2.server && server_port == o2.server_port; } - public string FriendlyName() + public override string ToString() { if (server.IsNullOrEmpty()) { diff --git a/shadowsocks-csharp/View/ConfigForm.cs b/shadowsocks-csharp/View/ConfigForm.cs index aa337e6e..47335b05 100755 --- a/shadowsocks-csharp/View/ConfigForm.cs +++ b/shadowsocks-csharp/View/ConfigForm.cs @@ -427,7 +427,7 @@ namespace Shadowsocks.View ServersListBox.Items.Clear(); foreach (Server server in configuration.configs) { - ServersListBox.Items.Add(server.FriendlyName()); + ServersListBox.Items.Add(server.ToString()); } } @@ -502,7 +502,7 @@ namespace Shadowsocks.View } if (_lastSelectedIndex >= 0 && _lastSelectedIndex < _modifiedConfiguration.configs.Count) { - ServersListBox.Items[_lastSelectedIndex] = _modifiedConfiguration.configs[_lastSelectedIndex].FriendlyName(); + ServersListBox.Items[_lastSelectedIndex] = _modifiedConfiguration.configs[_lastSelectedIndex].ToString(); } UpdateButtons(); LoadSelectedServerDetails(); diff --git a/shadowsocks-csharp/View/MenuViewController.cs b/shadowsocks-csharp/View/MenuViewController.cs index 89fde38a..64923b4b 100644 --- a/shadowsocks-csharp/View/MenuViewController.cs +++ b/shadowsocks-csharp/View/MenuViewController.cs @@ -172,7 +172,7 @@ namespace Shadowsocks.View } else { - serverInfo = config.GetCurrentServer().FriendlyName(); + serverInfo = config.GetCurrentServer().ToString(); } // show more info by hacking the P/Invoke declaration for NOTIFYICONDATA inside Windows Forms string text = I18N.GetString("Shadowsocks") + " " + UpdateChecker.Version + "\n" + @@ -478,7 +478,7 @@ namespace Shadowsocks.View { if (Configuration.ChecksServer(server)) { - MenuItem item = new MenuItem(server.FriendlyName()); + MenuItem item = new MenuItem(server.ToString()); item.Tag = configuration.configs.FindIndex(s => s == server); item.Click += AServerItem_Click; items.Add(strategyCount + serverCount, item); diff --git a/shadowsocks-csharp/View/QRCodeForm.cs b/shadowsocks-csharp/View/QRCodeForm.cs index 3275f378..9d178500 100755 --- a/shadowsocks-csharp/View/QRCodeForm.cs +++ b/shadowsocks-csharp/View/QRCodeForm.cs @@ -67,7 +67,7 @@ namespace Shadowsocks.View var servers = Configuration.Load(); var serverDatas = servers.configs.Select( server => - new KeyValuePair(ShadowsocksController.GetServerURL(server), server.FriendlyName()) + new KeyValuePair(ShadowsocksController.GetServerURL(server), server.ToString()) ).ToList(); listBox1.DataSource = serverDatas;