diff --git a/Configuration/ZT.cfg b/Configuration/ZT.cfg index 8a7ce6b..39e3e22 100644 --- a/Configuration/ZT.cfg +++ b/Configuration/ZT.cfg @@ -106,18 +106,29 @@ NETWORK_SHARE_PASSWORD=SigN4lisat10n!77240TraNsf3Rt NETWORK_SHARE_DOMAIN=metro +#---------------------------------- +#Paramètres du serveur SFTP pour la copie des fichiers logs +#Activation de la copie des fichiers sur le réseau (OUI ou NON) +#ACTIVER_SFTP=OUI +#Login pour accéder au serveur SFTP +#SFTP_LOGIN=service.ct +#Password pour accéder au serveur SFTP +#SFTP_PASSWORD=SigN4lisat10n!77240TraNsf3Rt +#Adresse du serveur +#SFTP_SERVER_ADDRESS=127.0.0.1 +#Répertoire de destination sur le serveur (doit finir par un "/") +#SFTP_DESTINATION=/Transfert$/vers_corpo/CT/ + #---------------------------------- #Paramètres du serveur SFTP pour la copie des fichiers logs #Activation de la copie des fichiers sur le réseau (OUI ou NON) ACTIVER_SFTP=OUI #Login pour accéder au serveur SFTP -SFTP_LOGIN=service.ct +SFTP_LOGIN=zonetest #Password pour accéder au serveur SFTP -SFTP_PASSWORD=SigN4lisat10n!77240TraNsf3Rt +SFTP_PASSWORD=zonetest #Adresse du serveur SFTP_SERVER_ADDRESS=127.0.0.1 #Répertoire de destination sur le serveur (doit finir par un "/") -SFTP_DESTINATION=/Transfert$/vers_corpo/CT/ - - +SFTP_DESTINATION=/home/zonetest/DevZT/test/ diff --git a/sftpbatch b/sftpbatch new file mode 100644 index 0000000..af4f3ed --- /dev/null +++ b/sftpbatch @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/sources/SFTPServerManager.cpp b/sources/SFTPServerManager.cpp index 5798f25..1800ab4 100644 --- a/sources/SFTPServerManager.cpp +++ b/sources/SFTPServerManager.cpp @@ -1,5 +1,7 @@ #include "SFTPServerManager.h" #include "GlobalDefine.h" +#include + CSFTPServerManager::CSFTPServerManager() { @@ -21,9 +23,23 @@ int CSFTPServerManager::InitFTPServerManager(bool EnableSFTPClient, QString SFTP mSFTPRemoteDir = SFTPRemoteDir; mFilenamePrefix = FilenamePrefix; + mProcessTimer = new QTimer; + mProcessTimer->setSingleShot(true); + connect(mProcessTimer,SIGNAL(timeout()),this,SLOT(ProcessTimerExpired())); + + mTransferProcess = new QProcess(this); + connect(mTransferProcess,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(ProcessFinished(int,QProcess::ExitStatus))); + + return RET_OK; } +CSFTPServerManager::~CSFTPServerManager() +{ + delete mTransferProcess; + delete mProcessTimer; +} + int CSFTPServerManager::TransferTrainLogToSFTPServer(QString FileName, bool Detection) { if(mEnableSFTPClient == false) @@ -53,12 +69,38 @@ int CSFTPServerManager::TransferTrainLogToSFTPServer(QString FileName, bool Dete #ifdef USE_SCP Cmd = QString ("sshpass -p \"%1\" scp %2 %3@%4:%5").arg(mSFTPPassword).arg(OriginFilePath).arg(mSFTPLogin).arg(mSFTPServerAddress).arg(DestFilePath); #else -#endif - qDebug("%s",qPrintable(Cmd)); + QFile *SFTPBatchFile = new QFile("./sftpbatch"); + if(SFTPBatchFile->open(QFile::ReadWrite | QFile::Truncate | QFile::Text | QFile::Unbuffered) == false) + { + qDebug("Imposible d'ouvrir le fichier sftpbatch"); + SFTPBatchFile->close(); + delete SFTPBatchFile; + return RET_ERROR; + } -// mTransferProcess->start(Cmd); -// mProcessTimer->start(PROCESS_TIMEOUT); //Allow some time to copy the file -// mNetDriveSMState = NET_DRIVE_TRANSFERRING_TRAIN_LOG_STATE; + QString BatchCmds; + BatchCmds.clear(); + + BatchCmds.append(QString("put %1 %2").arg(OriginFilePath).arg(DestFilePath)); + + SFTPBatchFile->write(qPrintable(BatchCmds)); + SFTPBatchFile->close(); + delete SFTPBatchFile; + + Cmd = QString ("sshpass -p \"%1\" sftp -oBatchMode=no -b ./sftpbatch %2@%3").arg(mSFTPPassword).arg(mSFTPLogin).arg(mSFTPServerAddress); + +#endif + + qDebug("Commande pour copie du fichier log: %s",qPrintable(Cmd)); + + if(mTransferProcess->state() != QProcess::NotRunning) + { + qDebug("Copie de fichier log avortée car QProcess roule"); + return RET_ERROR; + } + + mTransferProcess->start(Cmd); + mProcessTimer->start(PROCESS_TIMEOUT); //Allow some time to copy the file return RET_OK; @@ -68,3 +110,18 @@ void CSFTPServerManager::NewTrainFileSaved(QString Filename, bool Detection) { TransferTrainLogToSFTPServer(Filename,Detection); } + +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())); + qDebug("stdout: %s",qPrintable(mTransferProcess->readAll())); +} + +void CSFTPServerManager::ProcessTimerExpired() +{ + if(mTransferProcess->state() != QProcess::NotRunning) + { + mTransferProcess->terminate(); + qDebug("Timer du process SFTP expiré Output %s || Erreur %s",qPrintable(mTransferProcess->readAllStandardOutput()),qPrintable(mTransferProcess->readAllStandardError())); + } +} diff --git a/sources/SFTPServerManager.h b/sources/SFTPServerManager.h index 03d4a40..aa8e7f6 100644 --- a/sources/SFTPServerManager.h +++ b/sources/SFTPServerManager.h @@ -2,8 +2,11 @@ #define SFTPSERVERMANAGER_H #include +#include +#include -#define USE_SCP +//#define USE_SCP +#define PROCESS_TIMEOUT 2000 //millisecs class CSFTPServerManager : public QObject { @@ -11,6 +14,7 @@ class CSFTPServerManager : public QObject public: CSFTPServerManager(); + ~CSFTPServerManager(); int InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix); int TransferTrainLogToSFTPServer(QString Filename, bool Detection); @@ -22,8 +26,14 @@ private: QString mSFTPRemoteDir; QString mFilenamePrefix; + + QProcess *mTransferProcess; + QTimer *mProcessTimer; + public slots: void NewTrainFileSaved(QString,bool); + void ProcessTimerExpired(); + void ProcessFinished(int ExitCode, QProcess::ExitStatus ExitStatus); }; diff --git a/sources/Simulator/SimulationScenario.cpp b/sources/Simulator/SimulationScenario.cpp index fefb95c..c28ce68 100644 --- a/sources/Simulator/SimulationScenario.cpp +++ b/sources/Simulator/SimulationScenario.cpp @@ -107,103 +107,103 @@ unsigned int CSimulationScenario::CreateScenario() /// //ZT2 -// InsertNewStep(STEP_ACTION_REGISTER_ZT2_ITI,300); -// InsertNewStep(STEP_ACTION_OCCUPY_ZT2,300); + InsertNewStep(STEP_ACTION_REGISTER_ZT2_ITI,300); + InsertNewStep(STEP_ACTION_OCCUPY_ZT2,300); -// for(int bogie = 1; bogie <= 18; bogie++) -// { -// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); -// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); + for(int bogie = 1; bogie <= 18; bogie++) + { + InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); + InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); -// // if(bogie == 5 || bogie == 2) -// { -// // InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPE,5); -// // InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPE,1); + // if(bogie == 5 || bogie == 2) + { + // InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPE,5); + // InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPE,1); -// } + } -// // if(bogie == 3 || bogie == 10) -// { -//// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPI,3); -//// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPI,1); + // if(bogie == 3 || bogie == 10) + { +// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_PPI,3); +// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_PPI,1); -// } + } -// //if(bogie != 3) -// { -// InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); -// InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); -// } + //if(bogie != 3) + { + InsertNewStep(STEP_ACTION_ACTIVATE_ZT2_S1,SENSOR_DELAY); + InsertNewStep(STEP_ACTION_DEACTIVATE_ZT2_S1,BOGIE_DELAY); + } -// } + } -// InsertNewStep(STEP_ACTION_DESTROY_ZT2_ITI,800); -// InsertNewStep(STEP_ACTION_FREE_ZT2,800); + InsertNewStep(STEP_ACTION_DESTROY_ZT2_ITI,800); + InsertNewStep(STEP_ACTION_FREE_ZT2,800); //// MR - // InsertNewStep(STEP_ACTION_REGISTER_ZT1_ITI,300); - InsertNewStep(STEP_ACTION_OCCUPY_ZT1_APPROACH,300); - InsertNewStep(STEP_ACTION_OCCUPY_ZT1,300); +// // InsertNewStep(STEP_ACTION_REGISTER_ZT1_ITI,300); +// InsertNewStep(STEP_ACTION_OCCUPY_ZT1_APPROACH,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++) - { - // if(bogie != 5 && bogie != 7) - // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); - // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); -//V00 DETECTION -// if(bogie != 9) -// { - InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); -// } - InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); - // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); - // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); +// for(int bogie = 1; bogie <= 18; bogie++) +// { +// // if(bogie != 5 && bogie != 7) +// // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); +// // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); +////V00 DETECTION +//// if(bogie != 9) +//// { +// InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); +//// } +// InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); +// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); +// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); -//FN DETECTION - if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) - InsertNewStep(STEP_ACTION_ACTIVATE_FN,0); +////FN DETECTION +// if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) +// InsertNewStep(STEP_ACTION_ACTIVATE_FN,0); - InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); - InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); - InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); +// InsertNewStep(STEP_ACTION_ACTIVATE_S1,SENSOR_DELAY); +// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); +// InsertNewStep(STEP_ACTION_DEACTIVATE_S1,BOGIE_DELAY); -//PPI DETECTION -// if(bogie == 6 || bogie == 9) -// InsertNewStep(STEP_ACTION_ACTIVATE_PPI,0); +////PPI DETECTION +//// if(bogie == 6 || bogie == 9) +//// InsertNewStep(STEP_ACTION_ACTIVATE_PPI,0); -//FN DETECTION - if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) - InsertNewStep(STEP_ACTION_DEACTIVATE_FN,0); +////FN DETECTION +// if(bogie != 7 /*&& bogie != 8 && bogie != 3*/) +// InsertNewStep(STEP_ACTION_DEACTIVATE_FN,0); -// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); - InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); +//// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); +// InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); -//PPI DETECTION -// if(bogie == 6 || bogie == 9) -// InsertNewStep(STEP_ACTION_DEACTIVATE_PPI,0); +////PPI DETECTION +//// if(bogie == 6 || bogie == 9) +//// InsertNewStep(STEP_ACTION_DEACTIVATE_PPI,0); - // if(bogie != 2 && bogie != 11) - // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); - // if(bogie != 2 && bogie != 11) - // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); - InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); - InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); - // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); - // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); +// // if(bogie != 2 && bogie != 11) +// // InsertNewStep(STEP_ACTION_ACTIVATE_PGI,0); +// // if(bogie != 2 && bogie != 11) +// // InsertNewStep(STEP_ACTION_ACTIVATE_PGE,0); +// InsertNewStep(STEP_ACTION_ACTIVATE_S2,SENSOR_DELAY); +// InsertNewStep(STEP_ACTION_DEACTIVATE_S2,BOGIE_DELAY); +// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGI,0); +// // InsertNewStep(STEP_ACTION_DEACTIVATE_PGE,0); - } +// } // 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; } diff --git a/sources/ZTconfigmgr.cpp b/sources/ZTconfigmgr.cpp index 081fe8a..23d721e 100644 --- a/sources/ZTconfigmgr.cpp +++ b/sources/ZTconfigmgr.cpp @@ -270,7 +270,7 @@ ZTConfigResult CZTConfigMgr::LoadZTConfig() mActivateSAMBADrive = true; CEngLog::instance()->AddLogString(QString().sprintf("Copie sur répertoire SAMBA activée"),1); } - else if(string.mid(pos) == "NON") + else { mActivateSAMBADrive = false; CEngLog::instance()->AddLogString(QString().sprintf("Copie sur répertoire SAMBA désactivée"),1); @@ -303,7 +303,7 @@ ZTConfigResult CZTConfigMgr::LoadZTConfig() mActivateSFTPClient = true; CEngLog::instance()->AddLogString(QString().sprintf("Copie sur serveur SFTP activée"),1); } - else if(string.mid(pos) == "NON") + else { mActivateSFTPClient = false; CEngLog::instance()->AddLogString(QString().sprintf("Copie sur serveur SFTP désactivée"),1);