Skip to content

Commit d423a24

Browse files
authored
Merge pull request #2904 from studentmain/always-sip002
Always sip002
2 parents 2030163 + f6fcab4 commit d423a24

File tree

11 files changed

+166
-158
lines changed

11 files changed

+166
-158
lines changed

shadowsocks-csharp/Controller/Service/AvailabilityStatistics.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ private void ping_Completed(object sender, MyPing.CompletedEventArgs e)
238238
{
239239
AppendRecord(server.Identifier(), record);
240240
}
241-
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");
241+
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");
242242
if (Interlocked.Decrement(ref state.counter) == 0)
243243
{
244244
Save();
@@ -450,7 +450,7 @@ private void ICMPTest(int delay, object userstate)
450450
{
451451
try
452452
{
453-
logger.Debug($"Ping {server.FriendlyName()}");
453+
logger.Debug($"Ping {server}");
454454
if (ip == null)
455455
{
456456
ip = Dns.GetHostAddresses(server.server)
@@ -466,7 +466,7 @@ private void ICMPTest(int delay, object userstate)
466466
}
467467
catch (Exception e)
468468
{
469-
logger.Error($"An exception occured while eveluating {server.FriendlyName()}");
469+
logger.Error($"An exception occured while eveluating {server}");
470470
logger.LogUsefulException(e);
471471
FireCompleted(e, userstate);
472472
}
@@ -478,19 +478,19 @@ private void Ping_PingCompleted(object sender, PingCompletedEventArgs e)
478478
{
479479
if (e.Reply.Status == IPStatus.Success)
480480
{
481-
logger.Debug($"Ping {server.FriendlyName()} {e.Reply.RoundtripTime} ms");
481+
logger.Debug($"Ping {server} {e.Reply.RoundtripTime} ms");
482482
RoundtripTime.Add((int?)e.Reply.RoundtripTime);
483483
}
484484
else
485485
{
486-
logger.Debug($"Ping {server.FriendlyName()} timeout");
486+
logger.Debug($"Ping {server} timeout");
487487
RoundtripTime.Add(null);
488488
}
489489
TestNext(e.UserState);
490490
}
491491
catch (Exception ex)
492492
{
493-
logger.Error($"An exception occured while eveluating {server.FriendlyName()}");
493+
logger.Error($"An exception occured while eveluating {server}");
494494
logger.LogUsefulException(ex);
495495
FireCompleted(ex, e.UserState);
496496
}

shadowsocks-csharp/Controller/Service/TCPRelay.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ private void DestConnectTimer_Elapsed(object sender, ElapsedEventArgs e)
803803
AsyncSession session = timer.Session;
804804
Server server = timer.Server;
805805
OnFailed?.Invoke(this, new SSRelayEventArgs(_server));
806-
Logger.Info($"{server.FriendlyName()} timed out");
806+
Logger.Info($"{server.ToString()} timed out");
807807
session.Remote.Close();
808808
Close();
809809
}
@@ -830,7 +830,7 @@ private void ConnectCallback(IAsyncResult ar)
830830

831831
_destConnected = true;
832832

833-
Logger.Debug($"Socket connected to ss server: {_server.FriendlyName()}");
833+
Logger.Debug($"Socket connected to ss server: {_server.ToString()}");
834834

835835
TimeSpan latency = DateTime.Now - _startConnectTime;
836836

shadowsocks-csharp/Controller/ShadowsocksController.cs

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -371,48 +371,7 @@ public void TouchUserRuleFile()
371371

372372
public string GetServerURLForCurrentServer()
373373
{
374-
Server server = GetCurrentServer();
375-
return GetServerURL(server);
376-
}
377-
378-
public static string GetServerURL(Server server)
379-
{
380-
string tag = string.Empty;
381-
string url = string.Empty;
382-
383-
if (string.IsNullOrWhiteSpace(server.plugin))
384-
{
385-
// For backwards compatiblity, if no plugin, use old url format
386-
string parts = $"{server.method}:{server.password}@{server.server}:{server.server_port}";
387-
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(parts));
388-
url = base64;
389-
}
390-
else
391-
{
392-
// SIP002
393-
string parts = $"{server.method}:{server.password}";
394-
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(parts));
395-
string websafeBase64 = base64.Replace('+', '-').Replace('/', '_').TrimEnd('=');
396-
397-
string pluginPart = server.plugin;
398-
if (!string.IsNullOrWhiteSpace(server.plugin_opts))
399-
{
400-
pluginPart += ";" + server.plugin_opts;
401-
}
402-
403-
url = string.Format(
404-
"{0}@{1}:{2}/?plugin={3}",
405-
websafeBase64,
406-
server.FormatHostName(server.server),
407-
server.server_port,
408-
HttpUtility.UrlEncode(pluginPart, Encoding.UTF8));
409-
}
410-
411-
if (!server.remarks.IsNullOrEmpty())
412-
{
413-
tag = $"#{HttpUtility.UrlEncode(server.remarks, Encoding.UTF8)}";
414-
}
415-
return $"ss://{url}{tag}";
374+
return GetCurrentServer().GetURL(_config.generateLegacyUrl);
416375
}
417376

