|
|
@@ -463,7 +463,7 @@ class MyMutex;
|
|
|
class CAccessAuthFSM : public FSMImpl<CAccessAuthFSM>, public IFSMStateHooker
|
|
|
{
|
|
|
public:
|
|
|
- struct ReportStateEvent : public FSMEvent
|
|
|
+ /*struct ReportStateEvent : public FSMEvent
|
|
|
{
|
|
|
ReportStateEvent(char cNewStage, DWORD dwNewStageTime, char cOldStage, DWORD dwOldStageTime):
|
|
|
FSMEvent(Event_ReportStage), cNewStage(cNewStage), dwNewStageTime(dwNewStageTime),
|
|
|
@@ -474,7 +474,7 @@ public:
|
|
|
char cOldStage;
|
|
|
DWORD dwNewStageTime;
|
|
|
DWORD dwOldStageTime;
|
|
|
- };
|
|
|
+ };*/
|
|
|
|
|
|
CAccessAuthFSM();
|
|
|
virtual ~CAccessAuthFSM();
|
|
|
@@ -483,63 +483,119 @@ public:
|
|
|
virtual ErrorCodeEnum OnInit();
|
|
|
virtual ErrorCodeEnum OnExit();
|
|
|
|
|
|
- enum{s1, s2, s3, s4, s5, s6, s7};
|
|
|
+ //enum{s1, s2, s3, s4, s5, s6, s7};
|
|
|
+
|
|
|
+ //enum
|
|
|
+ //{
|
|
|
+ // Event_StartRegist = EVT_USER+1,
|
|
|
+ // Event_StartReregist,
|
|
|
+ // Event_ConnectionOK,
|
|
|
+ // Event_EndSyncTime,
|
|
|
+ // Event_UpdateWKSucc,
|
|
|
+ // Event_IgnoreUpdateWK,
|
|
|
+ // Event_UpdateWKFail,
|
|
|
+ // Event_ReqTokenSucc,
|
|
|
+ // Event_ReqTokenFail,
|
|
|
+ // Event_ReqTokenCancel,
|
|
|
+ // Event_StartUnregist,
|
|
|
+ // Event_LostTrust,
|
|
|
+ // Event_StateTimeout, // 临时状态超时
|
|
|
+ // Event_ReportStage,
|
|
|
+ // Event_CheckMD5Succ,
|
|
|
+ // Event_CheckMD5Fail,
|
|
|
+ // Event_InitFinishOK,
|
|
|
+ // Event_GetHsotFailed,
|
|
|
+ // Event_NetworkIllegal,
|
|
|
+ // Event_SyncTimeFailed //同步时间失败
|
|
|
+ //};
|
|
|
+
|
|
|
+ //BEGIN_FSM_STATE(CAccessAuthFSM)
|
|
|
+ // FSM_STATE_ENTRY(s1, "Isolate",s1_on_entry,s1_on_exit,s1_on_event)
|
|
|
+ // FSM_STATE_ENTRY(s2, "Checking",s2_on_entry,s2_on_exit,s2_on_event) //开始准入
|
|
|
+ // FSM_STATE_ENTRY(s3, "Failure",s3_on_entry,s3_on_exit,s3_on_event) //准入失败
|
|
|
+ // FSM_STATE_ENTRY(s4, "Cancel", s4_on_entry, s4_on_exit, s4_on_event) //准入超时
|
|
|
+ // FSM_STATE_ENTRY(s5, "Login", s5_on_entry, s5_on_exit, s5_on_event) //准入成功
|
|
|
+ // FSM_STATE_ENTRY(s6, "Leaving", s6_on_entry, s6_on_exit, s6_on_event)
|
|
|
+ // FSM_STATE_ENTRY(s7, "LostTrust", s7_on_entry, s7_on_exit, s7_on_event)
|
|
|
+ //END_FSM_STATE()
|
|
|
+
|
|
|
+ //BEGIN_FSM_RULE(CAccessAuthFSM,s1)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s1, s2, Event_StartRegist)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s1, s3, Event_GetHsotFailed)
|
|
|
+ // //FSM_RULE_ENTRY_ANY(s2, s3, Event_UpdateWKFail)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s3, Event_ReqTokenFail)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s3, Event_CheckMD5Fail)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s3, Event_NetworkIllegal)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s4, Event_ReqTokenCancel)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s5, Event_ReqTokenSucc)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s2, s3, Event_SyncTimeFailed)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s3, s2, Event_StartRegist)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s4, s1, Event_StateTimeout)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s5, s6, Event_StartUnregist)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s5, s2, Event_StartReregist)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s5, s2, Event_StartRegist)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s5, s7, Event_LostTrust)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s6, s1, Event_StateTimeout)
|
|
|
+ // FSM_RULE_ENTRY_ANY(s7, s1, Event_StateTimeout)
|
|
|
+ //END_FSM_RULE()
|
|
|
+
|
|
|
+ //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);
|
|
|
+
|
|
|
+ //void s3_on_entry();
|
|
|
+ //void s3_on_exit();
|
|
|
+ //unsigned int s3_on_event(FSMEvent* event);
|
|
|
+
|
|
|
+ //void s4_on_entry();
|
|
|
+ //void s4_on_exit();
|
|
|
+ //unsigned int s4_on_event(FSMEvent* event);
|
|
|
+
|
|
|
+ //void s5_on_entry();
|
|
|
+ //void s5_on_exit();
|
|
|
+ //unsigned int s5_on_event(FSMEvent* event);
|
|
|
+
|
|
|
+ //void s6_on_entry();
|
|
|
+ //void s6_on_exit();
|
|
|
+ //unsigned int s6_on_event(FSMEvent* event);
|
|
|
+
|
|
|
+ //void s7_on_entry();
|
|
|
+ //void s7_on_exit();
|
|
|
+ //unsigned int s7_on_event(FSMEvent* event);
|
|
|
+
|
|
|
+ enum { s1, s2, s3 };
|
|
|
|
|
|
enum
|
|
|
{
|
|
|
- Event_StartRegist = EVT_USER+1,
|
|
|
- Event_StartReregist,
|
|
|
+ Event_StartRegist = EVT_USER + 1,
|
|
|
Event_ConnectionOK,
|
|
|
Event_EndSyncTime,
|
|
|
- Event_UpdateWKSucc,
|
|
|
- Event_IgnoreUpdateWK,
|
|
|
- Event_UpdateWKFail,
|
|
|
- Event_ReqTokenSucc,
|
|
|
Event_ReqTokenFail,
|
|
|
+ Event_ReqTokenSucc,
|
|
|
Event_ReqTokenCancel,
|
|
|
- Event_StartUnregist,
|
|
|
- Event_LostTrust,
|
|
|
- Event_StateTimeout, // 临时状态超时
|
|
|
- Event_ReportStage,
|
|
|
- Event_CheckMD5Succ,
|
|
|
- Event_CheckMD5Fail,
|
|
|
- Event_InitFinishOK,
|
|
|
- Event_GetHsotFailed,
|
|
|
Event_NetworkIllegal,
|
|
|
- Event_SyncTimeFailed //同步时间失败
|
|
|
+ Event_NetworkRecover,
|
|
|
+ Event_AccessAuthSucc
|
|
|
};
|
|
|
|
|
|
BEGIN_FSM_STATE(CAccessAuthFSM)
|
|
|
- FSM_STATE_ENTRY(s1, "Isolate",s1_on_entry,s1_on_exit,s1_on_event)
|
|
|
- FSM_STATE_ENTRY(s2, "Checking",s2_on_entry,s2_on_exit,s2_on_event) //开始准入
|
|
|
- FSM_STATE_ENTRY(s3, "Failure",s3_on_entry,s3_on_exit,s3_on_event) //准入失败
|
|
|
- FSM_STATE_ENTRY(s4, "Cancel", s4_on_entry, s4_on_exit, s4_on_event) //准入超时
|
|
|
- FSM_STATE_ENTRY(s5, "Login", s5_on_entry, s5_on_exit, s5_on_event) //准入成功
|
|
|
- FSM_STATE_ENTRY(s6, "Leaving", s6_on_entry, s6_on_exit, s6_on_event)
|
|
|
- FSM_STATE_ENTRY(s7, "LostTrust", s7_on_entry, s7_on_exit, s7_on_event)
|
|
|
- END_FSM_STATE()
|
|
|
-
|
|
|
- BEGIN_FSM_RULE(CAccessAuthFSM,s1)
|
|
|
+ FSM_STATE_ENTRY(s1, "Isolate", s1_on_entry, s1_on_exit, s1_on_event)
|
|
|
+ FSM_STATE_ENTRY(s2, "Checking", s2_on_entry, s2_on_exit, s2_on_event)
|
|
|
+ FSM_STATE_ENTRY(s3, "Authorized", s3_on_entry, s3_on_exit, s3_on_event)
|
|
|
+ END_FSM_STATE()
|
|
|
+
|
|
|
+ BEGIN_FSM_RULE(CAccessAuthFSM, s1)
|
|
|
FSM_RULE_ENTRY_ANY(s1, s2, Event_StartRegist)
|
|
|
- FSM_RULE_ENTRY_ANY(s1, s3, Event_GetHsotFailed)
|
|
|
- //FSM_RULE_ENTRY_ANY(s2, s3, Event_UpdateWKFail)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s3, Event_ReqTokenFail)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s3, Event_CheckMD5Fail)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s3, Event_NetworkIllegal)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s4, Event_ReqTokenCancel)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s5, Event_ReqTokenSucc)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s3, Event_SyncTimeFailed)
|
|
|
- FSM_RULE_ENTRY_ANY(s3, s2, Event_StartRegist)
|
|
|
- FSM_RULE_ENTRY_ANY(s4, s1, Event_StateTimeout)
|
|
|
- FSM_RULE_ENTRY_ANY(s5, s6, Event_StartUnregist)
|
|
|
- FSM_RULE_ENTRY_ANY(s5, s2, Event_StartReregist)
|
|
|
- FSM_RULE_ENTRY_ANY(s5, s2, Event_StartRegist)
|
|
|
- FSM_RULE_ENTRY_ANY(s5, s7, Event_LostTrust)
|
|
|
- FSM_RULE_ENTRY_ANY(s6, s1, Event_StateTimeout)
|
|
|
- FSM_RULE_ENTRY_ANY(s7, s1, Event_StateTimeout)
|
|
|
- END_FSM_RULE()
|
|
|
-
|
|
|
- void s1_on_entry();
|
|
|
+ FSM_RULE_ENTRY_ANY(s1, s3, Event_AccessAuthSucc)
|
|
|
+ FSM_RULE_ENTRY_ANY(s2, s1, Event_ReqTokenCancel)
|
|
|
+ FSM_RULE_ENTRY_ANY(s2, s3, Event_AccessAuthSucc)
|
|
|
+ END_FSM_RULE()
|
|
|
+
|
|
|
+ void s1_on_entry();
|
|
|
void s1_on_exit();
|
|
|
unsigned int s1_on_event(FSMEvent* event);
|
|
|
|
|
|
@@ -548,24 +604,11 @@ public:
|
|
|
unsigned int s2_on_event(FSMEvent* event);
|
|
|
|
|
|
void s3_on_entry();
|
|
|
- void s3_on_exit();
|
|
|
- unsigned int s3_on_event(FSMEvent* event);
|
|
|
|
|
|
- void s4_on_entry();
|
|
|
- void s4_on_exit();
|
|
|
- unsigned int s4_on_event(FSMEvent* event);
|
|
|
-
|
|
|
- void s5_on_entry();
|
|
|
- void s5_on_exit();
|
|
|
- unsigned int s5_on_event(FSMEvent* event);
|
|
|
-
|
|
|
- void s6_on_entry();
|
|
|
- void s6_on_exit();
|
|
|
- unsigned int s6_on_event(FSMEvent* event);
|
|
|
-
|
|
|
- void s7_on_entry();
|
|
|
- void s7_on_exit();
|
|
|
- unsigned int s7_on_event(FSMEvent* event);
|
|
|
+ void s3_on_exit() {
|
|
|
+ LOG_FUNCTION();
|
|
|
+ }
|
|
|
+ unsigned int s3_on_event(FSMEvent* event);
|
|
|
|
|
|
public:
|
|
|
DWORD InitDevice(SpReqAnsContext<AccessAuthService_InitDev_Req, AccessAuthService_InitDev_Ans>::Pointer &ctx);
|
|
|
@@ -584,6 +627,20 @@ public:
|
|
|
//no need to throw event defaultly except the KEY error to call for Close Page
|
|
|
void doWarnMsg(int errReason, std::string errMsg, bool bNeedEvent = false,string varMsg = "");
|
|
|
int RtsMapToUserCode(const char* pRtsCode,DWORD dwDefaultUserCode = ERR_ACCESSAUTH_UNKOWN);
|
|
|
+
|
|
|
+
|
|
|
+ void SetNetworkCheckingState(bool busing = true)
|
|
|
+ {
|
|
|
+ m_fNetworkChecking = busing;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*True: Legal; False: illegal*/
|
|
|
+ BOOL DetectNetworkLegality(CSimpleStringA& strInfo);
|
|
|
+
|
|
|
+ CSimpleStringA GetEntryPermitSysVar();
|
|
|
+ ErrorCodeEnum SetEntryPermitSysVar(const CSimpleStringA& newVal);
|
|
|
+
|
|
|
+
|
|
|
private:
|
|
|
|
|
|
ErrorCodeEnum SetSysVar(const CSimpleStringA &newVal);
|
|
|
@@ -595,6 +652,13 @@ private:
|
|
|
|
|
|
/*True: Legal; False: illegal*/
|
|
|
BOOL DetectNetworkLegality();
|
|
|
+ ErrorCodeEnum GetDns(string& dnsList);
|
|
|
+ void LoadNetworkCheckURLConfig();
|
|
|
+ void LoadDNSSettingsConfig();
|
|
|
+ ErrorCodeEnum TestNetworkAvailableOrNot(CSimpleStringA& strInfo);
|
|
|
+ ErrorCodeEnum SetDNS(CSimpleStringA& outMsg);
|
|
|
+ ErrorCodeEnum GetDNS(CSimpleStringA& strInfo);
|
|
|
+
|
|
|
|
|
|
int m_nExitReason;
|
|
|
int m_nExitWay;
|
|
|
@@ -610,6 +674,8 @@ private:
|
|
|
int m_nCheckMD5;
|
|
|
//oilyang@20210813 实际上上次关门页改造应该把这个去掉,已经有了(不)重试(不)重启的模式组合
|
|
|
int m_nAccessFailedCount;
|
|
|
+
|
|
|
+ bool m_fNetworkChecking;
|
|
|
};
|
|
|
class MyMutex {
|
|
|
public:
|