#pragma once #include #include #include enum pangu_log_opt { //Shared log options LOG_OPT_SCENE_FILE=1, //IP pcap/Mail content LOG_OPT_STREAM_INFO, // data is a struct stream_info *, size =8 LOG_OPT_MAAT_RULE, //duplicate option is allowed. //Following are options for the respective protocol LOG_OPT_HTTP_REQ_LINE, LOG_OPT_HTTP_REQ_HDR, LOG_OPT_HTTP_REQ_BODY, LOG_OPT_HTTP_RES_LINE, LOG_OPT_HTTP_RES_HDR, LOG_OPT_HTTP_RES_BODY, LOG_OPT_HTTP_URL, LOG_OPT_HTTP_C2S_ISN, //size=4 LOG_OPT_HTTP_PROXY_FLAG, //size=4 ,0 or 1 LOG_OPT_HTTP_SEQ, //size=4 LOG_OPT_HTTP_COOKIE, LOG_OPT_HTTP_REFERER, LOG_OPT_HTTP_UA, LOG_OPT_HTTP_SET_COOKIE, LOG_OPT_HTTP_CONTENT_LEN, LOG_OPT_HTTP_CONTENT_TYPE, LOG_OPT_HTTP_USER_DEFINE, //key:value+ '\0' ,e.g. "Server:nginx" LOG_OPT_MAIL_PROTO,//string:"pop3","smtp" or "imap4" LOG_OPT_MAIL_FROM, LOG_OPT_MAIL_TO, LOG_OPT_MAIL_SUBJECT, LOG_OPT_MAIL_EML, LOG_OPT_DNS_RD, //Shared with FD and JC LOG_OPT_DNS_QTYPE, //Shared with FD and JC LOG_OPT_DNS_QCLASS, //Shared with FD and JC LOG_OPT_DNS_OPCODE, //Shared with FD and JC LOG_OPT_DNS_QNAME, //Shared with FD and JC LOG_OPT_DNS_CHEAT_TYPE, //Only in FD LOG_OPT_DNS_CHEAT_RCODE, //Only in FD LOG_OPT_DNS_CHEAT_STRATEGY, //Only in FD LOG_OPT_DNS_CHEAT_RECORD, //Only in FD LOG_OPT_DNS_CHEAT_TTL, //Only in FD LOG_OPT_DNS_QR, //Only in JC LOG_OPT_DNS_RA, //Only in JC LOG_OPT_DNS_RR, //Only in JC LOG_OPT_DNS_TTL, //Only in JC LOG_OPT_DNS_DNS_SUB, //Only in JC, size=sizeof(int) 0-DNS,1-DNSSEC LOG_OPT_FTP_URL, LOG_OPT_MAX }; typedef enum _soq_action { SOQ_ACTION_BLOCK, SOQ_ACTION_MONITOR, SOQ_ACTION_CONTINUE, SOQ_ACTION_ABORT }soq_action_t; struct opt_unit { enum pangu_log_opt opt_type; int opt_len; const void* opt_value; }; struct pangu_log { const struct tfe_stream *stream; const struct tfe_http_session* http; const Maat_rule_t*result; int result_num; }; struct pangu_logger* logger; struct pangu_logger* pangu_log_handle_create(const char* profile, const char* section, void* local_logger); //return 0 if SUCCESS, otherwise return -1 int pangu_log_send(struct pangu_logger* logger, const pangu_log* log_msg, struct opt_unit* log_opt, int opt_num);