|
|
@@ -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)
|
|
|
@@ -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,9 +285,7 @@ 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);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -432,10 +294,8 @@ void CHealthManagerEntity::OnCheckTimeTimeout()
|
|
|
if (m_OSRunTicks > (m_restartHour * 60 * 60 * 1000 + m_restartMinute * 60 * 1000)
|
|
|
&& m_OSRunTicks < (m_restartHour * 60 * 60 * 1000 + (m_restartMinute + HEALTHMANAGER_REBOOT_OS_IN_MINUTES_AFTER_TIME) * 60 * 1000))
|
|
|
{
|
|
|
- m_eRebootTrigger = RebootTrigger_Period;
|
|
|
- m_eRebootWay = RebootWay_Power;
|
|
|
- BOOL bRet = SystemRestart(true);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("OnCheckTimeTimeout")("restart machine bRet=%d, LastError=%d", bRet, GetLastError());
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to restart machine daily");
|
|
|
+ m_fsm.QuitFrameworkAndSaveInfo(RebootTrigger_Period, RebootWay_OS);
|
|
|
}
|
|
|
|
|
|
ErrorCodeEnum eErr = Error_Unexpect;
|
|
|
@@ -1256,7 +1116,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)
|
|
|
{
|
|
|
@@ -1265,16 +1126,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:
|
|
|
@@ -1282,34 +1134,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:
|
|
|
@@ -1563,12 +1410,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)
|