123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- #ifndef RVC_MOD_CENTERSETTING_CONN_H_
- #define RVC_MOD_CENTERSETTING_CONN_H_
- #pragma once
- #include "json/json.h"
- #include "SpSecureClient.h"
- #include "SpIni.h"
- #include "IHttpFunc.h"
- #include "EventCode.h"
- #include <vector>
- #include <string>
- #ifdef WITH_CPPRESTSDK_IN_CENTER
- #include "CommEntityRestful.hpp"
- #include "microservices/api_terminal_center_config.h"
- struct ModuleConfigItemJson : public MicroServices::API::TerminalV3::ModuleConfigItem
- {
- JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_moudle, m_name, m_value)
- JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("moudle", "name", "value")
- };
- struct CenterSettingReq
- {
- CenterSettingReq() :m_terminal_no(""), m_version(""), m_update_time(""),m_url(""),m_timeOut(0) {}
- std::string m_terminal_no;
- std::string m_version;
- std::string m_update_time;
- /** 兼容用途 [Gifur@202398]*/
- std::string m_url;
- int m_timeOut;
- std::string m_config;
- std::vector<ModuleConfigItemJson> configs;
- JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_terminal_no, m_version, configs, m_update_time)
- JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("terminal_no", "version", "config", "update_time")
- };
- struct CenterSettingResponse
- {
- bool m_is_update;
- bool m_is_reset;
- std::string m_sm3;
- std::string m_version_no;
- std::vector<ModuleConfigItemJson> m_config;
- std::string m_strConfig;
- JSONCONVERT2OBJECT_MEMEBER_REGISTER(m_is_update, m_is_reset, m_sm3, m_version_no, m_strConfig)
- JSONCONVERT2OBJECT_MEMEBER_RENAME_REGISTER("is_update", "is_reset", "sm3", "version_no", "config")
- };
- #else
- struct CenterSettingReq : CHTTPReq
- {
- CenterSettingReq()
- {
- #if defined(_MSC_VER)
- m_bTransCode = true;
- #else
- m_bTransCode = false;
- #endif //_MSC_VER
- }
- string m_terminal_no;
- string m_version;
- string m_update_time;
- string m_config;
- virtual string ToJson()
- {
- CSimpleStringA reqcontent = CSimpleStringA::Format("{\"terminal_no\":\"%s\", \"version\":\"%s\", \"update_time\":\"%s\", \"config\":[%s]}",
- m_terminal_no.c_str(), m_version.c_str(), m_update_time.c_str(), m_config.c_str());
- return reqcontent.GetData();
- }
- };
- struct ConfigItem
- {
- std::string m_moudle;
- std::string m_name;
- std::string m_value;
- #ifdef RVC_OS_LINUX
- // 默认构造函数
- ConfigItem()
- : m_moudle(""), m_name(""), m_value("")
- {
- }
- // 带参数的构造函数
- ConfigItem(const std::string& module, const std::string& name, const std::string& value)
- : m_moudle(module), m_name(name), m_value(value)
- {
- }
- // 拷贝构造函数
- ConfigItem(const ConfigItem& other)
- : m_moudle(other.m_moudle), m_name(other.m_name), m_value(other.m_value)
- {
- }
- #endif
- };
- struct CenterSettingResponse : CHTTPRet
- {
- CenterSettingResponse(){}
- bool m_success;
- string m_message;
- bool m_is_update;
- bool m_is_reset;
- string m_version_no;
- string m_sm3;
- string m_strConfig;
- vector<ConfigItem> m_config;
- virtual bool Parse(string strData);
- };
- #ifdef RVC_OS_LINUX
- #define SAFE_DELETE_HTTPCLIENT(obj) \
- do{if(obj != NULL) { obj->Destory(); obj = NULL; }}while(false)
- #endif //RVC_OS_LINUX
- #endif //WITH_CPPRESTSDK_IN_CENTER
- struct AddVersionReq : CHTTPReq
- {
- AddVersionReq(){}
- string m_terminal_no;
- string m_version;
- string m_update_time;
- virtual string ToJson()
- {
- char reqcontent[256];
- sprintf(reqcontent, "{\"terminal_no\":\"%s\", \"version_no\":\"%s\", \"terminal_update_time\":\"%s\"}",
- m_terminal_no.c_str(), m_version.c_str(), m_update_time.c_str());
- return reqcontent;
- }
- };
- struct AddVersionResponse : CHTTPRet
- {
- AddVersionResponse() {}
- bool m_success;
- string m_message;
- virtual bool Parse(string strData);
- };
- class CenterSettingsMicroServiceHelper
- {
- public:
- CenterSettingsMicroServiceHelper(CEntityBase* pEntity);
- #ifdef RVC_OS_WIN
- int GetCenterSetting();
- #else
- int GetCenterSetting(bool byHand);
- #endif
- string GetLocalConfig(); //将集中配置转换成Json串
- string GetUpdateTime(); //获取集中配置更新时间,如果文件不存在则获取当前系统时间
- const char* GetErrMsg() { return m_strErrMsg.c_str(); }
- void GetTimeoutValue(int& timeout);
- void InitCenterSettingInfo();
- bool WriteToConfig(const CenterSettingResponse& sResponse);
- void UpdateVersion();
- void UpdateUrl(const string& url) { m_strUrl = url.c_str(); };
- #ifdef RVC_OS_WIN
- int OnRequest(CenterSettingReq& req, CenterSettingResponse& res, string& errMsg = string("")); //轮询域名下载集中配置
- #else
- int GetCenterSettingsFromHttp(CenterSettingReq& req, string& errMsg); //轮询域名下载集中配置
- #endif
- string GetCurUrl() { return m_strCurUrl; }
- private:
- string m_strErrMsg;
- CEntityBase* m_pEntity;
- CSimpleStringA m_strLastTime;
- CSystemStaticInfo m_terminalInfo;
- IHttpFunc* m_pHttpFunc;
- CAutoArray<CSimpleStringA> m_arrKeys;
- vector<CSimpleStringA> m_arrURLs;
- CSimpleStringA m_strCurSite;
- CSmartPointer<IConfigInfo> m_pCenterConfig;
- CSmartPointer<IConfigInfo> m_pRunConfig;
- CSimpleStringA m_strFilePath;
- CSimpleStringA m_strBakPath;
- CSimpleStringA m_strVersion;
- CSimpleStringA m_strUrl;
- vector<CSimpleStringA> m_urlsFromShell;
- string m_strCurUrl;
- bool m_isFirst;
- };
- #endif //RVC_MOD_CENTERSETTING_CONN_H_
|