示例#1
0
        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());
            }
        }
示例#2
0
        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();
        }