فهرست منبع

#IQRV #comment [AccessAuth] 报6时添加Dig域名的信息告警

gifur 3 سال پیش
والد
کامیت
7469760004
3فایلهای تغییر یافته به همراه156 افزوده شده و 1 حذف شده
  1. 12 0
      Module/include/CommEntityUtil.hpp
  2. 1 0
      Module/include/EventCode.h
  3. 143 1
      Module/mod_accessauth/AccessAuthFSM.cpp

+ 12 - 0
Module/include/CommEntityUtil.hpp

@@ -539,6 +539,18 @@ static ErrorCodeEnum GetINETMacAddresses(NetworkAddressesList& macList, NetworkA
 
 }
 
+static std::string GetWWWInfoThroughDig(const std::string& wwwUrl)
+{
+    std::string succStr, errStr;
+    std::string runStr("dig ");
+    runStr += wwwUrl;
+    if (SP::Module::Util::ShellExecute(runStr, succStr, errStr)) {
+        return succStr;
+    } else {
+        return std::string("ShellExecute(") + wwwUrl +  ") failed";
+    }
+}
+
 }//Net
 
 } // mod

+ 1 - 0
Module/include/EventCode.h

@@ -205,6 +205,7 @@ static const char* Device_Type_Table[] = {
 #define ERROR_ACCESSAUTH_GETSM3HASH                  0x5028002f  //获取SM3 Hash值错误
 #define ERROR_ACCESSAUTH_CREATESM2KEYPAIR            0x50280030  //创建SM2密钥对失败
 #define ERROR_ACCESSAUTH_CONNECT_ACS				 0x50280031  //连接ACS服务失败
+#define ERROR_ACCESSAUTH_ACS_DIGINFO				 0x50280032  //连接ACS服务失败 -- 获取域名解析信息
 
 #define ERR_ACCESSAUTH_GET_SYSTEM_STATIC_INFO        0x50210001  //获取系统静态信息错误
 #define ERR_ACCESSAUTH_SETTIMEZONE                   0x50210002  //设置时区错误

+ 143 - 1
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -11,6 +11,8 @@
 #include  <stdlib.h>
 #include "comm.h"
 
+#include "CommEntityUtil.hpp"
+
 #ifdef WITH_CPPRESTSDK
 #include "CommEntityRestful.hpp"
 #else
@@ -144,6 +146,26 @@ struct StageReportTask :public ITaskSp {
 				return;
 			}
 		} else {
+            std::string errDetail(result.WhatError());
+            if (errDetail.find("Error resolving address") != std::string::npos) {
+                std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                if (!tmpDetail.empty()) {
+                    SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                    const int len = tmpDetail.length();
+                    int pos = 0, times = 0;
+                    const int each_size = 450;
+                    std::vector<std::string> contents;
+                    while (pos < len) {
+                        const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                        pos = (++times) * each_size;
+                        contents.push_back(elem);
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                    }
+                } else {
+                    LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                }
+            }
             Dbg("StageReport Connect Failed(%d).", result.statusCode);
             m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS, GetOutPutStr("%s%s", "连接总行ACS准入服务失败(StageReport)."
 																		, result.WhatError().c_str()).c_str());
@@ -220,7 +242,7 @@ struct TimeSynTask : ITaskSp {
         config.PreDo();
         client.Do(&config, &result);
 
-		if (result.ResponseOK()) {
+		if (false && result.ResponseOK()) {
              SP::Module::Restful::CommResponseJson responseStatus ;
 			 SP::Module::Restful::GetStatusFromDebranchResponse(result.content, responseStatus);
 
@@ -256,6 +278,26 @@ struct TimeSynTask : ITaskSp {
                 Dbg("TimeSynTask HandleTimeSyn error = %08X", rc);
             }
 		} else {
+			std::string errDetail(result.WhatError());
+			if (errDetail.find("Error resolving address") != std::string::npos) {
+				std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+				if (!tmpDetail.empty()) {
+					SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+					const int len = tmpDetail.length();
+					int pos = 0, times  = 0;
+					const int each_size = 450;
+                    std::vector<std::string> contents;
+					while (pos < len) {
+						const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+						pos = (++times) * each_size;
+						contents.push_back(elem);
+						LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, 
+								CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+					}
+				} else {
+                    LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+				}
+			}
             m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                              GetOutPutStr("%s%s", "连接总行ACS准入服务失败(TimeSynTask).", result.WhatError().c_str()).c_str(), true);
             Dbg("TimeSynTask Connect Failed.");
@@ -360,6 +402,26 @@ struct LockStateTask : ITaskSp {
                 Dbg("lockStateTask HandleLockState error = %08X", rc);
             }
         } else {
+            std::string errDetail(result.WhatError());
+            if (errDetail.find("Error resolving address") != std::string::npos) {
+                std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                if (!tmpDetail.empty()) {
+                    SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                    const int len = tmpDetail.length();
+                    int pos = 0, times = 0;
+                    const int each_size = 450;
+                    std::vector<std::string> contents;
+                    while (pos < len) {
+                        const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                        pos = (++times) * each_size;
+                        contents.push_back(elem);
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                    }
+                } else {
+                    LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                }
+            }
             m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                              GetOutPutStr("%s%s", "连接总行ACS准入服务失败(lockStateTask).", result.WhatError().c_str()).c_str(), true);
 			Dbg("lockStateTask Connect Failed.");
@@ -489,6 +551,26 @@ struct UpdateWKTask : ITaskSp {
                     Dbg("UpdateWKTask LoadKeysToPinPadNew error = %08X", rc);
                 }
             } else {
+                std::string errDetail(result.WhatError());
+                if (errDetail.find("Error resolving address") != std::string::npos) {
+                    std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                    if (!tmpDetail.empty()) {
+                        SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                        const int len = tmpDetail.length();
+                        int pos = 0, times = 0;
+                        const int each_size = 450;
+                        std::vector<std::string> contents;
+                        while (pos < len) {
+                            const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                            pos = (++times) * each_size;
+                            contents.push_back(elem);
+                            LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                    CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                        }
+                    } else {
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                    }
+                }
                 m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                                  GetOutPutStr("%s%s", "连接总行ACS准入服务失败(UpdateWKTask).", result.WhatError().c_str()).c_str(), true);
                 Dbg("UpdateWKTask Connect Failed.");
