Переглянути джерело

1、修改SNMPTRAP功能,增加trap NMS服务器IP

liyuezong 2 роки тому
батько
коміт
c2839a7460

BIN
cust_data/db/pdu_dat.db


BIN
cust_data/db/pdu_dat_itk.db


+ 1 - 2
output/t113i/root/run/app/snmp/conf/snmpd.conf

@@ -126,7 +126,6 @@ load   12 10 5
                                     #   send SNMPv1  traps
  trapsink     localhost public
                                     #   send SNMPv2c traps
-#trap2sink    localhost public
                                     #   send SNMPv2c INFORMs
 #informsink   localhost public
 
@@ -139,7 +138,6 @@ load   12 10 5
 #
                                    # Remember to activate the 'createUser' lines above
 iquerySecName   internalUser       
-rouser          internalUser
                                    # generate traps on UCD error conditions
 defaultMonitors          yes
                                    # generate traps on linkUp/Down
@@ -192,3 +190,4 @@ linkUpDownNotifications  yes
                                            #  Listen for network connections (from localhost)
                                            #    rather than the default named socket /var/agentx/master
 #agentXSocket    tcp:localhost:705
+trap2sink 127.0.0.1 public 162

+ 27 - 14
pro/src/app.c

@@ -1857,28 +1857,41 @@ void* ntp_thread(void *arg)
 
 int snmp_config(SNMPManager *m)
 {
-    char path[200];
+   char path[200];
     char *conf="/snmp/conf/snmpd.conf";
-    char user[100],pass[200],cmd[400];
-
-    //createUser afafafaf MD5 "md5123456" DES "des123456
+    char user[100],pass[200],cmd[400],trapinfo[200];
     sys_get_path(path, conf);
 
-    //delete
-    sprintf(cmd, "sed -e /^createUser.*$/d -e /^rouser.*$/d -i %s", path);
+    sprintf(trapinfo, "trap2sink \"%s\" %s \"%s\"", m->nmsIP, "public", "162");
+        //delete
+    sprintf(cmd, "sed -e /^trap2sink.*$/d -i %s", path);
+    system(cmd);
+    sprintf(cmd, "sed -e \"$ a %s\" -i %s", trapinfo, path);
     system(cmd);
 
-    if(m->version==2) {
-        sprintf(user, "rouser \"%s\"", m->crypt.user);
-        sprintf(pass, "createUser \"%s\" %s \"%s\"", m->crypt.user, m->crypt.auth.alg, m->crypt.auth.passwd);
-        if(strlen(m->crypt.priv.alg)>1) {
-            sprintf(cmd, " %s \"%s\"", m->crypt.priv.alg, m->crypt.priv.passwd);
-            strcat(pass, cmd);
-        }
+    if (strlen(m->crypt.auth.alg) > 1)
+    {
+        // createUser afafafaf MD5 "md5123456" DES "des123456
 
-        sprintf(cmd, "sed -e \"$ a %s\" -e \"$ a %s\" -i %s", pass, user, path);
+        // delete
+        sprintf(cmd, "sed -e /^createUser.*$/d -e /^rouser.*$/d -i %s", path);
         system(cmd);
+
+        if (m->version == 2)
+        {
+            sprintf(user, "rouser \"%s\"", m->crypt.user);
+            sprintf(pass, "createUser \"%s\" %s \"%s\"", m->crypt.user, m->crypt.auth.alg, m->crypt.auth.passwd);
+            if (strlen(m->crypt.priv.alg) > 1)
+            {
+                sprintf(cmd, " %s \"%s\"", m->crypt.priv.alg, m->crypt.priv.passwd);
+                strcat(pass, cmd);
+            }
+
+            sprintf(cmd, "sed -e \"$ a %s\" -e \"$ a %s\" -i %s", pass, user, path);
+            system(cmd);
+        }
     }
+
     system("/etc/init.d/S90PDUApp restart snmpd");
     //exit(0);
     //thread_restart(THREAD_ID_SNMP);

+ 2 - 0
pro/src/appweb_handle.c

@@ -3923,6 +3923,8 @@ static void serviceManagement(void *conn)
 
         strcpy(_globalSNMPManager.public, _serviceManageRequestInfo._snmp_info.public);
         _globalSNMPManager.trapmode = atoi(_serviceManageRequestInfo._snmp_info.trapmode);
+        if (_serviceManageRequestInfo._snmp_info.nms_IP) strcpy(_globalSNMPManager.nmsIP, _serviceManageRequestInfo._snmp_info.nms_IP);
+        
         
         crypt_t *pc=&_globalSNMPManager.crypt;
         _SNMP_ServerRequestInfo *info=&_serviceManageRequestInfo._snmp_info;

+ 1 - 0
pro/src/common.h

@@ -417,6 +417,7 @@ typedef struct
     int                 trapmode;
 
     crypt_t             crypt;
+     char                nmsIP[64];
 }SNMPManager;
 SNMPManager _globalSNMPManager;
 

+ 5 - 1
pro/src/json_handle.c

@@ -4626,6 +4626,10 @@ cJSON* json_to_service_manage(const char* str,_ServiceManageRequestInfo* _servic
         tmp = cJSON_GetObjectItem(cjson,"jmmm");
         if(tmp!=NULL)
             _serviceManageRequestInfo->_snmp_info.priv_passwd = tmp->valuestring;
+            
+        tmp = cJSON_GetObjectItem(cjson,"nmsId");
+        if(tmp!=NULL)
+            _serviceManageRequestInfo->_snmp_info.nms_IP = tmp->valuestring;
     }
     //SNMP TRAP参数
     else if(strcmp(_serviceManageRequestInfo->type,"StSave")==0)
@@ -5106,7 +5110,7 @@ char* service_snmp_ack_to_json(SNMPManager* sm)
     
     cJSON_AddStringToObject(data_filed, "jmxy", pc->priv.alg);
     cJSON_AddStringToObject(data_filed, "jmmm", pc->priv.passwd);
-
+    cJSON_AddStringToObject(data_filed, "nmsId", sm->nmsIP);
     //添加汇总
     cJSON_AddItemToObject(root, "data", data_filed);
 

+ 1 - 0
pro/src/json_handle.h

@@ -380,6 +380,7 @@ typedef struct
     char*   auth_passwd;
     char*   priv_alg;
     char*   priv_passwd;
+    char*   nms_IP;
 }_SNMP_ServerRequestInfo;
 
 /// @brief SNMP TRAP信息

