Browse Source

!10267 统一重启应用、系统的调用;增加密钥序号不一致的告警上送
Merge pull request !10267 from 80174847/oilyang_fixed_everything

杨诗友80174847 1 year ago
parent
commit
3d76bb45be

+ 2 - 1
Module/include/DevFSMCommBase.hpp

@@ -618,7 +618,8 @@ struct AdapterInfo : public AdaptorInfo
 						else if (strnicmp((LPCTSTR)arr2[0], "FUNCTION", strlen("FUNCTION")) == 0)
 						{
 							string strData = arr2[1].GetData();
-							regex pattern("^(I|T|F|IT|TI|IF|FI|TF|FT|ITF|IFT|FIT|FTI|FIT|FTI)$");//stupid,how to write the right... composite of 'I'/'T'/'F'
+							//regex pattern("^(I|T|F|Y|IT|TI|IF|FI|TF|FT|IY|TY|FY|ITF|IFT|FIT|FTI|FIT|FTI)$");//stupid,how to write the right... composite of 'I'/'T'/'F'/'Y'
+							regex pattern("^[ITFY]{1,4}$");
 							smatch sm;
 							if (!regex_match(strData, sm, pattern))
 								DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CheckDevInfoFormat, Wrong format of %s:%s", arr2[0].GetData(), arr2[1].GetData());

+ 4 - 12
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -28,15 +28,7 @@ using namespace std;
 const int MAX_AYSNC_TIMEOUT = 60000;
 const int MAX_IGNORE_TIMEOUT = 100;
 
-unsigned long long GetTickCountRVC() {
-#if defined(RVC_OS_WIN)
-	return GetTickCount64();
-#else
-	struct timespec ts;
-	clock_gettime(CLOCK_MONOTONIC, &ts);
-	return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
-#endif //RVC_OS_WIN
-}
+
 unsigned long long GetLastErrorRVC() {
 #if defined(RVC_OS_WIN)
 	return GetLastError();
@@ -108,7 +100,7 @@ ErrorCodeEnum CHealthManagerFSM::Initial()
 }
 ErrorCodeEnum CHealthManagerFSM::OnInit(void)
 {
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Complied at: %s %s", __DATE__, __TIME__);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Complied at: %s %s", __DATE__, __TIME__);
 	return Initial();
 }
 ErrorCodeEnum CHealthManagerFSM::OnExit(void)
@@ -893,7 +885,7 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 			if (strEntityIdx[i] == 0)
 			{
 				shellStartTime = Infos[i].startTime;
-				ULONGLONG dwElapseNow = GetTickCount64();
+				ULONGLONG dwElapseNow = SP::Module::Comm::RVCGetTickCount();
 				totalCost = dwElapseNow - m_ullElapseFromOSStart;
 				LogWarn(Severity_Low, Error_Debug, LOG_TRACE_ENTITY_START_TIME,
 					SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), totalCost).GetData());
@@ -983,7 +975,7 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 	char xOSTime[64] = {0};
 
 	char elapseTime[64] = {0};//使用机器启动时间秒数
-	ULONGLONG dwElapse = GetTickCountRVC();
+	ULONGLONG dwElapse = SP::Module::Comm::RVCGetTickCount();
 	DWORD elapseTimeTemp = dwElapse / 1000;
 #if defined(RVC_OS_WIN)
 	termInfo["OSTime"] = itoa(m_elapseTimeFromOSStart, xOSTime, 10);

+ 46 - 205
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -62,7 +62,7 @@ const DWORD HEALTHMANAGER_WAIT_MAINPAGE_OPEN_TIMER_ID = 2;
 const DWORD HEALTHMANAGER_SELFCHECK_TIMER_ID = 3;
 const DWORD HEALTHMANAGER_TIMER_INTERVAL = 60000;
 const DWORD HEALTHMANAGER_WAIT_MAINPAGE_OPEN_TIMER_INTERVAL = 60000;