418377
public void UpdateStatisticsConfiguration(bool enabled)

shadowsocks-csharp/Controller/Strategy/HighAvailabilityStrategy.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public void ChooseNewServer()
114114
100 * 1000 * Math.Min(5 * 60, (now - status.lastFailure).TotalSeconds)
115115
-2 * 5 * (Math.Min(2000, status.latency.TotalMilliseconds) / (1 + (now - status.lastTimeDetectLatency).TotalSeconds / 30 / 10) +
116116
-0.5 * 200 * Math.Min(5, (status.lastRead - status.lastWrite).TotalSeconds));
117-
logger.Debug(String.Format("server: {0} latency:{1} score: {2}", status.server.FriendlyName(), status.latency, status.score));
117+
logger.Debug(String.Format("server: {0} latency:{1} score: {2}", status.server.ToString(), status.latency, status.score));
118118
}
119119
ServerStatus max = null;
120120
foreach (var status in servers)
@@ -136,14 +136,14 @@ public void ChooseNewServer()
136136
if (_currentServer == null || max.score - _currentServer.score > 200)
137137
{
138138
_currentServer = max;
139-
logger.Info($"HA switching to server: {_currentServer.server.FriendlyName()}");
139+
logger.Info($"HA switching to server: {_currentServer.server.ToString()}");
140140
}
141141
}
142142
}
143143