+ 6 - 4
pro/src/sqlite_handle.c

@@ -3006,7 +3006,7 @@ int dev_get_snmp_info(sqlite3 *db, SNMPManager* _globalSNMPInfo)
         if(pResult[rowIndex*ncolumn+8]) strcpy(_globalSNMPInfo->crypt.priv.alg,pResult[rowIndex*ncolumn+8]);
         if(pResult[rowIndex*ncolumn+9]) strcpy(_globalSNMPInfo->crypt.priv.passwd,pResult[rowIndex*ncolumn+9]);
     }
-
+    strcpy(_globalSNMPInfo->nmsIP,pResult[rowIndex*ncolumn+10]);
     sqlite3_free_table(pResult);
     return 0;
 }
@@ -3023,7 +3023,7 @@ int dev_insert_snmp_info(sqlite3 *db, SNMPManager* _globalSNMPInfo)
     char select_sql[1024] = {0};
 
     sprintf(select_sql,"INSERT INTO Table_SNMPManage (product_id, proto_type, enable, public, TrapEnable, "
-                       "user, auth_alg, auth_passwd, priv_alg, priv_passwd) VALUES (%d,%d,%d,'%s',%d,'%s','%s','%s','%s','%s');",
+                       "user, auth_alg, auth_passwd, priv_alg, priv_passwd,nmsIP) VALUES (%d,%d,%d,'%s',%d,'%s','%s','%s','%s','%s','%s');",
         _globalSNMPInfo->product_id,
         _globalSNMPInfo->version,
         _globalSNMPInfo->mode,
@@ -3033,7 +3033,8 @@ int dev_insert_snmp_info(sqlite3 *db, SNMPManager* _globalSNMPInfo)
         _globalSNMPInfo->crypt.auth.alg,
         _globalSNMPInfo->crypt.auth.passwd,
         _globalSNMPInfo->crypt.priv.alg,
-        _globalSNMPInfo->crypt.priv.passwd
+        _globalSNMPInfo->crypt.priv.passwd,
+        _globalSNMPInfo->nmsIP
         );
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK) {
@@ -3055,7 +3056,7 @@ int dev_update_snmp_info(sqlite3 *db, int product_id, SNMPManager* _globalSNMPIn
     char* err_msg=NULL;
     char select_sql[1024] = {0};
     sprintf(select_sql,"UPDATE Table_SNMPManage SET proto_type='%d',enable=%d,public='%s',TrapEnable=%d, "
-                       "user='%s',auth_alg='%s',auth_passwd='%s',priv_alg='%s',priv_passwd='%s' WHERE product_id=%d;",
+                       "user='%s',auth_alg='%s',auth_passwd='%s',priv_alg='%s',priv_passwd='%s',nmsIP='%s' WHERE product_id=%d;",
         _globalSNMPInfo->version,
         _globalSNMPInfo->mode,
         _globalSNMPInfo->public,
@@ -3065,6 +3066,7 @@ int dev_update_snmp_info(sqlite3 *db, int product_id, SNMPManager* _globalSNMPIn
         _globalSNMPInfo->crypt.auth.passwd,
         _globalSNMPInfo->crypt.priv.alg,
         _globalSNMPInfo->crypt.priv.passwd,
+        _globalSNMPInfo->nmsIP,
         product_id);
     res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK) {