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