Explorar o código

Z991239-4207 #comment feat:同步部分windows的准入修改

陈纪林80310970 %!s(int64=2) %!d(string=hai) anos
pai
achega
a592ba1887

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 659 - 497
Module/mod_accessauth/AccessAuthFSM.cpp


+ 130 - 64
Module/mod_accessauth/AccessAuthFSM.h

@@ -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:

+ 1 - 0
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -35,6 +35,7 @@ typedef struct _REG_TZI_FORMAT
 
 void CAccessAuthSession::Handle_Regist(SpOnewayCallContext<AccessAuthService_Regist_Info>::Pointer ctx)
 {
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("Regist")("call Handle_Regist");
 	m_pEntity->Regist();
 }
 

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio