Exemplo n.º 1
0
        public void UpdateTrackerSettingNow()
        {
            var fakeCtrl = new Controller.CoreServerCtrl(
                new VgcApis.Models.Datas.CoreInfo());

            ServerTrackingUpdateWorker(fakeCtrl, false);
        }
Exemplo n.º 2
0
        public bool AddServer(string config, string mark, bool quiet = false)
        {
            // duplicate
            if (IsServerItemExist(config))
            {
                return(false);
            }

            var newServer = new Controller.CoreServerCtrl()
            {
                config = config,
                mark   = mark,
            };

            lock (serverListWriteLock)
            {
                serverList.Add(newServer);
            }

            newServer.Run(cache, setting, this);
            BindEventsTo(newServer);

            if (!quiet)
            {
                newServer.UpdateSummaryThen(() =>
                {
                    InvokeEventOnRequireMenuUpdate(this, EventArgs.Empty);
                    InvokeEventOnRequireFlyPanelUpdate();
                });
            }

            setting.LazyGC();
            LazySaveServerList();
            return(true);
        }
Exemplo n.º 3
0
        void BindEventsTo(Controller.CoreServerCtrl server)
        {
            server.OnCoreClosing += InvokeEventOnCoreClosingIgnoreError;
            server.OnCoreStart   += OnTrackCoreStartHandler;
            server.OnCoreStop    += OnTrackCoreStopHandler;

            server.OnPropertyChanged += InvokeEventOnServerPropertyChange;
        }
Exemplo n.º 4
0
        void ReleaseEventsFrom(Controller.CoreServerCtrl server)
        {
            server.OnCoreClosing -= InvokeEventOnCoreClosingIgnoreError;
            server.OnCoreStart   -= OnTrackCoreStartHandler;
            server.OnCoreStop    -= OnTrackCoreStopHandler;

            server.OnPropertyChanged -= InvokeEventOnServerPropertyChange;
        }
Exemplo n.º 5
0
 void BindEventsTo(Controller.CoreServerCtrl server)
 {
     server.OnCoreClosing            += InvokeEventOnCoreClosing;
     server.OnRequireKeepTrack       += OnRequireKeepTrackHandler;
     server.OnPropertyChanged        += ServerItemPropertyChangedHandler;
     server.OnRequireMenuUpdate      += InvokeEventOnRequireMenuUpdate;
     server.OnRequireStatusBarUpdate += InvokeEventOnRequireStatusBarUpdate;
     server.OnRequireNotifierUpdate  += LazyUpdateNotifyTextHandler;
 }
Exemplo n.º 6
0
 void ReleaseEventsFrom(Controller.CoreServerCtrl server)
 {
     server.OnCoreClosing            -= InvokeEventOnCoreClosing;
     server.OnRequireKeepTrack       -= OnRequireKeepTrackHandler;
     server.OnPropertyChanged        -= ServerItemPropertyChangedHandler;
     server.OnRequireMenuUpdate      -= InvokeEventOnRequireMenuUpdate;
     server.OnRequireStatusBarUpdate -= InvokeEventOnRequireStatusBarUpdate;
     server.OnRequireNotifierUpdate  -= LazyUpdateNotifyTextHandler;
 }
Exemplo n.º 7
0
        void LazyServerTrackUpdateWorker(
            Controller.CoreServerCtrl servCtrl,
            bool isStart)
        {
            var curTrackerSetting = GenCurTrackerSetting(servCtrl.config, isStart);

            setting.SaveServerTrackerSetting(curTrackerSetting);
            return;
        }
Exemplo n.º 8
0
        public void UpdateTrackerSettingNow()
        {
            var fakeCtrl = new Controller.CoreServerCtrl
            {
                config = "",
            };

            LazyServerTrackUpdateWorker(fakeCtrl, false);
        }
