#pragma once #include "SpBase.h" #include "SpFSM.h" #include "SpSecureClient.h" #include "SystemCustomizationErrcode.h" #define USER_EVT_JMP_CHECKSYSTEM EVT_USER+1 #define USER_EVT_JMP_CHECKUDISK EVT_USER+2 #define USER_EVT_JMP_RELEASE EVT_USER+3 #define ROOT_CERT_PATH ".\\cfg\\certs\\RootCert.pem" #define CA_CERT_PATH ".\\cfg\\certs\\CaCert.pem" #define USER_CERT_PATH ".\\cfg\\certs\\userCert.pem" #define CERT_DIR ".\\cfg\\certs" //用户类型 #define USER_TYPE_MAINTAIN 00 //维护用户 #define USER_TYPE_MATERIAL_MANAGER 01 //物料管理用户 #define USER_TYPE_CUSTOMER_MANAGER 02 //客户经理 #define USER_TYPE_AGENT3 03 //Agent3用户 #define USER_TYPE_FINANCING_MANAGER 04 //理财经理 //机型 #define MACHINETYPE_STAND2S "RVC.Stand2S" //站立式双屏 #define MACHINETYPE_STAND1S "RVC.Stand1S" //站立式单屏 #define MACHINETYPE_WALL "RVC.Wall" //挂墙式 #define MACHINETYPE_EMBED2S "RVC.Embed2S" //嵌墙式双屏 #define MACHINETYPE_EMBED1S "RVC.Embed1S" //嵌墙式单屏 #define MACHINETYPE_PAD "RVC.PAD" //携带式移动终端 //场所 #define SIT_LIB "cmb.LIB" //银行大堂内 #define SIT_SSB "cmb.SSB" //自助营业网点 #define SIT_FLB "cmb.FLB" //离行机器,银行业务为主界面,如企业,商场 #define SIT_LSS "cmb.LSS" //面向生活销售机,一般部署在小区,面向销售广告 #define SIT_SMM "cmb.SMM" //商场销售门户,放置在商场,多商户门户 class CustomizeFSM : public FSMImpl, public IFSMStateHooker { public: enum {s0,s1,s2,s3}; BEGIN_FSM_STATE(CustomizeFSM) FSM_STATE_ENTRY(s0,"Starting",s0_on_entry,s0_on_exit,s0_on_event) FSM_STATE_ENTRY(s1, "check system customization", s1_on_entry, s1_on_exit, s1_on_event) FSM_STATE_ENTRY(s2, "Release", s2_on_entry, s2_on_exit, s2_on_event) END_FSM_STATE() BEGIN_FSM_RULE(CustomizeFSM,s0) FSM_RULE_ENTRY_ANY(s0, s1, USER_EVT_JMP_CHECKSYSTEM) FSM_RULE_ENTRY_ANY(s1, s0, EVT_TIMER) FSM_RULE_ENTRY_ANY(s1, s2, USER_EVT_JMP_RELEASE) FSM_RULE_ENTRY_ANY(s2, s0, EVT_TIMER) END_FSM_RULE() CustomizeFSM(); ~CustomizeFSM(); virtual void OnStateTrans(int iSrcState, int iDstState); virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName); virtual ErrorCodeEnum OnInit(); virtual ErrorCodeEnum OnExit(); void s0_on_entry(); void s0_on_exit(); unsigned int s0_on_event(FSMEvent* event); void s1_on_entry(); void s1_on_exit(); unsigned int s1_on_event(FSMEvent* event); void s2_on_entry(); void s2_on_exit(); unsigned int s2_on_event(FSMEvent* event); bool StartInterceptDllSevice(); bool LoadInterceptDllDriver(char* lpszDriverName,char* lpszDriverPath); bool UnloadInterceptDllDriver(char* szSvrName); BOOL NTPathToDosPath(char* pszNtPath, char* pszDosPath); bool MD5File(CSimpleStringA strToSignFilePath, CSimpleStringA strMD5FilePath); bool MD5Folder(CSimpleStringA strFolderPath, CSimpleStringA strMD5FilePath); int ThreadFuncVerifySign(void* param); bool GenMD5List(); BOOL IsWow64(); CSmartPointer GetFunction(); ErrorCodeEnum GetReportErrMsgFlg(); ErrorCodeEnum GetVerifyCodeSignFlg(); ErrorCodeEnum NewVerifyCodeSign(CSimpleStringA strDllPath, CSimpleStringA strProcessPath); int m_nReportErrMsg;//是否弹出代码签名错误信息,0:不弹出;1:弹出。默认不弹出 int m_nVerifyCodeSign;//是否校验签名,0:不校验;1:校验。默认不校验 private: CSimpleStringA m_StringVerifyKey,m_StringConsoleName; CSimpleStringA m_strMachineType, m_strSite; ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData); ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData); string m_strTerminalId; //终端号 int m_nCheckMD5; //是否检查Dll的MD5值,0:检测;1:不检测。默认校验 private: };