summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordump2file <[email protected]>2019-01-08 16:59:19 +0600
committerdump2file <[email protected]>2019-01-08 16:59:19 +0600
commit9a84abed92611388da4769e474073bce2b9d8f84 (patch)
treefdfebe67654181bbb7c19ed75ed7dbf0e1d7eca0
parentb845ce79b89f9e6ed23176cf504d29c165dc9939 (diff)
在线代码同步
1、同步soq_type头文件 2、链接libcjson 3、同步dpkt_label 4、在user_region输出连接内部信息辅助排查问题 5、kafka输出增加debug级别的日志,mode为none时同样输出
-rw-r--r--inc/soq_types.h75
-rw-r--r--src/Makefile10
-rw-r--r--src/ntc_ip_comm.c39
-rw-r--r--src/ntc_ip_comm.h19
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
{