Exemplo n.º 9
0
        public bool AddServer(string config, string mark, bool quiet = false)
        {
            // first check
            if (IsServerExist(config))
            {
                return(false);
            }

            var coreInfo = new VgcApis.Models.Datas.CoreInfo
            {
                foldingLevel       = setting.CustomDefImportIsFold ? 1 : 0,
                isInjectImport     = setting.CustomDefImportGlobalImport,
                isInjectSkipCNSite = setting.CustomDefImportBypassCnSite,
                customInbType      = setting.CustomDefImportMode,
                inbIp      = setting.CustomDefImportIp,
                inbPort    = setting.CustomDefImportPort,
                config     = config,
                customMark = mark,
            };

            var newServer = new Controller.CoreServerCtrl(coreInfo);

            newServer.Run(cache, setting, configMgr, this);

            bool duplicated = true;

            lock (serverListWriteLock)
            {
                // double check
                if (!IsServerExist(config))
                {
                    coreServList.Add(newServer);
                    duplicated = false;
                }
            }

            if (duplicated)
            {
                newServer.Dispose();
                return(false);
            }

            BindEventsTo(newServer);
            if (!quiet)
            {
                newServer.GetConfiger().UpdateSummaryThen(() =>
                {
                    // UpdateSummaryThen will invoke OnServerPropertyChange.
                    InvokeEventOnServerCountChange(this, EventArgs.Empty);
                    RequireFormMainUpdate();
                });
            }
            setting.LazyGC();
            serverSaver.DoItLater();
            return(true);
        }
Exemplo n.º 10
0
        void LazyServerTrackUpdateWorker(
            Controller.CoreServerCtrl servCtrl,
            bool isStart)
        {
            var curTrackerSetting = GenCurTrackerSetting(servCtrl.config, isStart);
            var isGlobal          = false;

            curTrackerSetting.curServer = null;
            var proxySetting = setting.GetSysProxySetting();

            switch (PacServer.DetectSystemProxyMode(proxySetting))
            {
            case Model.Data.Enum.SystemProxyMode.None:
                setting.SaveServerTrackerSetting(curTrackerSetting);
                return;

            case Model.Data.Enum.SystemProxyMode.Global:
                isGlobal = true;
                break;

            case Model.Data.Enum.SystemProxyMode.PAC:
                isGlobal = false;
                break;
            }

            foreach (var c in curTrackerSetting.serverList)
            {
                // 按trackerList的顺序来试
                var serv = serverList.FirstOrDefault(s => s.config == c);
                if (serv == null)
                {
                    continue;
                }

                if (serv.BecomeSystemProxy(isGlobal))
                {
                    curTrackerSetting.curServer = serv.config;
                    break;
                }
            }

            // 没有可用服务器时不要清空代理设置
            // 否则全部重启时会丢失代理设置
            if (curTrackerSetting.curServer == null)
            {
                OnSendLogHandler(this, new Model.Data.StrEvent(I18N.NoServerCapableOfSysProxy));
                if (serverList.Count(s => s.isServerOn && !s.isUntrack) > 0)
                {
                    Task.Factory.StartNew(() => MessageBox.Show(I18N.SetSysProxyFail));
                }
            }

            setting.SaveServerTrackerSetting(curTrackerSetting);
        }
Exemplo n.º 11
0
        void ReleaseEventsFrom(Controller.CoreServerCtrl server)
        {
            server.OnCoreClosing -= InvokeEventOnCoreClosingIgnoreError;

            server.OnTrackCoreStart -= OnTrackCoreStartHandler;
            server.OnTrackCoreStop  -= OnTrackCoreStopHandler;

            server.OnPropertyChanged        -= ServerItemPropertyChangedHandler;
            server.OnRequireMenuUpdate      -= InvokeEventOnRequireMenuUpdate;
            server.OnRequireStatusBarUpdate -= InvokeEventOnRequireStatusBarUpdate;
            server.OnRequireNotifierUpdate  -= NotifierTextUpdateHandler;
        }
