Interface SFTP prête pour tests sur site

This commit is contained in:
jfmartel 2023-11-27 07:49:05 -05:00
parent 76f0fa79bc
commit c4db201023
6 changed files with 97 additions and 80 deletions

View File

@ -1 +1,3 @@
put ./Trains/LOGZT2_2023-11-24-13-19-04-944.bin /home/zonetest/DevZT/test/CVRT-N-LOGZT2_2023-11-24-13-19-04-944.bin put ./Trains/LOGZT1_2023-11-27-07-28-45-323.bin /home/zonetest/DevZT/test/CVRT-D-LOGZT1_2023-11-27-07-28-45-323.bin
put ./LOG/LogZT.txt /home/zonetest/DevZT/test/CVRT-LogZT.txt
put ./ING/IngLog.txt /home/zonetest/DevZT/test/CVRT-IngLog.txt

View File

@ -1,6 +1,7 @@
#include "SFTPServerManager.h" #include "SFTPServerManager.h"
#include "GlobalDefine.h" #include "GlobalDefine.h"
#include <QFile> #include <QFile>
#include "EngLog.h"
CSFTPServerManager::CSFTPServerManager() CSFTPServerManager::CSFTPServerManager()
@ -8,7 +9,7 @@ CSFTPServerManager::CSFTPServerManager()
mEnableSFTPClient = false; mEnableSFTPClient = false;
} }
int CSFTPServerManager::InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix) int CSFTPServerManager::InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix, bool CopyEngLog)
{ {
if(EnableSFTPClient == false) if(EnableSFTPClient == false)
{ {
@ -22,6 +23,7 @@ int CSFTPServerManager::InitFTPServerManager(bool EnableSFTPClient, QString SFTP
mSFTPServerAddress = SFTPServerAddress; mSFTPServerAddress = SFTPServerAddress;
mSFTPRemoteDir = SFTPRemoteDir; mSFTPRemoteDir = SFTPRemoteDir;
mFilenamePrefix = FilenamePrefix; mFilenamePrefix = FilenamePrefix;
mCopyEngLog = CopyEngLog;
mProcessTimer = new QTimer; mProcessTimer = new QTimer;
mProcessTimer->setSingleShot(true); mProcessTimer->setSingleShot(true);
@ -81,7 +83,15 @@ int CSFTPServerManager::TransferTrainLogToSFTPServer(QString FileName, bool Dete
QString BatchCmds; QString BatchCmds;
BatchCmds.clear(); BatchCmds.clear();
BatchCmds.append(QString("put %1 %2").arg(OriginFilePath).arg(DestFilePath)); BatchCmds.append(QString("put %1 %2\n").arg(OriginFilePath).arg(DestFilePath));
QString DestLogFileName = QString("%1%2-LogZT.txt").arg(mSFTPRemoteDir).arg(mFilenamePrefix);
BatchCmds.append(QString("put ./LOG/LogZT.txt %1").arg(DestLogFileName));
if(mCopyEngLog == true)
{
DestLogFileName = QString("%1%2-IngLog.txt").arg(mSFTPRemoteDir).arg(mFilenamePrefix);
BatchCmds.append(QString("\n"));
BatchCmds.append(QString("put ./ING/IngLog.txt %1").arg(DestLogFileName));
}
SFTPBatchFile->write(qPrintable(BatchCmds)); SFTPBatchFile->write(qPrintable(BatchCmds));
SFTPBatchFile->close(); SFTPBatchFile->close();
@ -100,7 +110,7 @@ int CSFTPServerManager::TransferTrainLogToSFTPServer(QString FileName, bool Dete
} }
mTransferProcess->start(Cmd); mTransferProcess->start(Cmd);
mProcessTimer->start(PROCESS_TIMEOUT); //Allow some time to copy the file mProcessTimer->start(SFTP_PROCESS_TIMEOUT); //Allow some time to copy the file
return RET_OK; return RET_OK;
@ -113,8 +123,8 @@ void CSFTPServerManager::NewTrainFileSaved(QString Filename, bool Detection)
void CSFTPServerManager::ProcessFinished(int ExitCode, QProcess::ExitStatus ExitStatus) void CSFTPServerManager::ProcessFinished(int ExitCode, QProcess::ExitStatus ExitStatus)
{ {
qDebug("Process SFTP terminé. Exit code - status %d - %d || Output %s || Erreur %s",ExitCode,ExitStatus,qPrintable(mTransferProcess->readAllStandardOutput()),qPrintable(mTransferProcess->readAllStandardError())); CEngLog::instance()->AddLogString(QString("Process SFTP terminé. Exit code: %1 || Exit status: %2 || Output: %3 || Erreur: %4 || stdout: %5").arg(ExitCode).arg(ExitStatus).arg(qPrintable(mTransferProcess->readAllStandardOutput())).arg(qPrintable(mTransferProcess->readAllStandardError())).arg(qPrintable(mTransferProcess->readAll())));
qDebug("stdout: %s",qPrintable(mTransferProcess->readAll())); // qDebug("stdout: %s",qPrintable(mTransferProcess->readAll()));
} }
void CSFTPServerManager::ProcessTimerExpired() void CSFTPServerManager::ProcessTimerExpired()
@ -122,6 +132,6 @@ void CSFTPServerManager::ProcessTimerExpired()
if(mTransferProcess->state() != QProcess::NotRunning) if(mTransferProcess->state() != QProcess::NotRunning)
{ {
mTransferProcess->terminate(); mTransferProcess->terminate();
qDebug("Timer du process SFTP expiré Output %s || Erreur %s",qPrintable(mTransferProcess->readAllStandardOutput()),qPrintable(mTransferProcess->readAllStandardError())); CEngLog::instance()->AddLogString(QString("Timer du process SFTP expiré Output: %1 || Erreur: %s").arg(qPrintable(mTransferProcess->readAllStandardOutput())).arg(qPrintable(mTransferProcess->readAllStandardError())),2);
} }
} }

View File

@ -6,7 +6,7 @@
#include <QTimer> #include <QTimer>
//#define USE_SCP //#define USE_SCP
#define PROCESS_TIMEOUT 2000 //millisecs #define SFTP_PROCESS_TIMEOUT 2000 //millisecs
class CSFTPServerManager : public QObject class CSFTPServerManager : public QObject
{ {
@ -15,7 +15,7 @@ public:
CSFTPServerManager(); CSFTPServerManager();
~CSFTPServerManager(); ~CSFTPServerManager();
int InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix); int InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix, bool CopyEngLog);
int TransferTrainLogToSFTPServer(QString Filename, bool Detection); int TransferTrainLogToSFTPServer(QString Filename, bool Detection);
private: private:
@ -25,6 +25,7 @@ private:
QString mSFTPServerAddress; QString mSFTPServerAddress;
QString mSFTPRemoteDir; QString mSFTPRemoteDir;
QString mFilenamePrefix; QString mFilenamePrefix;
bool mCopyEngLog;
QProcess *mTransferProcess; QProcess *mTransferProcess;

View File

@ -107,103 +107,103 @@ unsigned int CSimulationScenario::CreateScenario()
/// //ZT2 /// //ZT2
InsertNewStep(STEP_ACTION_REGISTER_ZT2_ITI,300); // InsertNewStep(STEP_ACTION_REGISTER_ZT2_ITI,300);
InsertNewStep(STEP_ACTION_OCCUPY_ZT2,300); // InsertNewStep(STEP_ACTION_OCCUPY_ZT2,300);
for(int bogie = 1; bogie <= 18; bogie++) // for(int bogie = 1; bogie <= 18; bogie++)
{ // {
InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); // InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY);
InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); // InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY);
// if(bogie == 5 || bogie == 2) // // if(bogie == 5 || bogie == 2)
{ // {
// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPE,5); // // InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPE,5);
// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPE,1); // // InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPE,1);
} // }
// if(bogie == 3 || bogie == 10) // // if(bogie == 3 || bogie == 10)
{ // {
// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPI,3); //// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPI,3);
// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPI,1); //// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPI,1);
} // }
//if(bogie != 3) // //if(bogie != 3)
{ // {
InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); // InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY);
InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); // InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY);
} // }
} // }
InsertNewStep(STEP_ACTION_DESTROY_ZT2_ITI,800); // InsertNewStep(STEP_ACTION_DESTROY_ZT2_ITI,800);
InsertNewStep(STEP_ACTION_FREE_ZT2,800); // InsertNewStep(STEP_ACTION_FREE_ZT2,800);
//// MR //// MR
// // InsertNewStep(STEP_ACTION_REGISTER_ZT1_ITI,300); // InsertNewStep(STEP_ACTION_REGISTER_ZT1_ITI,300);
// InsertNewStep(STEP_ACTION_OCCUPY_ZT1_APPROACH,300); InsertNewStep(STEP_ACTION_OCCUPY_ZT1_APPROACH,300);
// InsertNewStep(STEP_ACTION_OCCUPY_ZT1,300); InsertNewStep(STEP_ACTION_OCCUPY_ZT1,300);
// InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0);
// for(int bogie = 1; bogie <= 18; bogie++) for(int bogie = 1; bogie <= 18; bogie++)
// { {
// // if(bogie != 5 && bogie != 7) // if(bogie != 5 && bogie != 7)
// // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0);
// // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0);
////V00 DETECTION //V00 DETECTION
//// if(bogie != 9) // if(bogie != 9)
//// { // {
// InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY);
//// } // }
// InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY);
// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0);
// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0);
////FN DETECTION //FN DETECTION
// if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) if(bogie != 7 /*&& bogie != 8 && bogie != 3*/)
// InsertNewStep(STEP_ACTION_ACTIVATE_FN,0); InsertNewStep(STEP_ACTION_ACTIVATE_FN,0);
// InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY);
// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY);
// InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY);
////PPI DETECTION //PPI DETECTION
//// if(bogie == 6 || bogie == 9) // if(bogie == 6 || bogie == 9)
//// InsertNewStep(STEP_ACTION_ACTIVATE_PPI,0); // InsertNewStep(STEP_ACTION_ACTIVATE_PPI,0);
////FN DETECTION //FN DETECTION
// if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) if(bogie != 7 /*&& bogie != 8 && bogie != 3*/)
// InsertNewStep(STEP_ACTION_DEACTIVATE_FN,0); InsertNewStep(STEP_ACTION_DEACTIVATE_FN,0);
//// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); // InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY);
// InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY);
////PPI DETECTION //PPI DETECTION
//// if(bogie == 6 || bogie == 9) // if(bogie == 6 || bogie == 9)
//// InsertNewStep(STEP_ACTION_DEACTIVATE_PPI,0); // InsertNewStep(STEP_ACTION_DEACTIVATE_PPI,0);
// // if(bogie != 2 && bogie != 11) // if(bogie != 2 && bogie != 11)
// // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0);
// // if(bogie != 2 && bogie != 11) // if(bogie != 2 && bogie != 11)
// // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0);
// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY);
// InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY);
// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0);
// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0);
// } }
// InsertNewStep(STEP_ACTION_DESTROY_ZT1_ITI,800); InsertNewStep(STEP_ACTION_DESTROY_ZT1_ITI,800);
// InsertNewStep(STEP_ACTION_FREE_ZT1,800); InsertNewStep(STEP_ACTION_FREE_ZT1,800);
// InsertNewStep(STEP_ACTION_FREE_ZT1_APPROACH,800); InsertNewStep(STEP_ACTION_FREE_ZT1_APPROACH,800);
return RET_OK; return RET_OK;
} }

