ZT/sources/Modbus/NetworkCfgMgr.cpp
jfmartel e499518e8f Creation de la version V1.21
Version 1.21
-Correction d'un bug dans le calcul de l'adresse IP du Gateway
-Ajout de la désactivation du log d'ingénierie dans le script de mise à
   jour
-Correction d'un bug d'écriture dans un registre SEI
-Ajout de la composition du train dans le fichier LOG
-Suite au passage du train test, changement des CDV d'acquitement des
alarmes à Montmorency.  12A -> (12A & 11A) et 22A -> (22A & 21B).
2020-06-30 09:52:00 -04:00

89 lines
2.6 KiB
C++
Executable File

#include "NetworkCfgMgr.h"
#include <QFile>
#include <QTextStream>
#include "ZTLog.h"
CNetworkCfgMgr::CNetworkCfgMgr()
{
}
int CNetworkCfgMgr::SetTRCPNetworkAddress(QHostAddress Address)
{
//Verify if the template file exists
if(QFile::exists("./interfaces") == false)
{
CZTLog::instance()->AddLogString("ERREUR: Le fichier template de configuration réseau est inexistant",true);
return RET_ERROR;
}
//Open the template file
QFile *TemplateFile = new QFile("./interfaces");
if(TemplateFile)
{
if(TemplateFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered | QIODevice::Text) == false)
{
CZTLog::instance()->AddLogString("ERREUR: impossible d'ouvrir le fichier template de configuration réseau",true);
delete TemplateFile;
return RET_ERROR;
}
}
else
{
CZTLog::instance()->AddLogString("ERREUR: impossible d'ouvrir le fichier template de configuration réseau",true);
return RET_ERROR;
}
//Create a temporary file
QFile *TempInterfaceFile = new QFile("./interfaces_tmp");
if(TempInterfaceFile)
{
if(TempInterfaceFile->open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text | QIODevice::Unbuffered) == false)
{
CZTLog::instance()->AddLogString("ERREUR: impossible de créer le fichier temporaire de configuration réseau",true);
delete TempInterfaceFile;
return RET_ERROR;
}
}
else
{
CZTLog::instance()->AddLogString("ERREUR: impossible de créer le fichier temporaire de configuration réseau",true);
return RET_ERROR;
}
QString ConfigText(TemplateFile->readAll());
QString WorkString;
//Compute the gateway address as xxx.xxx.xxx.1
quint32 GatewayTemp = (Address.toIPv4Address() & 0xFFFFFF00);
GatewayTemp |= 0x00000001;
QHostAddress Gateway(GatewayTemp);
WorkString = ConfigText.replace("[TELETRANS_IP]",Address.toString());
ConfigText = WorkString.replace("[TELETRANS_GATEWAY]",Gateway.toString());
if(TempInterfaceFile->write(ConfigText.toAscii()) < 0)
{
CZTLog::instance()->AddLogString("ERREUR: impossible de créer le fichier temporaire de configuration réseau",true);
}
TemplateFile->close();
delete TemplateFile;
TempInterfaceFile->close();
delete TempInterfaceFile;
//Replace the system file with the temp file.
system("cp -f ./interfaces_tmp /etc/network/interfaces");
CZTLog::instance()->AddLogString(QString("Changement de l'adresse IP: %1").arg(Address.toString()),true);
return RET_OK;
}