diff options
| author | dump2file <[email protected]> | 2019-01-08 16:59:19 +0600 |
|---|---|---|
| committer | dump2file <[email protected]> | 2019-01-08 16:59:19 +0600 |
| commit | 9a84abed92611388da4769e474073bce2b9d8f84 (patch) | |
| tree | fdfebe67654181bbb7c19ed75ed7dbf0e1d7eca0 | |
| parent | b845ce79b89f9e6ed23176cf504d29c165dc9939 (diff) | |
在线代码同步
1、同步soq_type头文件
2、链接libcjson
3、同步dpkt_label
4、在user_region输出连接内部信息辅助排查问题
5、kafka输出增加debug级别的日志,mode为none时同样输出
| -rw-r--r-- | inc/soq_types.h | 75 | ||||
| -rw-r--r-- | src/Makefile | 10 | ||||
| -rw-r--r-- | src/ntc_ip_comm.c | 39 | ||||
| -rw-r--r-- | src/ntc_ip_comm.h | 19 |
4 files changed, 121 insertions, 22 deletions
diff --git a/inc/soq_types.h b/inc/soq_types.h index a7dd907..a12a2d3 100644 --- a/inc/soq_types.h +++ b/inc/soq_types.h @@ -10,8 +10,6 @@ #error("This file should be compiled with C++ compiler") #endif -#define NTC_SWITCH - typedef enum _soq_opt { //Shared log options @@ -76,7 +74,7 @@ typedef enum _soq_opt LOG_OPT_SSH_ENCRYPT_MODE, //size=sizeof(int) LOG_OPT_SSH_MAC, //string LOG_OPT_SSH_TUNNEL_TYPE, - + LOG_OPT_SSL_VERSION, //string LOG_OPT_SSL_SNI, //string LOG_OPT_SSL_INDIVIDUAL_CERT_FILE, @@ -97,6 +95,8 @@ typedef enum _soq_opt LOG_OPT_HTTP_CONTENT_LEN, LOG_OPT_HTTP_CONTENT_TYPE, LOG_OPT_HTTP_USER_DEFINE, //key:value+ '\0' ,e.g. "Server:nginx" + LOG_OPT_HTTP_USER_DEFINE_KEY, //key:value+ '\0' ,e.g. "Server:nginx" + LOG_OPT_HTTP_USER_DEFINE_VALUE, //key:value+ '\0' ,e.g. "Server:nginx" LOG_OPT_APP_LABEL, LOG_OPT_C2S_PKT_NUM, @@ -104,13 +104,73 @@ typedef enum _soq_opt LOG_OPT_C2S_BYTE_NUM, LOG_OPT_S2C_BYTE_NUM, LOG_OPT_SSL_SAN, - LOG_OPT_SSL_CA, + LOG_OPT_SSL_CN, LOG_OPT_DNS_CNAME, LOG_OPT_FTP_CONTENT, LOG_OPT_L2TP_CHAP_NAME, - LOG_OPT_PROTO_TYPE, //value:soq_protocol_t; FOR NTC + + //RADIUS-LOG + LOG_OPT_RADIUS_CODE, + LOG_OPT_RADIUS_ACCOUNT, + LOG_OPT_NAS_IP, + LOG_OPT_FRAMED_IP, + + LOG_OPT_MAIL_TO_CC, + + //P2P-LOG + LOG_OPT_P2P_PROTO, + LOG_OPT_P2P_FILE_ID, + LOG_OPT_P2P_KEYWORD, + LOG_OPT_BGP_TYPE, + LOG_OPT_BGP_AS, + LOG_OPT_BGP_ROUTE, + + //APP-LOG + LOG_OPT_LABEL_PROTO_ID, + LOG_OPT_LABEL_PROTO_SOURCE, + LOG_OPT_LABEL_BEHAV_ID, + LOG_OPT_LABEL_BEHAV_SOURCE, + LOG_OPT_LABEL_APP_ID, + LOG_OPT_LABEL_APP_SOURCE, + + //VOIP + LOG_OPT_DUATION, + LOG_OPT_VOIP_PROTOCOL, + LOG_OPT_CALLING_ACCOUNT, + LOG_OPT_CALLED_ACCOUNT, + LOG_OPT_CALLING_NUMBER, + LOG_OPT_CALLED_NUMBER, + LOG_OPT_VOIP_PID, + LOG_OPT_RTP_D_IP, + LOG_OPT_RTP_S_IP, + LOG_OPT_RTP_D_PORT, + LOG_OPT_RTP_S_PORT, + LOG_OPT_FROM_TO_STORE_IP, + LOG_OPT_FROM_TO_STORE_URL, + LOG_OPT_TO_FROM_STORE_IP, + LOG_OPT_TO_FROM_STORE_URL, + LOG_OPT_SIP_D_IP, + LOG_OPT_SIP_S_IP, + LOG_OPT_SIP_D_PORT, + LOG_OPT_SIP_S_PORT, + LOG_OPT_CALL_ID, + LOG_OPT_VOIP_REQUEST_URI, + LOG_OPT_VOIP_CONTACTS, + LOG_OPT_VOIP_VIA, + LOG_OPT_VOIP_ROUTE, + LOG_OPT_VOIP_RECORD_ROUTE, + LOG_OPT_VOIP_USER_AGANT, + LOG_OPT_VOIP_SERVER, + + //STREAM_MEDIA + LOG_OPT_STREAMING_MEDIA_URL, + LOG_OPT_STREAMING_MEDIA_PROTOCOL, + + LOG_OPT_DNS_RESPOSE_IP, + LOG_OPT_MAIL_SUBJECT_CHARSET, + LOG_OPT_MAX }soq_opt_t; @@ -130,13 +190,16 @@ typedef enum _soq_protocol PROTO_SSH, PROTO_PPTP, PROTO_L2TP, - PROTO_OPEN_VPN,//alias of PROTO_VPN + PROTO_OPEN_VPN,//alias of PROTO_VPN PROTO_GRE,//PROTO_GRE=15 FOR NTC PROTO_SOCKS,//FOR NTC PROTO_XMPP,//FOR NTC PROTO_SIP,//FOR NTC PROTO_RTP,//FOR NTC PROTO_BGP,//FOR NTC + PROTO_APP, + PROTO_VOIP, + PROTO_STREAMING_MEDIA, PROTO_MAX }soq_protocol_t; diff --git a/src/Makefile b/src/Makefile index 10beb5d..c85a71b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -11,13 +11,21 @@ INCLUDEPATH+=-I../inc CFLAGS= -g3 -Wall -fPIC -Werror -O0 CFLAGS+=$(INCLUDEPATH) +ifdef ASAN +CFLAGS+=-fsanitize=address -fno-omit-frame-pointer +endif + CPPFLAGS=$(CFLAGS) LIB+=-lMESA_handle_logger LIB+=-lMESA_prof_load LIB+=-lrdkafka -LIB+=-lcJSON +LIB+=-lcjson LIB+=-ldl + +ifdef ASAN +LIB+=-lasan +endif SOURCES=$(wildcard *.c) OBJECTS=$(SOURCES:.c=.o) diff --git a/src/ntc_ip_comm.c b/src/ntc_ip_comm.c index 8b7d2d2..92bdef6 100644 --- a/src/ntc_ip_comm.c +++ b/src/ntc_ip_comm.c @@ -70,7 +70,7 @@ static int soq_addStreamInfo_to_jsonObj(cJSON *json_obj, const struct streaminfo const char* null_addr="0"; short null_port=0; unsigned short tunnel_type=0; - char nest_addr_buf[1024]; + char nest_addr_buf[1024] = {0}; int tunnel_type_size=sizeof(tunnel_type); const struct layer_addr *addr=NULL; char src_ip_str[128] = {0}, dst_ip_str[128] = {0}; @@ -135,8 +135,11 @@ static int soq_addStreamInfo_to_jsonObj(cJSON *json_obj, const struct streaminfo { stream_addr_list_ntop(a_stream,nest_addr_buf, sizeof(nest_addr_buf)); } - - cJSON_AddStringToObject(json_obj, "addr_list", nest_addr_buf); + assert(strlen(nest_addr_buf) > 10); + if(strlen(nest_addr_buf) > 0) + { + cJSON_AddStringToObject(json_obj, "addr_list", nest_addr_buf); + } return 0; } @@ -172,12 +175,20 @@ void ntc_ip_comm_send_kafka_log(rd_kafka_topic_t *topic, struct streaminfo *a_st cJSON_AddNumberToObject(log_obj, "create_time", a_stream->ptcpdetail->createtime); cJSON_AddNumberToObject(log_obj, "lastmtime", a_stream->ptcpdetail->lastmtime); + + char user_region_buf[4096] = " "; + snprintf(user_region_buf,sizeof(user_region_buf), "thread=%d;index=%d;hash=%d;", a_stream->threadnum, a_stream->stream_index, a_stream->hash_index); + //cJSON_AddNumberToObject(log_obj, "user_region", a_stream->threadnum); + cJSON_AddStringToObject(log_obj, "user_region", user_region_buf); - - char *payload = cJSON_Print(log_obj); + //char *payload = cJSON_Print(log_obj); + char *payload = cJSON_PrintUnformatted(log_obj); int paylen = strlen(payload); - rd_kafka_produce(g_ntc_ip_comm_kafka_topic, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, paylen, NULL, 0, NULL); - + if(g_ntc_ip_comm_item.comm_log_mode > 0) + { + rd_kafka_produce(g_ntc_ip_comm_kafka_topic, RD_KAFKA_PARTITION_UA, RD_KAFKA_MSG_F_COPY, payload, paylen, NULL, 0, NULL); + } + MESA_handle_runtime_log(g_ntc_ip_comm_item.log_handle, RLOG_LV_DEBUG, __FUNCTION__ , "%s", payload); free(payload); cJSON_Delete(log_obj); log_obj = NULL; @@ -201,6 +212,7 @@ void ntc_ip_comm_send_ntc_log(struct streaminfo *a_stream, comm_context_t *ctx, maat_rule.config_id = 0; maat_rule.service_id = g_ntc_ip_comm_item.service; maat_rule.do_log = 1; + snprintf(maat_rule.service_defined,sizeof(maat_rule.service_defined),"thread=%d;index=%d;hash=%d;", a_stream->threadnum, a_stream->stream_index, a_stream->hash_index); log_msg.stream = a_stream; log_msg.result = &maat_rule; log_msg.result_num =1; @@ -303,7 +315,7 @@ void nct_ip_comm_judge_counter(comm_context_t *ctx, struct streaminfo *a_stream) if(memcmp(&sapp_ctx, ctx, sizeof(comm_context_t)) != 0) { - MESA_handle_runtime_log(g_ntc_ip_comm_item.log_handle, RLOG_LV_FATAL, __FUNCTION__ , "sapp_ctx diff with counter, sapp_ctx:%llu:%llu->%llu:%llu, counter:%llu:%llu->%llu:%llu, %s", + MESA_handle_runtime_log(g_ntc_ip_comm_item.log_handle, RLOG_LV_INFO, __FUNCTION__ , "sapp_ctx diff with counter, sapp_ctx:%llu:%llu->%llu:%llu, counter:%llu:%llu->%llu:%llu, %s", sapp_ctx.c2s_pkts, sapp_ctx.c2s_bytes, sapp_ctx.s2c_pkts, sapp_ctx.s2c_bytes, ctx->c2s_pkts, ctx->c2s_bytes, @@ -339,14 +351,15 @@ extern "C" UCHAR ntc_ip_comm_transfer_entry(struct streaminfo *a_stream, void * if(ctx->c2s_bytes+ctx->s2c_bytes >= g_ntc_ip_comm_item.min_bytes &&ctx->c2s_pkts+ctx->s2c_pkts >= g_ntc_ip_comm_item.min_pkts) { ntc_ip_comm_get_dpkt_label(a_stream, g_ntc_ip_comm_item.dpkt_label, label_buf, &label_buflen); - if((g_ntc_ip_comm_item.comm_log_mode&SEND_KAFKA) == SEND_KAFKA) - { - ntc_ip_comm_send_kafka_log(g_ntc_ip_comm_kafka_topic, a_stream, ctx, label_buf, label_buflen); - } if((g_ntc_ip_comm_item.comm_log_mode&SEND_LOG) == SEND_LOG) { ntc_ip_comm_send_ntc_log(a_stream, ctx, label_buf, label_buflen); } + //if((g_ntc_ip_comm_item.comm_log_mode&SEND_KAFKA) == SEND_KAFKA) + else + { + ntc_ip_comm_send_kafka_log(g_ntc_ip_comm_kafka_topic, a_stream, ctx, label_buf, label_buflen); + } } free(ctx); ctx = NULL; @@ -359,7 +372,7 @@ extern "C" UCHAR ntc_ip_comm_transfer_entry(struct streaminfo *a_stream, void * void ntc_ip_comm_load_profile() { - MESA_load_profile_string_def(PROFILE_PATH, PLUGIN_NAME, "log_path", g_ntc_ip_comm_item.log_path, sizeof(g_ntc_ip_comm_item.log_path), "./ntclog/ip_comm_log"); + MESA_load_profile_string_def(PROFILE_PATH, PLUGIN_NAME, "log_path", g_ntc_ip_comm_item.log_path, sizeof(g_ntc_ip_comm_item.log_path), "./t1log/ip_comm_log"); MESA_load_profile_uint_def(PROFILE_PATH,PLUGIN_NAME, "log_level", &g_ntc_ip_comm_item.log_level, 30); char nic_name[64]; diff --git a/src/ntc_ip_comm.h b/src/ntc_ip_comm.h index 711b32f..fc49d06 100644 --- a/src/ntc_ip_comm.h +++ b/src/ntc_ip_comm.h @@ -8,7 +8,7 @@ extern "C" #endif #include "stream.h" -#include "soq/identify_v2.h" +//#include "soq/identify_v2.h" typedef struct ntc_ip_comm_global_item { @@ -74,7 +74,22 @@ extern "C" }dpkt_lable_t; */ -typedef stDntyProInfoV2 dpkt_lable_t; +typedef struct _dpkt_lable_t +{ + unsigned char trans_proto; + unsigned char v6; + unsigned short _pad0; + //uint16_t dpkt_app_ser_type; + // uint16_t dpkt_proto_ser_type; + unsigned int dpkt_proto_type; + unsigned int dpkt_app_type; + unsigned int dpkt_op_type; + unsigned int dpkt_browser_type; + unsigned int dpkt_web_type; + unsigned int dpkt_behavior_type; +}dpkt_lable_t; + +//typedef stDntyProInfoV2 dpkt_lable_t; typedef struct _comm_context_t { |
