Beispiel #1
0
        public override void Prepare()
        {
            v2rayCore = new Libs.V2Ray.Core(setting);

            coreStates = GetSibling <CoreStates>();
            configer   = GetSibling <Configer>();
            logger     = GetSibling <Logger>();
        }
Beispiel #2
0
        public override void Prepare()
        {
            v2rayCore = new Libs.V2Ray.Core(setting);

            coreStates = GetSibling <CoreStates>();
            configer   = GetSibling <Configer>();
            logger     = GetSibling <Logger>();

            bookKeeper = new VgcApis.Libs.Tasks.Routine(RecordStatSample, 3000);
        }
Beispiel #3
0
        Tuple <long, long> DoSpeedTesting(
            string title,
            string testUrl,
            int testTimeout,
            int port,
            string config,
            EventHandler <VgcApis.Models.Datas.StrEvent> logDeliever)
        {
            void log(string content) => logDeliever?.Invoke(this, new VgcApis.Models.Datas.StrEvent(content));

            log($"{I18N.SpeedtestPortNum}{port}");
            if (string.IsNullOrEmpty(config))
            {
                log(I18N.DecodeImportFail);
                return(new Tuple <long, long>(TIMEOUT, 0));
            }

            var speedTester = new Libs.V2Ray.Core(setting)
            {
                title = title
            };

            if (logDeliever != null)
            {
                speedTester.OnLog += logDeliever;
            }

            long latency = TIMEOUT;
            long len     = 0;

            try
            {
                speedTester.RestartCore(config);
                if (WaitUntilCoreReady(speedTester))
                {
                    var expectedSizeInKib = setting.isUseCustomSpeedtestSettings ? setting.CustomSpeedtestExpectedSizeInKib : -1;
                    var r = VgcApis.Misc.Utils.TimedDownloadTest(testUrl, port, expectedSizeInKib, testTimeout);
                    latency = r.Item1;
                    len     = r.Item2;
                }
                speedTester.StopCore();
                if (logDeliever != null)
                {
                    speedTester.OnLog -= logDeliever;
                }
            }
            catch { }

            return(new Tuple <long, long>(latency, len));
        }
Beispiel #4
0
        void RefreshLocalV2RayCoreVersion()
        {
            var el = labelCoreVersion;

            VgcApis.Misc.Utils.RunInBackground(() =>
            {
                var core    = new Libs.V2Ray.Core(setting);
                var version = core.GetCoreVersion();
                var msg     = string.IsNullOrEmpty(version) ?
                              I18N.GetCoreVerFail :
                              string.Format(I18N.CurrentCoreVerIs, version);

                VgcApis.Misc.UI.Invoke(() => el.Text = msg);
            });
        }
Beispiel #5
0
        bool WaitUntilCoreReady(Libs.V2Ray.Core core)
        {
            const int jiff  = 300;
            int       cycle = 30 * 1000 / jiff;
            int       i;

            for (i = 0; i < cycle && !core.isReady; i++)
            {
                VgcApis.Misc.Utils.Sleep(jiff);
            }
            if (i < cycle)
            {
                return(true);
            }
            return(false);
        }
Beispiel #6
0
        long DoSpeedTesting(
            string title,
            string testUrl,
            int testTimeout,
            int port,
            string config,
            EventHandler <VgcApis.Models.Datas.StrEvent> logDeliever)
        {
            void log(string content) => logDeliever?.Invoke(this, new VgcApis.Models.Datas.StrEvent(content));

            log($"{I18N.SpeedtestPortNum}{port}");
            if (string.IsNullOrEmpty(config))
            {
                log(I18N.DecodeImportFail);
                return(SpeedtestTimeout);
            }

            var speedTester = new Libs.V2Ray.Core(setting)
            {
                title = title
            };

            if (logDeliever != null)
            {
                speedTester.OnLog += logDeliever;
            }

            long latency = VgcApis.Models.Consts.Core.SpeedtestTimeout;

            try
            {
                speedTester.RestartCore(config);
                var expectedSizeInKib = setting.isUseCustomSpeedtestSettings ? setting.CustomSpeedtestExpectedSizeInKib : -1;
                latency = VgcApis.Misc.Utils.TimedDownloadTesting(testUrl, port, expectedSizeInKib, testTimeout);
                speedTester.StopCore();
                if (logDeliever != null)
                {
                    speedTester.OnLog -= logDeliever;
                }
            }
            catch { }

            return(latency);
        }
Beispiel #7
0
        void V2RayCoreUpdater()
        {
            var core      = new Libs.V2Ray.Core(setting);
            var curVerStr = core.GetCoreVersion();

            if (string.IsNullOrEmpty(curVerStr))
            {
                return;
            }

            var src  = setting.v2rayCoreDownloadSource;
            var port = -1;

            if (setting.isUpdateUseProxy)
            {
                port = servers.GetAvailableHttpProxyPort();
            }

            var vers = Misc.Utils.GetOnlineV2RayCoreVersionList(port, src);

            if (vers.Count < 1)
            {
                return;
            }
            setting.SaveV2RayCoreVersionList(vers);

            var first   = vers.First();
            var current = new Version(curVerStr);
            var latest  = new Version(first.Substring(1));

            var msg = string.Format(I18N.ConfirmUpgradeV2rayCore, first);

            if (latest > current && VgcApis.Misc.UI.Confirm(msg))
            {
                Views.WinForms.FormDownloadCore.ShowForm();
            }
        }
Beispiel #8
0
        long RunSpeedTestWorker(
            string rawConfig,
            string title,
            string testUrl,
            int testTimeout,
            bool isUseCache,
            bool isInjectSpeedTestTpl,
            bool isInjectActivateTpl,
            EventHandler <VgcApis.Models.Datas.StrEvent> logDeliever)
        {
            var port = VgcApis.Misc.Utils.GetFreeTcpPort();

            // for debugging
            logDeliever?.Invoke(this, new VgcApis.Models.Datas.StrEvent(
                                    I18N.SpeedtestPortNum + port.ToString()));

            var speedTestConfig = CreateSpeedTestConfig(
                rawConfig, port, isUseCache, isInjectSpeedTestTpl, isInjectActivateTpl);

            if (string.IsNullOrEmpty(speedTestConfig))
            {
                logDeliever?.Invoke(this, new VgcApis.Models.Datas.StrEvent(I18N.DecodeImportFail));
                return(SpeedtestTimeout);
            }

            var speedTester = new Libs.V2Ray.Core(setting)
            {
                title = title
            };

            speedTester.WaitForStartCoreToken();
            if (setting.isSpeedtestCancelled)
            {
                speedTester.ReleaseToken();
                return(VgcApis.Models.Consts.Core.SpeedtestAbort);
            }

            if (logDeliever != null)
            {
                speedTester.OnLog += logDeliever;
            }

            try
            {
                speedTester.RestartCore(speedTestConfig);
            }
            finally
            {
                speedTester.ReleaseToken();
            }

            var expectedSizeInKib = setting.isUseCustomSpeedtestSettings ?
                                    setting.CustomSpeedtestExpectedSizeInKib : 0;

            long testResult = Misc.Utils.VisitWebPageSpeedTest(testUrl, port, expectedSizeInKib, testTimeout);

            speedTester.StopCore();

            if (logDeliever != null)
            {
                speedTester.OnLog -= logDeliever;
            }
            return(testResult);
        }
Beispiel #9
0
        public CoreServerTest()
        {
            var setting = Services.Settings.Instance;

            core = new Libs.V2Ray.Core(setting);
        }