public override void Prepare() { v2rayCore = new Libs.V2Ray.Core(setting); coreStates = GetSibling <CoreStates>(); configer = GetSibling <Configer>(); logger = GetSibling <Logger>(); }
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); }
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)); }
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); }); }
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); }
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); }
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(); } }
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); }
public CoreServerTest() { var setting = Services.Settings.Instance; core = new Libs.V2Ray.Core(setting); }