-const DWORD HEALTHMANAGER_TIMER_INTERVAL_MINUTE = (HEALTHMANAGER_TIMER_INTERVAL/60000)*3;
+const DWORD HEALTHMANAGER_REBOOT_OS_IN_MINUTES_AFTER_TIME = 5;
 const DWORD HEALTHMANAGER_SELFCHECK_TIMER_INTERVAL = 60000;
 const int MAX_STOP_AYSNC_TIMEOUT = 20000;
 const int MAX_TERM_AYSNC_TIMEOUT = 30000;
@@ -200,140 +200,6 @@ N:
 U:
 */
 
-
-int CHealthManagerEntity::SystemRestart(bool bPeriod, bool bNow)
-{
-	if (bPeriod)
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("restart periodly.");
-	if (bNow)
-	{
-		m_fsm.QuitFrameworkAndSaveInfo(m_eRebootTrigger, m_eRebootWay);
-		int x = SystemShutdown(TRUE);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("From browser to shutdown %d", x);
-		return 0;
-	}
-
-	m_fsm.QuitFrameworkAndSaveInfo(m_eRebootTrigger, RebootWay_OS);
-	return 0;
-}
-/** 这里建议改用调用框架提供的接口,关机、重启均支持 [Gifur@202135]*/
-//system api shutdown
-int CHealthManagerEntity::SystemShutdown(BOOL bReboot)
-{
-#ifdef RVC_OS_WIN
-	HANDLE hToken;              // handle to process token 
-	TOKEN_PRIVILEGES tkp;       // pointer to token structure 
-
-	BOOL fResult;               // system shutdown flag 
-
-	// Get the current process token handle so we can get shutdown 
-	// privilege. 
-
-	if (!OpenProcessToken(GetCurrentProcess(), 
-		TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
-		return FALSE; 
-
-	// Get the LUID for shutdown privilege. 
-
-	LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
-		&tkp.Privileges[0].Luid); 
-
-	tkp.PrivilegeCount = 1;  // one privilege to set    
-	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
-
-	// Get shutdown privilege for this process. 
-
-	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
-		(PTOKEN_PRIVILEGES) NULL, 0); 
-
-	// Cannot test the return value of AdjustTokenPrivileges. 
-
-	if (GetLastError() != ERROR_SUCCESS) 
-		return FALSE; 
-
-	// Display the shutdown dialog box and start the countdown. 
-
-	fResult = InitiateSystemShutdown( 
-		NULL,    // shut down local computer 
-		NULL,   // message for user
-		0,      // time-out period, in seconds 
-		FALSE,   // ask user to close apps 
-		bReboot);   // reboot after shutdown 
-
-	if (!fResult) 
-		return FALSE; 
-
-	// Disable shutdown privilege. 
-
-	tkp.Privileges[0].Attributes = 0; 
-	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
-		(PTOKEN_PRIVILEGES) NULL, 0); 
-	return 0;
-#else
-	sync();
-	if (bReboot)
-		system("init 6");
-	else
-		system("init 0");
-	return 0;//oiltestlinux
-#endif //RVC_OS_WIN
-}
-
-int CHealthManagerEntity::FrameworkShutdown(bool bRestart)
-{
-#if defined(RVC_OS_WIN)
-	//oilyang@20211213 if reboot Framework,just call "pFuncPrivilege->Reboot";if shutdown only,call sprestart
-	if (bRestart)
-	{
-		m_fsm.QuitFrameworkAndSaveInfo(m_eRebootTrigger, m_eRebootWay);
-		return 0;
-	}
-    STARTUPINFO si;
-    PROCESS_INFORMATION pi;
-
-    ZeroMemory( &si, sizeof(si) );
-    si.cb = sizeof(si);
-    ZeroMemory( &pi, sizeof(pi) );
-	GetFunction()->FlushLogFile();
-
-	//	LPTSTR szCmdline[] = _tcsdup(TEXT("\"C:\\Program Files\\MyApp\" -L -S"));
-	//CreateProcess(NULL, szCmdline, /*...*/);
-
-    // Start the child process.
-	CSimpleStringA csRestart,csVerPath,csAll,csSep("\""),csBlank(" "),csScript("wscript.exe"),csReFlag("r");
-	csRestart = "sprestart.exe ";
-	ErrorCodeEnum Error = GetFunction()->GetPath("RootVer", csVerPath);
-	//csVerPath +="\\spexplorerfast.vbs";
-	csVerPath +="\\VTM.exe";
-	if (!bRestart)
-		csReFlag = "n";
-	//csAll = csSep + csRestart + csSep + csBlank + csSep + csScript+csBlank + csVerPath + csSep 
-	//	+ csBlank + csSep + csReFlag + csSep;
-	csAll = csSep + csRestart + csSep + csBlank + csSep + csVerPath + csSep 
-		+ csBlank + csSep + csReFlag + csSep;
-	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("allpath[%s]",(LPCTSTR)csAll);
-	LPTSTR szCmdline = _strdup(csAll);
-    if( !CreateProcess( NULL,szCmdline,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) 
-    {
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("CreateProcess failed (%d).\n", GetLastError());
-        return -1;
-    }
-	//MessageBoxA(0,0,0,0);
-	DWORD dwErr = GetLastError();
-	// Wait until child process exits.
-    WaitForSingleObject( pi.hProcess, INFINITE );
-	
-	
-    // Close process and thread handles. 
-    CloseHandle( pi.hProcess );
-    CloseHandle( pi.hThread );
-	return 0;
-#else
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("FrameworkShutdown to call QuitFrameworkAndSaveInfo:%d,%d", m_eRebootTrigger, m_eRebootWay);
-	m_fsm.QuitFrameworkAndSaveInfo(m_eRebootTrigger, m_eRebootWay);
-	return 0;//oiltestlinux
-#endif
-}
 //almost disused.
 
 ErrorCodeEnum CHealthManagerEntity::RestartModule(const char* pEntityName)
@@ -350,7 +216,7 @@ ErrorCodeEnum CHealthManagerEntity::RestartModule(const char* pEntityName)
 	if (it == m_modRunInfo.end())
 	{
 		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("add %s to modfuninfo(%d).",pEntityName,m_modRunInfo.size());
-		m_modRunInfo[pEntityName].dwStart = GetTickCountRVC();
+		m_modRunInfo[pEntityName].dwStart = SP::Module::Comm::RVCGetTickCount();
 	}
 	else
 	{
@@ -402,9 +268,7 @@ void CHealthManagerEntity::AfterWaitRestartPC()
 		m_bWaitRestartPC = false;
 		pFuncPrivilege->DisplayBlueScreen("PAUSE SERVICE");
 		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("time comes,restart machine");
-		m_eRebootTrigger = RebootTrigger_RunExcepition;
-		m_eRebootWay = RebootWay_Power;
-		SystemRestart(false);
+		m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_RunExcepition, RebootWay_OS);
 	}
 }
 void CHealthManagerEntity::OnCheckTimeTimeout()
