Пример #1
0
        public void AddNewServer()
        {
            if (!Flush())
            {
                return;
            }

            if (!servers.AddServer(Misc.Utils.Config2String(config), ""))
            {
                MessageBox.Show(I18N.DuplicateServer);
            }

            var uid = servers.GetAllServersOrderByIndex()
                      ?.FirstOrDefault(s =>
            {
                try
                {
                    var o = ParseConfigString(s.GetConfiger()?.GetConfig());
                    return(JObject.DeepEquals(config, o));
                }
                catch { }
                return(false);
            })
                      ?.GetCoreStates()
                      ?.GetUid();

            LoadConfigByUid(uid);
        }
Пример #2
0
        private void FormBatchModifyServerInfo_Shown(object sender, EventArgs e)
        {
            this.cboxMark.Items.Clear();
            foreach (var mark in servers.GetMarkList())
            {
                this.cboxMark.Items.Add(mark);
            }

            var firstCtrl = servers
                            .GetAllServersOrderByIndex()
                            .Where(s => s.GetCoreStates().IsSelected())
                            .FirstOrDefault();

            if (firstCtrl == null)
            {
                return;
            }

            var first = firstCtrl.GetCoreStates().GetAllRawCoreInfo();

            this.cboxInMode.SelectedIndex             = first.customInbType;
            this.tboxInIP.Text                        = first.inbIp;
            this.tboxInPort.Text                      = first.inbPort.ToString();
            this.cboxMark.Text                        = first.customMark;
            this.cboxAutorun.SelectedIndex            = first.isAutoRun ? 0 : 1;
            this.cboxImport.SelectedIndex             = first.isInjectImport ? 0 : 1;
            this.cboxIsInjectSkipCNSite.SelectedIndex = first.isInjectSkipCNSite ? 0 : 1;
        }
Пример #3
0
        void ClearSelectedServersSpeedTestResults()
        {
            var servs = servers
                        .GetAllServersOrderByIndex()
                        .Where(s => s.GetCoreStates().IsSelected())
                        .ToList();

            foreach (var serv in servs)
            {
                var cst = serv.GetCoreStates();
                cst.SetSpeedTestResult(0);
            }
        }
Пример #4
0
        void SetServerItemsIndex(double index)
        {
            servers.GetAllServersOrderByIndex()
            .Where(s => s.GetCoreStates().IsSelected())
            .Select(s =>
            {
                s.GetCoreStates().SetIndex(index);
                return(true);
            })
            .ToList();     // force linq to execute

            RemoveAllControlsAndRefreshFlyPanel();
        }
Пример #5
0
        void ClearSelectedServersStatRecord()
        {
            var servs = servers
                        .GetAllServersOrderByIndex()
                        .Where(s => s.GetCoreStates().IsSelected())
                        .ToList();

            foreach (var serv in servs)
            {
                var cst = serv.GetCoreStates();
                cst.SetDownlinkTotal(0);
                cst.SetUplinkTotal(0);
            }
        }
Пример #6
0
        void RefreshServerList()
        {
            ClearServerList();
            var summaryList = new List <string>();
            var allServers  = servers.GetAllServersOrderByIndex();

            foreach (var serv in allServers)
            {
                var summary = serv.GetCoreStates().GetTitle();
                var config  = serv.GetConfiger().GetConfig();
                summaryList.Add(summary);
                this.serverList.Add(config);
            }

            VgcApis.Misc.UI.RunInUiThread(cboxServList,
                                          () =>
            {
                cboxServList.Items.Clear();
                cboxServList.Items.AddRange(summaryList.ToArray());
                Misc.UI.ResetComboBoxDropdownMenuWidth(cboxServList);

                if (summaryList.Count <= 0)
                {
                    cboxServList.SelectedIndex = -1;
                    return;
                }

                var oldIndex = servIndex;
                servIndex    = -1;
                cboxServList.SelectedIndex = VgcApis.Misc.Utils.Clamp(
                    oldIndex, 0, summaryList.Count);
            });
        }
Пример #7
0
        public string GetUid()
        {
            bool refresh = false;

            lock (genUidLocker)
            {
                if (string.IsNullOrEmpty(coreInfo.uid))
                {
                    var uidList = servers.GetAllServersOrderByIndex()
                                  .Select(s => s.GetCoreStates().GetRawUid())
                                  .ToList();

                    string newUid;
                    do
                    {
                        newUid = VgcApis.Misc.Utils.RandomHex(16);
                    } while (uidList.Contains(newUid));

                    coreInfo.uid = newUid;
                    refresh      = true;
                }
            }

            if (refresh)
            {
                GetParent().InvokeEventOnPropertyChange();
            }
            return(coreInfo.uid);
        }
Пример #8
0
        void ServerMenuItemsUpdateWorker()
        {
            var loadServMiList    = new List <ToolStripMenuItem>();
            var replaceServMiList = new List <ToolStripMenuItem>();

            try
            {
                var serverList = servers.GetAllServersOrderByIndex();



                for (int i = 0; i < serverList.Count; i++)
                {
                    var coreServ  = serverList[i];
                    var coreState = coreServ.GetCoreStates();

                    var name = string.Format(
                        "{0}.{1}",
                        coreState.GetIndex(),
                        coreState.GetLongName());


                    var org = coreServ.GetConfiger().GetConfig();
                    loadServMiList.Add(GenMenuItemLoad(name, org));
                    replaceServMiList.Add(GenMenuItemReplace(name, org));
                }
            }
            catch
            {
                return;
            }

            VgcApis.Misc.UI.Invoke(
                () => ReplaceOldMenus(loadServMiList, replaceServMiList));
        }
