Exemplo n.º 1
0
        Core()
        {
            cache = Cache.Instance;

            setting = Setting.Instance;
            setting.OnRequireCoreRestart += (s, a) =>
                                            Task.Factory.StartNew(() => CoreRestartHandler());

            coreServer        = new Model.BaseClass.CoreServer();
            coreServer.OnLog += (s, a) => setting.SendLog(a.Data);
        }
Exemplo n.º 2
0
        public void GetLocalCoreVersion()
        {
            var core    = new Model.BaseClass.CoreServer();
            var version = core.GetCoreVersion();

            if (core.IsExecutableExist())
            {
                Assert.AreNotEqual(string.Empty, version);
            }
            else
            {
                Assert.AreEqual(string.Empty, version);
            }
        }
Exemplo n.º 3
0
        void RefreshCurrentCoreVersion()
        {
            var el = labelCoreVersion;

            Task.Factory.StartNew(() =>
            {
                var core    = new Model.BaseClass.CoreServer();
                var version = core.GetCoreVersion();
                var msg     = string.IsNullOrEmpty(version) ?
                              I18N("GetCoreVerFail") :
                              string.Format(I18N("CurrentCoreVerIs"), version);
                try
                {
                    el.Invoke((MethodInvoker) delegate { el.Text = msg; });
                }
                catch { }
            });
        }
Exemplo n.º 4
0
        private void FormConfigTester_Shown(object sender, System.EventArgs e)
        {
            formTitle = this.Text;

            UpdateServerList();

            tester        = new Model.BaseClass.CoreServer();
            tester.OnLog += LogReceiver;

            setting.OnSettingChange += SettingChange;

            this.FormClosed += (s, a) =>
            {
                tester.OnLog            -= LogReceiver;
                setting.OnSettingChange -= SettingChange;
                tester.StopCoreThen(null);
            };

            Lib.UI.SetFormLocation <FormConfigTester>(this, Model.Data.Enum.FormLocations.BottomLeft);
        }
Exemplo n.º 5
0
        public ServerItem()
        {
            // new ServerItem will display at the bottom
            index = int.MaxValue;

            isSelected     = false;
            isServerOn     = false;
            isAutoRun      = false;
            isInjectImport = false;

            status  = string.Empty;
            name    = string.Empty;
            summary = string.Empty;
            config  = string.Empty;
            overwriteInboundType = 0;
            inboundIP            = "127.0.0.1";
            inboundPort          = 1080;

            server        = new BaseClass.CoreServer();
            server.OnLog += OnLogHandler;
        }
Exemplo n.º 6
0
        public void RunSpeedTest()
        {
            void log(string msg)
            {
                SendLog(msg);
                SetPropertyOnDemand(ref status, msg);
            }

            var port   = Lib.Utils.GetFreeTcpPort();
            var config = PrepareSpeedTestConfig(port);

            if (string.IsNullOrEmpty(config))
            {
                log(I18N("DecodeImportFail"));
                return;
            }

            var url  = StrConst("SpeedTestUrl");
            var text = I18N("Testing") + " ...";

            log(text);
            SendLog(url);

            var speedTester = new Model.BaseClass.CoreServer();

            speedTester.OnLog += OnLogHandler;
            speedTester.RestartCore(config);

            var time = Lib.Utils.VisitWebPageSpeedTest(url, port);

            text = string.Format("{0}:{1}",
                                 I18N("VisitWebPageTest"),
                                 time > 0 ? time.ToString() + "ms" : I18N("Timeout"));
            log(text);
            speedTester.StopCore();
            speedTester.OnLog -= OnLogHandler;
        }
Exemplo n.º 7
0
        public void DoSpeedTestThen(Action next = null)
        {
            void log(string msg)
            {
                SendLog(msg);
                SetStatus(msg);
            }

            void error(string msg)
            {
                log(msg);
                next?.Invoke();
            }

            var port = Lib.Utils.GetFreeTcpPort();

            if (port <= 0)
            {
                error(I18N("GetFreePortFail"));
                return;
            }

            Thread.Sleep(100);

            var cfg = GetDecodedConfig(true);

            if (cfg == null)
            {
                error(I18N("DecodeImportFail"));
                return;
            }

            if (!OverwriteInboundSettings(
                    ref cfg,
                    (int)Model.Data.Enum.ProxyTypes.HTTP,
                    "127.0.0.1",
                    port))
            {
                error(I18N("CoreCantSetLocalAddr"));
                return;
            }

            var url  = StrConst("SpeedTestUrl");
            var text = I18N("Testing") + " ...";

            log(text);
            SendLog(url);

            var speedTester = new Model.BaseClass.CoreServer();

            speedTester.OnLog += OnLogHandler;

            speedTester.RestartCoreThen(cfg.ToString(), null, () =>
            {
                // v2ray-core need a little time to get ready.
                Thread.Sleep(1000);

                var time = Lib.Utils.VisitWebPageSpeedTest(url, port);

                text = string.Format("{0}:{1}",
                                     I18N("VisitWebPageTest"),
                                     time > 0 ? time.ToString() + "ms" : I18N("Timeout"));

                log(text);
                speedTester.StopCoreThen(() =>
                {
                    speedTester.OnLog -= OnLogHandler;
                    next?.Invoke();
                });
            });
        }