@@ -421,36 +285,36 @@ void CHealthManagerEntity::OnCheckTimeTimeout()
 		if (m_bInMainPage || csTermStage.Compare("A"))
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("THE key CenterSetting updated,we must restart framework right now.");
-			m_eRebootTrigger = RebootTrigger_Resource;
-			m_eRebootWay = RebootWay_Framework;
-			FrameworkShutdown();
+			m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Resource, RebootWay_Framework);
 		}
 	}
 	SYSTEMTIME localTime;
 	GetLocalTimeRVC(localTime);
+	//for example:[1----6]
+	//               ^ here we go
+	//in reboot period
+	if (localTime.wHour >= m_rebootHourBegin && localTime.wHour <= m_rebootHourEnd)
+	{
+		//reach setting reboot time
+		if (localTime.wHour == m_restartHour && (localTime.wMinute >= m_restartMinute && localTime.wMinute <= m_restartMinute + HEALTHMANAGER_REBOOT_OS_IN_MINUTES_AFTER_TIME))
+		{
+			m_OSRunTicks = SP::Module::Comm::RVCGetTickCount();
+			//the os haven't reboot today
+			if (m_OSRunTicks > m_restartHour * 60 * 60 * 1000 + m_restartMinute * 60 * 1000)
+			{
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to restart machine daily");
+				m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Period, RebootWay_OS);
+			}
+		}
+	}
+
 	ErrorCodeEnum eErr = Error_Unexpect;
 
