修改嵌入式web页面输入IP错误时,增加验证

This commit is contained in:
DESKTOP-LBGFPFF\CHAOS-PC 2021-10-28 16:06:30 +08:00
parent 06b5339acf
commit 4c916b2a34
11 changed files with 366 additions and 218 deletions

83
.autotools Normal file
View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<configurations>
<configuration id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.600849340">
<option id="configure" value="configure"/>
<option id="configdir" value=""/>
<option id="cache-file" value=""/>
<option id="help" value="false"/>
<option id="no-create" value="false"/>
<option id="quiet" value="false"/>
<option id="version" value="false"/>
<option id="host" value=""/>
<option id="build" value=""/>
<option id="target" value=""/>
<option id="prefix" value=""/>
<option id="exec-prefix" value=""/>
<option id="libdir" value=""/>
<option id="bindir" value=""/>
<option id="sbindir" value=""/>
<option id="includedir" value=""/>
<option id="datadir" value=""/>
<option id="sysconfdir" value=""/>
<option id="infodir" value=""/>
<option id="mandir" value=""/>
<option id="srcdir" value=""/>
<option id="localstatedir" value=""/>
<option id="sharedstatedir" value=""/>
<option id="libexecdir" value=""/>
<option id="oldincludedir" value=""/>
<option id="program-prefix" value=""/>
<option id="program-suffix" value=""/>
<option id="program-transform-name" value=""/>
<option id="env_vars" value=""/>
<option id="enable-maintainer-mode" value="false"/>
<flag id="CFLAGS" value="CFLAGS|CXXFLAGS">
<flagvalue id="cflags-debug" value="false"/>
<flagvalue id="cflags-gprof" value="false"/>
<flagvalue id="cflags-gcov" value="false"/>
</flag>
<option id="user" value=""/>
<option id="autogen" value="autogen.sh"/>
<option id="autogenOpts" value=""/>
</configuration>
<configuration id="org.eclipse.linuxtools.cdt.autotools.core.configuration.build.debug.861628562">
<option id="configure" value="configure"/>
<option id="configdir" value=""/>
<option id="cache-file" value=""/>
<option id="help" value="false"/>
<option id="no-create" value="false"/>
<option id="quiet" value="false"/>
<option id="version" value="false"/>
<option id="host" value=""/>
<option id="build" value=""/>
<option id="target" value=""/>
<option id="prefix" value=""/>
<option id="exec-prefix" value=""/>
<option id="libdir" value=""/>
<option id="bindir" value=""/>
<option id="sbindir" value=""/>
<option id="includedir" value=""/>
<option id="datadir" value=""/>
<option id="sysconfdir" value=""/>
<option id="infodir" value=""/>
<option id="mandir" value=""/>
<option id="srcdir" value=""/>
<option id="localstatedir" value=""/>
<option id="sharedstatedir" value=""/>
<option id="libexecdir" value=""/>
<option id="oldincludedir" value=""/>
<option id="program-prefix" value=""/>
<option id="program-suffix" value=""/>
<option id="program-transform-name" value=""/>
<option id="env_vars" value=""/>
<option id="enable-maintainer-mode" value="false"/>
<flag id="CFLAGS" value="CFLAGS|CXXFLAGS">
<flagvalue id="cflags-debug" value="false"/>
<flagvalue id="cflags-gprof" value="false"/>
<flagvalue id="cflags-gcov" value="false"/>
</flag>
<option id="user" value="CFLAGS=&apos;-g -O0&apos; CXXFLAGS=&apos;-g -O0&apos;"/>
<option id="autogen" value="autogen.sh"/>
<option id="autogenOpts" value=""/>
</configuration>
</configurations>

View File

