コード例 #1
0
    public static void Sync()
    {
      var optoins = new SessionOptions()
      {
        Protocol = Protocol.Ftp,
        FtpSecure = WinSCP.FtpSecure.ExplicitTls,
        HostName = Config.FTP_HOSTNAME,
        PortNumber = Config.FTP_PORT,
        UserName = Config.FTP_USER,
        Password = Config.FTP_PWD,
      };

      using (var session = new Session())
      {
        Logger.Debug("About to try to connect to the TRTH server...",typeof(FTPSynchroniser));
        session.Open(optoins);

        Logger.Debug("Synchronising directories...",typeof(FTPSynchroniser));
        var result = session.SynchronizeDirectories(SynchronizationMode.Local, Config.DIR_SYNC_TO, Config.DIR_REMOTE, false);

        Logger.Debug(string.Format("FTP Sync Result = {0}", result), typeof (FTPSynchroniser));

        foreach (var file in result.Downloads)
          Logger.DebugFormat(typeof (FTPSynchroniser), "Downloaded {0}", file);
      }

    }
コード例 #2
0
        void synchroniseAllFiles()
        {
            Console.WriteLine("Upload files started...");

            ServicePointManager.ServerCertificateValidationCallback =
                (s, certificate, chain, sslPolicyErrors) => true;

            try
            {
                using (WinSCP.Session session = new WinSCP.Session())
                {
                    session.FileTransferProgress += SessionFileTransferProgress;
                    // Connect
                    session.Open(_sessionOptions);
                    string localDir = _rootPath;

                    WinSCP.SynchronizationResult result = session.SynchronizeDirectories(WinSCP.SynchronizationMode.Remote, localDir, "Ents/Logs", false);

                    if (result.IsSuccess)
                    {
                        Console.WriteLine("Directories successfully synchronised!");
                    }
                    else
                    {
                        for (int i = 0; i < result.Failures.Count; i++)
                        {
                            Console.WriteLine("Error: {0}", result.Failures[i].Message);
                        }
                    }
                }
            }
            catch (Exception excp)
            {
                Console.WriteLine("Exception: {0}, {1}", excp.Message, excp.StackTrace);
            }
        }
コード例 #3
0
ファイル: Transfer.cs プロジェクト: rguerreiro/WinSCPSync
        private void Run()
        {
            FileTransferredEventHandler onFileTransferred = (sender, args) =>
            {
                _log.DebugFormat("Transferred {0} to {1}", args.FileName, args.Destination);

                if (args.Error != null)
                    _log.Error("Error while transferring file " + args.FileName, args.Error);
            };

            ThreadPool.QueueUserWorkItem((state) =>
            {
                using (_currSession = new Session())
                {
                    try
                    {
                        _currSession.FileTransferred += onFileTransferred;
                        _currSession.Open(Options);

                        _log.InfoFormat("Session was opened and going to sync directories from {0}...", TransferSource);

                        var result = _currSession.SynchronizeDirectories(
                            (SynchronizationMode)Enum.Parse(typeof(SynchronizationMode), Job.SyncMode),
                            Job.Source,
                            Job.Destination,
                            Job.RemoveFiles);

                        try
                        {
                            result.Check(); // it will throw on any error

                            // only marking as stopped when everything went ok.
                            // this way it will run again whenever the service restarts or a change happens on this same directory
                            MarkAsStopped();

                            _log.InfoFormat("{0} was synced with success", TransferSource);
                        }
                        catch (Exception exception)
                        {
                            _log.Error("Some errors occured while syncing " + TransferSource, exception);
                        }
                    }
                    catch (SessionLocalException sle)
                    {
                        // Probably aborted
                        _log.Error("Something happened locally while syncing " + TransferSource, sle);
                        ErrorHappened(sle.GetBaseException().Message);
                    }
                    catch (SessionRemoteException sre)
                    {
                        // Connection went down or refused
                        _log.Error("Something happened remotely while syncing " + TransferSource, sre);
                        ErrorHappened(sre.GetBaseException().Message);
                    }
                    catch (SessionException sessionException)
                    {
                        _log.Error("Unexpected session exception while syncing " + TransferSource, sessionException);
                        ErrorHappened(sessionException.GetBaseException().Message);
                    }
                    catch (Exception exception)
                    {
                        _log.Error("Unexpected exception while syncing " + TransferSource, exception);
                        ErrorHappened(exception.GetBaseException().Message);
                    }

                    _log.InfoFormat("Session for {0} ended", TransferSource);
                }

                _currSession = null;
            });
        }
