| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #include "StdAfx.h"
- #include "AuthMgr.h"
- #include "AppReg.h"
- SINGLETON_IMPLEMENT(CAuthMgr)
- CAuthMgr::CAuthMgr(void) : m_IsValid(false), m_TimerIdAuthPoll(0), m_TimerIdAuthInvalid(0), m_LeftTime(TTL_FOR_AUTH_INVALID), m_IvrFlowCount(0), m_AgentCount(0)
- {
- }
- CAuthMgr::~CAuthMgr(void)
- {
- __killAuthPollTimer();
- __killAuthInvalidTimer();
- }
- /*****************************************************************
- **【函数名称】 __authPollCallback
- **【函数功能】 授权轮询定时器回调函数
- **【参数】
- **【返回值】
- ****************************************************************/
- void CALLBACK CAuthMgr::__authPollCallback( void )
- {
- CAuthMgr::GetInstance().__onTimerAuthPoll();
- }
- /*****************************************************************
- **【函数名称】 __authInvalidCallback
- **【函数功能】 授权无效的计时器回调函数
- **【参数】
- **【返回值】
- ****************************************************************/
- void CALLBACK CAuthMgr::__authInvalidCallback( void )
- {
- CAuthMgr::GetInstance().__onTimerAuthInvalid();
- }
- /*****************************************************************
- **【函数名称】 __onAuthInvalid
- **【函数功能】 授权信息获取失败的处理函数
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__onAuthInvalid( void )
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Auth}: 授权信息无效, 系统将在%u秒后退出"), m_LeftTime);
- __setAuthInvalidTimer();
- }
- /*****************************************************************
- **【函数名称】 __setAuthPollTimer
- **【函数功能】 设定鉴权轮询定时器
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__setAuthPollTimer( void )
- {
- m_TimerIdAuthPoll = SetTimer(NULL, NULL, TIMER_INTERVAL_AUTH_POLL * 1000, (TIMERPROC)__authPollCallback);
- }
- /*****************************************************************
- **【函数名称】 __killAuthPollTimer
- **【函数功能】 删除鉴权轮询定时器
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__killAuthPollTimer( void )
- {
- if(m_TimerIdAuthPoll != 0)
- {
- KillTimer(NULL, m_TimerIdAuthPoll);
- m_TimerIdAuthPoll = 0;
- }
- }
- /*****************************************************************
- **【函数名称】 __setAuthInvalidTimer
- **【函数功能】 设定鉴权失败定时器
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__setAuthInvalidTimer( void )
- {
- m_TimerIdAuthInvalid = SetTimer(NULL, NULL, TIMER_INTERVAL_AUTH_INVALID * 1000, (TIMERPROC)__authInvalidCallback);
- }
- /*****************************************************************
- **【函数名称】 __killAuthInvalidTimer
- **【函数功能】 删除鉴权失败定时器
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__killAuthInvalidTimer( void )
- {
- if(m_TimerIdAuthInvalid != 0)
- {
- KillTimer(NULL, m_TimerIdAuthInvalid);
- m_TimerIdAuthInvalid = 0;
- }
- }
- /*****************************************************************
- **【函数名称】 __onTimerAuthPoll
- **【函数功能】 授权轮询定时器处理函数
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__onTimerAuthPoll( void )
- {
- if(!RegValid())
- {
- if(m_IsValid)
- {
- m_IsValid = false;
- __onAuthInvalid();
- }
- }
- else
- {
- if(!m_IsValid)
- {
- m_IsValid = true;
- __killAuthInvalidTimer();
- m_LeftTime = TTL_FOR_AUTH_INVALID;
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Auth}: 授权验证通过, 系统恢复正常运行"));
- }
- }
- }
- /*****************************************************************
- **【函数名称】 __onTimerAuthInvalid
- **【函数功能】 授权无效的计时器处理函数
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::__onTimerAuthInvalid( void )
- {
- __killAuthInvalidTimer();
- m_LeftTime -= TIMER_INTERVAL_AUTH_INVALID;
- if(m_LeftTime <= 0)
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Auth}: 授权信息无效, 系统将退出"));
- AfxGetMainWnd()->PostMessage(WM_CLOSE);
- }
- else
- {
- __onAuthInvalid();
- }
- }
- /*****************************************************************
- **【函数名称】 init
- **【函数功能】 初始化
- **【参数】
- **【返回值】
- ****************************************************************/
- void CAuthMgr::init( void )
- {
- UCHAR AuthYear = 0;
- UCHAR AuthMonth = 0;
- UCHAR AuthDay = 0;
- __setAuthPollTimer();
- if(!ReadAvailableTime(&AuthYear, &AuthMonth, &AuthDay) || !ReadCCM_IVRNum(&m_IvrFlowCount) || !ReadCCM_AgentNum(&m_AgentCount))
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{Auth}: 授权信息获取失败, 请插入加密狗并安装驱动程序"));
- __onAuthInvalid();
- }
- else
- {
- if(!RegValid())
- {
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{Auth}: 授权到期, 授权截止日期%u年%u月%u日"), AuthYear, AuthMonth, AuthDay);
- __onAuthInvalid();
- }
- else
- {
- m_IsValid = true;
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Auth}: 授权IVR流程数%u, 授权座席数%u, 授权截止日期%u年%u月%u日"),
- m_IvrFlowCount, m_AgentCount, AuthYear, AuthMonth, AuthDay);
- }
- }
-
- }
|