Explorar o código

!10820 st2
Merge pull request !10820 from 80174847/ST2

杨诗友80174847 hai 4 meses
pai
achega
d99403ac7f

+ 3 - 23
CMakeLists.txt

@@ -500,6 +500,8 @@ set(RVC_VENDOR_PATH  "${PACK_INSTALL_PREFIX_CUR_VER}/dep")
 set(RVC_SHARED_PATH   "${PACK_INSTALL_PREFIX_CUR_VER}/share")
 set(RVC_RESOURCE_PATH   "${PACK_INSTALL_PREFIX_CUR_VER}/res")
 set(RVC_EXTEND_PATH   "${PACK_INSTALL_PREFIX_CUR_VER}/ext")
+set(RVC_INSTALL_NEWDEP "${PACK_INSTALL_RUN_DIR}/dep")
+set(RVC_INSTALL_NEWDEP_VERSION_FILE "${RVC_INSTALL_NEWDEP}/depver.txt")
 #win
 set(RVC_CHROMIUM_PATH "${RVC_RUNTIME_PATH}/Chromium")
 set(CMAKE_INSTALL_INCLUDEDIR ${RVC_INCLUDE_PATH})
@@ -705,26 +707,6 @@ if(NOT ONLY_BUILD_DEVADAPTER)
 	file(GLOB RVC_RESOURCE_FILES LIST_DIRECTORIES FALSE "${CMAKE_SOURCE_DIR}/addin/assets/*")
 	install(FILES ${RVC_RESOURCE_FILES} DESTINATION ${RVC_RUNTIME_PATH} COMPONENT resources)
 
-	#if(CONAN_RES_DIRS_SOGOUIME)
-	#	message(STATUS "include sogou input installation.")
-	#	install(DIRECTORY "${CONAN_RES_DIRS_SOGOUIME}" DESTINATION "${PACK_INSTALL_DATA_DIR}" COMPONENT resources)
-	#endif(CONAN_RES_DIRS_SOGOUIME)
-
-	#if(CONAN_RES_DIRS_HYQIHEITTF)
-	#	message(STATUS "include font installation.")
-	#	install(DIRECTORY "${CONAN_RES_DIRS_HYQIHEITTF}" DESTINATION "${PACK_INSTALL_DATA_DIR}" COMPONENT resources)
-	#endif(CONAN_RES_DIRS_HYQIHEITTF)
-
-	#if(CONAN_RES_DIRS_UOSBROWSER)
-	#	message(STATUS "include uosbrowser installation.")
-	#	install(DIRECTORY "${CONAN_RES_DIRS_UOSBROWSER}" DESTINATION "${PACK_INSTALL_DATA_DIR}" COMPONENT resources)
-	#endif(CONAN_RES_DIRS_UOSBROWSER)
-
-	#if(CONAN_RES_DIRS_VENDORFILE)
-	#	message(STATUS "include vendor file installation.")
-	#	install(DIRECTORY "${CONAN_RES_DIRS_VENDORFILE}" DESTINATION "${PACK_INSTALL_MISCS_DIR}" COMPONENT resources)
-	#endif(CONAN_RES_DIRS_VENDORFILE)
-
 endif(NOT ONLY_BUILD_DEVADAPTER)
 
 
@@ -900,7 +882,7 @@ if(WITH_LABEL_RECORD AND DEVOPS_ON AND NOT DEVOPS_ON_CMAKE_PRD)
 		set(LABEL_UPLOAD_URL_PREFIX "http://55.11.56.122/rvc/LR04.02_RVCTerminalPlus_UAT")
 	endif(DEVOPS_ON_CMAKE_ST)
 	set(LABEL_UPLOAD_URL "${LABEL_UPLOAD_URL_PREFIX}/RVCTerminalPlus-$ENV{PIPELINE_BRANCH}.zip")
-	set(LABEL_UPLOAD_URL_NAME "http://avsuser.paasst.cmbchina.cn/avsui/other-bean/insert-tmp-version-info")
+	set(LABEL_UPLOAD_URL_NAME "http://avsuser.paasuat.cmbchina.cn/avsui/other-bean/insert-tmp-version-info")
 	if(MSVC)
 		set(LABEL_UPLOAD_PLATFORM "win")
 	else()
@@ -914,8 +896,6 @@ if(WITH_LABEL_RECORD AND DEVOPS_ON AND NOT DEVOPS_ON_CMAKE_PRD)
 	install(CODE "MESSAGE(\"----finished uploading label info ${LABEL_UPLOAD_URL}----\")" COMPONENT symbols)
 endif(WITH_LABEL_RECORD AND DEVOPS_ON AND NOT DEVOPS_ON_CMAKE_PRD)
 
-
-
 #appoint the component to install , except header file here.
  #set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
 set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE TRUE)

+ 30 - 0
DevAdapter/zcopy/CMakeLists.txt

