123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- #include "stdafx.h"
- #include "SpBase.h"
- #include "Event.h"
- #include "mod_centersetting.h"
- #include <regex>
- #include "fileutil.h"
- #include "array.h"
- using namespace std;
- CServerSessionBase* CCenterSettingEntity::OnNewSession(const char* /*pszRemoteEntityName*/, const char* /*pszClass*/)
- {
- return new CCenterSettingService(this);
- }
- void CCenterSettingEntity::OnStarted()
- {
- GetFunction()->GetPath("CenterSetting", m_strFilePath);
- GetFunction()->OpenConfig(Config_CenterSetting, m_pCenterConfig);
- GetFunction()->GetPath("RunInfo", m_strBakPath);
- #ifdef RVC_OS_WIN
- m_strBakPath += "\\runcfg\\CenterSetting.ini";
- #else
- m_strBakPath += SPLIT_SLASH_STR "runcfg" SPLIT_SLASH_STR "CenterSetting.ini";
- #endif
- m_pMicroServiceHelper = new CenterSettingsMicroServiceHelper(this);
- if(!m_pCenterConfig->storageInMem())
- {
- m_isUseMemCfg = false;
- BeginDownloadCenterSetting();
- }
- else
- {
- m_isUseMemCfg = true;
- }
- }
- void CCenterSettingEntity::OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext)
- {
- pTransactionContext->SendAnswer(Error_Succeed);
- }
- ErrorCodeEnum CCenterSettingEntity::BeginDownloadCenterSetting(bool bByHand, const string& url)
- {
- LOG_FUNCTION();
- #ifdef _MSC_VER
- EnterCriticalSection(&m_lock);
- #else
- std::unique_lock<std::mutex> lock1(m_lock);
- #endif
- if(!url.empty())
- {
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("update centersettings url...");
- m_pMicroServiceHelper->UpdateUrl(url);
- }
- #ifdef RVC_OS_WIN
- int rc = m_pMicroServiceHelper->GetCenterSetting();
- #else
- int rc = m_pMicroServiceHelper->GetCenterSetting(bByHand);
- #endif
- if(EXIST == rc)
- {
- }
- else if(SUCC == rc)
- {
- LogWarn(Severity_Low, Error_Succeed, EVENT_MOD_CENTERSETTING_UPDATE_CENTER,
- CSimpleStringA::Format("下载集中配置成功:%s", m_pMicroServiceHelper->GetCurUrl().c_str()));
- LogEvent(Severity_Low, EVENT_MOD_CENTERSETTING_UPDATE_CENTER, "Update Centersetting.");
- if (bByHand)
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040210101")("手工下载集中配置成功");
- else
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR0402101Z01")("自动下载集中配置成功");
- }
- else
- {
- LogWarn(Severity_High, Error_Unexpect, ERR_MOD_CENTERSETTING_CONNECT_FAILED,
- CSimpleStringA::Format("下载集中配置失败:%s", m_pMicroServiceHelper->GetErrMsg()));
- if (!bByHand)
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402101Z01").setResultCode("RTA1104")("集中配置下载失败");
- }
- if(m_spDownloadCall != NULL)
- {
- m_spDownloadCall->Ans.downloadStat = rc;
- m_spDownloadCall->Ans.retCenterConfigUrl = m_pMicroServiceHelper->GetCurUrl().c_str();
- if(rc == AllAddressNull)
- {
- m_spDownloadCall->Ans.strErrMsg = "所有地址都为空,请检查终端版本";
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210101").setResultCode("RTA1101")("所有集中配置下载地址都为空");
- }
- else if(rc == AccessServiceFail)
- {
- m_spDownloadCall->Ans.strErrMsg = "网络异常,请检查网络连接情况";
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210101").setResultCode("RTA1102")("网络异常,请检查网络连接情况");
- }
- else if(rc == CalcSM3Fail || rc == CheckSM3Fail)
- {
- m_spDownloadCall->Ans.strErrMsg = "集中配置内容校验失败,请重试";
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210101").setResultCode("RTA1103")("集中配置内容校验失败");
- }
- else if(rc == MANUAL)
- {
- m_spDownloadCall->Ans.strErrMsg = "集中配置下载失败";
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040210101").setResultCode("RTA1104")("集中配置下载失败");
- }
- else if(rc == EXIST)
- {
- m_spDownloadCall->Ans.strErrMsg = "集中配置已是最新版本";
- }
- CSimpleStringA hostUrl;
- m_pCenterConfig->ReadConfigValue("AccessAuthorization", "HostInitUrl", hostUrl);
- m_spDownloadCall->Ans.HostUrl = hostUrl;
- m_spDownloadCall->Answer(Error_Succeed);
- m_spDownloadCall.Clear();
- }
- #ifdef _MSC_VER
- LeaveCriticalSection(&m_lock);
- #endif
- return Error_Succeed;
- }
- ErrorCodeEnum CCenterSettingEntity::DownloadCenterSetting(SpReqAnsContext<CenterSettingService_Downloadv2_Req, CenterSettingService_Downloadv2_Ans>::Pointer sp)
- {
- if (m_spDownloadCall != NULL)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DownloadCenterSetting")
- ("last download call not complet");
- sp->Answer(Error_Duplication);
- return Error_Duplication;
- }
- m_spDownloadCall = sp;
- ErrorCodeEnum error = BeginDownloadCenterSetting(true, sp->Req.reqCenterConfigUrl.GetData());
- if (error != Error_Succeed) {
- m_spDownloadCall = nullptr;
- if (sp != NULL) {
- sp->Answer(Error_Succeed);
- }
- return error;
- }
- return Error_Succeed;
- }
- DWORD getCenterCfgThread(LPVOID param)
- {
- CCenterSettingEntity* req = (CCenterSettingEntity*)param;
- bool isUpdate = false, isReset = false;
- CSimpleString version;
- if(false == req->GetFunction()->HasPrivilege())
- {
- LogWarn(Severity_High, Error_Unexpect, ERR_MOD_CENTERSETTING_CONNECT_FAILED,
- CSimpleStringA::Format("下载集中配置失败:%s do not has privilege", __FUNCTION__));
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402101Z01").setResultCode("RTA1104")("集中配置下载失败");
- return -1;
- }
- auto ret = req->GetFunction()->GetPrivilegeFunction()->TryUpdateCenterCfg(isUpdate, isReset, version);
- if (ret != ErrorCodeEnum::Error_Succeed)
- {
- LogWarn(Severity_High, Error_Unexpect, ERR_MOD_CENTERSETTING_CONNECT_FAILED,
- CSimpleStringA::Format("下载集中配置失败:%d", ret));
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402101Z01").setResultCode("RTA1104")("集中配置下载失败");
- return -1;
- }
- if (!isUpdate)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetCenterSetting")("Centersetting not changed from spshell");
- return -1;
- }
- LogWarn(Severity_Low, Error_Succeed, EVENT_MOD_CENTERSETTING_UPDATE_CENTER,
- CSimpleStringA::Format("下载集中配置成功,版本号变更成:%s", version.GetData()));
- LogEvent(Severity_Low, EVENT_MOD_CENTERSETTING_UPDATE_CENTER, "Update Centersetting.");
- if (isReset)
- LogEvent(Severity_Middle, EVENT_MOD_CENTERSETTING_CRITICAL_UPDATE, "SpShell:Update centersetting with critical items.");
- return 0;
- }
- ErrorCodeEnum CCenterSettingEntity::GetAccessUrl(CSimpleStringA& url) //初始化地址
- {
- CSimpleStringA hostInitUrl;
- m_pCenterConfig->ReadConfigValue("AccessAuthorization", "HostInitUrl", hostInitUrl);
- if(hostInitUrl.IsNullOrEmpty())
- url = "初始化地址为空";
- else
- url = hostInitUrl;
- return Error_Succeed;
- }
- ErrorCodeEnum CCenterSettingEntity::GetCertainAceessUrl(CSimpleStringA& accessName, CSimpleStringA& url) //准入地址
- {
- LOG_FUNCTION();
- CSimpleStringA tUrl;
- m_pCenterConfig->ReadConfigValue("AccessAuthorization", accessName.GetData(), tUrl);
- if (tUrl.IsNullOrEmpty())
- url = "地址为空";
- else
- url = tUrl;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("准入地址 = %s", url.GetData());
- return Error_Succeed;
- }
- SP_BEGIN_ENTITY_MAP()
- SP_ENTITY(CCenterSettingEntity)
- SP_END_ENTITY_MAP()
|