public void MakeContextMenu(IListProcessor list, List <ToolStripItem> menuItemList, object selectedListItem, object selectedObject, string aspectName) { menuItemList.Add(new ToolStripSeparator()); JCompDevice item = (JCompDevice)selectedObject; if (item != null) { ToolStripItem menuItem = null; if (WinSCPUtils.IsRemoteSessionOpened(item)) { menuItem = new ToolStripMenuItem(); menuItem.Text = "Закрыть удаленную сессию подключения WinSCP"; menuItem.Click += (s, em) => { try { WinSCPUtils.CloseRemoteSession(item); } catch (Exception ex) { Log.ShowError(ex); } }; menuItemList.Add(menuItem); } } }
public void MakeContextMenu(IListProcessor list, List <ToolStripItem> menuItemList, object selectedListItem, object selectedObject, string aspectName) { //обработчик вызова контекстного меню JCompDeviceStorage storage = (JCompDeviceStorage)selectedObject; ToolStripMenuItem menuItem = null; menuItem = new ToolStripMenuItem(); menuItem.Text = "Скрипты подключения и синхронизации"; menuItem.Click += (s, em) => { try { ShowSummaryInfo(storage); } catch (Exception ex) { Log.ShowError(ex); } }; menuItemList.Add(menuItem); if (storage.MasterStorage != null) { //если слейв хранилище является локальным и либо находится на данном компе, либо доступно через шару //запускаем локальный процесс WinSCP menuItem = new ToolStripMenuItem(); menuItem.Text = "Синхронизировать с мастер хранилищем через WinSCP (запуск на локальном мастере)"; menuItem.Click += (s, em) => { try { WinSCPUtils.SynchronizeDirectories(storage.MasterStorage.Path, storage, true); } catch (Exception ex) { Log.ShowError(ex); } }; menuItemList.Add(menuItem); //если слейв хранилище является удаленным //то запускаем команду синхронизации menuItem = new ToolStripMenuItem(); menuItem.Text = "Синхронизировать с мастер хранилищем через SSH команду (запуск на удаленном мастере)"; menuItem.Click += (s, em) => { try { string cmd = JCompDeviceStorage.MakeRsyncScript(storage.MasterStorage, storage, false); //необходимо чтобы были настроены доверенные сертификаты или надо пробовать с паролем WinSCPUtils.ExecuteCommand(cmd, storage.MasterStorage.JCompDevice, true); } catch (Exception ex) { Log.ShowError(ex); } }; menuItemList.Add(menuItem); } }
override public void DestroyApp() { try { WinSCPUtils.CloseAllRemoteSession(); } catch (Exception ex) { Log.ShowError(ex); } base.DestroyApp(); }
override protected void OpenOtherTools(WebEntryInfo webEntryInfo, List <ToolStripItem> subs) { ToolStripMenuItem menuItem = null; //Открыть в Kitty string kittyPath = FrwConfig.Instance.GetPropertyValueAsString(AppLocator.SETTING_KittyPortablePath, null); if (string.IsNullOrEmpty(kittyPath) == false && File.Exists(kittyPath)) { string pathForCmd = KittyUtils.MakeKittyPathForCmd(webEntryInfo); if (pathForCmd != null) { menuItem = new ToolStripMenuItem(); menuItem.Text = "Открыть в Kitty"; menuItem.Click += (s, em) => { try { //AppManager.Instance.CurrentWebEntryInfo = webEntryInfo; if (CheckIfWeNeedVPN(webEntryInfo) == false) { return; } ProcessUtils.ExecuteProgram(kittyPath, pathForCmd); } catch (Exception ex) { Log.ShowError(ex); } }; subs.Add(menuItem); } } string puttyPath = FrwConfig.Instance.GetPropertyValueAsString(AppLocator.SETTING_PuttyPortablePath, null); if (string.IsNullOrEmpty(puttyPath) == false && File.Exists(puttyPath)) { string puttyPathForCmd = KittyUtils.MakePuttyPathForCmd(webEntryInfo); if (puttyPathForCmd != null) { menuItem = new ToolStripMenuItem(); menuItem.Text = "Открыть в Putty"; menuItem.Click += (s, em) => { try { //AppManager.Instance.CurrentWebEntryInfo = webEntryInfo; if (CheckIfWeNeedVPN(webEntryInfo) == false) { return; } ProcessUtils.ExecuteProgram(puttyPath, puttyPathForCmd); } catch (Exception ex) { Log.ShowError(ex); } }; subs.Add(menuItem); } } //Открыть в WinSCP if (AppLocator.WinSCPPath != null) { string pathForCmd = WinSCPUtils.MakePathForCmd(webEntryInfo); if (pathForCmd != null) { menuItem = new ToolStripMenuItem(); menuItem.Text = "Открыть в WinSCP"; //if (recоmendedViewType == ViewType.WORD) menuItem.Font = new Font(menuItem.Font, FontStyle.Bold); menuItem.Click += (s, em) => { try { if (CheckIfWeNeedVPN(webEntryInfo) == false) { return; } //AppManager.Instance.CurrentWebEntryInfo = webEntryInfo; ProcessUtils.ExecuteProgram(AppLocator.WinSCPPath, pathForCmd); } catch (Exception ex) { Log.ShowError(ex); } }; subs.Add(menuItem); } } //Открыть в RDP if (AppLocator.RDPPath != null) { string pathForCmd = RDPUtils.MakePathForCmd(webEntryInfo); if (pathForCmd != null) { menuItem = new ToolStripMenuItem(); menuItem.Text = "RDP"; menuItem.Click += (s, em) => { try { if (CheckIfWeNeedVPN(webEntryInfo) == false) { return; } AppManager.Instance.CurrentWebEntryInfo = webEntryInfo; ProcessUtils.ExecuteProgram(AppLocator.RDPPath, pathForCmd); } catch (Exception ex) { Log.ShowError(ex); } }; subs.Add(menuItem); } } }