@@ -0,0 +1,30 @@
+if(NOT DEVOPS_ON)
+#功能:本地开发环境安装时支持拷贝应用下的dep内容到解耦下的当前dep版本目录(通过读取depver.txt)
+#单独创建文件夹的原因:需要在所有文件install后再拷贝,CMake没有PostInstall的阶段步骤设置,只能通过这种方式找到契机
+	install(CODE "
+		message(STATUS \"安装完成,开始拷贝适配器目录\")
+		set(DEP_VERSION_CONTENT \"0.0.0.1\")
+		if(EXISTS \"\${CMAKE_INSTALL_PREFIX}/${RVC_INSTALL_NEWDEP_VERSION_FILE}\")
+			file(READ \"\${CMAKE_INSTALL_PREFIX}/${RVC_INSTALL_NEWDEP_VERSION_FILE}\" DEP_VERSION_CONTENT)
+		else()
+			message(STATUS \"make dep version file\")
+			file(MAKE_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}/${RVC_INSTALL_NEWDEP}\")
+			file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${RVC_INSTALL_NEWDEP_VERSION_FILE}\" \${DEP_VERSION_CONTENT})
+		endif()
+		message(STATUS \"dep version: \${DEP_VERSION_CONTENT}\")
+		set(DEP_VERSION_DIR \"\${CMAKE_INSTALL_PREFIX}/${RVC_INSTALL_NEWDEP}/\${DEP_VERSION_CONTENT}\")
+		if(NOT EXISTS \"\${DEP_VERSION_DIR}\")
+			message(STATUS \"make dep version directory: \${DEP_VERSION_DIR}\")
+			file(MAKE_DIRECTORY \"\${DEP_VERSION_DIR}\")
+		endif()
+		set(SOURCE_DEP_DIR \${CMAKE_INSTALL_PREFIX}/${RVC_VENDOR_PATH})
+		set(TARGET_DEP_DIR \${DEP_VERSION_DIR})
+		file(MAKE_DIRECTORY \${TARGET_DEP_DIR})
+		file(GLOB_RECURSE FILES_TO_COPY \${SOURCE_DEP_DIR}/*)
+		foreach(FILE \${FILES_TO_COPY})
+			message(STATUS \"copy dep file: \${FILE}\")
+			file(COPY \${FILE} DESTINATION \${TARGET_DEP_DIR})
+		endforeach()" 
+	 COMPONENT devadapters)
+
+endif(NOT DEVOPS_ON)

+ 0 - 76
Module/mod_ResourceWatcher/ResourceWatcher.xml

@@ -161,32 +161,6 @@
 				<param name="terminalVer" type="string" />
 			</res>
 		</twoway>
-
-    <twoway  name="GetThirdPartyInstallState" overlap="true" method_id="10">
-      <req>
-        <!---1: 表示获取搜狗输入法的安装信息,3,自定义检测程序安装情况-->
-        <param name="mode" type="int" />
-        <param name="reserved1" type="int" />
-        <param name="reserved2" type="int" />
-        <!--新增两个字段,该接口确认为内部使用,TODO: SpGen更新-->
-        <param name="reserverd3" type="string"/>
-        <param name="reserverd4" type="string"/>
-      </req>
-      <res>
-        <!--1:已安装,0:未安装-->
-        <param name="status" type="int" />
-		<!-- 安装版本信息 -->
-        <param name="version" type="string"/>
-		<!-- 安装路径 -->
-        <param name="path" type="string"/>
-		<!-- 对于搜狗输入法,储存安装时间 -->
-        <param name="reserverd1" type="string"/>
-        <param name="reserverd2" type="string"/>
-        <param name="reserverd3" type="int"/>
-        <param name="reserverd4" type="int"/>
-		<param name="terminalVer" type="string" />
-      </res>
-    </twoway>
     <twoway  name="InstallThirdPartyProgram" overlap="true" method_id="11">
       <req>
         <!---1: 搜狗输入法-->
@@ -203,56 +177,6 @@
 		<param name="terminalVer" type="string" />
       </res>
     </twoway>
-    <twoway  name="UninstallThirdPartyProgram" overlap="true" method_id="14">
-      <req>
-        <!---1: 搜狗输入法-->
-        <param name="type" type="int" />
-        <param name="reserved1" type="int" />
-        <param name="reserved2" type="int" />
-      </req>
-      <res>
-        <param name="result" type="int" />
-        <param name="msg" type="string"/>
-        <param name="reserverd1" type="string"/>
-        <param name="reserverd2" type="string"/>
-		<param name="terminalVer" type="string" />
-      </res>
-    </twoway>
-
-		<!--第三方软件手工启动接口-->
-		<twoway  name="RestartThirdPartyProgram" overlap="true" method_id="15">>
-			<req>
-				<!---1: 搜狗输入法-->
-				<param name="type" type="int" />
-				<param name="reserved1" type="int" />
-				<param name="reserved2" type="int" />
-			</req>
-			<res>
-				<param name="result" type="int" />
-				<param name="msg" type="string"/>
-				<param name="reserverd1" type="string"/>
-				<param name="reserverd2" type="string"/>
-				<param name="terminalVer" type="string" />
-			</res>
-		</twoway>
-
-		<!--第三方软件进程检测接口-->
-		<twoway  name="ProcessDetectThirdPartyProgram" overlap="true" method_id="16">
-			<req>
-				<!---1: 搜狗输入法-->
-				<param name="type" type="int" />
-				<param name="reserved1" type="int" />
-				<param name="reserved2" type="int" />
-			</req>
-			<res>
-				<param name="result" type="int" />
-				<param name="msg" type="string"/>
-				<param name="reserverd1" type="string"/>
-				<param name="reserverd2" type="string"/>
-				<param name="terminalVer" type="string" />
-			</res>
-		</twoway>
-
 		<!--文件清理接口-->
 		<twoway  name="FilesClean" overlap="true" method_id="17">
 			<req>

+ 111 - 59
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -7,7 +7,6 @@
 #include <algorithm>
 #include "fileutil.h"
 #include <ctime>
-#include "CommEntityUtil.hpp"
 #include "SpUtility.h"
 #include "RestfulFunc.h"
 #include <stdio.h>
@@ -91,6 +90,14 @@ const char* CMB_LINK_FILE_NAME = "招商银行可视柜台.lnk";
 #endif
 const char* STRATUP_FILENAME_FROM_SCRIPTS = "spexplorerauto.lnk";
 
+bool cmp(const pair<int, double>& a, const pair<int, double>& b) {
+    return a.second > b.second;
+}
+
+bool cmpPid(const pair<int, CSimpleStringA>& a, const pair<int, CSimpleStringA>& b) {
+    return a.first < b.first;
+}
+
 #if defined(RVC_OS_WIN)
 //https://blog.csdn.net/aflyeaglenku/article/details/51742820
 typedef struct _dmi_header
@@ -256,9 +263,9 @@ bool ResourceWatcherFSM::GetSysActiveStatus(CSimpleStringA& outInfo)
 //首页状态变化时触发的功能
 void ResourceWatcherFSM::TriggerAtStatusChanged(bool bMStatus)
 {
-    if (firstMpage)//首次进入首页
+    if (neverMainPage)//首次进入首页
     {
-        firstMpage = false;
+        neverMainPage = false;
 
         CSmartPointer<IConfigInfo> spRunConfig;
         CSmartPointer<IConfigInfo> spCtSettingConfig;
@@ -311,9 +318,21 @@ void ResourceWatcherFSM::TriggerAtStatusChanged(bool bMStatus)
     }
 }
 
+void ResourceWatcherFSM::TriggerProccessUpload()
+{
+    CSmartPointer<IConfigInfo> spCtSettingConfig;
+    GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
+    int CloseUploadSysProcFlag = 0; //关闭进程信息上送标志
+    spCtSettingConfig->ReadConfigValueInt(m_pEntity->GetEntityName(), "CloseUploadSysProcFlag", CloseUploadSysProcFlag);
+    if (CloseUploadSysProcFlag != 1) {
+        UploadSysProcInfoTask* uploadProcInfo = new UploadSysProcInfoTask(this);
+        GetEntityBase()->GetFunction()->PostThreadPoolTask(uploadProcInfo);
+    }
+}
+
 ErrorCodeEnum ResourceWatcherFSM::OnInit()
 {
-    firstMpage = true;		//是否首次进入首页
+    neverMainPage = true;		//是否未进入过首页
 
     ErrorCodeEnum erroCode = Error_Succeed;
     DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Complied at: %s %s", __DATE__, __TIME__);
@@ -341,6 +360,7 @@ ErrorCodeEnum ResourceWatcherFSM::OnInit()
         m_skipDesktopDetect = TRUE;
     }
     spRunConfig->ReadConfigValueInt("WarnRecord", "disk", m_diskLastWarnHour);
+
     return Error_Succeed;
 }
 
@@ -3340,16 +3360,6 @@ long long CompareFileTime2(const FILETIME& preTime, const FILETIME& nowTime)
     return Filetime2Int64(nowTime) - Filetime2Int64(preTime);
 }
 
-unordered_map<int, long long> oldProcessTime;
-unordered_map<int, long long> newProcessTime;
-unordered_map<int, CSimpleStringA> processName;
-unordered_map<int, double> processCpu;
-string sysProcName = "[System Process]|System|Registry|smss.exe|csrss.exe|services.exe|wininit.exe";
-
-bool cmp(const pair<int, double>& a, const pair<int, double>& b) {
-    return a.second > b.second;
-}
-
 void ResourceWatcherFSM::GetSystemCPUStatus()
 {
     oldProcessTime.clear();
@@ -4755,10 +4765,6 @@ const char* ResourceWatcherFSM::GetItems(const char* buffer, unsigned int item)
     return p;
 }
 
-bool cmp(const pair<DWORD, DOUBLE>& a, const pair<DWORD, DOUBLE>& b) {
-    return a.second > b.second;
-}
-
 /* -----------------------
    根据先后两个时间的CPU信息,
    计算CPU的总占用量和各个进程的占用量
@@ -4767,12 +4773,15 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
 {
     //int cpu_num = sysconf(_SC_NPROCESSORS_CONF);      //CPU核数
 
+    oldProcessTime.clear();
+    newProcessTime.clear();
+    processName.clear();
+    processCpu.clear();
+
     CPUInfo* cpuOld = new CPUInfo;
     CPUInfo* cpuNew = new CPUInfo;
 
     const char* tPath = "/proc";
-    map<DWORD, string> nameProcess;  // <pid, 进程名>
-    map<DWORD, DOUBLE> usageProcess; // <pid, CPU占用率>
 
     long oldTotalTime = GetCPURunTime(cpuOld);  //旧CPU运行总时间
     if (oldTotalTime == -1)
@@ -4780,7 +4789,6 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
         return;
     }
 
-    map<DWORD, long> oldProcCPUTime;  // <pid, 旧时刻进程的CPU占用时间>
     struct dirent* oldDirp;
     DIR* oldDp = opendir(tPath);
     if (oldDp != NULL) {
@@ -4807,8 +4815,8 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
                 return;
             }
 
-            oldProcCPUTime[pid] = oldTime;
-            nameProcess[pid] = oldProcCPU->pname;
+            oldProcessTime[pid] = oldTime;
+            processName[pid] = oldProcCPU->pname;
 
             delete oldProcCPU;
         }
@@ -4823,7 +4831,6 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
         return;
     }
 
-    map<DWORD, long> newProcCPUTime; // <pid, 新时刻进程的CPU占用时间>
     struct dirent* newDirp;
     DIR* newDp = opendir(tPath);
     if (newDp != NULL) {
@@ -4851,52 +4858,26 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
                 return;
             }
 
-            newProcCPUTime[pid] = newTime;
+            newProcessTime[pid] = newTime;
 
             string tName = newProcCPU->pname;
             tName.erase(tName.begin());
             tName.erase(tName.begin() + (tName.length() - 1));
 
-            nameProcess[pid] = tName;
+            processName[pid] = tName.c_str();
 
             delete newProcCPU;
         }
         closedir(newDp);
     }
 
-    map<DWORD, long>::iterator it;
-    for (it = newProcCPUTime.begin(); it != newProcCPUTime.end(); ++it)
+    unordered_map<int, long long>::iterator it;
+    for (it = newProcessTime.begin(); it != newProcessTime.end(); ++it)
     {
         DWORD tPid = it->first;
         //进程的占用率 = 单位时间间隔里进程的CPU时间片占用 / 单位时间间隔里CPU的整体时间片
-        DOUBLE tRatio = 100.0 * (newProcCPUTime[tPid] - oldProcCPUTime[tPid]) / (newTotalTime - oldTotalTime);
-        usageProcess[tPid] = tRatio;
-    }
-
-    CSystemRunInfo runInfo = { 0 };
-    GetEntityBase()->GetFunction()->GetSystemRunInfo(runInfo);
-
-    for (int i = 0; i < runInfo.strRunningEntityNames.GetCount(); i++) //实体进程的名称默认全为sphost,需转换为对应实体名
-    {
-        string entityName = runInfo.strRunningEntityNames[i].GetData();
-        CEntityRunInfo entityInfo = { 0 };
-        GetEntityBase()->GetFunction()->GetEntityRunInfo(entityName.c_str(), entityInfo);
-        nameProcess[entityInfo.dwProcessID] = entityName;
-    }
-
-    vector<pair<DWORD, DOUBLE>> vec(usageProcess.begin(), usageProcess.end());
-    sort(vec.begin(), vec.end(), cmp); //根据CPU使用率从大到小进行排序
-
-    int cpuTop = 10;
-    int len = MIN(cpuTop, vec.size()); //确认要展示的进程数量
-    string procWarn = "";
-    for (int i = 0; i < len; ++i) //构建进程的CPU使用告警信息
-    {
-        char* tUsage = new char[20];
-        sprintf(tUsage, "%.2lf", vec[i].second);
-        procWarn = procWarn + ",\"" + nameProcess[vec[i].first] + "\":\"" + string(tUsage) + "%\"";
-
-        delete tUsage;
+        double tRatio = 100.0 * (newProcessTime[tPid] - oldProcessTime[tPid]) / (newTotalTime - oldTotalTime);
+        processCpu[tPid] = tRatio;
     }
 
     unsigned long oldInfo, newInfo;
@@ -4925,12 +4906,39 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
         cpuWarnTime = cpuWarnTime % cpuWarnThreshold;
         if (cpuWarnTime == 0) //每达到一次阈值告警一次
         {
+            CSystemRunInfo runInfo = { 0 };
+            GetEntityBase()->GetFunction()->GetSystemRunInfo(runInfo);
+
+            for (int i = 0; i < runInfo.strRunningEntityNames.GetCount(); i++) //实体进程的名称默认全为sphost,需转换为对应实体名
+            {
+                CSimpleStringA entityName = runInfo.strRunningEntityNames[i].GetData();
+                CEntityRunInfo entityInfo = { 0 };
+                GetEntityBase()->GetFunction()->GetEntityRunInfo(entityName.GetData(), entityInfo);
+                processName[entityInfo.dwProcessID] = entityName;
+            }
+
+            vector<pair<int, double>> vec(processCpu.begin(), processCpu.end());
+            sort(vec.begin(), vec.end(), cmp); //根据CPU使用率从大到小进行排序
+
+            int cpuTop = 10;
+            int len = MIN(cpuTop, vec.size()); //确认要展示的进程数量
+            CSimpleStringA procWarn = "";
+            for (int i = 0; i < len; ++i) //构建进程的CPU使用告警信息
+            {
+                char* tUsage = new char[20];
+                sprintf(tUsage, "%.2lf", vec[i].second);
+                procWarn = procWarn + ",\"" + processName[vec[i].first] + "\":\"" + tUsage + "%\"";
+
+                delete tUsage;
+            }
+
             stringstream tss;
             tss << std::setiosflags(std::ios::fixed) << std::setprecision(2) << cUsedRate * 100;
 
-            string warn = "{\"type\":\"cpu\", \"total_used\":\"" + tss.str() + "%\"" + procWarn + "}";
-            LogWarn(Severity_Middle, Error_Resource, LOG_EVT_RESOURCE_CPU_TOO_HIGH, CSimpleStringA::Format("%s", warn.c_str()));
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A03").setAPI("CpuUsedCheck")(warn.c_str());
+            CSimpleStringA warn = "";
+            warn = warn + "{\"type\":\"cpu\", \"total_used\":\"" + tss.str().c_str() + "%\"" + procWarn + "}";
+            LogWarn(Severity_Middle, Error_Resource, LOG_EVT_RESOURCE_CPU_TOO_HIGH, CSimpleStringA::Format("%s", warn.GetData()));
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A03").setAPI("CpuUsedCheck")(warn.GetData());
         }
         cpuWarnTime++;
     }
@@ -5152,3 +5160,47 @@ void ResourceWatcherFSM::ConfirmWindowEffectHasBeenOpen()
 }
 #endif // RVC_OS_LINUX
 
+void ResourceWatcherFSM::GetSystemProccess()
+{
+    if(processName.empty())
+    {
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get Sys Process error, it's empty!");
+        return;
+    }
+
+    int len = 0;
+    CSimpleStringA curProcStr = "";
+    CSimpleStringA endStr = ",";
+    CSimpleStringA totalProcStr = "{";
+
+    vector<pair<int, CSimpleStringA>> vec(processName.begin(), processName.end());
+    sort(vec.begin(), vec.end(), cmpPid);
+
+    for (int i = 0; i < vec.size(); i++)
+    {
+        curProcStr = CSimpleStringA("\"") + to_string(vec[i].first).c_str() + "\":\"" + vec[i].second + "\"";
+        len = totalProcStr.GetLength() + curProcStr.GetLength();
+        if (len > 1000 || i == (vec.size()-1))
+        {
+            endStr = "}";
+            if (i == (vec.size() - 1)) //最后一个
+            {
+                totalProcStr = totalProcStr + curProcStr + endStr;
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetSystemProccess")(totalProcStr.GetData());
+                break;
+            }
+            else //长度超限
+            {
+                totalProcStr[totalProcStr.GetLength() - 1] = '}';
+                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetSystemProccess")(totalProcStr.GetData());
+                totalProcStr = CSimpleStringA("{") + curProcStr + ","; //超过长度则从当前进程开始重新搭建日志
+            }
+        }
+        else
+        {
+            endStr = ",";
+            totalProcStr = totalProcStr + curProcStr + endStr;
+        }
+        
+    }
+}

+ 37 - 1
Module/mod_ResourceWatcher/ResourceWatcherFSM.h

@@ -2,6 +2,7 @@
 
 #include "stdafx.h"
 #include "SpFSM.h"
+#include "CommEntityUtil.hpp"
 
 #define JUS_A_TEST 0
 #include "FileInfo.h"
@@ -236,6 +237,7 @@ public:
 
 	//进入首页时触发的功能在此
 	void TriggerAtStatusChanged(bool bMStatus);
+	void TriggerProccessUpload();
 
 	void AfterInit();
 
@@ -275,14 +277,21 @@ private:
 	vector<CSimpleStringA>m_nonSignedFiles;
 	int m_iNonSignedTotal;
 	bool m_bNeedForceDiskCheck;
+
+	string sysProcName = "[System Process]|System|Registry|smss.exe|csrss.exe|services.exe|wininit.exe";
 #endif // RVC_OS_WIN
+	unordered_map<int, long long> oldProcessTime;  // <pid, 旧时刻进程的CPU占用时间>
+	unordered_map<int, long long> newProcessTime;	// <pid, 新时刻进程的CPU占用时间>
+	unordered_map<int, CSimpleStringA> processName;  // <pid, 进程名>
+	unordered_map<int, double> processCpu;	// <pid, CPU占用率>
+
 
     int m_iVerify;
     int m_iNonSignedDisplay;
 	int m_cpuHighPercent, m_memHighPercent, m_diskHighPercent;
 
     BOOL checkActiveBefore;
-	BOOL firstMpage;
+	BOOL neverMainPage;
 	BOOL forceFileOpt;
 
 	std::vector<std::string> keyUserlist;
@@ -292,6 +301,8 @@ private:
 
 	CSimpleStringA m_strLoginedUserName;
 
+	map<string, string> SysProcInfo; //用于记录系统进程
+
 public:
 	void CheckDiskFileSpace();
 
@@ -307,6 +318,8 @@ public:
 		SpReqAnsContext<ResourceWatcherService_GetBizLinks_Req,
 		ResourceWatcherService_GetBizLinks_Ans>::Pointer ctx);
 
+	bool GetNeverMainPageFlag() { return neverMainPage; } //是否未进过首页
+	void GetSystemProccess();
 	void GetSystemCPUStatus();
 	void GetSystemMemoryStatus();
 	void GetSystemDiskStatus();
@@ -522,4 +535,27 @@ struct CheckDiskFileSpaceTask : public ITaskSp
 	{
 		m_pFSM->CheckDiskFileSpace();
 	}
+};
+
+//获取系统进程并上送, TerminalStage的值为 A, C, M, S触发
+struct UploadSysProcInfoTask : public ITaskSp
+{
+	ResourceWatcherFSM* m_pFSM;
+	UploadSysProcInfoTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
+	void Process()
+	{
+		CSimpleStringA t_terminalState;
+		DWORD elapsed = 0;
+		DWORD dwStart = SP::Module::Comm::RVCGetTickCount();
+		DWORD dwEnd = SP::Module::Comm::RVCGetTickCount();
+		DWORD checkTimeOut = 5 * 60000; //五分钟超时
+		while (elapsed < checkTimeOut && m_pFSM->GetNeverMainPageFlag()) //到达终态,5分钟未进首页 or 成功进入首页跳出循环
+		{
+			Sleep(60000); //1分钟检测一次进首页状态
+			dwEnd = SP::Module::Comm::RVCGetTickCount();
+			elapsed = dwEnd - dwStart;
+		}
+		m_pFSM->GetSystemCPUStatus();
+		m_pFSM->GetSystemProccess();
+	}
 };

+ 0 - 196
Module/mod_ResourceWatcher/ResourceWatcher_client_g.h

@@ -303,55 +303,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum GetThirdPartyInstallState(ResourceWatcherService_GetThirdPartyInstallState_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(ResourceWatcherService_Method_GetThirdPartyInstallState, ResourceWatcherService_MethodSignature_GetThirdPartyInstallState, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetThirdPartyInstallState(ResourceWatcherService_GetThirdPartyInstallState_Req &Req, ResourceWatcherService_GetThirdPartyInstallState_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetThirdPartyInstallState(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetThirdPartyInstallState(ResourceWatcherService_GetThirdPartyInstallState_Req &Req, ResourceWatcherService_GetThirdPartyInstallState_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetThirdPartyInstallState(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetThirdPartyInstallState(ResourceWatcherService_GetThirdPartyInstallState_Req &Req, ResourceWatcherService_GetThirdPartyInstallState_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetThirdPartyInstallState(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
 	ErrorCodeEnum InstallThirdPartyProgram(ResourceWatcherService_InstallThirdPartyProgram_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
@@ -401,153 +352,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum UninstallThirdPartyProgram(ResourceWatcherService_UninstallThirdPartyProgram_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(ResourceWatcherService_Method_UninstallThirdPartyProgram, ResourceWatcherService_MethodSignature_UninstallThirdPartyProgram, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum UninstallThirdPartyProgram(ResourceWatcherService_UninstallThirdPartyProgram_Req &Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = UninstallThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum UninstallThirdPartyProgram(ResourceWatcherService_UninstallThirdPartyProgram_Req &Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = UninstallThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum UninstallThirdPartyProgram(ResourceWatcherService_UninstallThirdPartyProgram_Req &Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = UninstallThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum RestartThirdPartyProgram(ResourceWatcherService_RestartThirdPartyProgram_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(ResourceWatcherService_Method_RestartThirdPartyProgram, ResourceWatcherService_MethodSignature_RestartThirdPartyProgram, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum RestartThirdPartyProgram(ResourceWatcherService_RestartThirdPartyProgram_Req &Req, ResourceWatcherService_RestartThirdPartyProgram_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RestartThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum RestartThirdPartyProgram(ResourceWatcherService_RestartThirdPartyProgram_Req &Req, ResourceWatcherService_RestartThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RestartThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum RestartThirdPartyProgram(ResourceWatcherService_RestartThirdPartyProgram_Req &Req, ResourceWatcherService_RestartThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RestartThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum ProcessDetectThirdPartyProgram(ResourceWatcherService_ProcessDetectThirdPartyProgram_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(ResourceWatcherService_Method_ProcessDetectThirdPartyProgram, ResourceWatcherService_MethodSignature_ProcessDetectThirdPartyProgram, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum ProcessDetectThirdPartyProgram(ResourceWatcherService_ProcessDetectThirdPartyProgram_Req &Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ProcessDetectThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ProcessDetectThirdPartyProgram(ResourceWatcherService_ProcessDetectThirdPartyProgram_Req &Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ProcessDetectThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ProcessDetectThirdPartyProgram(ResourceWatcherService_ProcessDetectThirdPartyProgram_Req &Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ProcessDetectThirdPartyProgram(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
 	ErrorCodeEnum FilesClean(ResourceWatcherService_FilesClean_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();

+ 0 - 129
Module/mod_ResourceWatcher/ResourceWatcher_def_g.h

@@ -17,11 +17,7 @@ namespace ResourceWatcher {
 #define ResourceWatcherService_Method_CheckNetType 5
 #define ResourceWatcherService_Method_GetBizLinks 6
 #define ResourceWatcherService_Method_BizLinkDetect 7
-#define ResourceWatcherService_Method_GetThirdPartyInstallState 10
 #define ResourceWatcherService_Method_InstallThirdPartyProgram 11
-#define ResourceWatcherService_Method_UninstallThirdPartyProgram 14
-#define ResourceWatcherService_Method_RestartThirdPartyProgram 15
-#define ResourceWatcherService_Method_ProcessDetectThirdPartyProgram 16
 #define ResourceWatcherService_Method_FilesClean 17
 #define ResourceWatcherService_Method_FetchSystemSnapshot 20
 #define ResourceWatcherService_Method_CheckIsFileExists 21
@@ -31,11 +27,7 @@ namespace ResourceWatcher {
 #define ResourceWatcherService_MethodSignature_CheckNetType 1341887614
 #define ResourceWatcherService_MethodSignature_GetBizLinks 651862197
 #define ResourceWatcherService_MethodSignature_BizLinkDetect 1476437131
-#define ResourceWatcherService_MethodSignature_GetThirdPartyInstallState -15861483
 #define ResourceWatcherService_MethodSignature_InstallThirdPartyProgram -1049249852
-#define ResourceWatcherService_MethodSignature_UninstallThirdPartyProgram -2137706699
-#define ResourceWatcherService_MethodSignature_RestartThirdPartyProgram -534704262
-#define ResourceWatcherService_MethodSignature_ProcessDetectThirdPartyProgram -1692430185
 #define ResourceWatcherService_MethodSignature_FilesClean 624348486
 #define ResourceWatcherService_MethodSignature_FetchSystemSnapshot -1005346345
 #define ResourceWatcherService_MethodSignature_CheckIsFileExists -339255831
@@ -45,11 +37,7 @@ namespace ResourceWatcher {
 #define ResourceWatcherService_LogCode_CheckNetType "QLR040250A05"
 #define ResourceWatcherService_LogCode_GetBizLinks "QLR040250A06"
 #define ResourceWatcherService_LogCode_BizLinkDetect "QLR040250A07"
-#define ResourceWatcherService_LogCode_GetThirdPartyInstallState "QLR040250A10"
 #define ResourceWatcherService_LogCode_InstallThirdPartyProgram "QLR040250A11"
-#define ResourceWatcherService_LogCode_UninstallThirdPartyProgram "QLR040250A14"
-#define ResourceWatcherService_LogCode_RestartThirdPartyProgram "QLR040250A15"
-#define ResourceWatcherService_LogCode_ProcessDetectThirdPartyProgram "QLR040250A16"
 #define ResourceWatcherService_LogCode_FilesClean "QLR040250A17"
 #define ResourceWatcherService_LogCode_FetchSystemSnapshot "QLR040250A20"
 #define ResourceWatcherService_LogCode_CheckIsFileExists "QLR040250A21"
@@ -212,39 +200,6 @@ struct ResourceWatcherService_BizLinkDetect_Ans
 
 };
 
-struct ResourceWatcherService_GetThirdPartyInstallState_Req
-{
-	int mode;
-	int reserved1;
-	int reserved2;
-	CSimpleStringA reserverd3;
-	CSimpleStringA reserverd4;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & mode & reserved1 & reserved2 & reserverd3 & reserverd4;
-	}
-
-};
-
-struct ResourceWatcherService_GetThirdPartyInstallState_Ans
-{
-	int status;
-	CSimpleStringA version;
-	CSimpleStringA path;
-	CSimpleStringA reserverd1;
-	CSimpleStringA reserverd2;
-	int reserverd3;
-	int reserverd4;
-	CSimpleStringA terminalVer;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status & version & path & reserverd1 & reserverd2 & reserverd3 & reserverd4 & terminalVer;
-	}
-
-};
-
 struct ResourceWatcherService_InstallThirdPartyProgram_Req
 {
 	int type;
@@ -274,90 +229,6 @@ struct ResourceWatcherService_InstallThirdPartyProgram_Ans
 
 };
 
-struct ResourceWatcherService_UninstallThirdPartyProgram_Req
-{
-	int type;
-	int reserved1;
-	int reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & reserved1 & reserved2;
-	}
-
-};
-
-struct ResourceWatcherService_UninstallThirdPartyProgram_Ans
-{
-	int result;
-	CSimpleStringA msg;
-	CSimpleStringA reserverd1;
-	CSimpleStringA reserverd2;
-	CSimpleStringA terminalVer;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result & msg & reserverd1 & reserverd2 & terminalVer;
-	}
-
-};
-
-struct ResourceWatcherService_RestartThirdPartyProgram_Req
-{
-	int type;
-	int reserved1;
-	int reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & reserved1 & reserved2;
-	}
-
-};
-
-struct ResourceWatcherService_RestartThirdPartyProgram_Ans
-{
-	int result;
-	CSimpleStringA msg;
-	CSimpleStringA reserverd1;
-	CSimpleStringA reserverd2;
-	CSimpleStringA terminalVer;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result & msg & reserverd1 & reserverd2 & terminalVer;
-	}
-
-};
-
-struct ResourceWatcherService_ProcessDetectThirdPartyProgram_Req
-{
-	int type;
-	int reserved1;
-	int reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & reserved1 & reserved2;
-	}
-
-};
-
-struct ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans
-{
-	int result;
-	CSimpleStringA msg;
-	CSimpleStringA reserverd1;
-	CSimpleStringA reserverd2;
-	CSimpleStringA terminalVer;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & result & msg & reserverd1 & reserverd2 & terminalVer;
-	}
-
-};
-
 struct ResourceWatcherService_FilesClean_Req
 {
 	int type;

+ 0 - 108
Module/mod_ResourceWatcher/ResourceWatcher_server_g.h

@@ -65,13 +65,6 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case ResourceWatcherService_Method_GetThirdPartyInstallState:
-			if (dwSignature == ResourceWatcherService_MethodSignature_GetThirdPartyInstallState) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case ResourceWatcherService_Method_InstallThirdPartyProgram:
 			if (dwSignature == ResourceWatcherService_MethodSignature_InstallThirdPartyProgram) {
 				bOverlap = true;
@@ -79,27 +72,6 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case ResourceWatcherService_Method_UninstallThirdPartyProgram:
-			if (dwSignature == ResourceWatcherService_MethodSignature_UninstallThirdPartyProgram) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ResourceWatcherService_Method_RestartThirdPartyProgram:
-			if (dwSignature == ResourceWatcherService_MethodSignature_RestartThirdPartyProgram) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ResourceWatcherService_Method_ProcessDetectThirdPartyProgram:
-			if (dwSignature == ResourceWatcherService_MethodSignature_ProcessDetectThirdPartyProgram) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case ResourceWatcherService_Method_FilesClean:
 			if (dwSignature == ResourceWatcherService_MethodSignature_FilesClean) {
 				bOverlap = true;
@@ -157,31 +129,11 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case ResourceWatcherService_Method_GetThirdPartyInstallState:
-			if (dwSignature != ResourceWatcherService_MethodSignature_GetThirdPartyInstallState) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case ResourceWatcherService_Method_InstallThirdPartyProgram:
 			if (dwSignature != ResourceWatcherService_MethodSignature_InstallThirdPartyProgram) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case ResourceWatcherService_Method_UninstallThirdPartyProgram:
-			if (dwSignature != ResourceWatcherService_MethodSignature_UninstallThirdPartyProgram) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ResourceWatcherService_Method_RestartThirdPartyProgram:
-			if (dwSignature != ResourceWatcherService_MethodSignature_RestartThirdPartyProgram) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case ResourceWatcherService_Method_ProcessDetectThirdPartyProgram:
-			if (dwSignature != ResourceWatcherService_MethodSignature_ProcessDetectThirdPartyProgram) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case ResourceWatcherService_Method_FilesClean:
 			if (dwSignature != ResourceWatcherService_MethodSignature_FilesClean) {
 				Error = Error_MethodSignatureFailed;
@@ -229,31 +181,11 @@ public:
 	/// override by user
 	}
 
-	virtual void Handle_GetThirdPartyInstallState(SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req, ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_InstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req, ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_UninstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_RestartThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req, ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_ProcessDetectThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_FilesClean(SpReqAnsContext<ResourceWatcherService_FilesClean_Req, ResourceWatcherService_FilesClean_Ans>::Pointer ctx)
 	{
 	/// override by user
@@ -335,16 +267,6 @@ public:
 						Handle_BizLinkDetect(ctx);
 					}
 					break;
-				case ResourceWatcherService_Method_GetThirdPartyInstallState:
-					{
-						SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req,ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req,ResourceWatcherService_GetThirdPartyInstallState_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetThirdPartyInstallState(ctx);
-					}
-					break;
 				case ResourceWatcherService_Method_InstallThirdPartyProgram:
 					{
 						SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req,ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx;
@@ -355,36 +277,6 @@ public:
 						Handle_InstallThirdPartyProgram(ctx);
 					}
 					break;
-				case ResourceWatcherService_Method_UninstallThirdPartyProgram:
-					{
-						SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req,ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req,ResourceWatcherService_UninstallThirdPartyProgram_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_UninstallThirdPartyProgram(ctx);
-					}
-					break;
-				case ResourceWatcherService_Method_RestartThirdPartyProgram:
-					{
-						SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req,ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req,ResourceWatcherService_RestartThirdPartyProgram_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_RestartThirdPartyProgram(ctx);
-					}
-					break;
-				case ResourceWatcherService_Method_ProcessDetectThirdPartyProgram:
-					{
-						SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req,ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req,ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_ProcessDetectThirdPartyProgram(ctx);
-					}
-					break;
 				case ResourceWatcherService_Method_FilesClean:
 					{
 						SpReqAnsContext<ResourceWatcherService_FilesClean_Req,ResourceWatcherService_FilesClean_Ans>::Pointer ctx;

+ 0 - 702
Module/mod_ResourceWatcher/mod_ResourceWatcher.cpp

@@ -74,13 +74,6 @@ void ResourceWatcherServiceSession::Handle_GetBizLinks(SpReqAnsContext<ResourceW
     m_pEntity->GetBizLinks(ctx);
 }
 
-void ResourceWatcherServiceSession::Handle_GetThirdPartyInstallState(SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req, ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx)
-{
-    DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(ResourceWatcherService_LogCode_GetThirdPartyInstallState).setAPI(__FUNCTION__)(__FUNCTION__);
-    m_pEntity->GetThirdPartyInstallState(ctx);
-}
-
 void ResourceWatcherServiceSession::Handle_InstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req, ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx)
 {
     DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -88,27 +81,6 @@ void ResourceWatcherServiceSession::Handle_InstallThirdPartyProgram(SpReqAnsCont
     m_pEntity->InstallThirdPartyProgram(ctx);
 }
 
-void ResourceWatcherServiceSession::Handle_UninstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx)
-{
-    DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(ResourceWatcherService_LogCode_UninstallThirdPartyProgram).setAPI(__FUNCTION__)(__FUNCTION__);
-    m_pEntity->UninstallThirdPartyProgram(ctx);
-}
-
-void ResourceWatcherServiceSession::Handle_RestartThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req, ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx)
-{
-    DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(ResourceWatcherService_LogCode_RestartThirdPartyProgram).setAPI(__FUNCTION__)(__FUNCTION__);
-    m_pEntity->RestartThirdPartyProgram(ctx);
-}
-
-void ResourceWatcherServiceSession::Handle_ProcessDetectThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx)
-{
-    DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(ResourceWatcherService_LogCode_ProcessDetectThirdPartyProgram).setAPI(__FUNCTION__)(__FUNCTION__);
-    m_pEntity->ProcessDetectThirdPartyProgram(ctx);
-}
-
 void ResourceWatcherServiceSession::Handle_FilesClean(SpReqAnsContext<ResourceWatcherService_FilesClean_Req, ResourceWatcherService_FilesClean_Ans>::Pointer ctx)
 {
     DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -594,334 +566,6 @@ void ResourceWatcherEntity::InstallThirdPartyProgram(SpReqAnsContext<ResourceWat
     return;
 }
 
-void ResourceWatcherEntity::UninstallSogou(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx)
-{
-    ErrorCodeEnum result(Error_Succeed);
-    ErrorCodeEnum tmpResult(Error_Succeed);
-    CSimpleStringA tmpMsg(true);
-
-    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to uninstall sogou input...");
-
-#if defined(RVC_OS_LINUX)
-    CSimpleStringA strUninstallScriptFile(true);
-    SogouInstallInfo info;
-    do {
-        ErrorCodeEnum ecGet = GetSogouInstallInfo(info);
-        if (info.program.IsTSFVersion()) {
-            CSimpleStringA shellScriptPath;
-            GetFunction()->GetPath("Base", shellScriptPath);
-            shellScriptPath += SPLIT_SLASH_STR;
-            shellScriptPath += "res" SPLIT_SLASH_STR "RunScript" SPLIT_SLASH_STR;
-            strUninstallScriptFile = shellScriptPath + "uninstall_tfs_sogouimebs.sh";
-            if (!ExistsFileA(strUninstallScriptFile)) {
-                tmpMsg = CSimpleStringA::Format("%s 文件不存在!", strUninstallScriptFile.GetData());
-                tmpResult = Error_InvalidState;
-                break;
-            }
-            char app[MAX_PATH] = { '\0' };
-            sprintf(app, "bash %s", strUninstallScriptFile.GetData());
-            tmpResult = RunShellScript(app);
-            if (tmpResult != 0) {
-                tmpMsg = CSimpleStringA::Format("执行 '%s' 失败", app);
-            }
-            else {
-                Sleep(300);
-            }
-        }
-        else {
-            CSimpleStringA strInstallPkgPath;
-            tmpResult = GetSogouPkgDirPath(strInstallPkgPath);
-            if (tmpResult == Error_Succeed) {
-                tmpResult = SetFileExecutePriviledge(strInstallPkgPath);
-                if (tmpResult != Error_Succeed) {
-                    tmpMsg = CSimpleStringA::Format("%s 修改文件夹权限失败", strInstallPkgPath.GetData());
-                    tmpResult = Error_NoPrivilege;
-                    break;
-                }
-                const CSimpleStringA strShutdownScriptFile = strInstallPkgPath + SPLIT_SLASH_STR + "shutdown_service.sh";
-                strUninstallScriptFile = strInstallPkgPath + SPLIT_SLASH_STR + "uninstall_sogouime.sh";
-                if (!ExistsFileA(strShutdownScriptFile)) {
-                    tmpMsg = CSimpleStringA::Format("%s 文件不存在!", strShutdownScriptFile.GetData());
-                    tmpResult = Error_InvalidState;
-                    break;
-                }
-                if (!ExistsFileA(strUninstallScriptFile)) {
-                    tmpMsg = CSimpleStringA::Format("%s 文件不存在!", strUninstallScriptFile.GetData());
-                    tmpResult = Error_InvalidState;
-                    break;
-                }
-                char app[MAX_PATH] = { '\0' };
-                sprintf(app, "bash %s", strShutdownScriptFile.GetData());
-                tmpResult = RunShellScript(app);
-                if (tmpResult != 0) {
-                    tmpMsg = CSimpleStringA::Format("执行 '%s' 失败", app);
-                }
-                else {
-                    Sleep(300);
-                    sprintf(app, "bash %s", strUninstallScriptFile.GetData());
-                    tmpResult = RunShellScript(app);
-                    if (tmpResult != 0) {
-                        tmpMsg = CSimpleStringA::Format("执行 '%s' 失败", app);
-                    }
-                    else {
-                        Sleep(100);
-                    }
-                }
-            }
-            else {
-                tmpMsg = CSimpleStringA::Format(" 指定位置 [Ad] 找不到输入法安装包");
-                tmpResult = Error_InvalidState;
-                break;
-            }
-        }
-
-    } while (false);
-#else
-    SogouInstallInfo info;
-    GetSogouInstallInfo(info);
-    CSimpleStringA uninPath = info.program.strInstallDir + "\\" + info.program.strVersion + "\\Uninstall.exe";
-    int startFlag = WinExec(uninPath.GetData(), SW_SHOWNORMAL);
-    if (startFlag > 31) {
-        tmpMsg = CSimpleStringA::Format("已执行搜狗卸载程序!路径:%s。", uninPath.GetData());
-    }
-    else {
-        tmpMsg = CSimpleStringA::Format("执行搜狗卸载程序异常!路径:%s。", uninPath.GetData());
-        tmpResult = Error_Unexpect;
-    }
-#endif //RVC_OS_LINUX
-
-    ctx->Ans.result = tmpResult;
-    ctx->Ans.msg = tmpMsg;
-    ctx->Answer(result);
-}
-
-void ResourceWatcherEntity::UninstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx)
-{
-    ErrorCodeEnum result(Error_Succeed);
-    ErrorCodeEnum tmpResult(Error_Succeed);
-    CSimpleStringA tmpMsg(true);
-
-    LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHE_UNINSTALL_THIRDPARTYPROGRAM,
-        CSimpleStringA::Format("UninstallThirdPartyProgram: ctx-req context: %d, %d, %d", ctx->Req.type, ctx->Req.reserved1, ctx->Req.reserved2));
-
-    if (ctx->Req.type == 1) {
-        //卸载搜狗输入法
-#if defined(RVC_OS_LINUX)
-        UninstallSogouTask* sogouUninstall = new UninstallSogouTask(this);
-        sogouUninstall->ctx = ctx;
-        GetFunction()->PostThreadPoolTask(sogouUninstall);
-        return;
-#else
-        UninstallSogou(ctx);
-#endif //RVC_OS_LINUX
-
-    }
-    else {
-        tmpMsg = CSimpleStringA::Format("接口调用参数错误");
-        result = Error_NotSupport;
-    }
-    ctx->Ans.result = tmpResult;
-    ctx->Ans.msg = tmpMsg;
-    ctx->Answer(result);
-    return;
-}
-
-void ResourceWatcherEntity::RestartThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req, ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx)
-{
-    ErrorCodeEnum result(Error_Succeed);
-    ErrorCodeEnum tmpResult(Error_Succeed);
-    CSimpleStringA tmpMsg(true);
-
-    LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHE_RESTART_THIRDPARTYPROGRAM,
-        CSimpleStringA::Format("RestartThirdPartyProgram: ctx-req context: %d, %d, %d", ctx->Req.type, ctx->Req.reserved1, ctx->Req.reserved2));
-
-    if (ctx->Req.type == 1)
-    {
-        SogouInstallInfo info;
-        GetSogouInstallInfo(info);
-
-        if (!info.program.IsTSFVersion())
-        {
-            //重启搜狗输入法
-#if defined(RVC_OS_WIN)
-            CSimpleStringA csBinPath;
-            ErrorCodeEnum eErrPath = GetFunction()->GetPath("Bin", csBinPath);
-            CSimpleStringA startPath = csBinPath + "\\spScript\\SogouServStarter.bat";
-
-            if (eErrPath != Error_Succeed) {
-                tmpResult = Error_NotExist;
-                tmpMsg = "获取重启脚本路径失败。";
-            }
-            else if (!ExistsFileA(startPath)) {
-                tmpResult = Error_NotExist;
-                tmpMsg = CSimpleStringA::Format("搜狗重启脚本不存在。");
-            }
-            else {
-                CAutoArray<CSimpleStringA> pName(2);
-                pName[0] = "SogouImeMon.exe";
-                pName[1] = "SogouImeWebSrv.exe";
-
-                if (!KillProcessFromName(pName[0]) || !KillProcessFromName(pName[1])) {
-                    tmpMsg = CSimpleStringA::Format("杀死当前搜狗进程失败。");
-                    tmpResult = Error_Unexpect;
-                }
-                else {
-                    STARTUPINFO si = { sizeof(si) };
-                    PROCESS_INFORMATION pi;
-                    si.dwFlags = STARTF_USESHOWWINDOW;
-                    si.wShowWindow = TRUE;
-                    char* cmdline = const_cast<LPSTR>(startPath.GetData());
-                    BOOL bRet = ::CreateProcessA(NULL, cmdline, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
-                    WaitForSingleObject(pi.hProcess, INFINITE);
-                    std::string res = DoCheckCertainProcessStatus(pName);
-                    if (res.size() > 0) {
-                        tmpMsg = CSimpleStringA::Format("已成功重启搜狗输入法进程!路径:%s。", startPath.GetData());
-                    }
-                    else {
-                        tmpMsg = CSimpleStringA::Format("重启搜狗进程失败!路径:%s。", startPath.GetData());
-                        tmpResult = Error_Unexpect;
-                    }
-                }
-            }
-#else
-            static int old_process_id[2] = { -1, -1 };
-            char* relate_processes[2] = { "sogouImeWebSrv", "sogouImeService" };
-
-            int count = 3;
-            alive_process_info processes[3];
-            memset(processes, 0, sizeof(processes));
-
-            osutil_detect_unique_app(relate_processes, array_size(relate_processes), &count, processes);
-
-            CAutoArray<CSimpleStringA> msgs(array_size(relate_processes));
-            int cnt(0);
-
-            for (int i = 0; i < array_size(relate_processes); ++i) {
-                int k = -1;
-                for (int j = 0; j < count; ++j) {
-                    if (strcmp(processes[j].name, relate_processes[i]) == 0) {
-                        k = j;
-                        break;
-                    }
-                }
-                if (k != -1) {
-                    cnt++;
-                    old_process_id[k] = processes[k].pid;
-                    std::string sucContent, failedContent;
-                    CSimpleStringA strCmd = CSimpleStringA::Format("kill -9 %d", old_process_id[k]);
-                    bool ret = SP::Module::Util::ShellExecute(strCmd.GetData(), sucContent, failedContent);
-                    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("{%s}:{%s}{%s}", strCmd.GetData(), sucContent.c_str(), failedContent.c_str());
-                }
-            }
-
-            int cnt2(0);
-            if (cnt > 0) {
-                ///**TODO(Gifur@7/5/2022): 待优化处理 */
-                Sleep(2000);
-                int newCount = 3;
-                int notSame = 0;
-                vector<CSimpleStringA> tKillmsg;
-                alive_process_info newProcesses[3];
-                memset(newProcesses, 0, sizeof(newProcesses));
-                osutil_detect_unique_app(relate_processes, array_size(relate_processes), &newCount, newProcesses);
-                for (int i = 0; i < array_size(relate_processes); ++i) {
-                    int k = -1;
-                    for (int j = 0; j < count; ++j) {
-                        if (strcmp(newProcesses[j].name, relate_processes[i]) == 0 && newProcesses[j].pid > 0) {
-                            k = j;
-                            break;
-                        }
-                    }
-                    if (k != -1) {
-                        cnt2++;
-                        if (newProcesses[k].pid != old_process_id[k]) {
-                            notSame++;
-                        }
-                        else {
-                            tmpResult = Error_Unexpect;
-                            CSimpleStringA tmsg = CSimpleStringA::Format("{杀死当前搜狗进程[%s]失败,pid[%d]。}",
-                                newProcesses[k].name, newProcesses[k].pid);
-                            tKillmsg.push_back(tmsg);
-                        }
-                    }
-                }
-
-                if (cnt2 == 0) {
-                    tmpMsg = "已杀死搜狗进程。但重启搜狗进程失败,请确认守护进程正常运行。";
-                    tmpResult = Error_Unexpect;
-                }
-                else {
-                    if (tKillmsg.size() != 0) {
-                        for (int i = 0; i < tKillmsg.size(); ++i) {
-                            tmpMsg += tKillmsg[i];
-                        }
-                    }
-                    else {
-                        tmpMsg = "已成功重启搜狗输入法进程。";
-                    }
-                }
-            }
-            else {
-                tmpMsg = "当前系统无搜狗进程,请确认已安装搜狗输入法,并重启计算机以尝试启动搜狗输入法!";
-                tmpResult = Error_Unexpect;
-            }
-#endif //RVC_OS_WIN
-        }
-        else
-        {
-            tmpResult = Error_NotSupport;
-            tmpMsg = CSimpleStringA::Format("新搜狗版本,不支持重启功能");
-        }
-    }
-    else
-    {
-        tmpResult = Error_Param;
-        tmpMsg = CSimpleStringA::Format("接口调用参数错误。");
-    }
-
-    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM) ("用户桌面重启:%s. result:%d.", tmpMsg.GetData(), tmpResult);
-    LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHE_RESTART_THIRDPARTYPROGRAM,
-        CSimpleStringA::Format("用户桌面重启:%s. result:%d.", tmpMsg.GetData(), tmpResult));
-    ctx->Ans.result = tmpResult;
-    ctx->Ans.msg = tmpMsg;
-
-    ctx->Answer(result);
-    return;
-}
-
-void ResourceWatcherEntity::ProcessDetectThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx)
-{
-    ErrorCodeEnum result(Error_Succeed);
-    ErrorCodeEnum tmpResult(Error_Succeed);
-
-    CSimpleStringA tmpMsg(true);
-    std::string res("");
-
-    if (ctx->Req.type == 1) {//检测搜狗输入法进程
-        CAutoArray<CSimpleStringA> pName(2);
-#if defined(RVC_OS_WIN)
-        pName[0] = "SogouImeMon.exe";
-        pName[1] = "SogouImeWebSrv.exe";
-#else
-        pName[0] = "sogouImeWebSrv";
-        pName[1] = "sogouImeService";
-#endif //RVC_OS_WIN
-        res = DoCheckCertainProcessStatus(pName);
-        if (res.length() == 0) {
-            tmpResult = Error_Failed;
-            tmpMsg = "当前系统无搜狗进程";
-        }
-        else {
-            tmpMsg = CSimpleStringA::Format("%s", res.c_str());
-        }
-    }
-
-    ctx->Ans.result = tmpResult;
-    ctx->Ans.msg = tmpMsg;
-    ctx->Answer(result);
-    return;
-}
-
 ErrorCodeEnum ResourceWatcherEntity::ReportSogouInstallState()
 {
     CSmartPointer<IEntityFunction> spFunction = GetFunction();
@@ -1228,222 +872,6 @@ BOOL ResourceWatcherEntity::KillProcessFromName(const CSimpleStringA& strProcess
 
 #endif //RVC_OS_LINUX
 
-void ResourceWatcherEntity::DoCheckSogouProcessStatus()
-{
-#if defined(RVC_OS_WIN)
-    if (lastUpgradeInstallTime != 0 && lastUpgradeSwitchTime != 0 && lastUpgradeInstallTime < lastUpgradeSwitchTime) //完整记录了上一次升级的时间
-    {
-        if (sogouChangeTime.size() != 0) {
-            for (int i = 0; i < sogouChangeWarn.size(); i++) {
-                if (newestSogouInstall) //搜狗升级
-                {
-                    //正常不用告警
-                   /* LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, (sogouChangeWarn[i] + "搜狗升级切换1").GetData());
-                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z102")("搜狗升级切换1");*/
-                }
-                else //非搜狗升级导致的退出
-                {
-                    LogWarn(Severity_Middle, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, (sogouChangeWarn[i] + "异常切换1").GetData());
-                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z103").setResultCode("RTA5A08")("搜狗异常切换1");
-                }
-            }
-
-            sogouChangeTime.clear();
-            sogouChangeWarn.clear();
-
-            lastUpgradeInstallTime = 0;
-            lastUpgradeSwitchTime = 0;
-            newestSogouInstall = false;
-
-            return;
-        }
-    }
-
-    bool fCheck = false;
-    CAutoArray<CSimpleStringA> pName(2);
-    pName[0] = "SogouImeMon.exe";
-    pName[1] = "SogouImeWebSrv.exe";
-    int pSize = pName.GetCount();
-
-    static int old_process_id[2] = { -1, -1 };
-    static int firstCheck[2] = { -1, -1 };
-    CAutoArray<CSimpleStringA> msgs;
-    for (int i = 0; i < pSize; ++i) {
-        /*old_process_id.push_back(-1);*/
-        CSimpleStringA temp("");
-        msgs.Append(&temp, 0, 1);
-    }
-    int cnt(0);
-
-    PROCESSENTRY32 pe32;
-    pe32.dwSize = sizeof(pe32);
-    //获得系统进程快照的句柄  
-    HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-    if (hProcessSnap == INVALID_HANDLE_VALUE) {
-        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("CreateToolhelp32Snapshot error.");
-        return;
-    }
-    for (int i = 0; i < pSize; ++i) {
-        int position = -1;
-        BOOL bProcess = Process32First(hProcessSnap, &pe32);
-        while (bProcess) {
-            if (strcmp(pe32.szExeFile, pName[i].GetData()) == 0) {
-                position = 1;
-                break;
-            }
-            bProcess = Process32Next(hProcessSnap, &pe32);
-        }
-
-        if (position != -1 && old_process_id[i] == -1) {
-            if (firstCheck[i] == -1) {
-                DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sougou first check!");
-                msgs[cnt++] = CSimpleStringA::Format("{\"name\":\"%s\", \"pid\":%d}"
-                    , pName[i].GetData(), pe32.th32ProcessID);
-                firstCheck[i] = 1;
-                fCheck = true;
-                sogouProcessRun = 1;
-            }
-            old_process_id[i] = pe32.th32ProcessID;
-        }
-        else if (position != -1 && (pe32.th32ProcessID != old_process_id[i])) {
-            msgs[cnt++] = CSimpleStringA::Format("{\"name\":\"%s\", \"prev\":%d, \"pid\":%d}"
-                , pName[i].GetData(), old_process_id[i], pe32.th32ProcessID);
-            old_process_id[i] = pe32.th32ProcessID;
-
-        }
-        else if (position == -1 && old_process_id[i] > 0) {
-            msgs[cnt++] = CSimpleStringA::Format("{\"name\":\"%s\", \"prev\":%d, \"pid\":%d}"
-                , pName[i].GetData(), old_process_id[i], 0);
-            old_process_id[i] = 0;
-        }
-    }
-
-    std::string uploadInfo("");
-    if (cnt > 0) {
-        if (cnt > 1) {
-            uploadInfo = "{";
-        }
-        for (int i = 0; i < cnt; ++i) {
-            if (i != 0) {
-                uploadInfo += ",";
-            }
-            uploadInfo += msgs[i].GetData();
-        }
-        if (cnt > 1) {
-            uploadInfo += "}";
-        }
-
-        if (fCheck) //首次检测
-        {
-            LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_FIRSTCHECK, uploadInfo.c_str()); //第一次检测
-            lastUpgradeInstallTime = 0;
-            lastUpgradeSwitchTime = 0;
-            newestSogouInstall = false;
-            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z101")("搜狗首次检测");
-        }
-        else if (newestSogouInstall) {
-            //LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, (uploadInfo + "搜狗升级切换2").c_str()); //升级安装导致的进程切换视为正常退出
-            lastUpgradeInstallTime = 0;
-            lastUpgradeSwitchTime = 0;
-            newestSogouInstall = false;
-            //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z102")("搜狗升级切换2");
-        }
-        else if (time(0) <= lastSogouChangeEndTime) //lastSogouChangeEndTime为状态'I'结束后的60秒
-        {
-            //LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, (uploadInfo + "搜狗升级切换3").c_str()); //升级安装导致的进程切换视为正常退出
-            lastUpgradeInstallTime = 0;
-            lastUpgradeSwitchTime = 0;
-            newestSogouInstall = false;
-            //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z102")("搜狗升级切换3");
-        }
-        else {
-            if (lastUpgradeInstallTime == 0 && lastUpgradeSwitchTime == 0)//非升级时段
-            {
-                LogWarn(Severity_Middle, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, (uploadInfo + "异常切换3").c_str()); //其他情况下的进程切换视为异常退出
-                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040250A01Z103").setResultCode("RTA5A08")("搜狗异常切换3");
-            }
-            else //升级时段,'I'安装中,但是还没有'S'切换时,出现了搜狗进程切换
-            {
-                sogouChangeWarn.push_back(CSimpleStringA(uploadInfo.c_str()));
-                sogouChangeTime.push_back(time(0));
-            }
-        }
-    }
-    else {
-        SogouInstallInfo info;
-        GetSogouInstallInfo(info);
-
-        if (!info.program.IsTSFVersion()) //如果是旧版本搜狗,则检测是否启动
-        {
-            if (sogouProcessRun == 0)//进程未运行
-            {
-                LogWarn(Severity_Middle, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, "搜狗进程未启动!");
-                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode("QLR040250A01Z101").setResultCode("RTA5A01")("搜狗未启动!");
-                sogouProcessRun = -1; //进程未启动告警一次即可
-            }
-        }
-    }
-    CloseHandle(hProcessSnap);
-
-#else
-    static int old_process_id[2] = { -1, -1 };
-    char* relate_processes[2] = { "sogouImeWebSrv", "sogouImeService" };
-
-    int count = 3;
-    alive_process_info processes[3];
-    memset(processes, 0, sizeof(processes));
-
-    osutil_detect_unique_app(relate_processes, array_size(relate_processes), &count, processes);
-
-    CAutoArray<CSimpleStringA> msgs(array_size(relate_processes));
-    int cnt(0);
-
-    for (int i = 0; i < array_size(relate_processes); ++i) {
-        int k = -1;
-        for (int j = 0; j < count; ++j) {
-            if (strcmp(processes[j].name, relate_processes[i]) == 0) {
-                k = j;
-                break;
-            }
-        }
-
-        if (k != -1 && old_process_id[i] == -1) {
-            old_process_id[i] = processes[k].pid;
-
-        }
-        else if (k != -1 && (processes[k].pid != old_process_id[i])) {
-            msgs[cnt++] = CSimpleStringA::Format("{\"name\":\"%s\", \"prev\":%d, \"pid\":%d}"
-                , relate_processes[i], old_process_id[i], processes[k].pid);
-            old_process_id[i] = processes[k].pid;
-
-        }
-        else if (k == -1 && old_process_id[i] != 0) {
-            msgs[cnt++] = CSimpleStringA::Format("{\"name\":\"%s\", \"prev\":%d, \"pid\":%d}"
-                , relate_processes[i], old_process_id[i], 0);
-            old_process_id[i] = 0;
-        }
-    }
-
-    if (cnt > 0) {
-        std::string uploadInfo("");
-        if (cnt > 1) {
-            uploadInfo = "{";
-        }
-        for (int i = 0; i < cnt; ++i) {
-            if (i != 0) {
-                uploadInfo += ",";
-            }
-            uploadInfo += msgs[i].GetData();
-        }
-        if (cnt > 1) {
-            uploadInfo += "}";
-        }
-
-        LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_SOGOU_PROCESS_STATUS_CHANGE, uploadInfo.c_str());
-    }
-#endif //RVC_OS_WIN
-}
-
 #if defined(RVC_OS_LINUX)
 ErrorCodeEnum ResourceWatcherEntity::GetSogouPkgDirPath(CSimpleStringA& strPkgPath)
 {
@@ -1905,115 +1333,6 @@ ErrorCodeEnum ResourceWatcherEntity::DeleteUnzipDir()
     return Error_Succeed;
 }
 
-void ResourceWatcherEntity::GetThirdPartyInstallState(SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req, ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx)
-{
-    ErrorCodeEnum result(Error_Succeed);
-    if (ctx->Req.mode == 1) {//查看搜狗输入法安装状态
-        SogouInstallInfo info;
-        GetSogouInstallInfo(info);
-        ctx->Ans.status = info.IsInstalledSuccess() ? 1 : 0;
-        ctx->Ans.path = info.program.strInstallDir;
-        ctx->Ans.version = info.program.strVersion;
-        ctx->Ans.reserverd1 = info.state.GetInstallTime().ToTimeString();
-        ctx->Ans.reserverd2 = "";
-        ctx->Ans.reserverd3 = info.program.IsTSFVersion() ? 1 : 0;
-        ctx->Ans.reserverd4 = 0;
-    }
-    else if (ctx->Req.mode == 2) { //检测字体的安装状态
-#if defined(_MSC_VER)
-        result = Error_NotImpl;
-#else
-        CSimpleStringA strFontDir("/usr/share/fonts/truetype");
-        CSimpleStringA strRVCTTFsDir(strFontDir + SPLIT_SLASH_STR + "RVCTTFs");
-        if (!ExistsDirA(strRVCTTFsDir)) {
-            ctx->Ans.status = 0;
-            ctx->Ans.reserverd1 = CSimpleStringA::Format("%s 文件夹不存在", (LPCTSTR)strRVCTTFsDir);
-        }
-        else {
-            CSimpleStringA ttf1 = strRVCTTFsDir + SPLIT_SLASH_STR + "HYQiHei-55S.ttf";
-            CSimpleStringA ttf2 = strRVCTTFsDir + SPLIT_SLASH_STR + "HYQiHei-65S.ttf";
-            CSimpleStringA ttfdir = strRVCTTFsDir + SPLIT_SLASH_STR + "fonts.dir";
-            CSimpleStringA ttfscale = strRVCTTFsDir + SPLIT_SLASH_STR + "fonts.scale";
-            CSimpleStringA ttfuuid = strRVCTTFsDir + SPLIT_SLASH_STR + ".uuid";
-
-            int existCheck = 0;
-            if (!ExistsFileA(ttf1)) {
-                existCheck |= 1;
-            }
-            if (!ExistsFileA(ttf2)) {
-                existCheck |= 2;
-            }
-            if (!ExistsFileA(ttfdir)) {
-                existCheck |= 4;
-            }
-            if (!ExistsFileA(ttfscale)) {
-                existCheck |= 8;
-            }
-            if (!ExistsFileA(ttfuuid)) {
-                existCheck |= 16;
-            }
-            if (existCheck != 0) {
-                ctx->Ans.status = 0;
-                ctx->Ans.reserverd1 = CSimpleStringA::Format("安装文件不存在:0x%X", existCheck);
-            }
-            else {
-                ctx->Ans.status = 1;
-                ctx->Ans.reserverd1 = "";
-                ctx->Ans.path = strRVCTTFsDir;
-                ctx->Ans.version = "";
-            }
-        }
-#endif //_MSC_VER
-    }
-    else if (ctx->Req.mode == 3) { //自定义安装
-#if defined(RVC_OS_WIN)
-        result = Error_NotSupport;
-#else
-        if (ctx->Req.reserverd3.IsNullOrEmpty()) {
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("the req rerverd3 is empty.");
-            result = Error_Param;
-        }
-        else {
-            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to check %s 's install status...", ctx->Req.reserverd3.GetData());
-            CSimpleStringA strSoftwareName(ctx->Req.reserverd3);
-            CSimpleStringA strSoftwareVersion(ctx->Req.reserverd4);
-            CSimpleStringA runItem = CSimpleStringA::Format("dpkg -l | grep %s | awk '{print $3}'", strSoftwareName.GetData());
-            std::string additional("");
-            std::string succStr, errStr;
-            std::string runStr(runItem.GetData());
-            if (SP::Module::Util::ShellExecute(runStr, succStr, errStr)) {
-                if (succStr.empty()) {
-                    DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("%s is not installed", strSoftwareName.GetData());
-                    ctx->Ans.status = 0;
-                }
-                else {
-                    succStr = SP::Utility::ToTrim(succStr);
-                    if (strSoftwareVersion.IsNullOrEmpty() || strSoftwareVersion.Compare(succStr.c_str()) == 0) {
-                        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s is installed, version: %s", strSoftwareName.GetData(), succStr.c_str());
-                        ctx->Ans.status = 1;
-                    }
-                    else {
-                        ctx->Ans.status = 2;
-                        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s is installed, but the version<%s> is not the dream one<%s>"
-                            , strSoftwareName.GetData(), succStr.c_str(), strSoftwareVersion.GetData());
-                        ctx->Ans.reserverd1 = succStr.c_str();
-                    }
-                }
-            }
-            else {
-                DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Execute <%s> failed.", runItem.GetData());
-                result = Error_Process;
-            }
-        }
-#endif //RVC_OS_WIN
-    }
-    else {
-        result = Error_NotSupport;
-    }
-    ctx->Answer(result);
-    return;
-}
-
 CSimpleStringA ResourceWatcherEntity::GetFilePathWithDir(CSimpleStringA dir, CSimpleStringA fileName)
 {
     CSimpleStringA tmpPath(""), filePath("");
@@ -2584,27 +1903,6 @@ void ResourceWatcherEntity::FilesClean(SpReqAnsContext<ResourceWatcherService_Fi
     ctx->Answer(result);
 }
 
-void ResourceWatcherEntity::OnUpgradeStateEvent(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, UpgradeManager::UpgradeStateEvent& evt)
-{
-    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("OnUpgradeStateEvent, cInstallState:%c, strNewVersion:%s.", evt.cInstallState, evt.strNewVersion.GetData());
-    CSimpleStringA packName = evt.strPackName;
-
-    if (evt.cInstallState == 'I') {
-        lastUpgradeInstallTime = time(0);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("lastUpgradeInstallTime = %lld.", lastUpgradeInstallTime);
-    }
-
-    if (evt.cInstallState == 'S' || evt.cInstallState == 'C') {
-        lastUpgradeSwitchTime = time(0);
-        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("lastUpgradeSwitchTime = %lld.", lastUpgradeSwitchTime);
-        if (evt.strNewVersion.GetLength() == 0) {
-            newestSogouInstall = true;
-            lastSogouChangeEndTime = lastUpgradeSwitchTime + 60;
-        }
-        DoCheckSogouProcessStatus();
-    }
-}
-
 void ResourceWatcherEntity::FetchSystemSnapshot(
     SpReqAnsContext<ResourceWatcherService_FetchSystemSnapshot_Req, ResourceWatcherService_FetchSystemSnapshot_Ans>::Pointer ctx)
 {

+ 35 - 133
Module/mod_ResourceWatcher/mod_ResourceWatcher.h

@@ -8,12 +8,6 @@
 
 class ResourceWatcherEntity;
 
-#define ENT_TIMERID_CHECK_SOGOU_INPUT_INSTALLED_STATE 1
-#define ENT_TIMERINTERVAL_CHECK_SOGOU_INPUT_INSTALLED_STATE 60 * 1000
-
-#define ENT_TIMERID_CHECK_SOGOU_INPUT_PROCESS_STATUS_CHANGE 3
-#define ENT_TIMERINTERVAL_CHECK_SOGOU_INPUT_PROCESS_STATUS_CHANGE 30 * 1000
-
 #define ENT_TIMERID_PROCESS_CHECK 66
 #define ENT_TIMERINTERVAL_PROCESS_CHECK 60 * 60 * 1000  //进程检测间隔默认一小时
 
@@ -42,16 +36,8 @@ public:
 
 	virtual void Handle_GetBizLinks(SpReqAnsContext<ResourceWatcherService_GetBizLinks_Req, ResourceWatcherService_GetBizLinks_Ans>::Pointer ctx);
 
-	virtual void Handle_GetThirdPartyInstallState(SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req, ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx);
-
 	virtual void Handle_InstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req, ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx);
 
-	virtual void Handle_UninstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req, ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx);
-
-	virtual void Handle_RestartThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req, ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx);
-
-	virtual void Handle_ProcessDetectThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req, ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx);
-
 	virtual void Handle_FilesClean(SpReqAnsContext<ResourceWatcherService_FilesClean_Req, ResourceWatcherService_FilesClean_Ans>::Pointer ctx);
 
 	virtual void Handle_FetchSystemSnapshot(SpReqAnsContext<ResourceWatcherService_FetchSystemSnapshot_Req, ResourceWatcherService_FetchSystemSnapshot_Ans>::Pointer ctx);
@@ -62,7 +48,7 @@ private:
 	ResourceWatcherEntity* m_pEntity;
 };
 
-class ResourceWatcherEntity : public CEntityBase, public IBroadcastListener, public ITimerListener, public ISysVarListener
+class ResourceWatcherEntity : public CEntityBase, public ITimerListener, public ISysVarListener
 {
 public:
 	ResourceWatcherEntity(){}
@@ -82,26 +68,7 @@ public:
 
 		ErrorCodeEnum errorCode = Error_Succeed;
 
-		errorCode = m_fsm.Init(this);
-
-		if (errorCode == Error_Succeed) {
-
-            CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
-			newestSogouInstall = false;
-			lastUpgradeInstallTime = 0; //上次升级安装时间
-			lastUpgradeSwitchTime = 0;  //上次升级切换时间
-			lastSogouChangeEndTime = 0;    //上一次切换结束判定的时间
-			sogouProcessRun = 0;      //搜狗进程是否启动
-
-			errorCode = spEntityFunction->SubscribeBroadcast("UpgradeManager", NULL, this, m_uuidUpgradeStateEventListener);
-			if (errorCode != Error_Succeed)
-			{
-				LOG_TRACE("Subscribe UpgradeManager evt failed 0x%x", errorCode);
-				pTransactionContext->SendAnswer(errorCode);
-				return;
-			}
-		}
-		
+		errorCode = m_fsm.Init(this);		
 		pTransactionContext->SendAnswer(errorCode);
 	}
 
@@ -109,9 +76,9 @@ public:
 	{
 		m_fsm.AfterInit();
 
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to check Sogou input install state...");
 		CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
-		spEntityFunction->SetTimer(ENT_TIMERID_CHECK_SOGOU_INPUT_INSTALLED_STATE,
-			this, ENT_TIMERINTERVAL_CHECK_SOGOU_INPUT_INSTALLED_STATE);
+		ReportSogouInstallState(); //实体启动时检测搜狗输入法安装状态
 
 		CSimpleStringA uiState;
 		spEntityFunction->GetSysVar("UIState", uiState);
@@ -120,6 +87,25 @@ public:
 		}
 		spEntityFunction->RegistSysVarEvent("UIState", this);
 
+		CSimpleStringA terminalStage;
+		spEntityFunction->GetSysVar("TerminalStage", terminalStage);
+		if (
+			0 == CSimpleStringA("C").Compare(terminalStage, true)
+			|| 0 == CSimpleStringA("S").Compare(terminalStage, true)
+			|| 0 == CSimpleStringA("M").Compare(terminalStage, true)
+			|| 0 == CSimpleStringA("A").Compare(terminalStage, true)
+			)
+		{
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Terminal has been lastStage(%s) before ResourceWatcher start.", terminalStage);
+			m_fsm.TriggerProccessUpload();
+		}
+		else
+		{
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Terminal is starting, regist the teminalStage Event.");
+			spEntityFunction->RegistSysVarEvent("terminalStage", this);
+		}
+		
+
 		CSmartPointer<IConfigInfo> spCtSettingConfig;
 		GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
 
@@ -233,21 +219,9 @@ public:
 		ctx->Answer(Error_NotSupport);
 	}
 