コード例 #4
0
        public static void synchro(string typeSynchro)
        {
            try
            {
                string repertoireLocal = FSFLauncherCore.cheminARMA3 + @"\@FSF\";
                string repertoireDistant="";

                fenetrePrincipale.textBox11.Text = "Synchronisation procedure " + typeSynchro + " en cours :" + Environment.NewLine;
                fenetrePrincipale.textBox11.Text += "────────────────────────────" + Environment.NewLine;
                fenetrePrincipale.textBox11.Text += Environment.NewLine + "IMPORTANT : " + Environment.NewLine + "Pour stopper la synchronisation en cours, il vous faut Arreter le processus WinSCP.exe en faisant appel à la combinaison de touche" + Environment.NewLine + " CTRL + MAJ + ESC (onglet processus)." + Environment.NewLine;
                // Setup session options
                SessionOptions sessionOptions = new SessionOptions { };
                switch (typeSynchro)
                {
                    case "beta":
                        SessionOptions sessionOptions1 = new SessionOptions
                        {
                            Protocol = Protocol.Ftp,
                            HostName = constCheminFTP,
                            UserName = constLoginFTP,
                            Password = constMdpFTP

                        };
                        repertoireDistant = "/@FSF/";
                        sessionOptions = sessionOptions1;

                        break;
                    case "officielle":
                        SessionOptions sessionOptions2 = new SessionOptions
                        {
                            Protocol = Protocol.Ftp,
                            HostName = constCheminFTP,
                            UserName = constLoginFTP,
                            Password = constMdpFTP

                        };
                        repertoireDistant = "/@FSF_OFFICIELLE/";
                        sessionOptions = sessionOptions2;
                        break;
                }

                using (Session session = new Session())
                {
                    switch (typeSynchro)
                    {
                        default:
                            Directory.CreateDirectory(repertoireLocal + "@TEMPLATE");
                            Directory.CreateDirectory(repertoireLocal + "@CLIENT");
                            Directory.CreateDirectory(repertoireLocal + "@TEST");
                            Directory.CreateDirectory(repertoireLocal + "@UNITS");
                            Directory.CreateDirectory(repertoireLocal + "@MATERIEL");
                            Directory.CreateDirectory(repertoireLocal + "@ISLANDS");
                            Directory.CreateDirectory(repertoireLocal + "@FRAMEWORK");
                            break;
                    }
                    // Will continuously report progress of synchronization
                    session.FileTransferred += FileTransferred;
                    session.FileTransferProgress += FileTransferProgress;

                    // session log
                    session.DebugLogPath = FSFLauncherCore.cheminARMA3 + @"\userconfig\FSF-LauncherA3\log.txt";
                    // Connect
                    session.Open(sessionOptions);
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Binary;

                    SynchronizationResult synchronizationResult;

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @TEMPLATE     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@TEMPLATE",
                                repertoireDistant + "@TEMPLATE",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @FRAMEWORK     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@FRAMEWORK",
                                repertoireDistant + "@FRAMEWORK",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @CLIENT     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@CLIENT",
                                repertoireDistant + "@CLIENT",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @TEST     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@TEST",
                                repertoireDistant + "@TEST",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @UNITS     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@UNITS",
                                repertoireDistant + "@UNITS",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @MATERIEL     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@MATERIEL",
                                repertoireDistant + "@MATERIEL",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "****   SYNCHRO @ISLANDS     ******" + Environment.NewLine);
                        synchronizationResult =
                            session.SynchronizeDirectories(
                                SynchronizationMode.Local,
                                repertoireLocal + "@ISLANDS",
                                repertoireDistant + "@ISLANDS",
                                true,
                                false,
                                SynchronizationCriteria.Size);
                        effaceProgressBar();

                        // Throw on any error
                        synchronizationResult.Check();
                        fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "->fichier " + repertoireLocal + "Organisation.txt mis a jour." + Environment.NewLine);

                        downloadnouvelleVersion("Organisation.txt", FSFLauncherCore.constCheminFTP + repertoireDistant, FSFLauncherCore.constLoginFTP, FSFLauncherCore.constMdpFTP, repertoireLocal);
                        downloadnouvelleVersion("version.xml", FSFLauncherCore.constCheminFTP + repertoireDistant, FSFLauncherCore.constLoginFTP, FSFLauncherCore.constMdpFTP, repertoireLocal);

                }
            }
            catch (Exception z)
            {
                fenetrePrincipale.textBox11.Text += "Error: " + z;
            }
            fenetrePrincipale.textBox11.AppendText(Environment.NewLine + "_______________" + Environment.NewLine);
            fenetrePrincipale.textBox11.Text += "Fin de la synchro";
            Interface.AlerteVersionArma3();
            Interface.AlerteVersionSynchro();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: rmount/onelan
        // End of bExportDataToXML
        // Post data via sftp
        //
        public static Boolean bsFtp(String sFtpSite, String sUserName, String sPassword, String sSshHostKeyFingerprint, String sDatabaseLocation, Boolean bSearchAll = false, Boolean bDebug = false, Boolean bExposeCredentials = false)
        {
            clsLog clsLog_ = new clsLog(msLogFile, msVersionData);
            clsError clsError_ = new clsError();

               // String sAuditRootUCase = "";
               // String sTRAMSFtpAuditRootDir = "";
            // String sTRAMSFtpRootDir = "";
            SynchronizationResult synchronizationResult;

            try
            {

                clsLog_.mLog(Constants.gcInfo, "Posting data to sftp site ...");

                byte[] data = Convert.FromBase64String(sPassword);
                String decodedSitePassword = Encoding.UTF8.GetString(data);

                //clsLog_.mLog(Constants.gcInfo, "");
               // clsLog_.mLog(Constants.gcInfo, "onelan.bsFtp, sftp (winscp) process starting **************");
                if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent +"onelan.bsFtp, sftpSite = " + sFtpSite); }
                if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, sUserName = "******"************ Credentials *****************");
                    clsLog_.mLog(Constants.gcInfo, sIndent +"onelan.bsFtp, sPassword = "******"onelan.bsFtp, sSshHostKeyFingerprint = " + sSshHostKeyFingerprint);
                    clsLog_.mLog(Constants.gcInfo, "");
                }
                if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, local root folder = " + sDatabaseLocation); }
               // clsLog_.mLog(Constants.gcInfo, "onelan.bsFtp, SearchAll = " + bSearchAll);
               // clsLog_.mLog(Constants.gcInfo, "onelan.bsFtp, Debug = " + bDebug);

                // Setup session options
                SessionOptions sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Sftp,
                    HostName = sFtpSite,
                    UserName = sUserName,
                    Password = decodedSitePassword,
                    SshHostKeyFingerprint = sSshHostKeyFingerprint

                };

                using (Session session = new Session())
                {
                    // Connect
                    if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, connecting ..."); }
                    session.Open(sessionOptions);

                    // Upload files
                    if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, uploading ..."); }

                    // Get list of directories to transfer

                    // Will continuously report progress of synchronization
                   // if (bDebug) { session.FileTransferred += FileTransferred; }

                    if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, Processing sql files ..."); }
                    // Synchronise the xml directory
                    synchronizationResult = session.SynchronizeDirectories(SynchronizationMode.Remote, sDatabaseLocation + "\\data", "onelan/data", true);
                    synchronizationResult.Check();

                    if (bDebug) { clsLog_.mLog(Constants.gcInfo, sIndent + "onelan.bsFtp, Posting images ..."); }
                    synchronizationResult = session.SynchronizeDirectories(SynchronizationMode.Remote, sDatabaseLocation + "\\images", "onelan/images", false);
                    synchronizationResult.Check();

                    // Clean up
                    session.Dispose();
                }

               // clsLog_.mLog(Constants.gcInfo, "********** Completed sftp processing **********");
                return true;
            }
            catch (Exception e)
            {
                clsError_.mLogError("Problem running sftpTransfer", "onelan", "bsFtp", e, msVersionData, msLogFile, false);
                return false;
            }

            finally
            {

            }

            // End of Post data via sftp
            //
        }
