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

View File

@ -95,7 +95,7 @@ STATION=COTE_VERTU
#----------------------------------
#Paramètres du dossier partagé sur le réseau (SAMBA) pour la copie des fichiers logs
#Activation de la copie des fichiers sur le réseau (OUI ou NON)
ACTIVER_SAMBA=OUI
ACTIVER_SAMBA=NON
#Path du dossier cible sur le réseau
NETWORK_SHARE_PATH=//10.133.3.136/Transfert$/vers_corpo/CT
#Login pour accéder au drive
@ -105,11 +105,19 @@ NETWORK_SHARE_PASSWORD=SigN4lisat10n!77240TraNsf3Rt
#Nom de domaine du drive réseau. Commenter si aucun nom de domaine ne doit être spécifié
NETWORK_SHARE_DOMAIN=metro
#Path du dossier cible sur le réseau
#NETWORK_SHARE_PATH=//192.168.50.110/TestZT
#Login pour accéder au drive
#NETWORK_SHARE_LOGIN=JF
#Mot de passe pour accéder au drive
#NETWORK_SHARE_PASSWORD=signal77240
#Nom de domaine du drive réseau
#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/

12
ZT.pro
View File

@ -121,7 +121,8 @@ SOURCES += \
sources/Modbus/ModbusSEIMgr.cpp \
sources/GuiElements/SEISettingsPage.cpp \
sources/GuiElements/ModbusDisplayPage.cpp \
sources/NetDriveMgr.cpp
sources/NetDriveMgr.cpp \
sources/SFTPServerManager.cpp
HEADERS += \
sources/MainPanel.h \
@ -243,7 +244,9 @@ HEADERS += \
sources/Modbus/ModbusSEIDefs.h \
sources/GuiElements/SEISettingsPage.h \
sources/GuiElements/ModbusDisplayPage.h \
sources/NetDriveMgr.h
sources/NetDriveMgr.h \
sources/SFTPServerManager.h
#QMAKE_LIBDIR += ./ExtLib
#QT += network
@ -300,7 +303,7 @@ OTHER_FILES += \
FwdPort.sh \
SetPortCap.sh \
interfaces \
UpdateZT.sh
UpdateZT.sh \
INCLUDEPATH += $$PWD/ \
$$PWD/SeaMaxLinux/ \
@ -312,4 +315,5 @@ INCLUDEPATH += $$PWD/ \
$$PWD/sources/SerialPort \
$$PWD/sources/Simulator \
$$PWD/sources/QCustomPlot \
$$PWD/sources/Modbus
$$PWD/sources/Modbus \

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

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

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;
}

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

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

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;