-	//99 is initial value of m_preDay
-	m_preDay = localTime.wDayOfWeek;
 	CSmartPointer<IConfigInfo> spConfigRun;
 	eErr = GetFunction()->OpenConfig(Config_Run, spConfigRun);
 	if (eErr != Error_Succeed)
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("timer open cfg file failed!");
 
-
-	if (m_wDayOfWeek != localTime.wDayOfWeek)
-	{
-		if (localTime.wHour == m_restartHour && localTime.wMinute >= m_restartMinute
-			&& localTime.wMinute <= (m_restartMinute + HEALTHMANAGER_TIMER_INTERVAL_MINUTE))
-		{
-			m_wDayOfWeek = localTime.wDayOfWeek;
-			m_eRebootTrigger = RebootTrigger_Period;
-			m_eRebootWay = RebootWay_Power;
-			BOOL bRet = SystemRestart(true);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("OnCheckTimeTimeout")("restart machine[%d][%d] bRet=%d, LastError=%d", localTime.wHour, localTime.wMinute, bRet, GetLastError());
-		}
-	}
-
 	if (!m_bSayIdle)
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_fsm.GetFSMState():%d", m_fsm.GetFSMState());
 	int iCheckGuardian = 0;
@@ -854,27 +718,27 @@ bool CHealthManagerEntity::DoRestart()
 	}
 
 	m_restartHour = m_restartMinute = 1;
-	int tmpHourBegin, tmpHourEnd;
+	int m_rebootHourBegin, m_rebootHourEnd;
 	//the region (RestartHourBegin,RestartHourEnd) that we should reboot VTM 
-	tmpHourBegin = 1;
-	tmpHourEnd = 6;
+	m_rebootHourBegin = 1;
+	m_rebootHourEnd = 6;
 	do 
 	{
 		int value(0);
 		spCerConfig->ReadConfigValueInt(GetEntityName(), "RestartHourBegin", value);
-		if (value > 0) {
-			tmpHourBegin = value;
+		if (value > 0 && value < 8) {
+			m_rebootHourBegin = value;
 		}
 	} while (false);
 	do {
 		int value(0);
 		spCerConfig->ReadConfigValueInt(GetEntityName(), "RestartHourEnd", value);
-		if (value > 0) {
-			tmpHourEnd = value;
+		if (value > 0 && value < 8) {
+			m_rebootHourEnd = value;
 		}
 	} while (false);
 	//to calculate the restartHour & restartMinute of the Terminal
-	ToCalcRebootHourAndMinute(tmpHourBegin, tmpHourEnd);
+	ToCalcRebootHourAndMinute(m_rebootHourBegin, m_rebootHourEnd);
 
 	do {
 		m_maxAbnormalTimes = 30;
@@ -930,17 +794,11 @@ bool CHealthManagerEntity::DoRestart()
 			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("set NeedGuardian N failed (%s).", SpStrError(eErr));
 		}
 
-	}else{
-		LogWarn(Severity_Low, Error_Unexpect, HealthManager_UserErrorCode_Need_Guardian, "terminal is need start up guardian");
 	}
 	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("[NonExclusive],NonGuardian=%s", csimpleStrMachineTypeCfg.GetData());
 	SYSTEMTIME localTime;
 	GetLocalTimeRVC(localTime);
-	if (m_bInit)
-	{
-		m_bInit = false;
-		m_wDayOfWeek = localTime.wDayOfWeek;
-	}
+
 
 	ITimerListener *pListener = new TimerOutHelper<CHealthManagerEntity>(this, &CHealthManagerEntity::OnCheckTimeTimeout);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set check timer %d(ms)", HEALTHMANAGER_TIMER_INTERVAL);
@@ -1266,7 +1124,8 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("version rollback succeed.to restart framework");
 			m_bVerRollback = false;
-			m_eRebootTrigger = RebootTrigger_RollBack;
+			m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_RollBack, RebootWay_Framework);
+			break;
 		}
 		else if (dwUserCode == Event_Req_Framework_No_Upgrade_Restart)
 		{
@@ -1275,16 +1134,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 			GetFunction()->PostThreadPoolTask(task);
 			break;
 		}