-	void GetThirdPartyInstallState(SpReqAnsContext<ResourceWatcherService_GetThirdPartyInstallState_Req,
-		ResourceWatcherService_GetThirdPartyInstallState_Ans>::Pointer ctx);
-
 	void InstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req,
 		ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx);
 
-	void UninstallThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req,
-		ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx);
-
-	void RestartThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_RestartThirdPartyProgram_Req,
-		ResourceWatcherService_RestartThirdPartyProgram_Ans>::Pointer ctx);
-
-	void ProcessDetectThirdPartyProgram(SpReqAnsContext<ResourceWatcherService_ProcessDetectThirdPartyProgram_Req,
-		ResourceWatcherService_ProcessDetectThirdPartyProgram_Ans>::Pointer ctx);
-
 	void FilesClean(SpReqAnsContext<ResourceWatcherService_FilesClean_Req,
 		ResourceWatcherService_FilesClean_Ans>::Pointer ctx);
 
@@ -256,89 +230,40 @@ public:
 	void InstallSogou(SpReqAnsContext<ResourceWatcherService_InstallThirdPartyProgram_Req,
 		ResourceWatcherService_InstallThirdPartyProgram_Ans>::Pointer ctx);
 
-	void UninstallSogou(SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req,
-		ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx);
-
 	void CheckIsFileExists(SpReqAnsContext<ResourceWatcherService_CheckIsFileExists_Req, 
 		ResourceWatcherService_CheckIsFileExists_Ans>::Pointer ctx);
