コード例 #1
0
        private void OnTest(object sender, RoutedEventArgs e)
        {
            var endpoint = lvSerwery.SelectedItem as FtpEndpoint;

            if (endpoint != null)
            {
                Cursor = Cursors.Wait;

                string errmsg = string.Empty;
                var    fu     = IFtpUtility.Create(endpoint.GetModel(), m_mainWnd);

                bool isErr = !fu.CheckConnection(ref errmsg);

                if (!fu.CheckLocalDirectory())
                {
                    isErr   = true;
                    errmsg += "\nKatalog lokalny nie istnieje";
                }

                Cursor = Cursors.Arrow;
                MessageBox.Show(errmsg, isErr ? "Ostrzeżenie" : "Info", MessageBoxButton.OK, isErr ? MessageBoxImage.Error : MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("Nie wybrano serwera do sprawdzenia.", "Info", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
コード例 #2
0
 /// <summary>
 /// Konstruktor FtpUtility dla pojedynczych usług
 /// </summary>
 /// <param name="endpoint">Parametry serwera</param>
 /// <param name="window">Główne okno aplikacji</param>
 public FtpHotfolderWatcher(FtpEndpointModel endpoint, MainWindow window)
 {
     m_mainWnd       = window;
     m_ftpUtility    = IFtpUtility.Create(endpoint, window);
     m_log.xx        = -endpoint.xx;
     m_log.syncTime  = DateTime.Now;
     m_log.direction = eFtpDirection.HotfolderPut;
     RegisterWatcher();
 }
コード例 #3
0
ファイル: FtpDispatcher.cs プロジェクト: vSzemkel/FtpDiligent
        /// <summary>
        /// Wykonuje transfer plików na podstawie zaplanowanej pozycji harmonogramu
        /// Jest uruchamiana przez dispatcher o odpowiedniej porze i tylko dla poprawnych pozycji harmonogramu
        /// </summary>
        /// <param name="iSchXX">
        /// Jeœli dodatni, to identyfikator pozycji harmonogramu uruchomionej automatycznie,
        /// jeœli ujemny, to identyfikator endpointu, dla którego transfer uruchomiono rêcznie
        /// </param>
        public void ExecuteFtpTransfer(object o)
        {
            FtpScheduleModel schedule = (FtpScheduleModel)o;
            int key = schedule.xx;

            var(endpoint, errmsg) = FtpDiligentDatabaseClient.SelectEndpoint(key).Result;
            if (!string.IsNullOrEmpty(errmsg))
            {
                if (errmsg == "0")
                {
                    errmsg = "Brak definicji endpointu dla harmonogramu: " + key;
                }

                m_mainWnd.ShowErrorInfo(eSeverityCode.Error, errmsg);
                return;
            }

            string       remote = endpoint.host + endpoint.remDir;
            FtpSyncModel log    = new FtpSyncModel()
            {
                xx = key, syncTime = endpoint.nextSync
            };
            IFtpUtility   fu         = IFtpUtility.Create(endpoint, this, m_mainWnd.m_syncMode);
            eFtpDirection eDirection = endpoint.direction;

            if (key < 0)
            {
                m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Rozpoczêto transfer plików z serwera {remote}");
            }
            else
            {
                m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Rozpoczêto zaplanowany transfer plików {schedule.name} z serwera {remote}");
            }

            try { // transferuj pliki
                #region pobieranie
                if (eDirection.HasFlag(eFtpDirection.Get))
                {
                    if (!fu.Download(ref log))
                    {
                        m_mainWnd.ShowErrorInfo(eSeverityCode.TransferError, $"Pobieranie plików z serwera {remote} zakoñczy³o siê niepowodzeniem");
                        return;
                    }

                    // loguj zmiany
                    int filesTransfered = log.fileNames.Length;
                    if (filesTransfered == 0)
                    {
                        FtpDiligentDatabaseClient.LogActivation(log);
                        m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Na serwerze {remote} nie znaleziono plików odpowiednich do pobrania");
                    }
                    else
                    {
                        log.direction = eFtpDirection.Get;
                        FtpDiligentDatabaseClient.LogSync(log);
                        m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Pobrano {filesTransfered} plików z serwera {remote}");
                    }
                }
                #endregion

                #region wstawianie
                if (eDirection.HasFlag(eFtpDirection.Put))
                {
                    if (!fu.Upload(ref log))
                    {
                        m_mainWnd.ShowErrorInfo(eSeverityCode.TransferError, $"Wstawianie plików na serwer {remote} zakoñczy³o siê niepowodzeniem");
                        return;
                    }

                    // loguj zmiany
                    int filesTransfered = log.fileNames.Length;
                    if (filesTransfered == 0)
                    {
                        FtpDiligentDatabaseClient.LogActivation(log);
                        m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Nie znaleziono plików do wstawienia na serwer {remote}");
                    }
                    else
                    {
                        log.direction = eFtpDirection.Put;
                        FtpDiligentDatabaseClient.LogSync(log);
                        m_mainWnd.ShowErrorInfo(eSeverityCode.Message, $"Wstawiono {filesTransfered} plików na serwer {remote}");
                    }
                }
                #endregion
            } catch (FtpUtilityException fex) {
                m_mainWnd.ShowErrorInfo(eSeverityCode.TransferError, fex.Message);
            } catch (Exception se) {
                m_mainWnd.ShowErrorInfo(eSeverityCode.TransferError, se.Message);
            }
        }