ZT/sources/Modbus/NetworkCfgMgr.cpp
jfmartel a76e681e73 Commentaires
Ajout de commentaires
Amélioration de l'affichate de l'état du modbus.
2017-12-07 07:41:14 -05:00

83 lines
2.4 KiB
C++

#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;
QHostAddress Gateway(Address.toIPv4Address() & 0xFFFFFF01); //compute the gateway address xxx.xxx.xxx.1
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");
return RET_OK;
}