瀏覽代碼

Z991239-5294 #comment 对测试间(ST/UAT)做机型、机型与模块配置的强检查,不对则不再启动

oilyang 1 年之前
父節點
當前提交
7ed51d9f7d
共有 2 個文件被更改,包括 146 次插入37 次删除
  1. 144 26
      Module/mod_vtmloader/VtmLoaderFSM.cpp
  2. 2 11
      Module/mod_vtmloader/VtmLoaderFSM.h

+ 144 - 26
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -186,6 +186,7 @@ CVtmLoaderFSM::CVtmLoaderFSM()
 	m_ullMaxAddrDetectTime = 10*60*1000;//10 minutes
 	m_iDetectInterval = 5000;
 	m_terminalNoFromWeb = m_verShowMsg = "";
+	m_iNoCheckMachineModel = 0;
 }
 
 CVtmLoaderFSM::~CVtmLoaderFSM()
@@ -954,6 +955,9 @@ int CVtmLoaderFSM::NetWorkCheckAndGetSetting()
 }
 int CVtmLoaderFSM::EntityLoad()
 {
+	//oilyang@20240407 add check machine model in ST/UAT test room
+	if (!CheckConfigInfoInTestRoom())
+		return -1;
 	//前提:收到了配置拉取完成的指令,才会进入到这里
 	//为了测试,假装已经拿到了集中配置
 	m_ullEntityLoadStart = SP::Module::Comm::RVCGetTickCount();
@@ -1629,8 +1633,8 @@ bool CVtmLoaderFSM::GetConfig()
 	
 
 	GetEntityBase()->GetFunction()->GetSystemStaticInfo(m_sysInfo);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("terminalNo:%s, MachineType:%s, MachineVersion:%s, Site:%s, Screen:%d, EnrolGPS:%f.%f, EnrolAddr:%s"
-		, m_sysInfo.strTerminalID.GetData(), m_sysInfo.strMachineType.GetData(), m_sysInfo.MachineVersion.ToString().GetData()
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("terminalNo:%s, MachineModel:%s, MachineType:%s, MachineVersion:%s, Site:%s, Screen:%d, EnrolGPS:%f.%f, EnrolAddr:%s"
+		, m_sysInfo.strTerminalID.GetData(), m_sysInfo.strMachineModel.GetData(), m_sysInfo.strMachineType.GetData(), m_sysInfo.MachineVersion.ToString().GetData()
 		, m_sysInfo.strSite.GetData(), m_sysInfo.eScreen, m_sysInfo.EnrolGPS.GetLatitude(), m_sysInfo.EnrolGPS.GetLongitude(), m_sysInfo.strEnrolAddr.GetData());
 
 	int tmpSec = 0;
@@ -2327,33 +2331,147 @@ void CVtmLoaderFSM::CheckVideo(SpReqAnsContext<VtmLoaderService_CheckDeviceEntit
 		}
 	} while (true);
 }
-void CVtmLoaderFSM::Oiltest()
+bool CVtmLoaderFSM::CheckConfigInfoInTestRoom()
 {
-	CSmartPointer<IEntityFunctionPrivilege> pFuncPrivilege = m_pEntity->GetFunction().ConvertCase<IEntityFunctionPrivilege>();
-	CSmartPointer<IAsynWaitSp> spWait;
-	//(re)start entity
-	ErrorCodeEnum eErrCode = pFuncPrivilege->StartEntity("HealthManager", NULL, spWait);
-	if (eErrCode == Error_Succeed)
-	{
-		if (spWait != NULL)
-			eErrCode = spWait->WaitAnswer(MAX_AYSNC_TIMEOUT);
-	}
-	else
+	if (m_iNoCheckMachineModel)
+		return true;
+	
+	bool bNeedCheckOK = false;
+#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
+	bNeedCheckOK = true;
+#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
+	bNeedCheckOK = true;
+#endif
+	bNeedCheckOK = true;//oiltest
+	if (bNeedCheckOK)
 	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s failed(%d).", "HealthManager", eErrCode);
-		return;
-	}
+		CSmartPointer<IConfigInfo> spConfigRoot;
+		if (GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfigRoot) != Error_Succeed)
+		{
 
-	DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("StartEntity %s suc.", "HealthManager");
-	return;
+			return true;
+		}
+		CSimpleStringA csMachineModel(true);
+		spConfigRoot->ReadConfigValue("terminalinfo", "machineModel", csMachineModel);
+		if (csMachineModel.IsNullOrEmpty())
+		{
+			LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, "机型为空,请检查(terminalinfo/machineModel)");
+			return false;
+		}
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("to check machine model:%s", csMachineModel.GetData());
+
+		char* validMachineList[26] = { "E1080","VTM_E1000","E1080-L","BST260L-AQ3","GWI BST260L-AQ1","BS9000","ZSS9000","VTM700-A01","KS218","ZSS9100",
+			"KL286D","ZT2617-A01","MX9200CM","KK1000I(1365张)","KL286","DT-7000I64A","CASH35AG-1227","CASH35AG-JR10(G)","BST260T","KK1000I-2(1092张)",
+			"CASH35AG-3211","KK1000I-3(500张)","VTM-295","GWI BST260L","VTM700-A02","SAC401-D-02" };
+		//first, to check if the machine model in the valid machine list
+		int xSn = 0;
+		for (xSn = 0; xSn < 26; ++xSn)
+			if (csMachineModel.Compare(validMachineList[xSn], false) == 0)
+			{
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("match machine model:%s", validMachineList[xSn]);
+				break;
+			}
+		if (xSn >= 26)
+		{
+			LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型不存在,请检查:%s", csMachineModel.GetData()));
+			return false;
+		}
+		//second, to check if the key entity config matching the machine model
+		//for RVC.Stand2S/RVC.Stand1SPlus/RVC.CardPrinter to check pinpad
+		//for RVC.CardStore to check IDCertificate
 