-
 	int CheckMediaResource(int iFileType, const char* pFileName);
-
-#if defined(_MSC_VER)
-	SP_BEGIN_MSG_DISPATCH_MAP(ResourceWatcherEntity)
-		SP_BEGIN_ENTITY_MSG("UpgradeManager")
-		SP_MSG_HANDLE_NS(UpgradeManager, UpgradeStateEvent, OnUpgradeStateEvent)
-		SP_END_ENTITY_MSG()
-		SP_END_MSG_DISPATCH_MAP()
-#else
-	virtual void OnBroadcastEvent(CUUID SubID, const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, CAutoBuffer Buffer) \
-	{
-		if (!pszEntityName) {
-			LOG_TRACE("pszEntityName cannot empty!");
-		}
-		else if (_stricmp("UpgradeManager", pszEntityName) == 0) {
-			switch (dwMessageId) {
-			case eMsg_UpgradeStateEvent:
-				if (eMsgSig_UpgradeStateEvent == dwMessageSignature) {
-					UpgradeManager::UpgradeStateEvent t;
-					ErrorCodeEnum Error = SpBuffer2Object(Buffer, t);
-					if (Error == Error_Succeed)
-						OnUpgradeStateEvent(pszEntityName, dwMessageId, dwMessageSignature, t);
-				}
-				else {
-					LOG_TRACE("%s signature mismatched!", "UpgradeStateEvent");
-				}
-				break;
-			default:
-				LOG_TRACE("msg id %d ignored!", dwMessageId);
-				break;
-			}
-		}
-		else {
-			LOG_TRACE("ignore pszEntityName");
-		}
-	}
-#endif //_MSC_VER
 	void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName)
 	{
 		if ((_strnicmp(pszKey, "UIState", strlen("UIState")) == 0)) {
 			m_fsm.TriggerAtStatusChanged(_strnicmp(pszValue, "M", strlen("M")) == 0);
 		}
+		else if ((_strnicmp(pszKey, "TerminalStage", strlen("TerminalStage")) == 0)) {
+			if (0 == CSimpleStringA("C").Compare(pszValue, true)
+				|| 0 == CSimpleStringA("S").Compare(pszValue, true)
+				|| 0 == CSimpleStringA("M").Compare(pszValue, true)
+				|| 0 == CSimpleStringA("A").Compare(pszValue, true)
+				)
+			{
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Status changed, teminalStage = %s.", pszValue);
+				m_fsm.TriggerProccessUpload();
+			}
+		}
 	}
 private:
 
