ZT/sources/Modbus/NetworkCfgMgr.cpp
jfmartel 5cac0fc8f3 Configuration des paramètres réseau
+ Options de configuration de l'adresse IP du réseau exploitation.
+ Option d'activation du réseau Modbus CC
2017-11-27 14:49:55 -05:00

81 lines
2.3 KiB
C++

#include "NetworkCfgMgr.h"
#include <QFile>
#include <QTextStream>
#include "ZTLog.h"
CNetworkCfgMgr::CNetworkCfgMgr()
{
}
int CNetworkCfgMgr::SetTRCPNetworkAddress(QHostAddress Address)
{
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;
QHostAddress Gateway(Address.toIPv4Address() & 0xFFFFFF01);
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;
system("cp -f ./interfaces_tmp /etc/network/interfaces");
return RET_OK;
}