#ifndef PARAMS_H #define PARAMS_H #include #include #include #include "mpool.h" #ifdef _WIN32 #include #else #include #include #include #include #endif #if defined(__linux__) || defined(_WIN32) #define FAKE_SUPPORT 1 #define TIMEOUT_SUPPORT 1 #endif #define OFFSET_END 1 #define OFFSET_MID 2 #define OFFSET_RAND 4 #define OFFSET_SNI 8 #define OFFSET_HOST 16 #define OFFSET_START 32 #define DETECT_HTTP_LOCAT 1 #define DETECT_TLS_ERR 2 #define DETECT_TORST 8 #define AUTO_NOBUFF -1 #define AUTO_NOSAVE 0 enum demode { DESYNC_NONE, DESYNC_SPLIT, DESYNC_DISORDER, DESYNC_OOB, DESYNC_DISOOB, DESYNC_FAKE }; #ifdef STR_MODE char *demode_str[] = { "DESYNC_NONE", "DESYNC_SPLIT", "DESYNC_DISORDER", "DESYNC_OOB", "DESYNC_DISOOB", "DESYNC_FAKE" }; #endif struct part { int m; int flag; long pos; int r, s; }; struct packet { ssize_t size; char *data; }; struct desync_params { int ttl; char *ip_options; ssize_t ip_options_len; bool md5sig; struct packet fake_data; int udp_fake_count; int fake_offset; bool drop_sack; char oob_char[2]; int parts_n; struct part *parts; int mod_http; int tlsrec_n; struct part *tlsrec; int proto; int detect; struct mphdr *hosts; uint16_t pf[2]; int rounds[2]; char *file_ptr; ssize_t file_size; }; struct params { int dp_count; struct desync_params *dp; bool wait_send; int def_ttl; bool custom_ttl; bool tfo; unsigned int timeout; int auto_level; long cache_ttl; bool ipv6; bool resolve; bool udp; int max_open; int debug; size_t bfsize; struct sockaddr_in6 baddr; struct sockaddr_in6 laddr; bool transparent; struct mphdr *mempool; const char *protect_path; const char *pid_file; int pid_fd; }; extern struct params params; extern struct packet fake_tls; extern struct packet fake_http; extern struct packet fake_udp; extern char ip_option[1]; #endif