@ -36,18 +36,18 @@
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp/include"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp/include"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/include"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/include"/>
</option> </option>
<option id="gnu.cpp.compiler.option.dialect.std.1150808616" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.default" valueType="enumerated"/> <option id="gnu.cpp.compiler.option.dialect.std.745589380" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.default" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1387553514" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1387553514" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool> </tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.310128155" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/> <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.310128155" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool command="g++" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="org.eclipse.cdt.core.GLDErrorParser" id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1049583485" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> <tool command="g++" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" errorParsers="org.eclipse.cdt.core.GLDErrorParser" id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1049583485" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<option id="gnu.cpp.link.option.paths.1174701783" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths"> <option id="gnu.cpp.link.option.paths.1174701783" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/boost/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/boost/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/curl/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/curl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/ssl/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/ssl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/fftw/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/fftw/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/mqtt1410/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/mqtt1410/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/lib"/>
</option> </option>
<option id="gnu.cpp.link.option.libs.1027000140" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs"> <option id="gnu.cpp.link.option.libs.1027000140" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
@ -113,33 +113,31 @@
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp/include"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp/include"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/include"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/include"/>
</option> </option>
<option id="gnu.cpp.compiler.option.dialect.std.603357595" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.default" valueType="enumerated"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.542083696" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.542083696" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool> </tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1480789657" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/> <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1480789657" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.762964696" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"> <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.762964696" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<option id="gnu.cpp.link.option.paths.1792108116" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths"> <option id="gnu.cpp.link.option.paths.1792108116" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/boost/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/boost/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/curl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/curl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/ssl/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/ssl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/fftw/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/fftw/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/jsoncpp"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/mqtt1410/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/mqtt1410/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/DataWatchThirdParty/curl/lib"/>
<listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/lib"/> <listOptionValue builtIn="false" value="/nfsroot/eclipse-workspace/GatewayThirdParty/sqlite/lib"/>
</option> </option>
<option id="gnu.cpp.link.option.libs.2006599708" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs"> <option id="gnu.cpp.link.option.libs.2006599708" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
<listOptionValue builtIn="false" value="sqlite3"/> <listOptionValue builtIn="false" value="sqlite3"/>
<listOptionValue builtIn="false" value="curl"/>
<listOptionValue builtIn="false" value="ssl"/>
<listOptionValue builtIn="false" value="crypto"/>
<listOptionValue builtIn="false" value="boost_system"/> <listOptionValue builtIn="false" value="boost_system"/>
<listOptionValue builtIn="false" value="pthread"/> <listOptionValue builtIn="false" value="pthread"/>
<listOptionValue builtIn="false" value="boost_thread"/> <listOptionValue builtIn="false" value="boost_thread"/>
<listOptionValue builtIn="false" value="boost_date_time"/> <listOptionValue builtIn="false" value="boost_date_time"/>
<listOptionValue builtIn="false" value="fftw3"/> <listOptionValue builtIn="false" value="fftw3"/>
<listOptionValue builtIn="false" value="ssl"/>
<listOptionValue builtIn="false" value="crypto"/>
<listOptionValue builtIn="false" value="json"/> <listOptionValue builtIn="false" value="json"/>
<listOptionValue builtIn="false" value="mosquitto"/> <listOptionValue builtIn="false" value="mosquitto"/>
<listOptionValue builtIn="false" value="curl"/>
</option> </option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1442843267" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1442843267" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1734643904566128475" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1795775469460424669" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1734643904566128475" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1795775469460424669" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

View File

@ -2,7 +2,7 @@
#include <sys/time.h> #include <sys/time.h>
#include "SH_global.h" #include "SH_global.h"
#include "SH_CommonFunc.hpp" #include "SH_CommonFunc.hpp"
#include <boost/xpressive/xpressive_dynamic.hpp>
static boost::mutex s_config_mu; static boost::mutex s_config_mu;
@ -440,16 +440,37 @@ std::string GetFileContent(std::string filename, int line)
} }
//BOOST用正则表达式验证ip地址合法
bool CheckIP(const char *ip)
{
using namespace boost::xpressive;
/* 定义正则表达式 */
cregex reg_ip = cregex::compile("(25[0-5]|2[0-5][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])[.](25[0-5]|2[0-5][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-5]|2[0-5][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[.](25[0-5]|2[0-5][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])");
return regex_match(ip, reg_ip);
}
bool IsValidMask(std::string mask) {
int iRet = -1;
// 将IP地址由“点分十进制”转换成 “二进制整数”
struct in_addr s;
iRet = inet_pton(AF_INET, mask.c_str(), &s);
// 转换成功返回1说明是有效的IP地址
if (iRet == 1) {
// 从网络字节顺序转换为主机字节顺序
unsigned int addr = ntohl(s.s_addr);
// 转换为二进制字符串
std::bitset<32> b((int)addr);
std::string strMask = b.to_string();
// 查找二进制字符串中的"01",如果不存在,说明是有效的子网掩码
return (strMask.find("01") == std::string::npos);
}
return false;
}
// int StatusPub() // int StatusPub()
// { // {
// long mem_used = -1; // long mem_used = -1;

