CustomizeFSM.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #pragma once
  2. #include "SpBase.h"
  3. #include "SpFSM.h"
  4. #include "SpSecureClient.h"
  5. #include "SystemCustomizationErrcode.h"
  6. #define USER_EVT_JMP_CHECKSYSTEM EVT_USER+1
  7. #define USER_EVT_JMP_CHECKUDISK EVT_USER+2
  8. #define USER_EVT_JMP_RELEASE EVT_USER+3
  9. #define ROOT_CERT_PATH ".\\cfg\\certs\\RootCert.pem"
  10. #define CA_CERT_PATH ".\\cfg\\certs\\CaCert.pem"
  11. #define USER_CERT_PATH ".\\cfg\\certs\\userCert.pem"
  12. #define CERT_DIR ".\\cfg\\certs"
  13. //用户类型
  14. #define USER_TYPE_MAINTAIN 00 //维护用户
  15. #define USER_TYPE_MATERIAL_MANAGER 01 //物料管理用户
  16. #define USER_TYPE_CUSTOMER_MANAGER 02 //客户经理
  17. #define USER_TYPE_AGENT3 03 //Agent3用户
  18. #define USER_TYPE_FINANCING_MANAGER 04 //理财经理
  19. //机型
  20. #define MACHINETYPE_STAND2S "RVC.Stand2S" //站立式双屏
  21. #define MACHINETYPE_STAND1S "RVC.Stand1S" //站立式单屏
  22. #define MACHINETYPE_WALL "RVC.Wall" //挂墙式
  23. #define MACHINETYPE_EMBED2S "RVC.Embed2S" //嵌墙式双屏
  24. #define MACHINETYPE_EMBED1S "RVC.Embed1S" //嵌墙式单屏
  25. #define MACHINETYPE_PAD "RVC.PAD" //携带式移动终端
  26. //场所
  27. #define SIT_LIB "cmb.LIB" //银行大堂内
  28. #define SIT_SSB "cmb.SSB" //自助营业网点
  29. #define SIT_FLB "cmb.FLB" //离行机器,银行业务为主界面,如企业,商场
  30. #define SIT_LSS "cmb.LSS" //面向生活销售机,一般部署在小区,面向销售广告
  31. #define SIT_SMM "cmb.SMM" //商场销售门户,放置在商场,多商户门户
  32. class CustomizeFSM : public FSMImpl<CustomizeFSM>, public IFSMStateHooker
  33. {
  34. public:
  35. enum {s0,s1,s2,s3};
  36. BEGIN_FSM_STATE(CustomizeFSM)
  37. FSM_STATE_ENTRY(s0,"Starting",s0_on_entry,s0_on_exit,s0_on_event)
  38. FSM_STATE_ENTRY(s1, "check system customization", s1_on_entry, s1_on_exit, s1_on_event)
  39. FSM_STATE_ENTRY(s2, "Release", s2_on_entry, s2_on_exit, s2_on_event)
  40. END_FSM_STATE()
  41. BEGIN_FSM_RULE(CustomizeFSM,s0)
  42. FSM_RULE_ENTRY_ANY(s0, s1, USER_EVT_JMP_CHECKSYSTEM)
  43. FSM_RULE_ENTRY_ANY(s1, s0, EVT_TIMER)
  44. FSM_RULE_ENTRY_ANY(s1, s2, USER_EVT_JMP_RELEASE)
  45. FSM_RULE_ENTRY_ANY(s2, s0, EVT_TIMER)
  46. END_FSM_RULE()
  47. CustomizeFSM();
  48. ~CustomizeFSM();
  49. virtual void OnStateTrans(int iSrcState, int iDstState);
  50. virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName);
  51. virtual ErrorCodeEnum OnInit();
  52. virtual ErrorCodeEnum OnExit();
  53. void s0_on_entry();
  54. void s0_on_exit();
  55. unsigned int s0_on_event(FSMEvent* event);
  56. void s1_on_entry();
  57. void s1_on_exit();
  58. unsigned int s1_on_event(FSMEvent* event);
  59. void s2_on_entry();
  60. void s2_on_exit();
  61. unsigned int s2_on_event(FSMEvent* event);
  62. bool StartInterceptDllSevice();
  63. bool LoadInterceptDllDriver(char* lpszDriverName,char* lpszDriverPath);
  64. bool UnloadInterceptDllDriver(char* szSvrName);
  65. BOOL NTPathToDosPath(char* pszNtPath, char* pszDosPath);
  66. bool MD5File(CSimpleStringA strToSignFilePath, CSimpleStringA strMD5FilePath);
  67. bool MD5Folder(CSimpleStringA strFolderPath, CSimpleStringA strMD5FilePath);
  68. int ThreadFuncVerifySign(void* param);
  69. bool GenMD5List();
  70. BOOL IsWow64();
  71. CSmartPointer<IEntityFunction> GetFunction();
  72. ErrorCodeEnum GetReportErrMsgFlg();
  73. ErrorCodeEnum GetVerifyCodeSignFlg();
  74. ErrorCodeEnum NewVerifyCodeSign(CSimpleStringA strDllPath, CSimpleStringA strProcessPath);
  75. int m_nReportErrMsg;//是否弹出代码签名错误信息,0:不弹出;1:弹出。默认不弹出
  76. int m_nVerifyCodeSign;//是否校验签名,0:不校验;1:校验。默认不校验
  77. private:
  78. CSimpleStringA m_StringVerifyKey,m_StringConsoleName;
  79. CSimpleStringA m_strMachineType, m_strSite;
  80. ErrorCodeEnum AsyncStartEntity(const char *entity_name, const char *cmdline, void *pData);
  81. ErrorCodeEnum AsyncStopEntity(const char *entity_name, void *pData);
  82. string m_strTerminalId; //终端号
  83. int m_nCheckMD5; //是否检查Dll的MD5值,0:检测;1:不检测。默认校验
  84. private:
  85. };