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); }
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); } }
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 { } }); }
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); }
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; }
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; }
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(); }); }); }