public Tuple <bool, string, string> CheckUpdate(string url) { try { var html = HttpHelper.Get(url).ToLower(); var vs = Regex.Match(html, @"latest\sversion:\s*([\d|.]*)"); if (vs.Success) { var tmp = vs.ToString(); var version = tmp.Substring(tmp.IndexOf("version:") + "version:".Length + 1).Trim(); if (Compare(_ignoreVersion, version)) { if (Compare(version)) { return(new Tuple <bool, string, string>(true, version, url)); } } } } catch (Exception e) { SimpleLogHelper.Warning(e); } return(new Tuple <bool, string, string>(false, "", url)); }
/// <summary> /// use it after Show() has been called /// </summary> public void SetHotKey() { GlobalHotkeyHooker.Instance.Unregist(this); var r = GlobalHotkeyHooker.Instance.Regist(this, SystemConfig.Instance.QuickConnect.HotKeyModifiers, SystemConfig.Instance.QuickConnect.HotKeyKey, this.ShowMe); var title = SystemConfig.Instance.Language.GetText("messagebox_title_warning"); switch (r.Item1) { case GlobalHotkeyHooker.RetCode.Success: break; case GlobalHotkeyHooker.RetCode.ERROR_HOTKEY_NOT_REGISTERED: { var msg = $"{SystemConfig.Instance.Language.GetText("info_hotkey_registered_fail")}: {r.Item2}"; SimpleLogHelper.Warning(msg); MessageBox.Show(msg, title); break; } case GlobalHotkeyHooker.RetCode.ERROR_HOTKEY_ALREADY_REGISTERED: { var msg = $"{SystemConfig.Instance.Language.GetText("info_hotkey_already_registered")}: {r.Item2}"; SimpleLogHelper.Warning(msg); MessageBox.Show(msg, title); break; } default: throw new ArgumentOutOfRangeException(); } }
private void RdpcOnDisconnected(object sender, IMsTscAxEvents_OnDisconnectedEvent e) { _isDisconned = true; ResizeEndStopFireDelegate(); if (this._onResizeEnd != null) { this._onResizeEnd -= ReSizeRdp; } const int UI_ERR_NORMAL_DISCONNECT = 0xb08; string reason = _rdp.GetErrorDescription((uint)e.discReason, (uint)_rdp.ExtendedDisconnectReason); if (e.discReason != UI_ERR_NORMAL_DISCONNECT) { SimpleLogHelper.Warning($"RDP({_rdpServer.DispName}) exit with error code {e.discReason}({reason})"); } if (e.discReason != UI_ERR_NORMAL_DISCONNECT && e.discReason != (int)EDiscReason.exDiscReasonAPIInitiatedDisconnect && e.discReason != (int)EDiscReason.exDiscReasonAPIInitiatedLogoff && reason != "") { string disconnectedText = $"{_rdpServer.DispName}({_rdpServer.Address}) : {reason}"; var t = new Task(() => { System.Windows.MessageBox.Show(disconnectedText, SystemConfig.Instance.Language.GetText("messagebox_title_info"), MessageBoxButton.OK, MessageBoxImage.Warning); }); t.Start(); } base.OnClosed?.Invoke(base.ConnectionId); }
private void RegPuttySessionInRegTable() { // set key if (_protocolPuttyBase is ProtocolServerSSH server && !string.IsNullOrEmpty(server.PrivateKey)) { var ppk = server.PrivateKey; if (SystemConfig.Instance.DataSecurity.Rsa != null) { ppk = SystemConfig.Instance.DataSecurity.Rsa.DecodeOrNull(ppk); } Debug.Assert(ppk != null); _puttyOption.Set(PuttyRegOptionKey.PublicKeyFile, ppk); } // set color theme _puttyOption.Set(PuttyRegOptionKey.FontHeight, SystemConfig.Instance.Theme.PuttyFontSize); var options = SystemConfig.Instance.Theme.SelectedPuttyTheme; if (options != null) { foreach (var option in options) { try { if (Enum.TryParse(option.Key, out PuttyRegOptionKey key)) { if (option.ValueKind == RegistryValueKind.DWord) { _puttyOption.Set(key, (int)(option.Value)); } else { _puttyOption.Set(key, (string)option.Value); } } } catch (Exception) { SimpleLogHelper.Warning($"Putty theme error: can't set up key(value)=> {option.Key}({option.ValueKind})"); } } } //_puttyOption.Set(PuttyRegOptionKey.Colour0, "255,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour1, "255,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour2, "51,51,51"); //_puttyOption.Set(PuttyRegOptionKey.Colour3, "85,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour4, "0,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour5, "0,255,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour6, "77,77,77"); //_puttyOption.Set(PuttyRegOptionKey.Colour7, "85,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour8, "187,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour9, "255,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour10, "152,251,152"); //_puttyOption.Set(PuttyRegOptionKey.Colour11, "85,255,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour12, "240,230,140"); //_puttyOption.Set(PuttyRegOptionKey.Colour13, "255,255,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour14, "205,133,63"); //_puttyOption.Set(PuttyRegOptionKey.Colour15, "135,206,235"); //_puttyOption.Set(PuttyRegOptionKey.Colour16, "255,222,173"); //_puttyOption.Set(PuttyRegOptionKey.Colour17, "255,85,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour18, "255,160,160"); //_puttyOption.Set(PuttyRegOptionKey.Colour19, "255,215,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour20, "245,222,179"); //_puttyOption.Set(PuttyRegOptionKey.Colour21, "255,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour0, "192,192,192"); //_puttyOption.Set(PuttyRegOptionKey.Colour1, "255,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour2, "0,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour3, "85,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour4, "0,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour5, "0,255,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour6, "0,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour7, "85,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour8, "255,0,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour9, "255,85,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour10,"0,255,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour11,"85,255,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour12,"187,187,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour13,"255,255,85"); //_puttyOption.Set(PuttyRegOptionKey.Colour14,"0,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour15,"0,0,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour16,"0,0,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour17,"255,85,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour18,"0,187,187"); //_puttyOption.Set(PuttyRegOptionKey.Colour19,"85,255,255"); //_puttyOption.Set(PuttyRegOptionKey.Colour20,"187,187,187"); //_puttyOption.Set(PuttyRegOptionKey.Colour21,"255,255,255"); //_puttyOption.Set(PuttyRegOptionKey.UseSystemColours, 0); //_puttyOption.Set(PuttyRegOptionKey.TryPalette, 0); //_puttyOption.Set(PuttyRegOptionKey.ANSIColour, 1); //_puttyOption.Set(PuttyRegOptionKey.Xterm256Colour, 1); //_puttyOption.Set(PuttyRegOptionKey.BoldAsColour, 1); //_puttyOption.Set(PuttyRegOptionKey.Colour0, "211,215,207"); //_puttyOption.Set(PuttyRegOptionKey.Colour1, "238,238,236"); //_puttyOption.Set(PuttyRegOptionKey.Colour2, "46,52,54"); //_puttyOption.Set(PuttyRegOptionKey.Colour3, "85,87,83"); //_puttyOption.Set(PuttyRegOptionKey.Colour4, "0,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour5, "0,255,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour6, "46,52,54"); //_puttyOption.Set(PuttyRegOptionKey.Colour7, "85,87,83"); //_puttyOption.Set(PuttyRegOptionKey.Colour8, "204,0,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour9, "239,41,41"); //_puttyOption.Set(PuttyRegOptionKey.Colour10,"78,154,6"); //_puttyOption.Set(PuttyRegOptionKey.Colour11,"138,226,52"); //_puttyOption.Set(PuttyRegOptionKey.Colour12,"196,160,0"); //_puttyOption.Set(PuttyRegOptionKey.Colour13,"252,233,79"); //_puttyOption.Set(PuttyRegOptionKey.Colour14,"52,101,164"); //_puttyOption.Set(PuttyRegOptionKey.Colour15,"114,159,207"); //_puttyOption.Set(PuttyRegOptionKey.Colour16,"117,80,123"); //_puttyOption.Set(PuttyRegOptionKey.Colour17,"173,127,168"); //_puttyOption.Set(PuttyRegOptionKey.Colour18,"6,152,154"); //_puttyOption.Set(PuttyRegOptionKey.Colour19,"52,226,226"); //_puttyOption.Set(PuttyRegOptionKey.Colour20,"211,215,207"); //_puttyOption.Set(PuttyRegOptionKey.Colour21,"238,238,236"); _puttyOption.Save(); }
private void App_OnStartup(object sender, StartupEventArgs startupEvent) { try { { var appDateFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), SystemConfig.AppName); if (!Directory.Exists(appDateFolder)) { Directory.CreateDirectory(appDateFolder); } var logFilePath = Path.Combine(appDateFolder, "PRemoteM.log.md"); SimpleLogHelper.LogFileName = logFilePath; } #region single-instance app var startupMode = PRM.Core.Ulits.StartupMode.Normal; if (startupEvent.Args.Length > 0) { System.Enum.TryParse(startupEvent.Args[0], out startupMode); } if (startupMode == PRM.Core.Ulits.StartupMode.SetSelfStart) { SetSelfStartingHelper.SetSelfStart(); Environment.Exit(0); } if (startupMode == PRM.Core.Ulits.StartupMode.UnsetSelfStart) { SetSelfStartingHelper.UnsetSelfStart(); Environment.Exit(0); } _singleAppMutex = new Mutex(true, PipeName, out var isFirst); if (!isFirst) { try { var client = new NamedPipeClientStream(PipeName); client.Connect(); StreamReader reader = new StreamReader(client); StreamWriter writer = new StreamWriter(client); writer.WriteLine("ActivateMe"); writer.Flush(); client.Dispose(); } catch (Exception e) { SimpleLogHelper.Warning(e); } Environment.Exit(0); } else { Task.Factory.StartNew(() => { NamedPipeServerStream server = null; while (true) { server?.Dispose(); server = new NamedPipeServerStream(PipeName); SimpleLogHelper.Debug("NamedPipeServerStream.WaitForConnection"); server.WaitForConnection(); try { var reader = new StreamReader(server); var line = reader.ReadLine(); if (!string.IsNullOrEmpty(line)) { SimpleLogHelper.Debug("NamedPipeServerStream get: " + line); if (line == "ActivateMe") { if (App.Window != null) { Dispatcher.Invoke(() => { if (App.Window.WindowState == WindowState.Minimized) { App.Window.WindowState = WindowState.Normal; } App.Window.ActivateMe(); }); } } } } catch (Exception e) { SimpleLogHelper.Warning(e); } } }); } #endregion #if DEBUG Shawn.Ulits.ConsoleManager.Show(); #endif #region system check & init #region Init { var appDateFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), SystemConfig.AppName); if (!Directory.Exists(appDateFolder)) { Directory.CreateDirectory(appDateFolder); } SimpleLogHelper.LogFileName = Path.Combine(appDateFolder, "PRemoteM.log.md"); var iniPath = Path.Combine(appDateFolder, SystemConfig.AppName + ".ini"); if (Environment.CurrentDirectory.IndexOf(@"C:\Windows") < 0) { if (File.Exists(SystemConfig.AppName + ".ini") || IOPermissionHelper.HasWritePermissionOnDir("./")) { iniPath = SystemConfig.AppName + ".ini"; } } var ini = new Ini(iniPath); //if (!File.Exists(iniPath)) //{ // // TODO if ini is not existed, then it would be a new user, open guide to set db path //} // Set default folder path SystemConfigLanguage.LanguageJsonDir = Path.Combine(appDateFolder, SystemConfigLanguage.LanguageJsonDir); PuttyColorThemes.ThemeRegFileFolder = Path.Combine(appDateFolder, PuttyColorThemes.ThemeRegFileFolder); var language = new SystemConfigLanguage(this.Resources, ini); var general = new SystemConfigGeneral(ini); var quickConnect = new SystemConfigQuickConnect(ini); var theme = new SystemConfigTheme(this.Resources, ini); var dataSecurity = new SystemConfigDataSecurity(ini); //if (!File.Exists(dataSecurity.DbPath)) //{ // // TODO db is not existed, then tell our user to create new one or select a new one. //} // config create instance (settings & langs) SystemConfig.Init(); SystemConfig.Instance.General = general; SystemConfig.Instance.Language = language; SystemConfig.Instance.QuickConnect = quickConnect; SystemConfig.Instance.DataSecurity = dataSecurity; SystemConfig.Instance.Theme = theme; // server data holder init. GlobalData.Init(); // remote window pool init. RemoteWindowPool.Init(); } #endregion // kill putty process foreach (var process in Process.GetProcessesByName(PuttyHost.PuttyExeName.ToLower().Replace(".exe", ""))) { try { process.Kill(); } catch { } } #endregion #region app start // main window init { Window = new MainWindow(); ShutdownMode = ShutdownMode.OnMainWindowClose; MainWindow = Window; Window.Closed += (o, args) => { AppOnClose(); }; if (!SystemConfig.Instance.General.AppStartMinimized) { ActivateWindow(); } // check if Db is ok var res = SystemConfig.Instance.DataSecurity.CheckIfDbIsOk(); if (!res.Item1) { SimpleLogHelper.Info("Start with 'SystemConfigPage' by 'ErroFlag'."); MessageBox.Show(res.Item2, SystemConfig.Instance.Language.GetText("messagebox_title_error")); ActivateWindow(); Window.VmMain.CmdGoSysOptionsPage.Execute(typeof(SystemConfigDataSecurity)); } else { // load data GlobalData.Instance.ServerListUpdate(); } } // task tray init InitTaskTray(); // quick search init InitQuickSearch(); #endregion } catch (Exception ex) { SimpleLogHelper.Fatal(ex.Message, ex.StackTrace); #if DEBUG MessageBox.Show(ex.Message); MessageBox.Show(ex.StackTrace); #endif AppOnClose(-1); } }