View File

@ -63,6 +63,9 @@ CZTConfigMgr::CZTConfigMgr()
//SAMBA drive parameters //SAMBA drive parameters
mActivateSAMBADrive = false; mActivateSAMBADrive = false;
mSAMBADomain.clear(); mSAMBADomain.clear();
//SFTP server parameters
mActivateSFTPClient = false;
} }
ZTConfigResult CZTConfigMgr::LoadZTConfig() ZTConfigResult CZTConfigMgr::LoadZTConfig()

View File

@ -660,7 +660,8 @@ unsigned int CZoneTest::InitZT()
QString SFTPPassword = CZTConfigMgr::instance()->GetSFTPPassword(); QString SFTPPassword = CZTConfigMgr::instance()->GetSFTPPassword();
QString SFTPServerAddress = CZTConfigMgr::instance()->GetSFTPServerAddress(); QString SFTPServerAddress = CZTConfigMgr::instance()->GetSFTPServerAddress();
QString SFTPRemoteDir = CZTConfigMgr::instance()->GetSFTPServerRemoteDir(); QString SFTPRemoteDir = CZTConfigMgr::instance()->GetSFTPServerRemoteDir();
mSFTPManager.InitFTPServerManager(EnableSFTPClient,SFTPLogin,SFTPPassword,SFTPServerAddress,SFTPRemoteDir,mZTStation->GetStationShortName()); bool UseEngLog = CZTConfigMgr::instance()->GetEngLog() != -1;
mSFTPManager.InitFTPServerManager(EnableSFTPClient,SFTPLogin,SFTPPassword,SFTPServerAddress,SFTPRemoteDir,mZTStation->GetStationShortName(),UseEngLog);
if(EnableSFTPClient == true) if(EnableSFTPClient == true)
{ {
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mSFTPManager,SLOT(NewTrainFileSaved(QString,bool))); connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mSFTPManager,SLOT(NewTrainFileSaved(QString,bool)));