增加ussd统计

This commit is contained in:
lai
2025-03-27 17:30:20 +08:00
parent 7f79b5abac
commit a74d97e221

View File

@@ -109,7 +109,6 @@ int sendHeartbeat()
memset(proc_name,0,16); memset(proc_name,0,16);
sprintf(proc_name,"logCollector"); sprintf(proc_name,"logCollector");
//pdu //pdu
memset(&pdu,0,sizeof(snmp_pdu)); memset(&pdu,0,sizeof(snmp_pdu));
pdu.pdu_type=7; pdu.pdu_type=7;
@@ -314,6 +313,7 @@ int logColl_initLogSrcArr()
*/ */
int logColl_initAttrDefnArr() int logColl_initAttrDefnArr()
{ {
char confQuery[400] = "\0"; char confQuery[400] = "\0";
MYSQL_RES *confResult = NULL; MYSQL_RES *confResult = NULL;
MYSQL_ROW confRow; MYSQL_ROW confRow;
@@ -325,14 +325,13 @@ int logColl_initAttrDefnArr()
"level_6,level_7,level_8,level_9,level_10"; "level_6,level_7,level_8,level_9,level_10";
//init if first //init if first
for (i = 0; i < MaxAttrDefnNum; i++) { for (i = 0; i < MaxAttrDefnNum; i++) {
attrDefnArr[arrayNo].sysTypeNo = 0; attrDefnArr[i].sysTypeNo = 0;
attrDefnArr[arrayNo].fieldObjIdStr[0] = 0; attrDefnArr[i].fieldObjIdStr[0] = 0;
attrDefnArr[arrayNo].fieldName[0] = 0; attrDefnArr[i].fieldName[0] = 0;
attrDefnArr[arrayNo].valueType = 0; attrDefnArr[i].valueType = 0;
attrDefnArr[arrayNo].valueLen = 0; attrDefnArr[i].valueLen = 0;
//attrDefnArr[arrayNo].initValue; //attrDefnArr[arrayNo].initValue;
} }
//load subscriber data into array one bye one sysTypeNo //load subscriber data into array one bye one sysTypeNo
for (logSrcArrNo = 0; logSrcArrNo < MaxLogSrcNum; logSrcArrNo++) { for (logSrcArrNo = 0; logSrcArrNo < MaxLogSrcNum; logSrcArrNo++) {
//if (logSrcArr[logSrcArrNo].isEnable <= 0) { //if (logSrcArr[logSrcArrNo].isEnable <= 0) {
@@ -346,6 +345,7 @@ int logColl_initAttrDefnArr()
levelSelect, logSrcArr[logSrcArrNo].sysTypeNo, levelSelect, logSrcArr[logSrcArrNo].sysTypeNo,
logSrcArr[logSrcArrNo].dataTypeNo, queryOrderBy); logSrcArr[logSrcArrNo].dataTypeNo, queryOrderBy);
confResult = (MYSQL_RES *) mysql_getres(dbConn, confQuery); confResult = (MYSQL_RES *) mysql_getres(dbConn, confQuery);
if (confResult == NULL) { if (confResult == NULL) {
omcLog(logFp, " Database may be stopped,Please check!"); omcLog(logFp, " Database may be stopped,Please check!");
return (0); return (0);
@@ -380,6 +380,7 @@ int logColl_initAttrDefnArr()
} }
mysql_free_result(confResult); mysql_free_result(confResult);
} }
return (1); return (1);
} }
@@ -391,6 +392,7 @@ int logColl_initAttrDefnArr()
*/ */
int logColl_getIp(int logSrcArrNo, char *dstIP) int logColl_getIp(int logSrcArrNo, char *dstIP)
{ {
MYSQL_RES *tmpResult; MYSQL_RES *tmpResult;
MYSQL_ROW tmpRow; MYSQL_ROW tmpRow;
char tmpQuery[400] = "\0"; char tmpQuery[400] = "\0";
@@ -419,6 +421,7 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
logSrcArr[logSrcArrNo].sysTypeNo, logSrcArr[logSrcArrNo].sysTypeNo,
logSrcArr[logSrcArrNo].sysNo, logSrcArr[logSrcArrNo].sysNo,
logSrcArr[logSrcArrNo].subSysNo); logSrcArr[logSrcArrNo].subSysNo);
mysql_free_result(tmpResult); // 正确释放结果集
return (0); return (0);
} }
} }
@@ -432,11 +435,15 @@ int logColl_getIp(int logSrcArrNo, char *dstIP)
*/ */
int logColl_mainProc() int logColl_mainProc()
{ {
int i = 0; int i = 0;
int idleLogSrcCount = 0; int idleLogSrcCount = 0;
snmp_pdu tmpPdu; snmp_pdu tmpPdu;
//var_list tmpVarArr[MaxVarNum]; //var_list tmpVarArr[MaxVarNum];
snmp_addr tmpAddr; snmp_addr tmpAddr;
// init
memset(&tmpPdu, 0, sizeof(snmp_pdu));
memset(&tmpAddr, 0, sizeof(snmp_addr));
#if logColl_DEBUG #if logColl_DEBUG
//system("clear"); //system("clear");
@@ -471,7 +478,7 @@ int logColl_mainProc()
{ {
//not receive message or received invaild message //not receive message or received invaild message
//write log //write log
/*
#if logColl_DEBUG #if logColl_DEBUG
omcLog(logFp,"%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i, omcLog(logFp,"%d %d-%d-%d %s %d/%d \t %lu/%lu/%lu %d/%d \t%s ", i,
logSrcArr[i].sysTypeNo,logSrcArr[i].sysNo,logSrcArr[i].subSysNo, logSrcArr[i].sysTypeNo,logSrcArr[i].sysNo,logSrcArr[i].subSysNo,
@@ -481,7 +488,7 @@ int logColl_mainProc()
logSrcArr[i].sleepCount,logSrcArr[i].sleepTime, logSrcArr[i].sleepCount,logSrcArr[i].sleepTime,
logSrcArr[i].desc); logSrcArr[i].desc);
#endif #endif
*/
continue; continue;
} }
} }
@@ -628,6 +635,7 @@ int logColl_mainProc()
*/ */
int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr) int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
{ {
if (logColl_mkAddr(logSrcArrNo, addr) < 1) { if (logColl_mkAddr(logSrcArrNo, addr) < 1) {
return (0); return (0);
} }
@@ -635,11 +643,15 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
return (0); return (0);
} }
if (snmp_send(pdu, addr) > 0) { if (snmp_send(pdu, addr) > 0) {
sprintf(logSrcArr[logSrcArrNo].desc, "send snmp message ok!"); sprintf(logSrcArr[logSrcArrNo].desc, "send snmp message ok!");
omcLog(logFp, "Send request snmp package wait for response, %s",logSrcArr[logSrcArrNo].dataStoreTable); omcLog(logFp, "Send request snmp package wait for response, %s",logSrcArr[logSrcArrNo].dataStoreTable);
logSrcArr[logSrcArrNo].msgState = nWaitResponse; logSrcArr[logSrcArrNo].msgState = nWaitResponse;
return (1); return (1);
} else { } else {
// printf("failed to send snmp msg,remote ip=%x,remote port=%d",
// addr->remote_ip, addr->remote_port);
//write log //write log
omcLog(logFp, omcLog(logFp,
"failed to send snmp msg,remote ip=%x,remote port=%d", "failed to send snmp msg,remote ip=%x,remote port=%d",
@@ -661,11 +673,15 @@ int logColl_sendMsg(int logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
*/ */
int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr) int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
{ {
int i = *logSrcArrNo; int i = *logSrcArrNo;
int respProcReturn = 0; int respProcReturn = 0;
int j;
memset(pdu, 0, sizeof(snmp_pdu));
logColl_mkAddr(i, addr); logColl_mkAddr(i, addr);
if (snmp_receive(pdu, addr) > 0) { if (snmp_receive(pdu, addr) > 0) {
//received msg ok //received msg ok
respProcReturn = logColl_procResp(logSrcArrNo, pdu); //here maybe changed *logSrcArrNo's value respProcReturn = logColl_procResp(logSrcArrNo, pdu); //here maybe changed *logSrcArrNo's value
i = *logSrcArrNo; i = *logSrcArrNo;
@@ -698,7 +714,7 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
} }
} else { } else {
//not received msg //not received msg
//printf("error:table:%s,systypeNo:%d\n",logSrcArr[i].dataStoreTable,logSrcArr[i].sysTypeNo);
sprintf(logSrcArr[i].desc, "Receive snmp message failed!"); sprintf(logSrcArr[i].desc, "Receive snmp message failed!");
logSrcArr[i].waitTimeCount++; logSrcArr[i].waitTimeCount++;
@@ -726,6 +742,7 @@ int logColl_recvMsg(int *logSrcArrNo, snmp_pdu * pdu, snmp_addr * addr)
*/ */
int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu) int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
{ {
if (logColl_mkVarArr(logSrcArrNo, pdu->var) < 1) { if (logColl_mkVarArr(logSrcArrNo, pdu->var) < 1) {
return (0); return (0);
} }
@@ -747,6 +764,8 @@ int logColl_mkPdu(int logSrcArrNo, snmp_pdu * pdu)
*/ */
int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr) int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
{ {
if (strlen(logSrcArr[logSrcArrNo].dstIP) <= 0) { if (strlen(logSrcArr[logSrcArrNo].dstIP) <= 0) {
omcLog(logFp, "Initing snmp_addr error: Cannot get ip"); omcLog(logFp, "Initing snmp_addr error: Cannot get ip");
logSrcArr[logSrcArrNo].logState = nWaitLog; logSrcArr[logSrcArrNo].logState = nWaitLog;
@@ -768,6 +787,7 @@ int logColl_mkAddr(int logSrcArrNo, snmp_addr * addr)
*/ */
int logColl_mkVarArr(int logSrcArrNo, var_list * varArr) int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
{ {
var_list *unitVar; var_list *unitVar;
int i, varCount = 0; int i, varCount = 0;
int totalMsgLen = 0; int totalMsgLen = 0;
@@ -835,9 +855,11 @@ int logColl_mkVarArr(int logSrcArrNo, var_list * varArr)
*/ */
int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu) int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
{ {
int i, j, logSrcArrNo, tlvCount; int i, j, logSrcArrNo, tlvCount;
char tmpQuery[3500] = "\0"; char tmpQuery[5000] = "\0";
char tmpValue[3000] = "\0"; char tmpValue[5000] = "\0";
int tlvLen = 0; int tlvLen = 0;
int tlvIntValue = 0; int tlvIntValue = 0;
char tlvAscValue[512] = "\0"; char tlvAscValue[512] = "\0";
@@ -854,7 +876,7 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
logSrcArrNo = *oldlogSrcArrNo; logSrcArrNo = *oldlogSrcArrNo;
#if logColl_DEBUG #if logColl_DEBUG
// omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo); omcLog(logFp," ----- Processing logSrcArr[%d]'s response message ",logSrcArrNo);
#endif #endif
//check pdu_type //check pdu_type
if (pdu->pdu_type != nResp) { if (pdu->pdu_type != nResp) {
@@ -884,6 +906,7 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
} }
} }
for (i = 0; i < pdu->var_num; i++) { for (i = 0; i < pdu->var_num; i++) {
int errStr; int errStr;
@@ -980,6 +1003,8 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
return (-1); return (-1);
} }
} else { /*get data and update to database */ } else { /*get data and update to database */
//printf("\nstart replace:logColl_procResp1 ");
char tmpUnitValue[1024] = "\0"; char tmpUnitValue[1024] = "\0";
char tmpSetStr[1024] = "\0"; char tmpSetStr[1024] = "\0";
int attrDefnBgn = logSrcArr[logSrcArrNo].attrDefnArrOffset; int attrDefnBgn = logSrcArr[logSrcArrNo].attrDefnArrOffset;
@@ -996,6 +1021,8 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
AsnDecode(pdu->var[i].msg, pdu->var[i].msglen, 1024, &errStr, AsnDecode(pdu->var[i].msg, pdu->var[i].msglen, 1024, &errStr,
&asnBuffer); &asnBuffer);
//printf("\nstart replace:logColl_procResp2 ");
//get value form asnbuffer and make SQL string //get value form asnbuffer and make SQL string
for (tlvCount = attrDefnBgn; tlvCount < attrDefnEnd; for (tlvCount = attrDefnBgn; tlvCount < attrDefnEnd;
tlvCount++) { tlvCount++) {
@@ -1033,11 +1060,14 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
} }
break; break;
default: default:
// printf("\nstart replace:logColl_procResp3 ");
sprintf(logSrcArr[logSrcArrNo].desc, sprintf(logSrcArr[logSrcArrNo].desc,
" Invailed vartype(attrDefnArr[%d].valueType=%d)", " Invailed vartype(attrDefnArr[%d].valueType=%d)",
tlvCount, attrDefnArr[tlvCount].valueType); tlvCount, attrDefnArr[tlvCount].valueType);
return (-1); return (-1);
} }
if (tlvLen >= 0) { if (tlvLen >= 0) {
if (varCount == 0) { if (varCount == 0) {
strcat(tmpValue, tmpSetStr); strcat(tmpValue, tmpSetStr);
@@ -1046,12 +1076,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
strcat(tmpValue, tmpSetStr); strcat(tmpValue, tmpSetStr);
} }
varCount++; varCount++;
omcLog(logFp, "tmpSetStr: %s\n", tmpSetStr);
omcLog(logFp, "tmpValue: %s\n", tmpValue);
// printf("tmpSetStr: %s\n", tmpSetStr);
// printf("tmpValue: %s\n", tmpValue);
} else { } else {
omcLog(logFp, " can not get tlvTag[%s]'s tlvValue", omcLog(logFp, " can not get tlvTag[%s]'s tlvValue",
attrDefnArr[tlvCount].fieldObjIdStr); attrDefnArr[tlvCount].fieldObjIdStr);
return (0); //return (0);
} }
} //end of for(..) } //end of for(..)
//printf("\nstart replace:logColl_procResp5 ");
// printf("dataStoreTable length: %s\n", logSrcArr[logSrcArrNo].dataStoreTable);
omcLog(logFp, "Make Var,logNo=%ld,%s",logSrcArr[logSrcArrNo].logNo,logSrcArr[logSrcArrNo].dataStoreTable);
//Query SQL //Query SQL
if (strlen(logSrcArr[logSrcArrNo].dataStoreTable) > 1 if (strlen(logSrcArr[logSrcArrNo].dataStoreTable) > 1
@@ -1061,22 +1099,20 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
tmpQuery[0] = 0; tmpQuery[0] = 0;
sprintf(tmpQuery, "REPLACE %s SET %s", sprintf(tmpQuery, "REPLACE %s SET %s",
logSrcArr[logSrcArrNo].dataStoreTable, tmpValue); logSrcArr[logSrcArrNo].dataStoreTable, tmpValue);
omcLog(logFp, "Replace log into %s\n",tmpQuery);
omcLog(logFp, "Replace log into %s",logSrcArr[logSrcArrNo].dataStoreTable); omcLog(logFp, "Replace log into %s",logSrcArr[logSrcArrNo].dataStoreTable);
result=mysql_getnores(dbConn, tmpQuery); result=mysql_getnores(dbConn, tmpQuery);
errorNo = mysql_errno(dbConn); errorNo = mysql_errno(dbConn);
if (errorNo > 0) if (errorNo > 0)
{ {
omcLog(logFp, "\n Error number:%d", mysql_errno(dbConn));
omcLog(logFp, "\n Description: %s", mysql_error(dbConn));
if(errorNo == 2006) if(errorNo == 2006)
{ {
mysql_close(dbConn); mysql_close(dbConn);
omcLog(logFp, "Mysql has gone away");
dbConn = mysql_conn(HOSTNAME, PUB_DB); dbConn = mysql_conn(HOSTNAME, PUB_DB);
if (dbConn == NULL) {
omcLog(logFp, " Fail to reconnect");
}
result=0; result=0;
result=mysql_getnores(dbConn, tmpQuery); result=mysql_getnores(dbConn, tmpQuery);
if(result == -1) if(result == -1)
@@ -1100,3 +1136,4 @@ int logColl_procResp(int *oldlogSrcArrNo, snmp_pdu * pdu)
return (1); return (1);
} //end of function } //end of function