public static void UpdateServer(SubscribeLink item, string proxyServer) { try { if (!item.Enable) { return; } var request = WebUtil.CreateRequest(item.Link); if (!string.IsNullOrEmpty(item.UserAgent)) { request.UserAgent = item.UserAgent; } if (!string.IsNullOrEmpty(proxyServer)) { request.Proxy = new WebProxy(proxyServer); } List <Server> servers; var result = WebUtil.DownloadString(request, out var rep); if (rep.StatusCode == HttpStatusCode.OK) { servers = ShareLink.ParseText(result); } else { throw new Exception($"{item.Remark} Response Status Code: {rep.StatusCode}"); } foreach (var server in servers) { server.Group = item.Remark; } lock (ServerLock) { Global.Settings.Server.RemoveAll(server => server.Group.Equals(item.Remark)); Global.Settings.Server.AddRange(servers); } Global.MainForm.NotifyTip(i18N.TranslateFormat("Update {1} server(s) from {0}", item.Remark, servers.Count)); } catch (Exception e) { Global.MainForm.NotifyTip($"{i18N.TranslateFormat("Update servers error from {0}", item.Remark)}\n{e.Message}", info: false); Logging.Error(e.ToString()); } }
private void AddButton_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(RemarkTextBox.Text)) { MessageBoxX.Show(i18N.Translate("Remark can not be empty")); return; } if (string.IsNullOrWhiteSpace(LinkTextBox.Text)) { MessageBoxX.Show(i18N.Translate("Link can not be empty")); return; } if (!LinkTextBox.Text.StartsWith("HTTP://", StringComparison.OrdinalIgnoreCase) && !LinkTextBox.Text.StartsWith("HTTPS://", StringComparison.OrdinalIgnoreCase)) { MessageBoxX.Show(i18N.Translate("Link must start with http:// or https://")); return; } // 备注重复的订阅项 var duplicateRemarkItems = Global.Settings.SubscribeLink.Where(link => link.Remark.Equals(RemarkLabel.Text)); // 链接重复的订阅项 SubscribeLink duplicateLinkItem = null; try { duplicateLinkItem = Global.Settings.SubscribeLink.First(link => link.Link.Equals(LinkTextBox.Text)); } catch { // ignored } if (duplicateRemarkItems.Any()) { MessageBoxX.Show("Remark Name Duplicate!"); return; } if (duplicateLinkItem != null) { if (duplicateLinkItem.Remark != RemarkTextBox.Text) { RenameServersGroup(duplicateLinkItem.Remark, RemarkTextBox.Text); } duplicateLinkItem.Remark = RemarkTextBox.Text; duplicateLinkItem.UserAgent = UserAgentTextBox.Text; } else if (_editingIndex != -1) { // 只修改备注/未修改被上面处理 var target = Global.Settings.SubscribeLink[_editingIndex]; if (MessageBox.Show(i18N.Translate("Delete the corresponding group of items in the server list?"), i18N.Translate("Confirm"), MessageBoxButtons.YesNo) == DialogResult.Yes) { DeleteServersInGroup(target.Remark); } else { RenameServersGroup(target.Remark, RemarkTextBox.Text); } target.Link = LinkTextBox.Text; target.Remark = RemarkTextBox.Text; target.UserAgent = UserAgentTextBox.Text; } else { Global.Settings.SubscribeLink.Add(new SubscribeLink { Remark = RemarkTextBox.Text, Link = LinkTextBox.Text, UserAgent = UserAgentTextBox.Text }); } Configuration.Save(); Global.Settings.UseProxyToUpdateSubscription = UseSelectedServerCheckBox.Checked; // MessageBoxX.Show(i18N.Translate("Saved")); ResetEditingGroup(); InitSubscribeLink(); }