/// <summary> /// 批量添加服务器 /// </summary> /// <param name="config"></param> /// <param name="clipboardData"></param> /// <param name="subid"></param> /// <returns>成功导入的数量</returns> private static int AddBatchServers(ref Config config, string clipboardData, string subid, List <VmessItem> lstOriSub, string groupId) { if (Utils.IsNullOrEmpty(clipboardData)) { return(-1); } //copy sub items if (!Utils.IsNullOrEmpty(subid)) { RemoveServerViaSubid(ref config, subid); } //if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess")) //{ // clipboardData = clipboardData.Replace("\r\n", "").Replace("\n", ""); //} int countServers = 0; //string[] arrData = clipboardData.Split(new string[] { "\r\n" }, StringSplitOptions.None); string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray()); foreach (string str in arrData) { //maybe sub if (Utils.IsNullOrEmpty(subid) && (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol))) { if (AddSubItem(ref config, str) == 0) { countServers++; } continue; } VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(str, out string msg); if (vmessItem == null) { continue; } //exist sub items if (!Utils.IsNullOrEmpty(subid)) { var existItem = lstOriSub?.FirstOrDefault(t => CompareVmessItem(t, vmessItem, true)); if (existItem != null) { vmessItem = existItem; } vmessItem.subid = subid; } //groupId vmessItem.groupId = groupId; if (vmessItem.configType == EConfigType.Vmess) { if (AddServer(ref config, vmessItem, false) == 0) { countServers++; } } else if (vmessItem.configType == EConfigType.Shadowsocks) { if (AddShadowsocksServer(ref config, vmessItem, false) == 0) { countServers++; } } else if (vmessItem.configType == EConfigType.Socks) { if (AddSocksServer(ref config, vmessItem, false) == 0) { countServers++; } } else if (vmessItem.configType == EConfigType.Trojan) { if (AddTrojanServer(ref config, vmessItem, false) == 0) { countServers++; } } else if (vmessItem.configType == EConfigType.VLESS) { if (AddVlessServer(ref config, vmessItem, false) == 0) { countServers++; } } } ToJsonFile(config); return(countServers); }
/// <summary> /// 批量添加服务器 /// </summary> /// <param name="config"></param> /// <param name="clipboardData"></param> /// <param name="subid"></param> /// <returns>成功导入的数量</returns> public static int AddBatchServers(ref Config config, string clipboardData, string subid = "") { if (Utils.IsNullOrEmpty(clipboardData)) { return(-1); } //if (clipboardData.IndexOf("vmess") >= 0 && clipboardData.IndexOf("vmess") == clipboardData.LastIndexOf("vmess")) //{ // clipboardData = clipboardData.Replace("\r\n", "").Replace("\n", ""); //} int countServers = 0; //string[] arrData = clipboardData.Split(new string[] { "\r\n" }, StringSplitOptions.None); string[] arrData = clipboardData.Split(Environment.NewLine.ToCharArray()); foreach (string str in arrData) { //maybe sub if (str.StartsWith(Global.httpsProtocol) || str.StartsWith(Global.httpProtocol)) { if (AddSubItem(ref config, str) == 0) { countServers++; } continue; } VmessItem vmessItem = ShareHandler.ImportFromClipboardConfig(str, out string msg); if (vmessItem == null) { continue; } vmessItem.subid = subid; if (vmessItem.configType == (int)EConfigType.Vmess) { if (AddServer(ref config, vmessItem, -1, false) == 0) { countServers++; } } else if (vmessItem.configType == (int)EConfigType.Shadowsocks) { if (AddShadowsocksServer(ref config, vmessItem, -1, false) == 0) { countServers++; } } else if (vmessItem.configType == (int)EConfigType.Socks) { if (AddSocksServer(ref config, vmessItem, -1, false) == 0) { countServers++; } } else if (vmessItem.configType == (int)EConfigType.Trojan) { if (AddTrojanServer(ref config, vmessItem, -1, false) == 0) { countServers++; } } else if (vmessItem.configType == (int)EConfigType.VLESS) { if (AddVlessServer(ref config, vmessItem, -1, false) == 0) { countServers++; } } } ToJsonFile(config); return(countServers); }