91 lines
2.1 KiB
C
91 lines
2.1 KiB
C
#pragma once
|
|
|
|
#include <tfe_stream.h>
|
|
#include <tfe_http.h>
|
|
#include <MESA/Maat_rule.h>
|
|
|
|
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;
|
|
|
|
//return 0 if SUCCESS, otherwise return -1
|
|
int pangu_send_log(struct pangu_logger* logger, const pangu_log* log_msg, struct opt_unit* log_opt, int opt_num);
|
|
|
|
|