コード例 #6
-1
ファイル: Util.cs プロジェクト: RemaxThailand/POS
        public static void SyncFile()
        {
            SessionOptions sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Sftp,
                HostName = Param.SqlCeConfig["sshServer"].ToString(),
                UserName = Param.SqlCeConfig["sshUsername"].ToString(),
                SshPrivateKeyPath = Param.SqlCeConfig["sshKeyPath"].ToString(),
                PortNumber = int.Parse(Param.SqlCeConfig["sshPort"].ToString()),
                SshHostKeyFingerprint = Param.SqlCeConfig["sshHostKey"].ToString()
            };

            if (CanConnectInternet())
            {
                using (Session session = new Session())
                {
                    session.Open(sessionOptions);

                    RemoteFileInfo fileInfo = session.GetFileInfo(Param.ScpSoftwarePath + "/Updater.exe");
                    FileInfo fi = new FileInfo("Updater.exe");
                    if (DateTimeToUnixTimestamp(fi.LastWriteTime) != DateTimeToUnixTimestamp(fileInfo.LastWriteTime))
                    {
                        try
                        {
                            TransferOptions transferOptions = new TransferOptions();
                            transferOptions.TransferMode = TransferMode.Automatic;
                            TransferOperationResult transferResult;
                            transferResult = session.GetFiles(Param.ScpSoftwarePath + "/Updater.exe", "Updater.exe", false, transferOptions);
                            transferResult.Check();
                            foreach (TransferEventArgs transfer in transferResult.Transfers)
                            {
                                WriteLog(string.Format("Download of {0} : {1} succeeded", transfer.FileName, transfer.Destination));
                            }
                        }
                        catch (Exception ex)
                        {
                            WriteErrorLog(string.Format("SCP Download Error : {0}", ex.Message));
                        }
                    }

                    //session.FileTransferred += FileTransferred;
                    if (Directory.Exists(Param.ApplicationDataPath + @"\log"))
                    {
                        try
                        {
                            TransferOptions transferOptions = new TransferOptions();
                            transferOptions.TransferMode = TransferMode.Automatic;

                            SynchronizationResult synchronizationResult;
                            synchronizationResult = session.SynchronizeDirectories(SynchronizationMode.Remote,
                                Param.ApplicationDataPath + @"\log", Param.ScpLogPath, false, false, SynchronizationCriteria.Time, transferOptions);
                            synchronizationResult.Check();
                        }
                        catch (Exception ex)
                        {
                            WriteErrorLog(string.Format("SCP SynchronizeDirectories Error : {0}", ex.Message));
                        }
                    }

                    session.Close();
                }
            }

        }