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-verify-policy/common/include/verify_policy.h

185 lines
4.1 KiB
C
Raw Normal View History

2019-10-22 15:13:14 +08:00
/*************************************************************************
> File Name: verify_policy.h
> Author:
> Mail:
2019-10-22 15:13:14 +08:00
> Created Time: 20190823 180603
************************************************************************/
#ifndef _VERIFY_POLICY_H
#define _VERIFY_POLICY_H
#include <event2/event.h>
#include "verify_policy_utils.h"
2020-09-25 14:56:36 +08:00
struct breakpad_instance;
enum verify_policy_type
2020-01-17 10:59:34 +08:00
{
PXY_TABLE_SECURITY,
PXY_TABLE_MANIPULATION,
2021-01-28 18:42:19 +08:00
PXY_TABLE_WANNAT,
2020-01-17 10:59:34 +08:00
PXY_TABLE_DEFENCE,
__SCAN_POLICY_MAX
};
2021-01-28 18:42:19 +08:00
enum common_scan_table
{
PXY_COMMON_SOURCE_ADDR,
PXY_COMMON_DESTINATION_ADDR
};
2020-01-17 10:59:34 +08:00
enum manipulate_sacn_table
2019-10-22 15:13:14 +08:00
{
PXY_CTRL_SOURCE_ADDR,
PXY_CTRL_DESTINATION_ADDR,
2019-10-22 15:13:14 +08:00
PXY_CTRL_HTTP_URL,
PXY_CTRL_HTTP_FQDN,
PXY_CTRL_HTTP_REQ_HDR,
PXY_CTRL_HTTP_REQ_BODY,
PXY_CTRL_HTTP_RES_HDR,
PXY_CTRL_HTTP_RES_BODY,
PXY_CTRL_SUBSCRIBE_ID,
PXY_CTRL_APP_ID,
PXY_CTRL_DOH_QNAME,
PXY_CTRL_DOH_HOST,
2020-06-24 16:36:16 +08:00
PXY_CTRL_IP_SRC_ASN,
PXY_CTRL_IP_DST_ASN,
PXY_CTRL_IP_SRC_LOCATION,
PXY_CTRL_IP_DST_LOCATION,
2019-10-22 15:13:14 +08:00
__SCAN_TABLE_MAX
};
2020-01-17 10:59:34 +08:00
enum security_scan_table
{
PXY_SECURITY_SOURCE_ADDR,
PXY_SECURITY_DESTINATION_ADDR,
2020-01-17 10:59:34 +08:00
PXY_SECURITY_HTTP_URL,
PXY_SECURITY_HTTP_FQDN,
PXY_SECURITY_HTTP_REQ_HDR,
PXY_SECURITY_HTTP_REQ_BODY,
PXY_SECURITY_HTTP_RES_HDR,
PXY_SECURITY_HTTP_RES_BODY,
PXY_SECURITY_SUBSCRIBE_ID,
2020-09-25 14:56:36 +08:00
PXY_SECURITY_APP_ID,
2020-01-17 10:59:34 +08:00
PXY_SECURITY_HTTPS_SNI,
PXY_SECURITY_HTTPS_CN,
PXY_SECURITY_HTTPS_SAN,
PXY_SECURITY_DNS_QNAME,
2020-08-06 10:32:47 +08:00
PXY_SECURITY_QUIC_SNI,
2020-01-17 10:59:34 +08:00
PXY_SECURITY_MAIL_ACCOUNT,
PXY_SECURITY_MAIL_FROM,
PXY_SECURITY_MAIL_TO,
PXY_SECURITY_MAIL_SUBJECT,
PXY_SECURITY_MAIL_CONTENT,
PXY_SECURITY_MAIL_ATT_NAME,
PXY_SECURITY_MAIL_ATT_CONTENT,
PXY_SECURITY_FTP_URI,
PXY_SECURITY_FTP_CONTENT,
PXY_SECURITY_FTP_ACCOUNT,
2021-03-02 18:17:31 +08:00
PXY_SECURITY_SIP_FROM,
PXY_SECURITY_SIP_TO,
2020-06-24 16:36:16 +08:00
PXY_SECURITY_IP_SRC_ASN,
PXY_SECURITY_IP_DST_ASN,
PXY_SECURITY_IP_SRC_LOCATION,
PXY_SECURITY_IP_DST_LOCATION,
2020-01-17 10:59:34 +08:00
__SECURITY_TABLE_MAX
};
2021-01-28 18:42:19 +08:00
enum wannat_scan_table
{
PXY_WANNAT_SOURCE_ADDR,
PXY_WANNAT_DESTINATION_ADDR,
__WANNAT_TABLE_MAX
};
2019-10-22 15:13:14 +08:00
enum http_ev_bit_number
{
IP_BITNUM = 0,
URL_BITNUM,
FQDN_BITNUM,
REQ_HDR_BITNUM,
RESP_HDR_BITNUM,
CONTENT_BITNUM,
SUBSCRIBE_ID
};
enum tfe_http_event
{
EV_HTTP_IP = 1ULL << IP_BITNUM,
EV_HTTP_URL = 1ULL << URL_BITNUM,
2019-10-22 15:13:14 +08:00
EV_HTTP_FQDN = 1ULL << FQDN_BITNUM,
EV_HTTP_REQ_HDR = 1ULL << REQ_HDR_BITNUM,
EV_HTTP_RESP_HDR = 1ULL << RESP_HDR_BITNUM,
EV_HTTP_CONTENT = 1ULL << CONTENT_BITNUM,
EV_HTTP_SUBSCRIBE_ID = 1ULL << SUBSCRIBE_ID,
};
struct verify_policy_thread
2019-10-22 15:13:14 +08:00
{
int id;
pthread_t pid;
2019-10-22 15:13:14 +08:00
evutil_socket_t accept_fd;
pthread_attr_t *attr;
2019-10-22 15:13:14 +08:00
struct evhttp *http;
struct event_base *base;
void * (*routine)(void *);
2019-10-22 15:13:14 +08:00
};
struct verify_policy
{
char name[VERIFY_SYMBOL_MAX];
2019-10-22 15:13:14 +08:00
void * logger;
unsigned int log_level;
unsigned int nr_work_threads;
unsigned int listen_port;
2020-09-25 14:56:36 +08:00
struct breakpad_instance * breakpad;
2020-06-24 16:36:16 +08:00
struct verify_policy_thread *work_threads[VERIFY_ARRAY_MAX];
2019-10-22 15:13:14 +08:00
};
struct verify_policy_query_obj
{
int protocol_field;
char *keyword;
char *attri_name;
struct ipaddr *ip_addr;
char *subscriberid;
2020-10-16 09:56:39 +08:00
int nth_scan[8];
int nth_scan_num;
cJSON* attributes;
2020-10-16 09:56:39 +08:00
int category_user_num;
unsigned int category_id_user[8];
int category_built_num;
unsigned int category_id_built[8];
};
struct verify_policy_query
{
enum verify_policy_type type;
struct verify_policy_query_obj verify_object[32];
};
extern struct verify_policy * g_verify_proxy;
2019-10-22 15:13:14 +08:00
void * pangu_http_ctx_new(unsigned int thread_id);
void pangu_http_ctx_free(void * pme);
2020-01-17 10:59:34 +08:00
2020-10-13 19:17:39 +08:00
size_t verify_policy_scan(enum verify_policy_type policy_type, struct verify_policy_query_obj *query_obj, cJSON *data_obj, void *pme);
2020-10-16 09:56:39 +08:00
void http_get_scan_status(struct verify_policy_query_obj *query_obj, int type, cJSON *attributes, cJSON *data_obj, void *pme);
2020-01-17 10:59:34 +08:00
int security_policy_init(struct verify_policy * verify, const char* profile_path);
2019-10-22 15:13:14 +08:00
2021-01-28 18:42:19 +08:00
int wannat_policy_init(struct verify_policy * verify, const char* profile_path);
int http_hit_policy_list(enum verify_policy_type policy_type, size_t hit_cnt, cJSON *data_obj, void *pme);
2019-10-22 15:13:14 +08:00
#endif