#ifndef _PUB_H #define _PUB_H #ifdef __cpluscplus extern "C" { #endif #include #include #include #include #include #include #include #include #include "dns.h" #define MS_OK 0 #define MS_ERROR -1 enum pangu_http_stat { STAT_SESSION, STAT_LOG_NUM, STAT_ACTION_HIJACK, DOH_STAT_MAX }; enum table_type { TYPE_ADDR, TYPE_APPID, TYPE_QNAME, TYPE_HOST, TYPE_MAX }; enum doh_content_type { DOH_TYPE_MESSAGE, DOH_TYPE_UDPWIREFORMAT, }; struct maat_table { int id; char name[TFE_STRING_MAX]; }; struct doh_conf { int enable; int thread_num; void *local_logger; int entry_id; int en_sendlog; const char *device_id; const char *data_center; tfe_kafka_logger_t *kafka_logger; int fs_id[DOH_STAT_MAX]; long long stat_val[DOH_STAT_MAX]; struct event *gcev; struct event_base *gc_evbase; screen_stat_handle_t fs_handle; Maat_feather_t maat; struct maat_table tables[TYPE_MAX]; }; struct doh_ctx { int count; u_int32_t min_ttl; int thread_id; int magic_num; int manipulate; int opts_num; size_t result_num; Maat_rule_t *result; cheat_pkt_opt_t *opts; scan_status_t scan_mid; enum doh_content_type type; struct evbuffer *http_req_body; dns_info_t *doh_req; char *asn_client; char *asn_server; char *location_client; char *location_server; }; int base64_encode(char *dst, int dstlen, const char *src, int srclen); int base64_decode(char *dst, int dstlen, const char *src, int srclen); #ifdef __cpluscplus } #endif #endif