Début dev SFTP suite

This commit is contained in:
jfmartel
2023-11-17 14:17:05 -05:00
parent f6bb9f3d9a
commit f35cb3cfee
9 changed files with 204 additions and 2139 deletions
+65
View File
@@ -1,5 +1,70 @@
#include "SFTPServerManager.h"
#include "GlobalDefine.h"
CSFTPServerManager::CSFTPServerManager()
{
mEnableSFTPClient = false;
}
int CSFTPServerManager::InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix)
{
if(EnableSFTPClient == false)
{
mEnableSFTPClient = false;
return RET_OK;
}
mEnableSFTPClient = true;
mSFTPLogin = SFTPLogin;
mSFTPPassword = SFTPPassword;
mSFTPServerAddress = SFTPServerAddress;
mSFTPRemoteDir = SFTPRemoteDir;
mFilenamePrefix = FilenamePrefix;
return RET_OK;
}
int CSFTPServerManager::TransferTrainLogToSFTPServer(QString FileName, bool Detection)
{
if(mEnableSFTPClient == false)
{
return RET_ERROR;
}
QString DestFilePath = FileName;
if(Detection == true)
{
DestFilePath.prepend(mFilenamePrefix + "-D-"); //Flag indiquant que ce passage contient des détections (D)
}
else
{
DestFilePath.prepend(mFilenamePrefix + "-N-"); //Flag inidiquant un passage normal (sans détection) (N)
}
DestFilePath.prepend(mSFTPRemoteDir);
QString OriginFilePath = FileName;
OriginFilePath.prepend("./Trains/");
QString Cmd;
#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));
// mTransferProcess->start(Cmd);
// mProcessTimer->start(PROCESS_TIMEOUT); //Allow some time to copy the file
// mNetDriveSMState = NET_DRIVE_TRANSFERRING_TRAIN_LOG_STATE;
return RET_OK;
}
void CSFTPServerManager::NewTrainFileSaved(QString Filename, bool Detection)
{
TransferTrainLogToSFTPServer(Filename,Detection);
}
+21 -1
View File
@@ -1,10 +1,30 @@
#ifndef SFTPSERVERMANAGER_H
#define SFTPSERVERMANAGER_H
class CSFTPServerManager
#include <QObject>
#define USE_SCP
class CSFTPServerManager : public QObject
{
Q_OBJECT
public:
CSFTPServerManager();
int InitFTPServerManager(bool EnableSFTPClient, QString SFTPLogin, QString SFTPPassword, QString SFTPServerAddress, QString SFTPRemoteDir, QString FilenamePrefix);
int TransferTrainLogToSFTPServer(QString Filename, bool Detection);
private:
bool mEnableSFTPClient;
QString mSFTPLogin;
QString mSFTPPassword;
QString mSFTPServerAddress;
QString mSFTPRemoteDir;
QString mFilenamePrefix;
public slots:
void NewTrainFileSaved(QString,bool);
};
#endif // SFTPSERVERMANAGER_H
File diff suppressed because it is too large Load Diff
+60 -1
View File
@@ -296,7 +296,41 @@ ZTConfigResult CZTConfigMgr::LoadZTConfig()
mSAMBADomain = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Domaine SAMBA: %1").arg(mSAMBADomain),1);
}
}
else if(string.contains("ACTIVER_SFTP"))
{
if(string.mid(pos) == "OUI")
{
mActivateSFTPClient = true;
CEngLog::instance()->AddLogString(QString().sprintf("Copie sur serveur SFTP activée"),1);
}
else if(string.mid(pos) == "NON")
{
mActivateSFTPClient = false;
CEngLog::instance()->AddLogString(QString().sprintf("Copie sur serveur SFTP désactivée"),1);
}
}
else if(string.contains("SFTP_LOGIN"))
{
mSFTPLogin = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Login SFTP: %1").arg(mSFTPLogin),1);
}
else if(string.contains("SFTP_PASSWORD"))
{
mSFTPPassword = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Mot de passe SFTP: %1").arg(mSFTPPassword),1);
}
else if(string.contains("SFTP_SERVER_ADDRESS"))
{
mSFTPAddress = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Adresse du serveur SFTP: %1").arg(mSFTPAddress),1);
}
else if(string.contains("SFTP_DESTINATION"))
{
mSFTPRemoteDir = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Répertoire distant SFTP %1").arg(mSFTPRemoteDir),1);
}
}
}
}
@@ -395,3 +429,28 @@ QString CZTConfigMgr::GetSAMBADomain()
{
return mSAMBADomain;
}
bool CZTConfigMgr::GetSFTPActivated()
{
return mActivateSFTPClient;
}
QString CZTConfigMgr::GetSFTPLogin()
{
return mSFTPLogin;
}
QString CZTConfigMgr::GetSFTPPassword()
{
return mSFTPPassword;
}
QString CZTConfigMgr::GetSFTPServerAddress()
{
return mSFTPAddress;
}
QString CZTConfigMgr::GetSFTPServerRemoteDir()
{
return mSFTPRemoteDir;
}
+12
View File
@@ -102,6 +102,11 @@ public:
QString GetSAMBALogin();
QString GetSAMBAPassword();
QString GetSAMBADomain();
bool GetSFTPActivated();
QString GetSFTPLogin();
QString GetSFTPPassword();
QString GetSFTPServerAddress();
QString GetSFTPServerRemoteDir();
@@ -134,6 +139,13 @@ private:
QString mSAMBALogin;
QString mSAMBAPassword;
QString mSAMBADomain;
// SFTP server parameters
bool mActivateSFTPClient;
QString mSFTPLogin;
QString mSFTPPassword;
QString mSFTPAddress;
QString mSFTPRemoteDir;
};
#endif // ZTCONFIGMGR_H
+18 -2
View File
@@ -62,6 +62,8 @@
#include <sys/time.h>
#ifdef USE_NETWORKING
#include "NetworkManager.h"
#endif
@@ -290,7 +292,7 @@ unsigned int CZoneTest::Start()
mZTStateMachine->mZTDetectionConfig = mZTSettings->mDetectionFunctionSettings;
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),panel.mLogsListPage,SLOT(NewTrainLogFileSaved(QString,bool)));
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mNetworkDriveMgr,SLOT(NewTrainFileSaved(QString,bool)));
// connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mNetworkDriveMgr,SLOT(NewTrainFileSaved(QString,bool))); //JFM déplacé plus bas, connect seulement si NetworkDrive est activé
CZTLog::instance()->mProgramHandle = this;
@@ -648,7 +650,21 @@ unsigned int CZoneTest::InitZT()
QString SAMBAPassword = CZTConfigMgr::instance()->GetSAMBAPassword();
QString SAMBADomain = CZTConfigMgr::instance()->GetSAMBADomain();
mNetworkDriveMgr.InitNetDriveMgr(UseNetworkDrive,SAMBAMountPoint,SAMBALogin,SAMBAPassword,SAMBADomain,mZTStation->GetStationShortName());
// mNetworkDriveMgr.InitNetDriveMgr(true,"//192.168.50.50/TestZT","JF","signal77240","",mZTStation->GetStationShortName());
if(UseNetworkDrive == true)
{
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mNetworkDriveMgr,SLOT(NewTrainFileSaved(QString,bool)));
}
bool EnableSFTPClient = CZTConfigMgr::instance()->GetSFTPActivated();
QString SFTPLogin = CZTConfigMgr::instance()->GetSFTPLogin();
QString SFTPPassword = CZTConfigMgr::instance()->GetSFTPPassword();
QString SFTPServerAddress = CZTConfigMgr::instance()->GetSFTPServerAddress();
QString SFTPRemoteDir = CZTConfigMgr::instance()->GetSFTPServerRemoteDir();
mSFTPManager.InitFTPServerManager(EnableSFTPClient,SFTPLogin,SFTPPassword,SFTPServerAddress,SFTPRemoteDir,mZTStation->GetStationShortName());
if(EnableSFTPClient == true)
{
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),&mSFTPManager,SLOT(NewTrainFileSaved(QString,bool)));
}
+3
View File
@@ -60,6 +60,7 @@
#include "ModbusSEIMgr.h"
#include "NetworkCfgMgr.h"
#include "NetDriveMgr.h"
#include "SFTPServerManager.h"
#include "TCPProtocol.h"
@@ -89,6 +90,7 @@ public:
CWelcomePage *mWelcomePagePtr;
void ZTFunctionsOptionSelected();
void ZTMaintenanceOptionSeleced();
void OptionsMenuPageSelected();
@@ -203,6 +205,7 @@ private:
CModbusSEIMgr *mModbusSEIMgr;
CNetworkCfgMgr mNetworkCfgMgr;
CNetDriveMgr mNetworkDriveMgr;
CSFTPServerManager mSFTPManager;
QLocalSocket mACPISocket;
// CWatchdogCtrl mWatchdogCtrl;