Repository navigation
Expand file tree
/
Copy pathparams.h
More file actions
184 lines (155 loc) · 3.2 KB
/
Copy pathparams.h
File metadata and controls
184 lines (155 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#ifndef PARAMS_H
#define PARAMS_H
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#include <assert.h>
#ifdef _WIN32
#include <ws2tcpip.h>
#else
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/socket.h>
#endif
#include "mpool.h"
#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 DETECT_CONNECT 16
#define AUTO_ONRECONN 1
#define AUTO_NORECONN 2
#define AUTO_SORT 4
#define MODE_SOCKS5 1
#define MODE_SOCKS4 2
#define MODE_HTTP 4
#define MODE_TRANSPARENT 8
#define MODE_SHADOWSOCKS 16
#define MODE_RAWTLS 32
#define MODE_TCP 64
#define MODE_SOCKS (MODE_SOCKS4 | MODE_SOCKS5)
#define OUT_SUPPORT (MODE_SOCKS5 | MODE_TCP)
#define FM_RAND 1
#define FM_ORIG 2
enum demode {
DESYNC_NONE,
DESYNC_SPLIT,
DESYNC_DISORDER,
DESYNC_OOB,
DESYNC_DISOOB,
DESYNC_FAKE
};
#ifdef STR_MODE
static const char *demode_str[] = {
"DESYNC_NONE",
"DESYNC_SPLIT",
"DESYNC_DISORDER",
"DESYNC_OOB",
"DESYNC_DISOOB",
"DESYNC_FAKE"
};
#endif
union sockaddr_u {
struct sockaddr sa;
struct sockaddr_in in;
struct sockaddr_in6 in6;
};
struct part {
int m;
int flag;
long pos;
int r, s;
};
struct packet {
ssize_t size;
char *data;
ssize_t off;
};
struct desync_params {
int ttl;
bool md5sig;
struct packet fake_data;
int udp_fake_count;
struct part fake_offset;
int fake_sni_count;
const char **fake_sni_list;
int fake_mod;
int fake_tls_size;
bool drop_sack;
char oob_char[2];
int parts_n;
struct part *parts;
int mod_http;
int tlsrec_n;
struct part *tlsrec;
uint8_t tlsminor;
bool tlsminor_set;
int proto;
short detect;
short auto_level;
struct mphdr *hosts;
struct mphdr *ipset;
uint16_t pf[2];
int rounds[2];
uint16_t out_type;
union sockaddr_u out_addr;
int _optind;
int id;
uint64_t bit;
int fail_count;
int pri;
const char *str;
long cache_ttl;
const char *cache_file;
struct desync_params *prev;
struct desync_params *next;
};
struct params {
int dp_n;
struct desync_params *dp;
uint64_t dp_full_mask;
int await_int;
bool wait_send;
int def_ttl;
bool custom_ttl;
bool tfo;
unsigned int timeout, ptimeout;
int to_count_lim;
int to_bytes_lim;
char cache_pre;
int mode;
bool ipv6;
bool resolve;
bool udp;
bool delay_conn;
bool auto_reconnect;
int max_open;
int debug;
size_t bfsize;
union sockaddr_u baddr;
union sockaddr_u laddr;
struct mphdr *mempool;
char **need_free;
int need_free_n;
const char *protect_path;
bool daemonize;
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;
#define ASSERT(exp) \
char t[(exp) ? 1 : -1];
#endif