예제 #1
0
        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);
                }
            }
        }
예제 #2
0
            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);
                }
            }
예제 #3
0
 override public void DestroyApp()
 {
     try
     {
         WinSCPUtils.CloseAllRemoteSession();
     }
     catch (Exception ex)
     {
         Log.ShowError(ex);
     }
     base.DestroyApp();
 }
예제 #4
0
        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);
                }
            }
        }