-		m_eRebootWay = RebootWay_Framework;
-		BOOL bRet = FrameworkShutdown();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("framework shutdown [%d]", bRet);
-	}
-	break;
-	case EVENT_CONSOLE_REQ_SHUTDOWN_SHELL:
-	{
-		LogWarn(Severity_Low, Error_Unexpect, HealthManager_UserErrorCode_PrivilegeCMD, CSimpleStringA::Format("%x", dwUserCode));
-		BOOL bRet = FrameworkShutdown(false);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("framework shutdown from console [%d]", bRet);
+		m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Unknown, RebootWay_Framework);
 	}
 	break;
 	case EVENT_RESTART_MACHINE:
@@ -1292,34 +1142,29 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 	case EVENT_CONSOLE_REQ_RESTART_POWER:
 	{
 		LogWarn(Severity_Low, Error_Unexpect, HealthManager_UserErrorCode_PrivilegeCMD, CSimpleStringA::Format("%x", dwUserCode));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("restart [%x]", dwUserCode);
 		if (dwUserCode == Event_Req_OS_Restart)
-			m_eRebootTrigger = RebootTrigger_OSUpgrade;
+			m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_OSUpgrade, RebootWay_OS);
 		else
-			m_eRebootTrigger = RebootTrigger_Unknown;
-		m_eRebootWay = RebootWay_Power;
-		BOOL bRet = SystemRestart(false);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("os restart [%d]", bRet);
+			m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Unknown, RebootWay_OS);	
 	}
 	break;
 	case LOG_EVT_IEBROWSER_RESTART_MACHINE:
 	{
-		m_eRebootTrigger = RebootTrigger_Unknown;
-		m_eRebootWay = RebootWay_Power;
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("machine restart now [%x]", dwUserCode);
 		LogWarn(Severity_Low, Error_Unexpect, LOG_EVT_IEBROWSER_RESTART_MACHINE, "ClosePage/UserDeskTop to call restart machine.");
-		BOOL bRet = SystemRestart(false, true);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("machine restart now [%d]", bRet);
+		m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Unknown, RebootWay_OS);
 		break;
 	}
 	case LOG_EVT_IEBROWSER_SHUTDOWN_MACHINE:
 	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ClosePage/UserDeskTop to call shutdown machine. [%x]", dwUserCode);
 		LogWarn(Severity_Low, Error_Unexpect, LOG_EVT_IEBROWSER_SHUTDOWN_MACHINE, "ClosePage/UserDeskTop to call shutdown machine.");
-		SystemShutdown();
+		m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_DeadForever, RebootWay_OS);
 		break;
 	}
 	case EVENT_MOD_SIP_RESART:
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SIPPhone said to wait chance to restart(power) pc.");
-		m_eRebootTrigger = RebootTrigger_RunExcepition;
-		m_eRebootWay = RebootWay_Power;
 		m_bWaitRestartPC = true;
 		break;
 	case EVENT_ACCESSAUTH_SUCCEED:
@@ -1328,7 +1173,7 @@ void CHealthManagerEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nL
 		m_fsm.SetAccessAuth(AccessAuth_Suc);
 		m_bNeedAuthRetry = false;
 		m_bNeedGuardianRestart = true;
-		m_dwTimeOfAuthSuc = GetTickCount64() / 1000;
+		m_dwTimeOfAuthSuc = SP::Module::Comm::RVCGetTickCount() / 1000;
 		GetFunction()->SetTimer(HEALTHMANAGER_WAIT_MAINPAGE_OPEN_TIMER_ID, this, m_maxWaitMainpageTime);
 
 		CSimpleStringA msg(true);
