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

174 lines
4.2 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 <log.h>
2019-10-22 15:13:14 +08:00
#include "verify_policy_utils.h"
2020-09-25 14:56:36 +08:00
struct breakpad_instance;
2023-03-30 19:50:00 +08:00
#define VSYS_ID_MAX 255
enum verify_type
{
VERIFY_TYPE_POLICY,
VERIFY_TYPE_REGEX
};
2023-03-30 19:50:00 +08:00
enum compile_table_typle
2020-01-17 10:59:34 +08:00
{
TSG_TABLE_SECURITY,
2020-01-17 10:59:34 +08:00
PXY_TABLE_MANIPULATION,
TSG_TRAFFIC_SHAPING,
TSG_SERVICE_CHAINGNG,
PXY_TABLE_INTERCEPT,
TSG_STATISTICS,
TSG_MONITOR,
DOS_PROTECTION,
TSG_TUNNEL,
2023-03-30 19:50:00 +08:00
PXY_TABLE_DEFENCE,
2020-01-17 10:59:34 +08:00
__SCAN_POLICY_MAX
};
enum tsg_obj_table
2021-01-28 18:42:19 +08:00
{
TSG_OBJ_SOURCE_ADDR,
TSG_OBJ_DESTINATION_ADDR,
TSG_OBJ_SUBSCRIBE_ID,
TSG_OBJ_APP_ID,
TSG_OBJ_HTTP_URL,
TSG_OBJ_HTTP_REQ_HDR,
TSG_OBJ_HTTP_REQ_BODY,
TSG_OBJ_HTTP_RES_HDR,
TSG_OBJ_HTTP_RES_BODY,
TSG_OBJ_SSL_CN,
TSG_OBJ_SSL_CN_CAT,
TSG_OBJ_SSL_SAN,
TSG_OBJ_SSL_SAN_CAT,
TSG_OBJ_DOH_QNAME,
TSG_OBJ_DNS_QNAME,
TSG_OBJ_MAIL_ACCOUNT,
TSG_OBJ_MAIL_FROM,
TSG_OBJ_MAIL_TO,
TSG_OBJ_MAIL_SUBJECT,
TSG_OBJ_MAIL_CONTENT,
TSG_OBJ_MAIL_ATT_NAME,
TSG_OBJ_MAIL_ATT_CONTENT,
TSG_OBJ_FTP_URI,
TSG_OBJ_FTP_CONTENT,
TSG_OBJ_FTP_ACCOUNT,
TSG_OBJ_SIP_FROM,
TSG_OBJ_SIP_TO,
TSG_OBJ_IMSI,
TSG_OBJ_PHONE_NUMBER,
TSG_OBJ_APN,
TSG_OBJ_TUNNEL,
TSG_OBJ_FLAG,
2023-10-31 14:21:20 +08:00
TSG_OBJ_GTP_IMEI,
TSG_OBJ_IP_SRC_ASN,
TSG_OBJ_IP_DST_ASN,
TSG_OBJ_IP_SRC_GEO_COUNTRY,
TSG_OBJ_IP_SRC_GEO_SUPER_ADMINISTRATIVE_AREA,
TSG_OBJ_IP_SRC_GEO_ADMINISTRATIVE_AREA,
TSG_OBJ_IP_SRC_GEO_SUB_ADMINISTRATIVE_AREA,
TSG_OBJ_IP_DST_GEO_COUNTRY,
TSG_OBJ_IP_DST_GEO_SUPER_ADMINISTRATIVE_AREA,
TSG_OBJ_IP_DST_GEO_ADMINISTRATIVE_AREA,
TSG_OBJ_IP_DST_GEO_SUB_ADMINISTRATIVE_AREA,
TSG_OBJ_DST_SERVER_FQDN,
TSG_OBJ_DST_SERVER_FQDN_CAT,
TSG_OBJ_INTERNAL_ADDR,
TSG_OBJ_EXTERNAL_ADDR,
TSG_OBJ_SOURCE_PORT,
TSG_OBJ_DESTINATION_PORT,
TSG_OBJ_INTERNAL_PORT,
TSG_OBJ_EXTERNAL_PORT,
TSG_OBJ_IP_PROTOCOL,
TSG_OBJ_SSL_ECH,
TSG_OBJ_SSL_ESNI,
TSG_OBJ_SSL_NO_SNI,
TSG_OBJ_TUNNEL_LEVEL,
TSG_OBJ_INTERNAL_ASN,
TSG_OBJ_EXTERNAL_ASN,
TSG_OBJ_TUNNEL_GTP_ENDPOINT,
TSG_OBJ_TUNNEL_GRE_ENDPOINT,
TSG_OBJ_TUNNEL_IP_IN_IP_ENDPOINT,
__TSG_OBJ_MAX
2020-01-17 10:59:34 +08:00
};
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];
struct log_handle *logger;
2019-10-22 15:13:14 +08:00
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 fqdn_category_id
{
int fqdn_cat_num;
long long int group_id[8];
};
#define MERGE_SCAN_NTH 128
2023-03-30 19:50:00 +08:00
struct request_query_obj
{
2023-03-30 19:50:00 +08:00
int table_id;
int numeric;
char *string;
char *district;
char *attri_name;
struct ipaddr *ip_addr;
char *subscriberid;
char *tunnel_type;
int merge_nth_scan_num;
int exclude_nth_scan[MERGE_SCAN_NTH];
int merge_nth_scan[MERGE_SCAN_NTH];
cJSON* attributes;
struct fqdn_category_id fqdn_user;
struct fqdn_category_id fqdn_builtin;
};
struct verify_policy_query
{
int vsys_id;
int compile_table_id;
struct request_query_obj request_object[32];
};
extern struct verify_policy * g_verify_proxy;
2019-10-22 15:13:14 +08:00
void *policy_scan_ctx_new(unsigned int thread_id, int vsys_id, int compile_table_id);
void policy_scan_ctx_free(void * pme);
size_t policy_verify_scan(int vsys_id, int compile_table_id, struct request_query_obj *query_obj, void *pme);
2023-03-30 19:50:00 +08:00
void http_get_scan_status(struct request_query_obj *query_obj, int type, cJSON *attributes, cJSON *data_obj, void *pme);
int maat_table_init(struct verify_policy * verify, const char* profile_path);
int http_hit_policy_list(struct verify_policy_query *verify_policy, int num, size_t hit_cnt, cJSON *data_obj, void *pme);
void verify_policy_tunnle_add(void * pme);
int policy_verify_regex_expression(const char *expression);
void verify_reload_loglevel();
2019-10-22 15:13:14 +08:00
#endif