Exemplo n.º 12
0
        void BindEventsTo(Controller.CoreServerCtrl server)
        {
            server.OnCoreClosing += InvokeEventOnCoreClosingIgnoreError;

            server.OnTrackCoreStart += OnTrackCoreStartHandler;
            server.OnTrackCoreStop  += OnTrackCoreStopHandler;

            server.OnPropertyChanged        += ServerItemPropertyChangedHandler;
            server.OnRequireMenuUpdate      += InvokeEventOnRequireMenuUpdate;
            server.OnRequireStatusBarUpdate += InvokeEventOnRequireStatusBarUpdate;
            server.OnRequireNotifierUpdate  += NotifierTextUpdateHandler;
        }
Exemplo n.º 13
0
        void ServerTrackingUpdateWorker(
            Controller.CoreServerCtrl coreServCtrl,
            bool isStart)
        {
            var curTrackerSetting =
                configMgr.GenCurTrackerSetting(
                    coreServList.AsReadOnly(),
                    coreServCtrl.GetConfiger().GetConfig(),
                    isStart);

            setting.SaveServerTrackerSetting(curTrackerSetting);
            return;
        }
Exemplo n.º 14
0
        public bool AddServer(string config, string mark, bool quiet = false)
        {
            // first check
            if (IsServerExist(config))
            {
                return(false);
            }

            var newServer = new Controller.CoreServerCtrl(
                new VgcApis.Models.Datas.CoreInfo
            {
                customInbType = setting.CustomDefImportMode,
                inbIp         = setting.CustomDefImportIp,
                inbPort       = setting.CustomDefImportPort,
                config        = config,
                customMark    = mark,
            });

            newServer.Run(cache, setting, configMgr, this);

            bool duplicated = true;

            lock (serverListWriteLock)
            {
                // double check
                if (!IsServerExist(config))
                {
                    coreServList.Add(newServer);
                    duplicated = false;
                }
            }

            if (duplicated)
            {
                newServer.Dispose();
                return(false);
            }

            BindEventsTo(newServer);
            if (!quiet)
            {
                newServer.GetConfiger().UpdateSummaryThen(() =>
                {
                    InvokeEventOnRequireMenuUpdate(this, EventArgs.Empty);
                    RequireFormMainUpdate();
                });
            }
            setting.LazyGC();
            serverSaver.DoItLater();
            return(true);
        }
Exemplo n.º 15
0
        void LazyServerTrackUpdateWorker(
            Controller.CoreServerCtrl servCtrl,
            bool isStart)
        {
            var curTrackerSetting = GenCurTrackerSetting(servCtrl.config, isStart);
            var isGlobal          = false;

            curTrackerSetting.curServer = null;

            switch (Service.PacServer.DetectSystemProxyMode(
                        setting.GetSysProxySetting()))
            {
            case Model.Data.Enum.SystemProxyMode.None:
                setting.SaveServerTrackerSetting(curTrackerSetting);
                return;

            case Model.Data.Enum.SystemProxyMode.Global:
                isGlobal = true;
                break;

            case Model.Data.Enum.SystemProxyMode.PAC:
                isGlobal = false;
                break;
            }

            foreach (var c in curTrackerSetting.serverList)
            {
                // 按trackerList的顺序来试
                var serv = serverList.FirstOrDefault(s => s.config == c);
                if (serv == null)
                {
                    continue;
                }

                if (serv.BecomeSystemProxy(isGlobal))
                {
                    curTrackerSetting.curServer = serv.config;
                    break;
                }
            }

            // 没有可用服务器时不要清空代理设置
            // 否则全部重启时会丢失代理设置
            if (isStart && curTrackerSetting.curServer != servCtrl.config)
            {
                Task.Factory.StartNew(() => MessageBox.Show(I18N.SetSysProxyFail));
            }

            setting.SaveServerTrackerSetting(curTrackerSetting);
        }
Exemplo n.º 16
0
        public ServerUI(Controller.CoreServerCtrl serverItem)
        {
            setting = Service.Setting.Instance;
            servers = Service.Servers.Instance;

            this.serverItem = serverItem;
            InitializeComponent();

            this.foldingButtonIcons = new Bitmap[] {
                Properties.Resources.StepBackArrow_16x,
                Properties.Resources.StepOverArrow_16x,
            };

            this.formHeight = new int[] {
                this.Height,  // collapseLevel= 0
                this.cboxInbound.Top,
            };
        }