+		CSimpleStringA strVendor(true);
+		if (m_sysInfo.strMachineType.Compare("RVC.CardStore") == 0)
+			spConfigRoot->ReadConfigValue("Device.IDCertificate", "Vendor", strVendor);
+		else
+			spConfigRoot->ReadConfigValue("Device.PinPad", "Vendor", strVendor);
 
-	SetTerminalNo(NULL);
-	Sleep(11000);
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to save to root.ini");
-	SaveTerminalNo(NULL);
-	m_hSaveTerminalNoVar.Broadcast();
-	
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("continue boot");
-	
+		//gwi
+		if (csMachineModel.Compare("BST260L-AQ3") == 0 || csMachineModel.Compare("GWI BST260L-AQ1") == 0
+			|| csMachineModel.Compare("GWI BST260L") == 0 || csMachineModel.Compare("VTM700-A01") == 0
+			|| csMachineModel.Compare("BST260T") == 0 || csMachineModel.Compare("VTM700-A02") == 0
+			)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("gwi", true) != 0)
+			{
+				if (m_sysInfo.strMachineType.Compare("RVC.CardStore") != 0)
+					LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
+						, csMachineModel.GetData(), strVendor.GetData()));
+				else
+					LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
+						, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//keba
+		if (csMachineModel.Compare("E1080") == 0 || csMachineModel.Compare("VTM_E1000") == 0
+			|| csMachineModel.Compare("E1080-L") == 0)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("keba", true) != 0)
+			{
+				LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
+					, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//zt
+		if (csMachineModel.Compare("ZT2617-A01") == 0)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("szzt", true) != 0)
+			{
+				LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
+					, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//Eastcom
+		if (csMachineModel.Compare("KK1000I(1365张)") == 0 || csMachineModel.Compare("KK1000I-2(1092张)") == 0
+			|| csMachineModel.Compare("KK1000I-3(500张)") == 0)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("Eastcom", true) != 0)
+			{
+				LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
+					, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//cw
+		if (csMachineModel.Compare("CASH35AG-1227") == 0 || csMachineModel.Compare("CASH35AG-JR10(G)") == 0
+			|| csMachineModel.Compare("CASH35AG-3211") == 0
+			)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("cw", true) != 0)
+			{
+				if (m_sysInfo.strMachineType.Compare("RVC.CardStore") != 0)
+					LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
+						, csMachineModel.GetData(), strVendor.GetData()));
+				else
+					LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,身份证模块厂商:%s"
+						, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//grg
+		if (csMachineModel.Compare("DT-7000I64A") == 0)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("grg", true) != 0)
+			{
+				LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
+					, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+		//Glodpac
+		if (csMachineModel.Compare("SAC401-D-02") == 0)
+		{
+			if (strVendor.IsNullOrEmpty() || strVendor.Compare("Goldpac", true) != 0)
+			{
+				LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, CSimpleStringA::Format("机型和模块配置信息不匹配,机型:%s,密码键盘模块厂商:%s"
+					, csMachineModel.GetData(), strVendor.GetData()));
+				return false;
+			}
+		}
+	}
+	else
+		return true;
 }

+ 2 - 11
Module/mod_vtmloader/VtmLoaderFSM.h

@@ -132,7 +132,7 @@ public:
 	void NoticeAppReady(SpReqAnsContext<VtmLoaderService_NoticeAppReady_Req, VtmLoaderService_NoticeAppReady_Ans>::Pointer ctx) { }
 	void CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	void SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
-	void Oiltest();
+	bool CheckConfigInfoInTestRoom();
 private:
 	void s0_on_entry();
 	void s0_on_exit();
@@ -170,7 +170,7 @@ private:
 private:
 	CSystemStaticInfo m_sysInfo;
 	CSimpleStringA m_strNetworkCheckUrl, m_csErrEntity, m_defaultSystemId, m_terminalNoFromWeb, m_csEntityList;
-	int m_sleepEnterOpMS, m_iCanIgnoreAddrDetect, m_iDetectInterval;
+	int m_sleepEnterOpMS, m_iCanIgnoreAddrDetect, m_iDetectInterval, m_iNoCheckMachineModel;
 	ULLINT m_ullMaxAddrDetectTime, m_ullNetCardCost, m_ullNetDetectCost, m_ullGetConfigCost, m_ullEntityLoadStart;
 	int m_httpCheckResult[2];
 	//DNS Settings
@@ -267,13 +267,4 @@ struct SaveTerminalNoTask : public ITaskSp
 	{
 		fsm->SaveTerminalNo(ctx);
 	}
-};
-struct OilTestTask : public ITaskSp
-{
-	CVtmLoaderFSM* fsm;
-	OilTestTask(CVtmLoaderFSM* f) : fsm(f) {}
-	void Process()
-	{
-		fsm->Oiltest();
-	}
 };