From c857c2a72c5d208def55288bdb7cb4fc4f89c15c Mon Sep 17 00:00:00 2001 From: Bruce Wayne Date: Wed, 22 Jan 2020 23:09:40 +0800 Subject: [PATCH] Add shadowsocks subscription support --- Netch/Models/SS/ShadowsocksServer.cs | 13 ++++++++++++ Netch/Utils/ShareLink.cs | 31 ++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 Netch/Models/SS/ShadowsocksServer.cs diff --git a/Netch/Models/SS/ShadowsocksServer.cs b/Netch/Models/SS/ShadowsocksServer.cs new file mode 100644 index 00000000..00c36322 --- /dev/null +++ b/Netch/Models/SS/ShadowsocksServer.cs @@ -0,0 +1,13 @@ +namespace Netch.Models.SS +{ + public class ShadowsocksServer + { + public string server { get; set; } + public int server_port { get; set; } + public string password { get; set; } + public string method { get; set; } + public string remarks { get; set; } + public string plugin { get; set; } + public string plugin_opts { get; set; } + } +} \ No newline at end of file diff --git a/Netch/Utils/ShareLink.cs b/Netch/Utils/ShareLink.cs index a8c5e298..f84379a7 100644 --- a/Netch/Utils/ShareLink.cs +++ b/Netch/Utils/ShareLink.cs @@ -1,9 +1,13 @@ using Netch.Models; +using Netch.Models.SS; +using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Web; +using VMess = Netch.Models.VMess; namespace Netch.Utils { @@ -24,14 +28,33 @@ namespace Netch.Utils var list = new List(); try { - foreach (var line in text.GetLines()) + try { - var servers = ParseLine(line); - if (line != null) + var ssServers = JsonConvert.DeserializeObject>(text); + list.AddRange(ssServers.Select(shadowsocksServer => new Server { - list.AddRange(servers); + Type = "SS", + Hostname = shadowsocksServer.server, + Port = shadowsocksServer.server_port, + EncryptMethod = shadowsocksServer.method, + Password = shadowsocksServer.password, + Remark = shadowsocksServer.remarks, + Plugin = shadowsocksServer.plugin, + PluginOption = shadowsocksServer.plugin_opts + })); + } + catch (JsonReaderException) + { + foreach (var line in text.GetLines()) + { + var servers = ParseLine(line); + if (line != null) + { + list.AddRange(servers); + } } } + if (list.Count == 0) { System.Windows.Forms.MessageBox.Show(@"未找到可导入的链接!", @"错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);