Exemplo n.º 17
0
        void InitServerCtrlList()
        {
            lock (serverListWriteLock)
            {
                var coreInfoList = setting.LoadCoreInfoList();
                foreach (var coreInfo in coreInfoList)
                {
                    var server = new Controller.CoreServerCtrl(coreInfo);
                    coreServList.Add(server);
                }
            }

            foreach (var server in coreServList)
            {
                server.Run(cache, setting, configMgr, this);
                BindEventsTo(server);
            }
        }
Exemplo n.º 18
0
        public FormSingleServerLog(Controller.CoreServerCtrl serverItem)
        {
            this.serverItem = serverItem;

            InitializeComponent();

            this.FormClosed += (s, e) =>
            {
                if (updateLogTimer != null)
                {
                    updateLogTimer.Stop();
                    updateLogTimer.Tick -= UpdateLog;
                    updateLogTimer.Dispose();
                }
            };

            VgcApis.Libs.UI.AutoSetFormIcon(this);
            this.Show();
            this.Text = I18N.Log + " - " + serverItem.GetTitle();
        }
Exemplo n.º 19
0
        public bool AddServer(string config, string mark, bool quiet = false)
        {
            // duplicate

            if (IsServerExist(config))
            {
                return(false);
            }

            var coreInfo = new VgcApis.Models.Datas.CoreInfo
            {
                config     = config,
                customMark = mark,
            };

            var newServer = new Controller.CoreServerCtrl(coreInfo);

            lock (serverListWriteLock)
            {
                coreServList.Add(newServer);
            }

            newServer.Run(cache, setting, configMgr, this);
            BindEventsTo(newServer);


            if (!quiet)
            {
                newServer.GetConfiger().UpdateSummaryThen(() =>
                {
                    InvokeEventOnRequireMenuUpdate(this, EventArgs.Empty);
                    RequireFormMainUpdate();
                });
            }

            setting.LazyGC();
            serverSaver.DoItLater();
            return(true);
        }
        void ModifyServerSetting(
            ref Controller.CoreServerCtrl server,
            int newMode, string newIP, int newPort,
            string newMark, int newAutorun, int newImport, int newSkipCN)
        {
            if (newSkipCN >= 0)
            {
                server.isInjectSkipCNSite = newSkipCN == 0;
            }

            if (newAutorun >= 0)
            {
                server.isAutoRun = newAutorun == 0;
            }

            if (newImport >= 0)
            {
                server.isInjectImport = newImport == 0;
            }

            if (newMode >= 0)
            {
                server.overwriteInboundType = newMode;
            }

            if (newIP != null)
            {
                server.inboundIP = newIP;
            }
            if (newPort >= 0)
            {
                server.inboundPort = newPort;
            }

            if (newMark != null)
            {
                server.mark = newMark;
            }
        }
Exemplo n.º 21
0
        public FormSingleServerLog(Controller.CoreServerCtrl serverItem)
        {
            maxNumberLines = Service.Setting.Instance.maxLogLines;

            this.serverItem = serverItem;

            InitializeComponent();

            this.FormClosed += (s, e) =>
            {
                serverItem.OnLog -= OnLogHandler;
            };

#if DEBUG
            this.Icon = Properties.Resources.icon_light;
#endif

            this.Show();

            this.Text         = I18N.Log + " - " + serverItem.summary;
            rtBoxLogger.Text  = serverItem.LogCache;
            serverItem.OnLog += OnLogHandler;
        }
Exemplo n.º 22
0
 public servInfo(Controller.CoreServerCtrl servCtrl)
 {
     isRunning = servCtrl.isServerOn;
     title     = servCtrl.GetTitle();
     sha       = Lib.Utils.SHA256(servCtrl.config);
 }