This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tfe/plugin/business/pangu-http/pangu_logger.h
2018-09-14 16:35:20 +08:00

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);