It supports reading the same parameters in the configuration file (such as strrep and regrep)
This commit is contained in:
parent
cb68da2b3c
commit
c0e238eb0c
16
13.txt
Executable file
16
13.txt
Executable file
@ -0,0 +1,16 @@
|
||||
==1384== Memcheck, a memory error detector
|
||||
==1384== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
|
||||
==1384== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
|
||||
==1384== Command: ./CProxy
|
||||
==1384== Parent PID: 74
|
||||
==1384==
|
||||
==1384== error calling PR_SET_PTRACER, vgdb might block
|
||||
==1384==
|
||||
==1384== HEAP SUMMARY:
|
||||
==1384== in use at exit: 0 bytes in 0 blocks
|
||||
==1384== total heap usage: 43 allocs, 43 frees, 10,762 bytes allocated
|
||||
==1384==
|
||||
==1384== All heap blocks were freed -- no leaks are possible
|
||||
==1384==
|
||||
==1384== For lists of detected and suppressed errors, rerun with: -s
|
||||
==1384== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
|
21
CProxy.conf
21
CProxy.conf
@ -9,25 +9,24 @@ global {
|
||||
}
|
||||
|
||||
http {
|
||||
http_ip="2001:19f0:4401:2f:5400:3ff:fec4:e376";
|
||||
http_port=127;
|
||||
http_ip="47.240.75.93";
|
||||
http_port=129;
|
||||
http_del="Host";
|
||||
http_first="[M] http://[host][U] [V]\r\nHost: [H]\r\n";
|
||||
strrep="Windows NT 10.0" -> "Linux";
|
||||
strrep="XiaoMi MIX 2S" -> "Linux";
|
||||
regrep="Host:*.+?" -> "Host: [host]:80";
|
||||
regrep="Host:*.+?" -> "host: [host]:80";
|
||||
strrep = "(Windows NT 10.0; Win64; x64)" -> "Android";
|
||||
regrep = "Host*.+?" -> "Host: [host]";
|
||||
}
|
||||
|
||||
https {
|
||||
https_ip="2001:19f0:4401:2f:5400:3ff:fec4:e376";
|
||||
https_port=127;
|
||||
https_port=129;
|
||||
https_del="Host,host,x-online-host";
|
||||
https_first="[M] [U] [V]\r\nHost: [host]\r\n";
|
||||
strrep = "Windows NT 10.0" -> "Linux1";
|
||||
strrep = "XiaoMi MIX 2S" -> "Linux2";
|
||||
regrep = "Host*.+?" -> "host: [host]:443";
|
||||
regrep = "Host*.+?" -> "Host: [host]:443";
|
||||
strrep = "HTTP/1.1" -> "HTTP/1.3";
|
||||
strrep = "HTTP/1.3" -> "HTTP/1.1";
|
||||
regrep = "host*.+?" -> "Host: [host]";
|
||||
regrep = "Host*.+?" -> "host: [host]";
|
||||
|
||||
}
|
||||
|
||||
httpdns {
|
||||
|
87
conf.c
87
conf.c
@ -221,6 +221,7 @@ static void parse_http_module(char *content, conf * p)
|
||||
int val_begin_len;
|
||||
tcp *http_node = NULL;
|
||||
char *p1 = NULL, *s = NULL, *t = NULL;
|
||||
char *p2 = NULL;
|
||||
|
||||
while ((lineEnd = set_var_val_lineEnd(content, &var, &val_begin, &val_end)) != NULL) {
|
||||
if (strcasecmp(var, "http_ip") == 0) {
|
||||
@ -248,10 +249,13 @@ static void parse_http_module(char *content, conf * p)
|
||||
return ;
|
||||
memset(http_node, 0, sizeof(struct tcp));
|
||||
http_node->strrep = strdup(val_begin);
|
||||
http_node->strrep_len = val_end - val_begin;
|
||||
|
||||
p1 = strstr(val_begin, "->");
|
||||
for (t = p1; *t != '"'; ++t) ;
|
||||
http_node->strrep_t = strdup(t + 1);
|
||||
p2 = strchr(t+1, '\0');
|
||||
http_node->strrep_t_len = p2 - (t + 1);
|
||||
|
||||
for (s = p1 - 1; *s == ' '; s--) {
|
||||
if (s == val_begin)
|
||||
@ -261,6 +265,7 @@ static void parse_http_module(char *content, conf * p)
|
||||
s--;
|
||||
|
||||
http_node->strrep_s = strndup(val_begin, s - val_begin + 1);
|
||||
http_node->strrep_s_len = s - val_begin + 1;
|
||||
|
||||
http_node->next = NULL;
|
||||
if (http_head == NULL) {
|
||||
@ -275,10 +280,13 @@ static void parse_http_module(char *content, conf * p)
|
||||
return ;
|
||||
memset(http_node, 0, sizeof(struct tcp));
|
||||
http_node->regrep = strdup(val_begin);
|
||||
http_node->regrep_len = val_end - val_begin;
|
||||
|
||||
p1 = strstr(val_begin, "->");
|
||||
for (t = p1; *t != '"'; ++t) ;
|
||||
http_node->regrep_t = strdup(t + 1);
|
||||
p2 = strchr(t+1, '\0');
|
||||
http_node->regrep_t_len = p2 - (t + 1);
|
||||
|
||||
for (s = p1 - 1; *s == ' '; s--) {
|
||||
if (s == val_begin)
|
||||
@ -288,6 +296,7 @@ static void parse_http_module(char *content, conf * p)
|
||||
s--;
|
||||
|
||||
http_node->regrep_s = strndup(val_begin, s - val_begin + 1);
|
||||
http_node->regrep_s_len = s - val_begin + 1;
|
||||
|
||||
http_node->next = NULL;
|
||||
if (http_head == NULL) {
|
||||
@ -308,6 +317,7 @@ static void parse_https_module(char *content, conf * p)
|
||||
int val_begin_len;
|
||||
tcp *https_node = NULL;
|
||||
char *p1 = NULL, *s = NULL, *t = NULL;
|
||||
char *p2 = NULL;
|
||||
|
||||
while ((lineEnd = set_var_val_lineEnd(content, &var, &val_begin, &val_end)) != NULL) {
|
||||
if (strcasecmp(var, "https_ip") == 0) {
|
||||
@ -336,10 +346,13 @@ static void parse_https_module(char *content, conf * p)
|
||||
return ;
|
||||
memset(https_node, 0, sizeof(struct tcp));
|
||||
https_node->strrep = strdup(val_begin);
|
||||
https_node->strrep_len = val_end - val_begin;
|
||||
|
||||
p1 = strstr(val_begin, "->");
|
||||
for (t = p1; *t != '"'; ++t) ;
|
||||
https_node->strrep_t = strdup(t + 1);
|
||||
p2 = strchr(t+1, '\0');
|
||||
https_node->strrep_t_len = p2 - (t + 1);
|
||||
|
||||
for (s = p1 - 1; *s == ' '; s--) {
|
||||
if (s == val_begin)
|
||||
@ -349,13 +362,18 @@ static void parse_https_module(char *content, conf * p)
|
||||
s--;
|
||||
|
||||
https_node->strrep_s = strndup(val_begin, s - val_begin + 1);
|
||||
https_node->strrep_s_len = s - val_begin + 1;
|
||||
|
||||
https_node->next = NULL;
|
||||
|
||||
if (https_head == NULL) {
|
||||
https_head = https_node;
|
||||
} else {
|
||||
https_node->next = https_head;
|
||||
https_head = https_node;
|
||||
//https_node->next = https_head;
|
||||
//https_head = https_node;
|
||||
|
||||
https_node->next = https_head->next;
|
||||
https_head->next = https_node;
|
||||
}
|
||||
} else if (strcasecmp(var, "regrep") == 0) {
|
||||
https_node = (tcp *) malloc(sizeof(struct tcp));
|
||||
@ -363,10 +381,13 @@ static void parse_https_module(char *content, conf * p)
|
||||
return ;
|
||||
memset(https_node, 0, sizeof(struct tcp));
|
||||
https_node->regrep = strdup(val_begin);
|
||||
https_node->regrep_len = val_end - val_begin;
|
||||
|
||||
p1 = strstr(val_begin, "->");
|
||||
for (t = p1; *t != '"'; ++t) ;
|
||||
https_node->regrep_t = strdup(t + 1);
|
||||
p2 = strchr(t+1, '\0');
|
||||
https_node->regrep_t_len = p2 - (t + 1);
|
||||
|
||||
for (s = p1 - 1; *s == ' '; s--) {
|
||||
if (s == val_begin)
|
||||
@ -376,6 +397,7 @@ static void parse_https_module(char *content, conf * p)
|
||||
s--;
|
||||
|
||||
https_node->regrep_s = strndup(val_begin, s - val_begin + 1);
|
||||
https_node->regrep_s_len = s - val_begin + 1;
|
||||
|
||||
https_node->next = NULL;
|
||||
if (https_head == NULL) {
|
||||
@ -383,6 +405,9 @@ static void parse_https_module(char *content, conf * p)
|
||||
} else {
|
||||
https_node->next = https_head;
|
||||
https_head = https_node;
|
||||
|
||||
//https_node->next = https_head->next;
|
||||
//https_head->next = https_node;
|
||||
}
|
||||
}
|
||||
|
||||
@ -390,56 +415,54 @@ static void parse_https_module(char *content, conf * p)
|
||||
}
|
||||
}
|
||||
|
||||
// 打印链表
|
||||
// 打印tcp链表
|
||||
void print_tcp(tcp * p)
|
||||
{
|
||||
tcp *temp = p;
|
||||
while (temp) {
|
||||
if (temp->strrep)
|
||||
;//printf("%s\n", temp->strrep);
|
||||
printf("%s %d\n", temp->strrep, temp->strrep_len);
|
||||
if (temp->strrep_s)
|
||||
printf("%s\n", temp->strrep_s);
|
||||
printf("%s %d\n", temp->strrep_s, temp->strrep_s_len);
|
||||
if (temp->strrep_t)
|
||||
printf("%s\n", temp->strrep_t);
|
||||
printf("%s %d\n", temp->strrep_t, temp->strrep_t_len);
|
||||
|
||||
if (temp->regrep)
|
||||
;//printf("%s\n", temp->regrep);
|
||||
printf("%s %d\n", temp->regrep, temp->regrep_len);
|
||||
if (temp->regrep_s)
|
||||
printf("%s\n", temp->regrep_s);
|
||||
printf("%s %d\n", temp->regrep_s, temp->regrep_s_len);
|
||||
if (temp->regrep_t)
|
||||
printf("%s\n", temp->regrep_t);
|
||||
printf("%s %d\n", temp->regrep_t, temp->regrep_t_len);
|
||||
|
||||
temp = temp->next;
|
||||
}
|
||||
}
|
||||
|
||||
// free链表
|
||||
void free_tcp(tcp * p)
|
||||
// Free tcp 链表
|
||||
void free_tcp(tcp **conf_head)
|
||||
{
|
||||
while (p) {
|
||||
tcp *temp = p;
|
||||
tcp *t;
|
||||
while(*conf_head != NULL)
|
||||
{
|
||||
t=*conf_head;
|
||||
*conf_head=t->next;
|
||||
|
||||
if (temp->strrep)
|
||||
free(temp->strrep);
|
||||
if (temp->strrep_s)
|
||||
free(temp->strrep_s);
|
||||
if (temp->strrep_t)
|
||||
free(temp->strrep_t);
|
||||
|
||||
if (temp->regrep)
|
||||
free(temp->regrep);
|
||||
if (temp->regrep_s)
|
||||
free(temp->regrep_s);
|
||||
if (temp->regrep_t)
|
||||
free(temp->regrep_t);
|
||||
if (t->strrep)
|
||||
free(t->strrep);
|
||||
if (t->strrep_s)
|
||||
free(t->strrep_s);
|
||||
if (t->strrep_t)
|
||||
free(t->strrep_t);
|
||||
|
||||
if (temp)
|
||||
free(temp);
|
||||
|
||||
p = p->next;
|
||||
if (t->regrep)
|
||||
free(t->regrep);
|
||||
if (t->regrep_s)
|
||||
free(t->regrep_s);
|
||||
if (t->regrep_t)
|
||||
free(t->regrep_t);
|
||||
if (t)
|
||||
free(t);
|
||||
}
|
||||
free(p);
|
||||
|
||||
}
|
||||
|
||||
static void parse_httpdns_module(char *content, conf * p)
|
||||
|
7
conf.h
7
conf.h
@ -45,10 +45,14 @@ typedef struct CONF {
|
||||
|
||||
typedef struct tcp {
|
||||
char *strrep;
|
||||
int strrep_len;
|
||||
char *strrep_s, *strrep_t;
|
||||
int strrep_s_len, strrep_t_len;
|
||||
|
||||
char *regrep;
|
||||
int regrep_len;
|
||||
char *regrep_s, *regrep_t;
|
||||
int regrep_s_len, regrep_t_len;
|
||||
|
||||
struct tcp *next;
|
||||
} tcp;
|
||||
@ -59,7 +63,8 @@ extern tcp *http_node;
|
||||
extern tcp *https_head;
|
||||
extern tcp *https_node;
|
||||
extern void print_tcp(tcp *p);
|
||||
extern void free_tcp(tcp *p);
|
||||
extern void free_tcp(tcp **p);
|
||||
|
||||
|
||||
char *strncpy_(char *dest, const char *src, size_t n);
|
||||
void read_conf(char *file, conf *p);
|
||||
|
@ -336,6 +336,7 @@ void tcp_in(conn_t * in, conf * configure)
|
||||
if (request_type(in->incomplete_data) == HTTP_TYPE) {
|
||||
in->incomplete_data = request_head(in, configure);
|
||||
server->fd = create_connection6(remote_host, remote_port);
|
||||
|
||||
if (server->fd < 0)
|
||||
printf("remote->fd ERROR!\n");
|
||||
fcntl(server->fd, F_SETFL, O_NONBLOCK);
|
||||
|
BIN
http_proxy.o
BIN
http_proxy.o
Binary file not shown.
126
http_request.c
126
http_request.c
@ -212,9 +212,11 @@ int extract_host(char *header, char *host, char *port)
|
||||
} else {
|
||||
|
||||
char *p = strstr(header, "Host:");
|
||||
if (!p) {
|
||||
char *p0 = strstr(header, "host:");
|
||||
if (!p && !p0) { // 都为空的时候返回 -1
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *p1 = strchr(p, '\n');
|
||||
if (!p1) {
|
||||
return -1;
|
||||
@ -229,54 +231,55 @@ int extract_host(char *header, char *host, char *port)
|
||||
char *p4 = NULL;
|
||||
if (p3)
|
||||
p4 = strchr(p3 + 1, ':');
|
||||
{ // IPV6
|
||||
if (p4 != NULL) {
|
||||
char *p5 = NULL;
|
||||
char *p6 = NULL;
|
||||
p5 = strchr(header, ' ');
|
||||
if (p5)
|
||||
p6 = strchr(p5 + 1, ' ');
|
||||
|
||||
if (p4 != NULL) { // IPV6
|
||||
char *p5 = NULL;
|
||||
char *p6 = NULL;
|
||||
p5 = strchr(header, ' ');
|
||||
if (p5)
|
||||
p6 = strchr(p5 + 1, ' ');
|
||||
char url[p6 - p5 - 1];
|
||||
memset(url, 0, p6 - p5 - 1);
|
||||
strncpy(url, p5 + 1, p6 - p5 - 1);
|
||||
url[p6 - p5 - 1] = '\0';
|
||||
|
||||
char url[p6 - p5 - 1];
|
||||
memset(url, 0, p6 - p5 - 1);
|
||||
strncpy(url, p5 + 1, p6 - p5 - 1);
|
||||
url[p6 - p5 - 1] = '\0';
|
||||
if (strstr(url, "http") != NULL) { // 去除 'http://'
|
||||
memcpy(url, url + 7, strlen(url) - 7);
|
||||
url[strlen(url) - 7] = '\0';
|
||||
char *p7 = strchr(url, '/');
|
||||
if (p7) // 去除 uri
|
||||
url[p7 - url] = '\0';
|
||||
|
||||
if (strstr(url, "http") != NULL) { // 去除 'http://'
|
||||
memcpy(url, url + 7, strlen(url) - 7);
|
||||
url[strlen(url) - 7] = '\0';
|
||||
char *p7 = strchr(url, '/');
|
||||
if (p7) // 去除 uri
|
||||
url[p7 - url] = '\0';
|
||||
|
||||
char *p8 = strchr(url, ']');
|
||||
if (p8) {
|
||||
strcpy(port, p8 + 2);
|
||||
strncpy(host, url + 1, strlen(url) - strlen(p8) - 1);
|
||||
|
||||
if (strlen(p8) < 3) {
|
||||
strcpy(port, "80");
|
||||
char *p8 = strchr(url, ']');
|
||||
if (p8) {
|
||||
strcpy(port, p8 + 2);
|
||||
strncpy(host, url + 1, strlen(url) - strlen(p8) - 1);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} else { // HTTP头为不规范的url时处理Host, 主要Proxifier转发url为'/'时
|
||||
//printf("s_host: %s\n", s_host);
|
||||
char *_p1 = strchr(s_host, '[');
|
||||
char *_p2 = strchr(_p1 + 1, ']');
|
||||
if (_p1 && _p2) {
|
||||
memcpy(host, _p1 + 1, _p2 - _p1 - 1);
|
||||
if (strlen(_p2) < 3) {
|
||||
strcpy(port, "80");
|
||||
} else {
|
||||
strcpy(port, _p2 + 2);
|
||||
}
|
||||
|
||||
if (strlen(p8) < 3) {
|
||||
strcpy(port, "80");
|
||||
strncpy(host, url + 1, strlen(url) - strlen(p8) - 1);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} else { // HTTP头为不规范的url时处理Host, 主要Proxifier转发url为'/'时
|
||||
//printf("s_host: %s\n", s_host);
|
||||
char *_p1 = strchr(s_host, '[');
|
||||
char *_p2 = strchr(_p1 + 1, ']');
|
||||
if (_p1 && _p2) {
|
||||
memcpy(host, _p1 + 1, _p2 - _p1 - 1);
|
||||
if (strlen(_p2) < 3) {
|
||||
strcpy(port, "80");
|
||||
} else {
|
||||
strcpy(port, _p2 + 2);
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (p2 && p2 < p1) {
|
||||
@ -492,8 +495,28 @@ void parse_request_head(char *http_request_line, struct http_request *http_reque
|
||||
return;
|
||||
}
|
||||
|
||||
char *conf_handle(char *str, int str_len, tcp *p)
|
||||
{
|
||||
|
||||
while (p) {
|
||||
if (p->strrep) {
|
||||
str = replace(str, &str_len, p->strrep_s, p->strrep_s_len, p->strrep_t, p->strrep_t_len);
|
||||
}
|
||||
|
||||
if (p->regrep) {
|
||||
str = regrep(str, &str_len, p->regrep_s, p->regrep_t, p->regrep_t_len);
|
||||
}
|
||||
|
||||
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
char *request_head(conn_t * in, conf * configure)
|
||||
{
|
||||
|
||||
struct http_request *http_request;
|
||||
http_request = (struct http_request *)malloc(sizeof(struct http_request));
|
||||
memset(http_request, 0, sizeof(struct http_request));
|
||||
@ -525,6 +548,7 @@ char *request_head(conn_t * in, conf * configure)
|
||||
delete_head(incomplete_head, result, '\n');
|
||||
result = strtok(NULL, ",");
|
||||
}
|
||||
|
||||
splice_head(incomplete_head, "\n", configure->https_first);
|
||||
incomplete_head_len = strlen(incomplete_head);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "\\r", 2, "\r", 1);
|
||||
@ -544,12 +568,9 @@ char *request_head(conn_t * in, conf * configure)
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[host]", 6, http_request->host, http_request->host_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[port]", 6, http_request->port, http_request->port_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[H]", 3, http_request->H, http_request->H_len);
|
||||
/*
|
||||
if (configure->https_strrep)
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, configure->https_strrep_aim, configure->https_strrep_aim_len, configure->https_strrep_obj, configure->https_strrep_obj_len);
|
||||
if (configure->https_regrep)
|
||||
incomplete_head = regrep(incomplete_head, &incomplete_head_len, configure->https_regrep_aim, configure->https_regrep_obj, configure->https_regrep_obj_len);
|
||||
*/
|
||||
|
||||
incomplete_head = conf_handle(incomplete_head, incomplete_head_len, https_head);
|
||||
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[H]", 3, http_request->H, http_request->H_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[host]", 6, http_request->host, http_request->host_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[port]", 6, http_request->port, http_request->port_len);
|
||||
@ -609,12 +630,9 @@ char *request_head(conn_t * in, conf * configure)
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[host]", 6, http_request->host, http_request->host_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[port]", 6, http_request->port, http_request->port_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[H]", 3, http_request->H, http_request->H_len);
|
||||
/*
|
||||
if (configure->http_strrep)
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, configure->http_strrep_aim, configure->http_strrep_aim_len, configure->http_strrep_obj, configure->http_strrep_obj_len);
|
||||
if (configure->http_regrep)
|
||||
incomplete_head = regrep(incomplete_head, &incomplete_head_len, configure->http_regrep_aim, configure->http_regrep_obj, configure->http_regrep_obj_len);
|
||||
*/
|
||||
|
||||
incomplete_head = conf_handle(incomplete_head, incomplete_head_len, http_head);
|
||||
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[host]", 6, http_request->host, http_request->host_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[port]", 6, http_request->port, http_request->port_len);
|
||||
incomplete_head = replace(incomplete_head, &incomplete_head_len, "[H]", 3, http_request->H, http_request->H_len);
|
||||
|
BIN
http_request.o
BIN
http_request.o
Binary file not shown.
BIN
libs/arm64-v8a/CProxy
Executable file
BIN
libs/arm64-v8a/CProxy
Executable file
Binary file not shown.
BIN
libs/armeabi-v7a/CProxy
Executable file
BIN
libs/armeabi-v7a/CProxy
Executable file
Binary file not shown.
17
main.c
17
main.c
@ -456,11 +456,16 @@ void _main(int argc, char *argv[])
|
||||
memset(configure, 0, sizeof(struct CONF));
|
||||
read_conf(inifile, configure);
|
||||
|
||||
/*
|
||||
print_tcp(https_head);
|
||||
free_tcp(https_head);
|
||||
print_tcp(http_head);
|
||||
free_tcp(http_head);
|
||||
//exit(0);
|
||||
free_tcp(&https_head);
|
||||
//print_tcp(http_head);
|
||||
free_tcp(&http_head);
|
||||
free_conf(configure);
|
||||
free(configure);
|
||||
exit(0);
|
||||
*/
|
||||
|
||||
|
||||
sslEncodeCode = 0; // 默认SSL不转码
|
||||
if (configure->sslencoding > 0) // 如果配置文件有sslencoding值,优先使用配置文件读取的值
|
||||
@ -514,6 +519,8 @@ void _main(int argc, char *argv[])
|
||||
process = atoi(optarg);
|
||||
break;
|
||||
case 'c':
|
||||
free_tcp(&https_head);
|
||||
free_tcp(&http_head);
|
||||
free_conf(configure);
|
||||
memset(configure, 0, sizeof(struct CONF));
|
||||
read_conf(optarg, configure);
|
||||
@ -559,7 +566,7 @@ void _main(int argc, char *argv[])
|
||||
return;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[], char **env)
|
||||
int main(int argc, char *argv[], char **envp)
|
||||
{
|
||||
_main(argc, argv);
|
||||
return 0;
|
||||
|
BIN
obj/local/arm64-v8a/CProxy
Executable file
BIN
obj/local/arm64-v8a/CProxy
Executable file
Binary file not shown.
BIN
obj/local/arm64-v8a/objs/CProxy/conf.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/conf.o
Executable file
Binary file not shown.
3
obj/local/arm64-v8a/objs/CProxy/conf.o.d
Executable file
3
obj/local/arm64-v8a/objs/CProxy/conf.o.d
Executable file
@ -0,0 +1,3 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/conf.o: conf.c conf.h
|
||||
|
||||
conf.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/help.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/help.o
Executable file
Binary file not shown.
3
obj/local/arm64-v8a/objs/CProxy/help.o.d
Executable file
3
obj/local/arm64-v8a/objs/CProxy/help.o.d
Executable file
@ -0,0 +1,3 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/help.o: help.c help.h
|
||||
|
||||
help.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/http_proxy.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/http_proxy.o
Executable file
Binary file not shown.
8
obj/local/arm64-v8a/objs/CProxy/http_proxy.o.d
Executable file
8
obj/local/arm64-v8a/objs/CProxy/http_proxy.o.d
Executable file
@ -0,0 +1,8 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/http_proxy.o: http_proxy.c http_proxy.h \
|
||||
conf.h main.h
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/http_request.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/http_request.o
Executable file
Binary file not shown.
10
obj/local/arm64-v8a/objs/CProxy/http_request.o.d
Executable file
10
obj/local/arm64-v8a/objs/CProxy/http_request.o.d
Executable file
@ -0,0 +1,10 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/http_request.o: http_request.c \
|
||||
http_request.h http_proxy.h conf.h main.h
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/httpdns.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/httpdns.o
Executable file
Binary file not shown.
12
obj/local/arm64-v8a/objs/CProxy/httpdns.o.d
Executable file
12
obj/local/arm64-v8a/objs/CProxy/httpdns.o.d
Executable file
@ -0,0 +1,12 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/httpdns.o: httpdns.c httpdns.h main.h \
|
||||
http_request.h http_proxy.h conf.h
|
||||
|
||||
httpdns.h:
|
||||
|
||||
main.h:
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/httpudp.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/httpudp.o
Executable file
Binary file not shown.
12
obj/local/arm64-v8a/objs/CProxy/httpudp.o.d
Executable file
12
obj/local/arm64-v8a/objs/CProxy/httpudp.o.d
Executable file
@ -0,0 +1,12 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/httpudp.o: httpudp.c http_request.h \
|
||||
http_proxy.h conf.h main.h httpudp.h
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
||||
|
||||
httpudp.h:
|
BIN
obj/local/arm64-v8a/objs/CProxy/main.o
Executable file
BIN
obj/local/arm64-v8a/objs/CProxy/main.o
Executable file
Binary file not shown.
16
obj/local/arm64-v8a/objs/CProxy/main.o.d
Executable file
16
obj/local/arm64-v8a/objs/CProxy/main.o.d
Executable file
@ -0,0 +1,16 @@
|
||||
./obj/local/arm64-v8a/objs/CProxy/main.o: main.c main.h http_proxy.h \
|
||||
conf.h http_request.h httpdns.h httpudp.h help.h
|
||||
|
||||
main.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
http_request.h:
|
||||
|
||||
httpdns.h:
|
||||
|
||||
httpudp.h:
|
||||
|
||||
help.h:
|
BIN
obj/local/armeabi-v7a/CProxy
Executable file
BIN
obj/local/armeabi-v7a/CProxy
Executable file
Binary file not shown.
BIN
obj/local/armeabi-v7a/objs/CProxy/conf.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/conf.o
Executable file
Binary file not shown.
3
obj/local/armeabi-v7a/objs/CProxy/conf.o.d
Executable file
3
obj/local/armeabi-v7a/objs/CProxy/conf.o.d
Executable file
@ -0,0 +1,3 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/conf.o: conf.c conf.h
|
||||
|
||||
conf.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/help.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/help.o
Executable file
Binary file not shown.
3
obj/local/armeabi-v7a/objs/CProxy/help.o.d
Executable file
3
obj/local/armeabi-v7a/objs/CProxy/help.o.d
Executable file
@ -0,0 +1,3 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/help.o: help.c help.h
|
||||
|
||||
help.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/http_proxy.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/http_proxy.o
Executable file
Binary file not shown.
8
obj/local/armeabi-v7a/objs/CProxy/http_proxy.o.d
Executable file
8
obj/local/armeabi-v7a/objs/CProxy/http_proxy.o.d
Executable file
@ -0,0 +1,8 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/http_proxy.o: http_proxy.c \
|
||||
http_proxy.h conf.h main.h
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/http_request.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/http_request.o
Executable file
Binary file not shown.
10
obj/local/armeabi-v7a/objs/CProxy/http_request.o.d
Executable file
10
obj/local/armeabi-v7a/objs/CProxy/http_request.o.d
Executable file
@ -0,0 +1,10 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/http_request.o: http_request.c \
|
||||
http_request.h http_proxy.h conf.h main.h
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/httpdns.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/httpdns.o
Executable file
Binary file not shown.
12
obj/local/armeabi-v7a/objs/CProxy/httpdns.o.d
Executable file
12
obj/local/armeabi-v7a/objs/CProxy/httpdns.o.d
Executable file
@ -0,0 +1,12 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/httpdns.o: httpdns.c httpdns.h main.h \
|
||||
http_request.h http_proxy.h conf.h
|
||||
|
||||
httpdns.h:
|
||||
|
||||
main.h:
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/httpudp.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/httpudp.o
Executable file
Binary file not shown.
12
obj/local/armeabi-v7a/objs/CProxy/httpudp.o.d
Executable file
12
obj/local/armeabi-v7a/objs/CProxy/httpudp.o.d
Executable file
@ -0,0 +1,12 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/httpudp.o: httpudp.c http_request.h \
|
||||
http_proxy.h conf.h main.h httpudp.h
|
||||
|
||||
http_request.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
main.h:
|
||||
|
||||
httpudp.h:
|
BIN
obj/local/armeabi-v7a/objs/CProxy/main.o
Executable file
BIN
obj/local/armeabi-v7a/objs/CProxy/main.o
Executable file
Binary file not shown.
16
obj/local/armeabi-v7a/objs/CProxy/main.o.d
Executable file
16
obj/local/armeabi-v7a/objs/CProxy/main.o.d
Executable file
@ -0,0 +1,16 @@
|
||||
./obj/local/armeabi-v7a/objs/CProxy/main.o: main.c main.h http_proxy.h \
|
||||
conf.h http_request.h httpdns.h httpudp.h help.h
|
||||
|
||||
main.h:
|
||||
|
||||
http_proxy.h:
|
||||
|
||||
conf.h:
|
||||
|
||||
http_request.h:
|
||||
|
||||
httpdns.h:
|
||||
|
||||
httpudp.h:
|
||||
|
||||
help.h:
|
Loading…
Reference in New Issue
Block a user