Пример #9
0
        void SelectCurPageWhere(Func <Views.UserControls.ServerUI, bool> condiction)
        {
            var panel   = GetFlyPanel();
            var configs = panel.GetFilteredList().Select(s => s.GetConfiger().GetConfig());

            // clear all not in current filtered list
            servers.GetAllServersOrderByIndex()
            .Where(s => !configs.Contains(s.GetConfiger().GetConfig()))
            .Select(s =>
            {
                s.GetCoreStates().SetIsSelected(false);
                return(true);
            })
            .ToList();

            panel.LoopThroughAllServerUI(s =>
            {
                s.SetSelected(condiction(s));
            });
        }
Пример #10
0
 void UpdateServerTotalNow()
 {
     VgcApis.Misc.UI.RunInUiThreadIgnoreError(
         lbTotal,
         () =>
     {
         var alias   = tboxAlias.Text;
         var coreNum = servers.GetAllServersOrderByIndex()
                       .Select(s => s.GetCoreStates())
                       .Where(cfg => cfg.GetMark() == alias)
                       .Count();
         lbTotal.Text      = $"{I18N.TotalNum}{coreNum}";
         lbTotal.ForeColor = coreNum == 0 ? Color.Red : Color.DarkGray;
     });
 }
Пример #11
0
        public List <VgcApis.Interfaces.ICoreServCtrl> GetFilteredList()
        {
            var list    = servers.GetAllServersOrderByIndex();
            var keyword = searchKeywords?.Replace(@" ", "");

            if (string.IsNullOrEmpty(keyword))
            {
                return(list.ToList());
            }

            return(list
                   .Where(serv => serv.GetCoreStates().GetterInfoForSearch(
                              infos => infos.Any(
                                  info => VgcApis.Misc.Utils.PartialMatchCi(info, keyword))))
                   .ToList());
        }
Пример #12
0
        List <string[]> CollectServNameAndUid()
        {
            var serverList = servers.GetAllServersOrderByIndex();
            var servInfos  = new List <string[]>();

            for (int i = 0; i < serverList.Count; i++)
            {
                var coreServ  = serverList[i];
                var coreState = coreServ.GetCoreStates();

                var name = string.Format(
                    "{0}.{1}",
                    coreState.GetIndex(),
                    coreState.GetLongName());

                var uid = coreServ.GetCoreStates().GetUid();
                servInfos.Add(new string[] { name, uid });
            }
            return(servInfos);
        }
Пример #13
0
        public void ExportAllServersToTextFile()
        {
            if (this.servers.IsEmpty())
            {
                MessageBox.Show(I18N.NoServerAvailable);
                return;
            }

            var    serverList = servers.GetAllServersOrderByIndex();
            string s          = string.Empty;

            foreach (var server in serverList)
            {
                var vlink = Misc.Utils.AddLinkPrefix(
                    Misc.Utils.Base64Encode(server.GetConfiger().GetConfig()),
                    VgcApis.Models.Datas.Enums.LinkTypes.v2cfg);

                s += vlink + System.Environment.NewLine + System.Environment.NewLine;
            }

            VgcApis.Misc.UI.SaveToFile(VgcApis.Models.Consts.Files.TxtExt, s);
        }
Пример #14
0
        Dictionary <string, int> CountServMarks()
        {
            var r = new Dictionary <string, int>();

            var servs = servers.GetAllServersOrderByIndex();
            var marks = servs.Select(serv => serv.GetCoreStates().GetMark()).ToList();

            foreach (var mark in marks)
            {
                if (string.IsNullOrEmpty(mark))
                {
                    continue;
                }

                if (!r.ContainsKey(mark))
                {
                    r[mark] = 0;
                }

                r[mark]++;
            }
            return(r);
        }
Пример #15
0
        void UpdateServerMenus()
        {
            var serverList = servers.GetAllServersOrderByIndex();

            var loadServMiList    = new List <ToolStripMenuItem>();
            var replaceServMiList = new List <ToolStripMenuItem>();

            for (int i = 0; i < serverList.Count; i++)
            {
                var coreServ  = serverList[i];
                var coreState = coreServ.GetCoreStates();

                var name = string.Format(
                    "{0}.{1}",
                    coreState.GetIndex(),
                    coreState.GetLongName());


                var org = coreServ.GetConfiger().GetConfig();
                loadServMiList.Add(GenMenuItemLoad(name, org));
                replaceServMiList.Add(GenMenuItemReplace(name, org));
            }

            VgcApis.Misc.UI.RunInUiThread(
                formConfiger,
                () =>
            {
                try
                {
                    ReplaceOldMenus(loadServMiList, replaceServMiList);
                }
                catch
                {
                    // Do not hurt me.
                }
            });
        }
Пример #16
0
        Dictionary <string, int> CountServMarks()
        {
            var r = new Dictionary <string, int>();

            var servs = servers.GetAllServersOrderByIndex();

            foreach (var serv in servs)
            {
                var cst  = serv.GetCoreStates();
                var mark = cst.GetMark();
                if (string.IsNullOrEmpty(mark))
                {
                    continue;
                }
                if (!r.ContainsKey(mark))
                {
                    r[mark] = 0;
                }

                r[mark]++;
            }

            return(r);
        }