-	void OnUpgradeStateEvent(const char* pszEntityName, DWORD dwMessageId, DWORD dwMessageSignature, UpgradeManager::UpgradeStateEvent& evt);
-
 	//report sogou input software install state and installed information
 	ErrorCodeEnum ReportSogouInstallState();
 
 	void OnTimeout(DWORD dwTimerID)
 	{
-		if (dwTimerID == ENT_TIMERID_CHECK_SOGOU_INPUT_INSTALLED_STATE) {
-
-			CSimpleStringA strState;
-			auto err = GetFunction()->GetSysVar("UIState", strState);
-
-			if (err == Error_Succeed && strState == "M") {
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to check Sogou input install state...");
-				if (Error_Succeed == ReportSogouInstallState()) {//如果安装了搜狗输入法,就去除检测搜狗输入法安装的定时器,并设置进程检测的定时器。
-					GetFunction()->KillTimer(ENT_TIMERID_CHECK_SOGOU_INPUT_INSTALLED_STATE);
-					GetFunction()->SetTimer(ENT_TIMERID_CHECK_SOGOU_INPUT_PROCESS_STATUS_CHANGE,
-						this, ENT_TIMERINTERVAL_CHECK_SOGOU_INPUT_PROCESS_STATUS_CHANGE);
-				}
-			}
-		}
-		else if (dwTimerID == ENT_TIMERID_CHECK_SOGOU_INPUT_PROCESS_STATUS_CHANGE) {
-			DoCheckSogouProcessStatus();
-		}
-		else if (dwTimerID == ENT_TIMERID_PROCESS_CHECK) {
+		if (dwTimerID == ENT_TIMERID_PROCESS_CHECK) {
 			CheckProcessStatus();
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Unkonwn timer id: %u", dwTimerID);
 		}
 	}
-	void DoCheckSogouProcessStatus();
 	std::string DoCheckCertainProcessStatus(const CAutoArray<CSimpleStringA>& pName);
 	void SecProcCheck(); //检测终端安全软件应用
 
@@ -364,16 +289,6 @@ private:
 
 private:
 	ResourceWatcherFSM m_fsm;
-	CUUID m_uuidUpgradeStateEventListener;
-	BOOL newestSogouInstall; //最近一次安装的标志
-
-	time_t lastUpgradeInstallTime; //上次升级安装时间
-	time_t lastUpgradeSwitchTime;  //上次升级切换时间
-	time_t lastSogouChangeEndTime;    //上一次进程切换时间
-	int sogouProcessRun;
-
-	vector<CSimpleStringA> sogouChangeWarn;
-	vector<time_t> sogouChangeTime;
 };
 
 struct InstallSogouTask : public ITaskSp
