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 #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) #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 #Path du dossier cible sur le réseau
NETWORK_SHARE_PATH=//10.133.3.136/Transfert$/vers_corpo/CT NETWORK_SHARE_PATH=//10.133.3.136/Transfert$/vers_corpo/CT
#Login pour accéder au drive #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é #Nom de domaine du drive réseau. Commenter si aucun nom de domaine ne doit être spécifié
NETWORK_SHARE_DOMAIN=metro 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 #Paramètres du serveur SFTP pour la copie des fichiers logs
#NETWORK_SHARE_LOGIN=JF #Activation de la copie des fichiers sur le réseau (OUI ou NON)
#Mot de passe pour accéder au drive ACTIVER_SFTP=OUI
#NETWORK_SHARE_PASSWORD=signal77240 #Login pour accéder au serveur SFTP
#Nom de domaine du drive réseau SFTP_LOGIN=service.ct
#NETWORK_SHARE_DOMAIN=METRO #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/Modbus/ModbusSEIMgr.cpp \
sources/GuiElements/SEISettingsPage.cpp \ sources/GuiElements/SEISettingsPage.cpp \
sources/GuiElements/ModbusDisplayPage.cpp \ sources/GuiElements/ModbusDisplayPage.cpp \
sources/NetDriveMgr.cpp sources/NetDriveMgr.cpp \
sources/SFTPServerManager.cpp
HEADERS += \ HEADERS += \
sources/MainPanel.h \ sources/MainPanel.h \
@ -243,7 +244,9 @@ HEADERS += \
sources/Modbus/ModbusSEIDefs.h \ sources/Modbus/ModbusSEIDefs.h \
sources/GuiElements/SEISettingsPage.h \ sources/GuiElements/SEISettingsPage.h \
sources/GuiElements/ModbusDisplayPage.h \ sources/GuiElements/ModbusDisplayPage.h \
sources/NetDriveMgr.h sources/NetDriveMgr.h \
sources/SFTPServerManager.h
#QMAKE_LIBDIR += ./ExtLib #QMAKE_LIBDIR += ./ExtLib
#QT += network #QT += network
@ -300,7 +303,7 @@ OTHER_FILES += \
FwdPort.sh \ FwdPort.sh \
SetPortCap.sh \ SetPortCap.sh \
interfaces \ interfaces \
UpdateZT.sh UpdateZT.sh \
INCLUDEPATH += $$PWD/ \ INCLUDEPATH += $$PWD/ \
$$PWD/SeaMaxLinux/ \ $$PWD/SeaMaxLinux/ \
@ -312,4 +315,5 @@ INCLUDEPATH += $$PWD/ \
$$PWD/sources/SerialPort \ $$PWD/sources/SerialPort \
$$PWD/sources/Simulator \ $$PWD/sources/Simulator \
$$PWD/sources/QCustomPlot \ $$PWD/sources/QCustomPlot \
$$PWD/sources/Modbus $$PWD/sources/Modbus \

View File

@ -1,5 +1,70 @@
#include "SFTPServerManager.h" #include "SFTPServerManager.h"
#include "GlobalDefine.h"
CSFTPServerManager::CSFTPServerManager() 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 #ifndef SFTPSERVERMANAGER_H
#define SFTPSERVERMANAGER_H #define SFTPSERVERMANAGER_H
class CSFTPServerManager #include <QObject>
#define USE_SCP
class CSFTPServerManager : public QObject
{ {
Q_OBJECT
public: public:
CSFTPServerManager(); 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 #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); mSAMBADomain = string.mid(pos);
CEngLog::instance()->AddLogString(QString("Domaine SAMBA: %1").arg(mSAMBADomain),1); 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; 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 GetSAMBALogin();
QString GetSAMBAPassword(); QString GetSAMBAPassword();
QString GetSAMBADomain(); QString GetSAMBADomain();
bool GetSFTPActivated();
QString GetSFTPLogin();
QString GetSFTPPassword();
QString GetSFTPServerAddress();
QString GetSFTPServerRemoteDir();
@ -134,6 +139,13 @@ private:
QString mSAMBALogin; QString mSAMBALogin;
QString mSAMBAPassword; QString mSAMBAPassword;
QString mSAMBADomain; QString mSAMBADomain;
// SFTP server parameters
bool mActivateSFTPClient;
QString mSFTPLogin;
QString mSFTPPassword;
QString mSFTPAddress;
QString mSFTPRemoteDir;
}; };
#endif // ZTCONFIGMGR_H #endif // ZTCONFIGMGR_H

View File

@ -62,6 +62,8 @@
#include <sys/time.h> #include <sys/time.h>
#ifdef USE_NETWORKING #ifdef USE_NETWORKING
#include "NetworkManager.h" #include "NetworkManager.h"
#endif #endif
@ -290,7 +292,7 @@ unsigned int CZoneTest::Start()
mZTStateMachine->mZTDetectionConfig = mZTSettings->mDetectionFunctionSettings; mZTStateMachine->mZTDetectionConfig = mZTSettings->mDetectionFunctionSettings;
connect(mZTStateMachine,SIGNAL(NewTrainLogSaved(QString,bool)),panel.mLogsListPage,SLOT(NewTrainLogFileSaved(QString,bool))); 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; CZTLog::instance()->mProgramHandle = this;
@ -648,7 +650,21 @@ unsigned int CZoneTest::InitZT()
QString SAMBAPassword = CZTConfigMgr::instance()->GetSAMBAPassword(); QString SAMBAPassword = CZTConfigMgr::instance()->GetSAMBAPassword();
QString SAMBADomain = CZTConfigMgr::instance()->GetSAMBADomain(); QString SAMBADomain = CZTConfigMgr::instance()->GetSAMBADomain();
mNetworkDriveMgr.InitNetDriveMgr(UseNetworkDrive,SAMBAMountPoint,SAMBALogin,SAMBAPassword,SAMBADomain,mZTStation->GetStationShortName()); 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 "ModbusSEIMgr.h"
#include "NetworkCfgMgr.h" #include "NetworkCfgMgr.h"
#include "NetDriveMgr.h" #include "NetDriveMgr.h"
#include "SFTPServerManager.h"
#include "TCPProtocol.h" #include "TCPProtocol.h"
@ -89,6 +90,7 @@ public:
CWelcomePage *mWelcomePagePtr; CWelcomePage *mWelcomePagePtr;
void ZTFunctionsOptionSelected(); void ZTFunctionsOptionSelected();
void ZTMaintenanceOptionSeleced(); void ZTMaintenanceOptionSeleced();
void OptionsMenuPageSelected(); void OptionsMenuPageSelected();
@ -203,6 +205,7 @@ private:
CModbusSEIMgr *mModbusSEIMgr; CModbusSEIMgr *mModbusSEIMgr;
CNetworkCfgMgr mNetworkCfgMgr; CNetworkCfgMgr mNetworkCfgMgr;
CNetDriveMgr mNetworkDriveMgr; CNetDriveMgr mNetworkDriveMgr;
CSFTPServerManager mSFTPManager;
QLocalSocket mACPISocket; QLocalSocket mACPISocket;
// CWatchdogCtrl mWatchdogCtrl; // CWatchdogCtrl mWatchdogCtrl;