@@ -549,6 +631,26 @@ struct UpdateWKTask : ITaskSp {
                 Dbg("UpdateWKTask LoadKeysToPinPadNew error = %08X", rc);
             }
         } else {
+            std::string errDetail(result.WhatError());
+            if (errDetail.find("Error resolving address") != std::string::npos) {
+                std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                if (!tmpDetail.empty()) {
+                    SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                    const int len = tmpDetail.length();
+                    int pos = 0, times = 0;
+                    const int each_size = 450;
+                    std::vector<std::string> contents;
+                    while (pos < len) {
+                        const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                        pos = (++times) * each_size;
+                        contents.push_back(elem);
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                    }
+                } else {
+                    LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                }
+            }
             m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                              GetOutPutStr("%s%d", "连接总行ACS准入服务失败(StageReport).", updateWKRet.m_sysCode).c_str());
             Dbg("UpdateWKTask Connect Failed.");
@@ -731,6 +833,26 @@ struct GetTokenTask : ITaskSp {
                     Dbg("GetTokenTask HandleGetToken error = %08X", rc);
                 }
             } else {
+                std::string errDetail(result.WhatError());
+                if (errDetail.find("Error resolving address") != std::string::npos) {
+                    std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                    if (!tmpDetail.empty()) {
+                        SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                        const int len = tmpDetail.length();
+                        int pos = 0, times = 0;
+                        const int each_size = 450;
+                        std::vector<std::string> contents;
+                        while (pos < len) {
+                            const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                            pos = (++times) * each_size;
+                            contents.push_back(elem);
+                            LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                    CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                        }
+                    } else {
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                    }
+                }
                 m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                                  GetOutPutStr("%s%s", "连接总行ACS准入服务失败(GetTokenTask).", result.WhatError().c_str()).c_str(), true);
                 Dbg("lockStateTask Connect Failed.");
@@ -888,6 +1010,26 @@ struct InitDeviceTask :public ITaskSp {
                 }
             }
         } else {
+            std::string errDetail(result.WhatError());
+            if (errDetail.find("Error resolving address") != std::string::npos) {
+                std::string tmpDetail = SP::Module::Net::GetWWWInfoThroughDig(config.GetBaseUri());
+                if (!tmpDetail.empty()) {
+                    SP::Utility::replaceInPlace(tmpDetail, "\n", "$$");
+                    const int len = tmpDetail.length();
+                    int pos = 0, times = 0;
+                    const int each_size = 450;
+                    std::vector<std::string> contents;
+                    while (pos < len) {
+                        const std::string elem = tmpDetail.substr(pos, (len - pos) > each_size ? each_size : std::string::npos);
+                        pos = (++times) * each_size;
+                        contents.push_back(elem);
+                        LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO,
+                                CSimpleStringA::Format("[%d]%s", times, elem.c_str()));
+                    }
+                } else {
+                    LogWarn(Severity_Middle, Error_Debug, ERROR_ACCESSAUTH_ACS_DIGINFO, errDetail.c_str());
+                }
+            }
             m_fsm->doWarnMsg(ERROR_ACCESSAUTH_CONNECT_ACS,
                              GetOutPutStr("%s%d", "连接总行ACS准入服务失败(InitDeviceTask).", initDeviceRet.m_sysCode).c_str());
             Dbg("InitDeviceTask Connect Failed.");