@@ -387,17 +302,4 @@ struct InstallSogouTask : public ITaskSp
 	{
 		m_pEntity->InstallSogou(ctx);
 	}
-};
-
-struct UninstallSogouTask : public ITaskSp
-{
-	SpReqAnsContext<ResourceWatcherService_UninstallThirdPartyProgram_Req,
-		ResourceWatcherService_UninstallThirdPartyProgram_Ans>::Pointer ctx;
-
-	ResourceWatcherEntity* m_pEntity;
-	UninstallSogouTask(ResourceWatcherEntity* entity) :m_pEntity(entity) {}
-	void Process()
-	{
-		m_pEntity->UninstallSogou(ctx);
-	}
 };

+ 6 - 6
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -418,12 +418,12 @@ struct GetTokenTask : ITaskSp
 				CSimpleStringA tmsg = CSimpleStringA::Format("{\"errcode\": \"%s\", \"message\": %s}",
 					responseStatus.errorCode.c_str(), getTokenAns.warnMessage.c_str());
 				m_entity->SetAuthErrMsg(tmsg.GetData());
-				m_fsm->GetEntityBase()->GetFunction()->SetSysVar("AuthErrMsg", tmsg.GetData(), true);
+				m_fsm->GetEntityBase()->GetFunction()->SetSysVar("AuthErrMsg", tmsg.GetData());
 			}
 			else
 			{
 				m_entity->SetAuthErrMsg("");
-				m_fsm->GetEntityBase()->GetFunction()->SetSysVar("AuthErrMsg", "", true);
+				m_fsm->GetEntityBase()->GetFunction()->SetSysVar("AuthErrMsg", "");
 			}
 
 			DWORD rc = m_fsm->HandleGetToken((BYTE*)getTokenAns.sharedKey.enToken.c_str(), (BYTE*)getTokenAns.sharedKey.sharedSK.c_str(),
@@ -527,7 +527,7 @@ void CAccessAuthFSM::doWarnMsg(int errReason, std::string errMsg, bool bNeedEven
 	{
 		auto pEntity = (CAccessAuthEntity*)m_pEntity;
 		pEntity->SetAuthErrMsg(fullErrMsg.c_str());
-		const ErrorCodeEnum ec = m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", fullErrMsg.c_str(), true);
+		const ErrorCodeEnum ec = m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", fullErrMsg.c_str());
 		if (ec != Error_Succeed) {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Update SysVar failed: 0x%X", ec);
 		}
@@ -535,7 +535,7 @@ void CAccessAuthFSM::doWarnMsg(int errReason, std::string errMsg, bool bNeedEven
 		if (errReason == ERR_ACCESSAUTH_SERVICE_FAILED)
 		{
 			pEntity->SetAuthErrMsg(errMsg.c_str());
-			m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", errMsg.c_str(), true);
+			m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", errMsg.c_str());
 			LogEvent(Severity_Middle, ERR_ACCESSAUTH_SERVICE_FAILED, errMsg.c_str());
 		}
 		else
@@ -802,7 +802,7 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
 	{
 		rc = Error_Bug;
 		pEntity->SetAuthErrMsg("返回令牌校验不通过");
-		pEntity->GetFunction()->SetSysVar("AuthErrMsg", "返回令牌校验不通过", true);
+		pEntity->GetFunction()->SetSysVar("AuthErrMsg", "返回令牌校验不通过");
 		char* sm3Ret = Str2Hex((char*)sm3, 32);
 		delete sm3Ret;
 		doWarnMsg(ERR_ACCESSAUTH_TOKEN_HASH, "返回令牌校验不通过", true);
@@ -821,7 +821,7 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
 		if (rc != Error_Succeed) 
 		{
 			pEntity->SetAuthErrMsg("保存令牌失败");
-			pEntity->GetFunction()->SetSysVar("AuthErrMsg", "保存令牌失败", true);
+			pEntity->GetFunction()->SetSysVar("AuthErrMsg", "保存令牌失败");
 			doWarnMsg(ERR_ACCESSAUTH_SAVE_TOKEN, "保存令牌失败", true);
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5208")(GetOutPutStr("%s%08X", "SaveTokenAndSharedSK", rc).c_str());
 		}

+ 1 - 1
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -448,7 +448,7 @@ int CAccessAuthEntity::GetPinPadCapability()
 
 void CAccessAuthEntity::printPasswdError(const string& strErrMsg){
 	SetAuthErrMsg(strErrMsg.c_str());
-	GetFunction()->SetSysVar("AuthErrMsg", strErrMsg.c_str(), true);
+	GetFunction()->SetSysVar("AuthErrMsg", strErrMsg.c_str());
 	m_FSM.doWarnMsg( ERROR_ACCESSAUTH_OPENCRYPTCONTEXT, strErrMsg.c_str(),true, strErrMsg);
 	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA520C")(strErrMsg.c_str());
 }