144144
public void UpdateLatency(Model.Server server, TimeSpan latency)
145145
{
146-
logger.Debug($"latency: {server.FriendlyName()} {latency}");
146+
logger.Debug($"latency: {server.ToString()} {latency}");
147147

148148
ServerStatus status;
149149
if (_serverStatus.TryGetValue(server, out status))
@@ -155,7 +155,7 @@ public void UpdateLatency(Model.Server server, TimeSpan latency)
155155

156156
public void UpdateLastRead(Model.Server server)
157157
{
158-
logger.Debug($"last read: {server.FriendlyName()}");
158+
logger.Debug($"last read: {server.ToString()}");
159159

160160
ServerStatus status;
161161
if (_serverStatus.TryGetValue(server, out status))
@@ -166,7 +166,7 @@ public void UpdateLastRead(Model.Server server)
166166

167167
public void UpdateLastWrite(Model.Server server)
168168
{
169-
logger.Debug($"last write: {server.FriendlyName()}");
169+
logger.Debug($"last write: {server.ToString()}");
170170

171171
ServerStatus status;
172172
if (_serverStatus.TryGetValue(server, out status))
@@ -177,7 +177,7 @@ public void UpdateLastWrite(Model.Server server)
177177

178178
public void SetFailure(Model.Server server)
179179
{
180-
logger.Debug($"failure: {server.FriendlyName()}");
180+
logger.Debug($"failure: {server.ToString()}");
181181

182182
ServerStatus status;
183183
if (_serverStatus.TryGetValue(server, out status))

shadowsocks-csharp/Controller/Strategy/StatisticsStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ where _filteredStatistics.ContainsKey(id)
109109
var bestResult = serversWithStatistics
110110
.Aggregate((server1, server2) => server1.score > server2.score ? server1 : server2);
111111

112-
LogWhenEnabled($"Switch to server: {bestResult.server.FriendlyName()} by statistics: score {bestResult.score}");
112+
LogWhenEnabled($"Switch to server: {bestResult.server.ToString()} by statistics: score {bestResult.score}");
113113
_currentServer = bestResult.server;
114114
}
115115
catch (Exception e)
@@ -147,7 +147,7 @@ public void ReloadServers()
147147

148148
public void SetFailure(Server server)
149149
{
150-
logger.Debug($"failure: {server.FriendlyName()}");
150+
logger.Debug($"failure: {server.ToString()}");
151151
}
152152

153153
public void UpdateLastRead(Server server)

shadowsocks-csharp/Model/Configuration.cs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace Shadowsocks.Model
1111
public class Configuration
1212
{
1313
[JsonIgnore]
14-
private static Logger logger = LogManager.GetCurrentClassLogger();
14+
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
1515

1616
public string version;
1717

@@ -24,21 +24,26 @@ public class Configuration
2424
public bool enabled;
2525
public bool shareOverLan;
2626
public bool isDefault;
27-
public bool isIPv6Enabled = false;
2827
public int localPort;
2928
public bool portableMode = true;
3029
public bool showPluginOutput;
3130
public string pacUrl;
32-
public string geositeUrl;
33-
public string geositeGroup = "geolocation-!cn";
34-
public bool geositeBlacklistMode = true;
3531

3632
public bool useOnlinePac;
3733
public bool secureLocalPac = true;
3834
public bool availabilityStatistics;
3935
public bool autoCheckUpdate;
4036
public bool checkPreRelease;
4137
public bool isVerboseLogging;
38+
39+
// hidden options
40+
public bool isIPv6Enabled = false; // for experimental ipv6 support
41+
public bool generateLegacyUrl = false; // for pre-sip002 url compatibility
42+
public string geositeUrl; // for custom geosite source (and rule group)
43+
public string geositeGroup = "geolocation-!cn";
44+
public bool geositeBlacklistMode = true;
45+
46+
4247
//public NLogConfig.LogLevel logLevel;
4348
public LogViewerConfig logViewer;
4449
public ProxyConfig proxy;
@@ -48,11 +53,10 @@ public class Configuration
4853
NLogConfig nLogConfig;
4954

5055
private static readonly string CONFIG_FILE = "gui-config.json";
51-
private static readonly NLogConfig.LogLevel verboseLogLevel =
5256
#if DEBUG
53-
NLogConfig.LogLevel.Trace;
57+
private static readonly NLogConfig.LogLevel verboseLogLevel = NLogConfig.LogLevel.Trace;
5458
#else
55-
NLogConfig.LogLevel.Debug;
59+
private static readonly NLogConfig.LogLevel verboseLogLevel = NLogConfig.LogLevel.Debug;
5660
#endif
5761

5862

@@ -194,9 +198,9 @@ public static void Save(Configuration config)
194198
sw.Flush();
195199
}
196200
try
197-
{
198-
// apply changs to NLog.config
199-
config.nLogConfig.SetLogLevel(config.isVerboseLogging? verboseLogLevel : NLogConfig.LogLevel.Info);
201+
{
202+
// apply changes to NLog.config
203+
config.nLogConfig.SetLogLevel(config.isVerboseLogging ? verboseLogLevel : NLogConfig.LogLevel.Info);
200204
NLogConfig.SaveXML(config.nLogConfig);
201205
}
202206
catch (Exception e)
@@ -212,7 +216,7 @@ public static void Save(Configuration config)
212216

213217
public static Server AddDefaultServerOrServer(Configuration config, Server server = null, int? index = null)
214218
{
215-
if (config != null && config.configs != null)
219+
if (config?.configs != null)
216220
{
217221
server = (server ?? GetDefaultServer());
218222

@@ -231,12 +235,6 @@ public static Server GetDefaultServer()
231235
return new Server();
232236
}
233237

234-
private static void Assert(bool condition)
235-
{
236-
if (!condition)
237-
throw new Exception(I18N.GetString("assertion failure"));
238-
}
239-
240238
public static void CheckPort(int port)
241239
{
242240
if (port <= 0 || port > 65535)

0 commit comments

Comments
 (0)