@@ -1443,7 +1288,7 @@ void CHealthManagerEntity::OnSysVarEvent(const char *pszKey, const char *pszValu
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR0402501Z10401")(m_sysStaticInfo.InstallVersion.ToString().GetData());
 				m_bHaveThrowMainPage = true;
 				
-				ULONGLONG dwElapse = GetTickCount64();//使用机器启动时间秒数
+				ULONGLONG dwElapse = SP::Module::Comm::RVCGetTickCount();//使用机器启动时间秒数
 				DWORD elapseTimeTemp = dwElapse / 1000;
 				DWORD dwToMainPageCostTime = elapseTimeTemp - m_dwTimeOfAuthSuc;//从准入通过到首次收到进入首页事件
 				CSimpleStringA xMsg = CSimpleStringA::Format("{\"Decripstion\":\"the first enter main page from HealthManger started.\",\"version\":\"%s\",\"elapseTime\":\"%d\",\"enterMainPageTime\":\"%d\"}"
@@ -1466,7 +1311,7 @@ void CHealthManagerEntity::OnSysVarEvent(const char *pszKey, const char *pszValu
 				m_bBrowserIdleFirst = false;
 				m_bEnterMainPageEver = true;
 				LogEvent(Severity_Middle, LOG_EVT_HEALTH_FIRST_ENTER_MAINPADE, "enter main page");
-				ULONGLONG dwElapse = GetTickCount64();//使用机器启动时间秒数
+				ULONGLONG dwElapse = SP::Module::Comm::RVCGetTickCount();//使用机器启动时间秒数
 				DWORD elapseTimeTemp = dwElapse / 1000;
 				CSimpleStringA xMsg = CSimpleStringA::Format("{\"Decripstion\":\"the first enter main page from browser started.\",\"version\":\"%s\",\"elapseTime\":\"%d\"}"
 					, m_sysStaticInfo.InstallVersion.ToString().GetData(), elapseTimeTemp);
@@ -1573,12 +1418,8 @@ void CHealthManagerEntity::WarnAndRestartFramwork()
 		//Dbg("to tell guardian framework is restarting.%d",eErr);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to tell guardian framework is restarting.%d", eErr);
 	}
-	m_eRebootTrigger = RebootTrigger_FrameUpgrade;
-
-	m_eRebootWay = RebootWay_Framework;
-	BOOL bRet = FrameworkShutdown();
-	//Dbg("framework shutdown [%d]", bRet);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("framework shutdown in restart task [%d]", bRet);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("framework shutdown in restart task");
+	m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_FrameUpgrade, RebootWay_Framework);	
 }
 
 void CHealthManagerEntity::ControlEntityLife(SpReqAnsContext<HealthManagerService_ControlEntityLife_Req, HealthManagerService_ControlEntityLife_Ans>::Pointer ctx)

+ 10 - 13
Module/mod_healthmanager/mod_healthmanager.h

