华辉中间件项目(代码服务器上没有,用杨成电脑的源代码上传的)

AuthMgr.cpp 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #include "StdAfx.h"
  2. #include "AuthMgr.h"
  3. #include "AppReg.h"
  4. SINGLETON_IMPLEMENT(CAuthMgr)
  5. CAuthMgr::CAuthMgr(void) : m_IsValid(false), m_TimerIdAuthPoll(0), m_TimerIdAuthInvalid(0), m_LeftTime(TTL_FOR_AUTH_INVALID), m_IvrFlowCount(0), m_AgentCount(0)
  6. {
  7. }
  8. CAuthMgr::~CAuthMgr(void)
  9. {
  10. __killAuthPollTimer();
  11. __killAuthInvalidTimer();
  12. }
  13. /*****************************************************************
  14. **【函数名称】 __authPollCallback
  15. **【函数功能】 授权轮询定时器回调函数
  16. **【参数】
  17. **【返回值】
  18. ****************************************************************/
  19. void CALLBACK CAuthMgr::__authPollCallback( void )
  20. {
  21. CAuthMgr::GetInstance().__onTimerAuthPoll();
  22. }
  23. /*****************************************************************
  24. **【函数名称】 __authInvalidCallback
  25. **【函数功能】 授权无效的计时器回调函数
  26. **【参数】
  27. **【返回值】
  28. ****************************************************************/
  29. void CALLBACK CAuthMgr::__authInvalidCallback( void )
  30. {
  31. CAuthMgr::GetInstance().__onTimerAuthInvalid();
  32. }
  33. /*****************************************************************
  34. **【函数名称】 __onAuthInvalid
  35. **【函数功能】 授权信息获取失败的处理函数
  36. **【参数】
  37. **【返回值】
  38. ****************************************************************/
  39. void CAuthMgr::__onAuthInvalid( void )
  40. {
  41. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Auth}: 授权信息无效, 系统将在%u秒后退出"), m_LeftTime);
  42. __setAuthInvalidTimer();
  43. }
  44. /*****************************************************************
  45. **【函数名称】 __setAuthPollTimer
  46. **【函数功能】 设定鉴权轮询定时器
  47. **【参数】
  48. **【返回值】
  49. ****************************************************************/
  50. void CAuthMgr::__setAuthPollTimer( void )
  51. {
  52. m_TimerIdAuthPoll = SetTimer(NULL, NULL, TIMER_INTERVAL_AUTH_POLL * 1000, (TIMERPROC)__authPollCallback);
  53. }
  54. /*****************************************************************
  55. **【函数名称】 __killAuthPollTimer
  56. **【函数功能】 删除鉴权轮询定时器
  57. **【参数】
  58. **【返回值】
  59. ****************************************************************/
  60. void CAuthMgr::__killAuthPollTimer( void )
  61. {
  62. if(m_TimerIdAuthPoll != 0)
  63. {
  64. KillTimer(NULL, m_TimerIdAuthPoll);
  65. m_TimerIdAuthPoll = 0;
  66. }
  67. }
  68. /*****************************************************************
  69. **【函数名称】 __setAuthInvalidTimer
  70. **【函数功能】 设定鉴权失败定时器
  71. **【参数】
  72. **【返回值】
  73. ****************************************************************/
  74. void CAuthMgr::__setAuthInvalidTimer( void )
  75. {
  76. m_TimerIdAuthInvalid = SetTimer(NULL, NULL, TIMER_INTERVAL_AUTH_INVALID * 1000, (TIMERPROC)__authInvalidCallback);
  77. }
  78. /*****************************************************************
  79. **【函数名称】 __killAuthInvalidTimer
  80. **【函数功能】 删除鉴权失败定时器
  81. **【参数】
  82. **【返回值】
  83. ****************************************************************/
  84. void CAuthMgr::__killAuthInvalidTimer( void )
  85. {
  86. if(m_TimerIdAuthInvalid != 0)
  87. {
  88. KillTimer(NULL, m_TimerIdAuthInvalid);
  89. m_TimerIdAuthInvalid = 0;
  90. }
  91. }
  92. /*****************************************************************
  93. **【函数名称】 __onTimerAuthPoll
  94. **【函数功能】 授权轮询定时器处理函数
  95. **【参数】
  96. **【返回值】
  97. ****************************************************************/
  98. void CAuthMgr::__onTimerAuthPoll( void )
  99. {
  100. if(!RegValid())
  101. {
  102. if(m_IsValid)
  103. {
  104. m_IsValid = false;
  105. __onAuthInvalid();
  106. }
  107. }
  108. else
  109. {
  110. if(!m_IsValid)
  111. {
  112. m_IsValid = true;
  113. __killAuthInvalidTimer();
  114. m_LeftTime = TTL_FOR_AUTH_INVALID;
  115. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Auth}: 授权验证通过, 系统恢复正常运行"));
  116. }
  117. }
  118. }
  119. /*****************************************************************
  120. **【函数名称】 __onTimerAuthInvalid
  121. **【函数功能】 授权无效的计时器处理函数
  122. **【参数】
  123. **【返回值】
  124. ****************************************************************/
  125. void CAuthMgr::__onTimerAuthInvalid( void )
  126. {
  127. __killAuthInvalidTimer();
  128. m_LeftTime -= TIMER_INTERVAL_AUTH_INVALID;
  129. if(m_LeftTime <= 0)
  130. {
  131. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Auth}: 授权信息无效, 系统将退出"));
  132. AfxGetMainWnd()->PostMessage(WM_CLOSE);
  133. }
  134. else
  135. {
  136. __onAuthInvalid();
  137. }
  138. }
  139. /*****************************************************************
  140. **【函数名称】 init
  141. **【函数功能】 初始化
  142. **【参数】
  143. **【返回值】
  144. ****************************************************************/
  145. void CAuthMgr::init( void )
  146. {
  147. UCHAR AuthYear = 0;
  148. UCHAR AuthMonth = 0;
  149. UCHAR AuthDay = 0;
  150. __setAuthPollTimer();
  151. if(!ReadAvailableTime(&AuthYear, &AuthMonth, &AuthDay) || !ReadCCM_IVRNum(&m_IvrFlowCount) || !ReadCCM_AgentNum(&m_AgentCount))
  152. {
  153. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{Auth}: 授权信息获取失败, 请插入加密狗并安装驱动程序"));
  154. __onAuthInvalid();
  155. }
  156. else
  157. {
  158. if(!RegValid())
  159. {
  160. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{Auth}: 授权到期, 授权截止日期%u年%u月%u日"), AuthYear, AuthMonth, AuthDay);
  161. __onAuthInvalid();
  162. }
  163. else
  164. {
  165. m_IsValid = true;
  166. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Auth}: 授权IVR流程数%u, 授权座席数%u, 授权截止日期%u年%u月%u日"),
  167. m_IvrFlowCount, m_AgentCount, AuthYear, AuthMonth, AuthDay);
  168. }
  169. }
  170. }