View File

@ -572,7 +572,8 @@ extern void ZoneConfig(std::string zoneid);
*/ */
extern std::string GetSysStatus(); extern std::string GetSysStatus();
extern bool CheckIP(const char *ip);
bool IsValidMask(std::string mask);
//read update config file //read update config file
extern std::vector <std::string> ReadStrByOpt(std::string filename,std::string strUpdataFileName); extern std::vector <std::string> ReadStrByOpt(std::string filename,std::string strUpdataFileName);

View File

@ -49,6 +49,9 @@ std::string JsonData::JsonCmd_20(Param_20 &param)
jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID; jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID;
jsSystemInfo["zigbeeChannel"] = GlobalConfig::ZigbeeInfo_G.Channel; jsSystemInfo["zigbeeChannel"] = GlobalConfig::ZigbeeInfo_G.Channel;
jsSystemInfo["zigbeeAddr"] = GlobalConfig::ZigbeeInfo_G.MyAddr; jsSystemInfo["zigbeeAddr"] = GlobalConfig::ZigbeeInfo_G.MyAddr;
jsSystemInfo[JSON_FIELD_SERVERIP] = ReadStrByOpt(SERVERCONFIG, "Server", "localServerIpAddress");
jsSystemInfo[JSON_FIELD_SERVERPORT] = boost::lexical_cast<int>(ReadStrByOpt(SERVERCONFIG, "Server", "localServerPort"));
jsSystemInfo[JSON_FIELD_CommMode] = boost::lexical_cast<int>(ReadStrByOpt(SERVERCONFIG, "Server", "CommMode"));
jsBody["SystemInfo"] = jsSystemInfo; jsBody["SystemInfo"] = jsSystemInfo;
std::string dataBody = showValue.write(jsBody); std::string dataBody = showValue.write(jsBody);
@ -136,6 +139,7 @@ std::string JsonData::JsonCmd_25(Param_25 &param)
WriteStr2Config(NETWORKCONFIG, "Net", "subnetMask", param.mSubnetMask); WriteStr2Config(NETWORKCONFIG, "Net", "subnetMask", param.mSubnetMask);
WriteStr2Config(NETWORKCONFIG, "Net", "ipAddress", param.mIp); WriteStr2Config(NETWORKCONFIG, "Net", "ipAddress", param.mIp);
WriteStr2Config(NETWORKCONFIG, "Net", "hostName", param.mHostName); WriteStr2Config(NETWORKCONFIG, "Net", "hostName", param.mHostName);
system("reboot");
} }
jsonVal["cmd"] = "25"; jsonVal["cmd"] = "25";
@ -491,7 +495,27 @@ std::string JsonData::JsonCmd_Cgi_07()
} }
return showValue.write(jsonVal); return showValue.write(jsonVal);
} }
std::string JsonData::JsonCmd_07()
{
Json::Value jsonVal;
jsonVal.clear();
std::string sysStatus = GetSysStatus();
print_info("sysStatus : %s\n", sysStatus.c_str());
Json::Features f = Json::Features::strictMode();
Json::Reader recvReader(f);
Json::Value recvSys;
jsonVal[JSON_FIELD_CMD] = "07";
jsonVal["success"] = true;
jsonVal["message"] = " ";
if (recvReader.parse(sysStatus, recvSys)){
jsonVal["cmdBody"] = sysStatus;
} else {
jsonVal["success"] = false;
jsonVal["message"] = "状态获取失败";
}
return showValue.write(jsonVal);
}
std::string JsonData::JsonCmd_Cgi_08() std::string JsonData::JsonCmd_Cgi_08()
{ {
Json::Value jsonVal; Json::Value jsonVal;
@ -662,18 +686,22 @@ std::string JsonData::JsonCmd_Cgi_23(Param_23 &param)
{ {
Json::Value jsonVal; Json::Value jsonVal;
jsonVal.clear(); jsonVal.clear();
// SET 指令则param.mMode = 0,将设置的数据写入配置文件中 SERVERCONFIG "/opt/configenv/ServerConfig.json"
if (0 == param.mMode) {
WriteStr2Config(SERVERCONFIG, "Server", "localServerIpAddress", param.mServerIp);
WriteStr2Config(SERVERCONFIG, "Server", "localServerPort", param.mPort);
WriteStr2Config(SERVERCONFIG, "Server", "communicationMode", param.mCommMode);
}
jsonVal[JSON_FIELD_CMD] = "23"; jsonVal[JSON_FIELD_CMD] = "23";
jsonVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G; jsonVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G;
jsonVal["cmdSerial"] = param.mCmdSerial; jsonVal["cmdSerial"] = param.mCmdSerial;
jsonVal["success"] = true; jsonVal["success"] = true;
jsonVal["message"] = " "; jsonVal["message"] = " ";
// SET 指令则param.mMode = 0,将设置的数据写入配置文件中 SERVERCONFIG "/opt/configenv/ServerConfig.json"
if (0 == param.mMode && CheckIP(param.mServerIp.c_str())) {
WriteStr2Config(SERVERCONFIG, "Server", "localServerIpAddress", param.mServerIp);
WriteStr2Config(SERVERCONFIG, "Server", "localServerPort", param.mPort);
WriteStr2Config(SERVERCONFIG, "Server", "communicationMode", param.mCommMode);
system("reboot");
}else if(0 == param.mMode && !(CheckIP(param.mServerIp.c_str()))){
jsonVal["success"] = false;
}
Json::Value jsSystemSetting; Json::Value jsSystemSetting;
Json::Value jsBody; Json::Value jsBody;
@ -694,8 +722,15 @@ std::string JsonData::JsonCmd_Cgi_25(Param_25 &param)
{ {
Json::Value jsonVal; Json::Value jsonVal;
jsonVal.clear(); jsonVal.clear();
jsonVal["success"] = true;
jsonVal["message"] = " ";
jsonVal["cmd"] = "25"; jsonVal["cmd"] = "25";
if (0 == param.mMode) { bool bFlag1 = CheckIP(param.mGateway.c_str());
bool bFlag2 = IsValidMask(param.mSubnetMask);
bool bFlag3 = CheckIP(param.mIp.c_str());
bool bFlag4 = CheckIP(param.mDnsName.c_str());
if (0 == param.mMode &&(bFlag1 && bFlag2 && bFlag3 && bFlag4)) {
WriteStr2Config(NETWORKCONFIG, "Net", "dnsName", param.mDnsName); WriteStr2Config(NETWORKCONFIG, "Net", "dnsName", param.mDnsName);
WriteStr2Config(NETWORKCONFIG, "Net", "networkPortStatus", param.mNetworkPortStatus); WriteStr2Config(NETWORKCONFIG, "Net", "networkPortStatus", param.mNetworkPortStatus);
WriteStr2Config(NETWORKCONFIG, "Net", "gateway", param.mGateway); WriteStr2Config(NETWORKCONFIG, "Net", "gateway", param.mGateway);
@ -703,9 +738,11 @@ std::string JsonData::JsonCmd_Cgi_25(Param_25 &param)
WriteStr2Config(NETWORKCONFIG, "Net", "ipAddress", param.mIp); WriteStr2Config(NETWORKCONFIG, "Net", "ipAddress", param.mIp);
WriteStr2Config(NETWORKCONFIG, "Net", "hostName", param.mHostName); WriteStr2Config(NETWORKCONFIG, "Net", "hostName", param.mHostName);
platform->EquipIpInit(); platform->EquipIpInit();
system("reboot");
}else if(0 == param.mMode &&(!bFlag1 || !bFlag2 || !bFlag3 || !bFlag4)){
jsonVal["success"] = false;
} }
jsonVal["success"] = true;
jsonVal["message"] = " ";
jsonVal["content"]["dnsName"] = ReadStrByOpt(NETWORKCONFIG, "Net", "dnsName"); jsonVal["content"]["dnsName"] = ReadStrByOpt(NETWORKCONFIG, "Net", "dnsName");
jsonVal["content"]["networkPortStatus"] = ReadStrByOpt(NETWORKCONFIG, "Net", "networkPortStatus"); jsonVal["content"]["networkPortStatus"] = ReadStrByOpt(NETWORKCONFIG, "Net", "networkPortStatus");
jsonVal["content"]["gateway"] = ReadStrByOpt(NETWORKCONFIG, "Net", "gateway"); jsonVal["content"]["gateway"] = ReadStrByOpt(NETWORKCONFIG, "Net", "gateway");

View File

@ -35,6 +35,7 @@ public :
std::string JsonCmd_Cgi_01(Param_01 &param); //用户操作处理 std::string JsonCmd_Cgi_01(Param_01 &param); //用户操作处理
std::string JsonCmd_Cgi_02(Param_02 &param); //时间校准接口 std::string JsonCmd_Cgi_02(Param_02 &param); //时间校准接口
std::string JsonCmd_Cgi_07(); //获取系统内存温度硬盘等信息 std::string JsonCmd_Cgi_07(); //获取系统内存温度硬盘等信息
std::string JsonCmd_07(); //获取系统内存温度硬盘等信息
std::string JsonCmd_Cgi_08(); //重启 std::string JsonCmd_Cgi_08(); //重启
std::string JsonCmd_Cgi_09(); //实时数据获取 std::string JsonCmd_Cgi_09(); //实时数据获取
std::string JsonCmd_Cgi_20(Param_20 &param); //终端信息获取 std::string JsonCmd_Cgi_20(Param_20 &param); //终端信息获取
@ -75,6 +76,7 @@ static const char* JSON_FIELD_TIMEZONE = "timezone";
//cmd "21" //cmd "21"
// static const char* JSON_FIELD_CMD = "cmd";//协议: 命令字段 // static const char* JSON_FIELD_CMD = "cmd";//协议: 命令字段
// static const char* JSON_FIELD_NAME = "dataWatchName";//协议: 终端名称 // static const char* JSON_FIELD_NAME = "dataWatchName";//协议: 终端名称

View File

@ -16,194 +16,198 @@ LocalServer::~LocalServer()
void LocalServer::HandleFromServer(const char *pData_r, int pLen, const char *topic) void LocalServer::HandleFromServer(const char *pData_r, int pLen, const char *topic)
{ {
if(pLen == 0) { if(pLen == 0) {
return; return;
} }
std::string data_r = (std::string)(pData_r); std::string data_r = (std::string)(pData_r);
print_brown("pData base : %s \n", data_r.c_str()); print_brown("pData base : %s \n", data_r.c_str());
char *base64_data = new char[data_r.length()]; char *base64_data = new char[data_r.length()];
memset(base64_data, 0, data_r.length()); memset(base64_data, 0, data_r.length());
Secure::instance()->Base64Decode(data_r.c_str(), (unsigned char*)base64_data); Secure::instance()->Base64Decode(data_r.c_str(), (unsigned char*)base64_data);
std::string pData = std::string(base64_data); std::string pData = std::string(base64_data);
delete[] base64_data; delete[] base64_data;
print_brown("pData : %s \n", pData.c_str()); print_brown("pData : %s \n", pData.c_str());
Json::Reader recvReader; Json::Reader recvReader;
Json::Value recvValue; Json::Value recvValue;
Json::Value recvBody; Json::Value recvBody;
if (recvReader.parse(pData, recvValue)) { if (recvReader.parse(pData, recvValue)) {
/* std::string cmdBody = recvValue["cmdBody"].asString(); std::string cmdBody = recvValue["cmdBody"].asString();
if (!recvReader.parse(cmdBody, recvBody)) { if (!recvReader.parse(cmdBody, recvBody)) {
print_error("recv body error"); print_error("recv body error");
return; return;
}*/ }
recvBody = recvValue["cmdBody"]; // recvBody = recvValue["cmdBody"];
std::string str = recvBody["timestamp"].asString(); std::string str = recvBody["timestamp"].asString();
int cmdType = atoi(recvValue["cmd"].asString().c_str()); int cmdType = atoi(recvValue["cmd"].asString().c_str());
switch (cmdType) { switch (cmdType) {
case 10:{ case 7:{
recvValue["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G; JsonData jd;
recvValue["status"] = "ACK"; std::string data = jd.JsonCmd_07();
Json::FastWriter fw; data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
std::string strjson = fw.write(recvValue); }break;
data_publish(strjson.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); case 10:{
system("echo 1 > /CIDW/start"); recvValue["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G;
boost::this_thread::sleep(boost::posix_time::seconds(1)); recvValue["status"] = "ACK";
system("reboot"); Json::FastWriter fw;
} std::string strjson = fw.write(recvValue);
break; data_publish(strjson.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
case 12:{ system("echo 1 > /CIDW/start");
/* std::string strBody = recvValue["cmdBody"].asString(); boost::this_thread::sleep(boost::posix_time::seconds(1));
Json::Value jsBody; system("reboot");
if (!recvReader.parse(strBody, jsBody)) { }
return; break;
}*/ case 12:{
std::string timestamp = recvBody["timestamp"].asString(); /* std::string strBody = recvValue["cmdBody"].asString();
unsigned long itimestamp = boost::lexical_cast<unsigned long>(timestamp); Json::Value jsBody;
SetTime(itimestamp); if (!recvReader.parse(strBody, jsBody)) {
boost::this_thread::sleep(boost::posix_time::milliseconds(200)); return;
system("hwclock -w"); }*/
if (!recvValue["ZoneId"].isNull() && recvValue["ZoneId"].asString().length() > 0) { std::string timestamp = recvBody["timestamp"].asString();
std::string zoneid = recvValue["ZoneId"].asString(); unsigned long itimestamp = boost::lexical_cast<unsigned long>(timestamp);
ZoneConfig(zoneid); SetTime(itimestamp);
} boost::this_thread::sleep(boost::posix_time::milliseconds(200));
Json::Value retVal; system("hwclock -w");
retVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G; if (!recvValue["ZoneId"].isNull() && recvValue["ZoneId"].asString().length() > 0) {
retVal["cmd"] = 12; std::string zoneid = recvValue["ZoneId"].asString();
retVal["success"] = true; ZoneConfig(zoneid);
retVal["message"] = "校时成功"; }
Json::FastWriter fw; /* Json::Value retVal;
std::string strjson = fw.write(retVal); retVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G;
data_publish(strjson.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); retVal["cmd"] = 12;
} retVal["success"] = true;
break; retVal["message"] = "校时成功";
case 13:{ Json::FastWriter fw;
std::string type = recvValue["type"].asString(); std::string strjson = fw.write(retVal);
if (type.compare("delete") == 0) { data_publish(strjson.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());*/
WriteStr2Config(SERVERCONFIG, "Server", "localServerIpAddress", "0.0.0.0"); }
GlobalConfig::ServerIP.clear(); break;
exit(0); case 13:{
} std::string type = recvValue["type"].asString();
} if (type.compare("delete") == 0) {
break; WriteStr2Config(SERVERCONFIG, "Server", "localServerIpAddress", "0.0.0.0");
case 20:{ GlobalConfig::ServerIP.clear();
Param_20 param; exit(0);
param.mCmdSerial = recvValue["cmdSerial"].asString(); }
std::string type = recvBody["type"].asString(); }
if (0 == type.compare("SET")) { break;
param.mMode = 0; case 20:{
param.mDataWatchName = recvBody["SystemInfo"]["dataNodeGatewayName"].asString(); Param_20 param;
param.mDataWatchAssetId = recvBody["SystemInfo"]["dataNodeGatewayAssetId"].asString(); param.mCmdSerial = recvValue["cmdSerial"].asString();
param.mDataWatchAddedBy = recvBody["SystemInfo"]["dataNodeGatewayAddedBy"].asString(); std::string type = recvBody["type"].asString();
} else { if (0 == type.compare("SET")) {
param.mMode = 1; param.mMode = 0;
} param.mDataWatchName = recvBody["SystemInfo"]["dataNodeGatewayName"].asString();
JsonData jd; param.mDataWatchAssetId = recvBody["SystemInfo"]["dataNodeGatewayAssetId"].asString();
std::string data = jd.JsonCmd_20(param); param.mDataWatchAddedBy = recvBody["SystemInfo"]["dataNodeGatewayAddedBy"].asString();
print_info("20 data: %s\n", data.c_str()); } else {
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); param.mMode = 1;
} }
break; JsonData jd;
case 22:{ std::string data = jd.JsonCmd_20(param);
Param_22 param; print_info("20 data: %s\n", data.c_str());
std::string type = recvBody["type"].asString(); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
param.mCmdSerial = recvValue["cmdSerial"].asString(); }
break;
case 22:{
Param_22 param;
std::string type = recvBody["type"].asString();
param.mCmdSerial = recvValue["cmdSerial"].asString();
if (0 == type.compare("SET")) { if (0 == type.compare("SET")) {
param.mMode = 0; param.mMode = 0;
param.mTimeZone = recvBody["timezone"].asString(); param.mTimeZone = recvBody["timezone"].asString();
ZoneConfig(param.mTimeZone); ZoneConfig(param.mTimeZone);
} else { } else {
param.mMode = 1; param.mMode = 1;
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_22(param); std::string data = jd.JsonCmd_22(param);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
} }
break; break;
case 23:{ case 23:{
std::string type = recvBody["type"].asString(); std::string type = recvBody["type"].asString();
Param_23 param; Param_23 param;
param.mCmdSerial = recvValue["cmdSerial"].asString(); param.mCmdSerial = recvValue["cmdSerial"].asString();
if (0 == type.compare("SET")) { if (0 == type.compare("SET")) {
param.mMode = 0; param.mMode = 0;
param.mServerIp = recvBody["localServerIpAddress"].asString(); param.mServerIp = recvBody["localServerIpAddress"].asString();
param.mPort = boost::lexical_cast<std::string>(recvBody["localServerPort"].asInt()); param.mPort = boost::lexical_cast<std::string>(recvBody["localServerPort"].asInt());
param.mCommMode = boost::lexical_cast<std::string>(recvBody["CommMode"].asInt()); param.mCommMode = boost::lexical_cast<std::string>(recvBody["CommMode"].asInt());
} else { } else {
param.mMode = 1; param.mMode = 1;
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_23(param); std::string data = jd.JsonCmd_23(param);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
} }
break; break;
case 25:{ case 25:{
Param_25 param; Param_25 param;
param.mCmdSerial = recvValue["cmdSerial"].asString(); param.mCmdSerial = recvValue["cmdSerial"].asString();
std::string type = recvBody["type"].asString(); std::string type = recvBody["type"].asString();
if (0 == type.compare("SET")) { if (0 == type.compare("SET")) {
param.mDnsName = recvBody["dnsName"].asString(); param.mDnsName = recvBody["dnsName"].asString();
param.mGateway = recvBody["gateway"].asString(); param.mGateway = recvBody["gateway"].asString();
param.mHostName = recvBody["hostName"].asString(); param.mHostName = recvBody["hostName"].asString();
param.mIp = recvBody["dataWatchIpAddress"].asString(); param.mIp = recvBody["dataWatchIpAddress"].asString();
param.mSubnetMask = recvBody["subnetMask"].asString(); param.mSubnetMask = recvBody["subnetMask"].asString();
param.mNetworkPortStatus = recvBody["networkPortStatus"].asString(); param.mNetworkPortStatus = recvBody["networkPortStatus"].asString();
param.mMode = 0; param.mMode = 0;
} else { } else {
param.mMode = 1; param.mMode = 1;
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_25(param); std::string data = jd.JsonCmd_25(param);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
// platform->EquipIpInit(); // platform->EquipIpInit();
} }
break; break;
case 26:{ case 26:{
Param_26 param; Param_26 param;
param.mCmdSerial = recvValue["cmdSerial"].asString(); param.mCmdSerial = recvValue["cmdSerial"].asString();
std::string type = recvBody["type"].asString(); std::string type = recvBody["type"].asString();
if (0 == type.compare("GET")) { if (0 == type.compare("GET")) {
param.mMode = 0; param.mMode = 0;
} else { } else {
param.mMode = 1; param.mMode = 1;
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_26(param); std::string data = jd.JsonCmd_26(param);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
// platform->EquipIpInit(); // platform->EquipIpInit();
} }
break; break;
case 27:{ case 27:{
Param_27 param; Param_27 param;
param.mCmdSerial = recvValue["cmdSerial"].asString(); param.mCmdSerial = recvValue["cmdSerial"].asString();
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_27(recvBody); std::string data = jd.JsonCmd_27(recvBody);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
} }
break; break;
case 50:{ case 50:{
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_50(recvBody); std::string data = jd.JsonCmd_50(recvBody);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
}break; }break;
case 51:{ case 51:{
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_51(recvBody); std::string data = jd.JsonCmd_51(recvBody);
data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); data_publish(data.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
}break; }break;
default: default:
// data_publish_local(pData.c_str(), GlobalConfig::Topic_G.mPubLocalCmd.c_str()); // data_publish_local(pData.c_str(), GlobalConfig::Topic_G.mPubLocalCmd.c_str());
break; break;
} }
print_brown("cmdType : %d \n", cmdType); print_brown("cmdType : %d \n", cmdType);
} else {
print_error("parase fail \n");
}
} else {
print_error("parase fail \n");
}
} }
std::string LocalServer::HandleCgi_cmd(std::string &pData) std::string LocalServer::HandleCgi_cmd(std::string &pData)
@ -321,6 +325,7 @@ try{
} }
JsonData jd; JsonData jd;
std::string data = jd.JsonCmd_Cgi_23(param); std::string data = jd.JsonCmd_Cgi_23(param);
return data; return data;
} }
break; break;

View File

@ -88,7 +88,7 @@ int main(int argc, char *argv[])
while (GlobalConfig::QuitFlag_G) { while (GlobalConfig::QuitFlag_G) {
boost::this_thread::sleep(boost::posix_time::seconds(20)); boost::this_thread::sleep(boost::posix_time::seconds(20));
// data_publish(senddata.c_str(), GlobalConfig::Topic_G.mPubData.c_str()); // data_publish(senddata.c_str(), GlobalConfig::Topic_G.mPubData.c_str());
} }
return 0; return 0;

View File

@ -194,7 +194,7 @@ void my_connect_callback(struct mosquitto *mosq, void *obj, int result)
// jsData["cmdBody"] = ""; // jsData["cmdBody"] = "";
std::string strCmd15 = fw.write(jsData); std::string strCmd15 = fw.write(jsData);
data_publish(strCmd15.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); // data_publish(strCmd15.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
std::string instr = std::string(reply_string); std::string instr = std::string(reply_string);
std::string topic = "equipment/state/" + GlobalConfig::MacAddr_G; std::string topic = "equipment/state/" + GlobalConfig::MacAddr_G;
@ -215,7 +215,7 @@ void my_connect_callback(struct mosquitto *mosq, void *obj, int result)
sprintf(buf, "{\"dataNodeGatewayNo\":\"%s\",\"cmd\":\"12\",\"status\":\"REQ\"}", sprintf(buf, "{\"dataNodeGatewayNo\":\"%s\",\"cmd\":\"12\",\"status\":\"REQ\"}",
GlobalConfig::MacAddr_G.c_str()); GlobalConfig::MacAddr_G.c_str());
std::string str = std::string(buf); std::string str = std::string(buf);
data_publish(str.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str()); // data_publish(str.c_str(), GlobalConfig::Topic_G.mPubCmd.c_str());
std::string runinfo = "本地服务器连接成功"; std::string runinfo = "本地服务器连接成功";
} }

View File

@ -279,6 +279,7 @@ void Uart::UpdateWirelessNode(unsigned char* id)
break; break;
} }
} }
printf("thisindex = %d\n",thisindex);
if(thisindex < 0) if(thisindex < 0)
return; return;