@@ -85,13 +85,13 @@ class CHealthManagerEntity : public CEntityBase, public ILogListener, public IEn
 	,public ITimerListener, public ICallbackListener
 {
 public:
-	CHealthManagerEntity() :m_bInit(true)
-		, m_bWaitRestartPC(false)
+	CHealthManagerEntity() :
+		m_bWaitRestartPC(false)
 		, m_bScreenLock(false)
 		, m_bSayIdle(false), m_bGuardianRun(false), m_guardianCount(1), m_pUpgMgr(NULL)
-		, m_bVerRollback(false), m_eRebootTrigger(RebootTrigger_Resource), m_eRebootWay(RebootWay_Unknown)
+		, m_bVerRollback(false)
 		, m_menuChoice(""), m_menuPre(""), m_netState("N"), m_bBrowserIdleFirst(true)
-		, m_preDay(99), m_bInMainPage(false), m_stopSelfCheck(0)
+		, m_bInMainPage(false), m_stopSelfCheck(0)
 		, m_bEnterMainPageEver(false),m_bHaveThrowMainPage(false)
 		,m_bNeedAuthRetry(false), m_bNeedGuardianRestart(true), m_bNeedGuardian(true)
 		, m_bToRestartByCenterSetting(false){}
@@ -183,7 +183,7 @@ public:
 	{
 		if (ctx->Req.code == Event_VtmLoader_EntityLoad_Finished || ctx->Req.code == Event_VtmLoader_EntityLoad_Failed)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("receive %x,entityList:%s", ctx->Req.code,ctx->Req.entityList.GetData());
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("receive %x,entityList:%s", ctx->Req.code,ctx->Req.entityList.GetData());
 			if (!ctx->Req.entityList.IsNullOrEmpty())
 				m_fsm.SetLoadEntityList(ctx->Req.entityList);
 			FSMEvent* pEvt = new FSMEvent(USER_EVT_VTMLOADER_FINISHED);
@@ -226,9 +226,6 @@ public:
 	virtual bool IsService()const{return true;}
 	virtual bool IsMultiThread()const{return true;}
 
-	int SystemRestart(bool bPeriod, bool bNow = false);
-	int SystemShutdown(BOOL bReboot=FALSE);
-	int FrameworkShutdown(bool bRestart=true);
 	void QueryHardwareInfo(SpReqAnsContext<HealthManagerService_QueryHardwareInfo_Req, HealthManagerService_QueryHardwareInfo_Ans>::Pointer ctx)
 	{
 		QueryHardwareInfoTask* pTask = new QueryHardwareInfoTask(&m_fsm);
@@ -267,15 +264,15 @@ private:
 		, m_uuidRemoteController, m_uuidGUIConsole, m_uuidHeartBeat, m_uuidIE, m_uuidCenterS, m_uuidVtmLoader;
 	CUUID m_uuidPublic, m_uuid4SIPPhone;
 	int m_stopSelfCheck;
-	int m_restartHour, m_restartMinute, m_lastHour, m_preDay,m_guardianCount, m_maxAbnormalTimes;
-	bool m_bInit, m_bWaitRestartPC, m_bScreenLock, m_bSayIdle
+	int m_restartHour, m_restartMinute, m_lastHour, m_guardianCount, m_maxAbnormalTimes, m_rebootHourBegin, m_rebootHourEnd;;
+	bool m_bWaitRestartPC, m_bScreenLock, m_bSayIdle
 		, m_bGuardianRun, m_bVerRollback, m_bBrowserIdleFirst
 		, m_bInMainPage, m_bEnterMainPageEver, m_bHaveThrowMainPage, m_bToRestartByCenterSetting;
 	bool m_bNeedAuthRetry/*需要重试准入*/, m_bNeedGuardianRestart/*需要重启*/, m_bNeedGuardian;
-	DWORD m_wDayOfWeek,m_dwTimeOfAuthSuc;
+	DWORD m_dwTimeOfAuthSuc;
 	int m_maxWaitMainpageTime;
-	RebootTriggerEnum m_eRebootTrigger;
-	RebootWayEnum m_eRebootWay;
+	ULONGLONG m_OSRunTicks;
+
 	CSimpleStringA m_menuChoice,m_currentVer,m_menuPre,m_netState, m_versionEx;
 	map<CSimpleStringA,ModuleRunInfo> m_modRunInfo;
 	UpgradeMgrService_ClientBase *m_pUpgMgr;

+ 2 - 0
Module/mod_pinpad/PinPadFSM.cpp

@@ -472,6 +472,8 @@ int CPinPadFSM::Initial()
 		if (infile.is_open())
 			infile.read(buffer, 16);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bak.sn:%s", buffer);
+		if (strlen(buffer) > 0 && m_keySNSM.Compare(buffer) != 0)
+			LogWarn(Severity_High, Error_Unexpect, PinPad_UserErrorCode_PinPad_SN_NOTMATCH, CSimpleStringA::Format("m_keySN:%s,snbak:%s", m_keySNSM.GetData(), buffer));
 		delete[] buffer;
 		infile.close();
 	}

+ 1 - 1
Module/mod_pinpad/PinPad_UserErrorCode.h

@@ -32,7 +32,7 @@ enum PinPad_UserErrorCode {
 	PinPad_UserErrorCode_PinPad_GetEncryptText_Get12Account_Error = 0x2060021B,
 	PinPad_UserErrorCode_PinPad_DevOpenFailed = 0x2060021C,
 	PinPad_UserErrorCode_PinPad_CkCode_While_Load_SM = 0x2060021D,
-		
+	PinPad_UserErrorCode_PinPad_SN_NOTMATCH = 0x2060021E,
 	PinPad_UserErrorCode_PinPad_Real_Root_Config = 0x2060021F,
 	PinPad_UserErrorCode_PinPad_GetPinBlock_Call = 0x20600220,
 	PinPad_UserErrorCode_Unexpected_Exit = 0x20600221,