From cb68da2b3c070ab58a20d820aebd9b5d24f66ac0 Mon Sep 17 00:00:00 2001 From: aixiao Date: Sun, 2 Jan 2022 18:36:09 +0800 Subject: [PATCH] Support the same configuration name in the configuration file (still under test). --- CProxy | Bin 0 -> 183480 bytes CProxy.conf | 16 ++-- README.md | 4 +- conf.c | 251 +++++++++++++++++++++++++++++-------------------- conf.h | 38 ++++---- conf.o | Bin 0 -> 51712 bytes help.o | Bin 0 -> 9944 bytes http_proxy.o | Bin 0 -> 34656 bytes http_request.c | 4 + http_request.o | Bin 0 -> 90032 bytes httpdns.o | Bin 0 -> 53216 bytes httpudp.o | Bin 0 -> 39216 bytes main.c | 163 ++++++++++++++------------------ main.o | Bin 0 -> 71672 bytes 14 files changed, 252 insertions(+), 224 deletions(-) create mode 100755 CProxy create mode 100755 conf.o create mode 100755 help.o create mode 100755 http_proxy.o create mode 100755 http_request.o create mode 100755 httpdns.o create mode 100755 httpudp.o create mode 100755 main.o diff --git a/CProxy b/CProxy new file mode 100755 index 0000000000000000000000000000000000000000..2be3d687c04737b2a2219670edf7a214eb1111d5 GIT binary patch literal 183480 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 G&i@C0q(4Rg literal 0 HcmV?d00001 diff --git a/CProxy.conf b/CProxy.conf index 1d1a7e6..d19903d 100755 --- a/CProxy.conf +++ b/CProxy.conf @@ -9,21 +9,25 @@ global { } http { - http_ip="47.240.75.93"; + http_ip="2001:19f0:4401:2f:5400:3ff:fec4:e376"; http_port=127; http_del="Host"; http_first="[M] http://[host][U] [V]\r\nHost: [H]\r\n"; - //strrep="Windows NT 10.0->Linux"; - //regrep="Host:*.+?->Host: [host]:80"; + strrep="Windows NT 10.0" -> "Linux"; + strrep="XiaoMi MIX 2S" -> "Linux"; + regrep="Host:*.+?" -> "Host: [host]:80"; + regrep="Host:*.+?" -> "host: [host]:80"; } https { - https_ip="47.240.75.93"; + https_ip="2001:19f0:4401:2f:5400:3ff:fec4:e376"; https_port=127; https_del="Host,host,x-online-host"; https_first="[M] [U] [V]\r\nHost: [host]\r\n"; - //strrep="Windows NT 10.0->Linux"; - //regrep="Host*.+?->host: [host]:443"; + strrep = "Windows NT 10.0" -> "Linux1"; + strrep = "XiaoMi MIX 2S" -> "Linux2"; + regrep = "Host*.+?" -> "host: [host]:443"; + regrep = "Host*.+?" -> "Host: [host]:443"; } httpdns { diff --git a/README.md b/README.md index 950c055..f223cf6 100755 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ 可以修改HTTP协议消息头(request). 可以修改HTTP协议CONNECT方法消息头. 可以修改HTTP协议GET方法消息头. - httptcp支持IPV4/IPV6. - 支持httpdns、httpudp代理 + HttpTCP支持IPV4/IPV6. + 支持HttpDNS、HttpUDP代理 ## Build diff --git a/conf.c b/conf.c index cfa905b..5085052 100755 --- a/conf.c +++ b/conf.c @@ -219,6 +219,8 @@ static void parse_http_module(char *content, conf * p) { char *var, *val_begin, *val_end, *lineEnd; int val_begin_len; + tcp *http_node = NULL; + char *p1 = NULL, *s = NULL, *t = NULL; while ((lineEnd = set_var_val_lineEnd(content, &var, &val_begin, &val_end)) != NULL) { if (strcasecmp(var, "http_ip") == 0) { @@ -241,53 +243,59 @@ static void parse_http_module(char *content, conf * p) memcpy(p->http_first, val_begin, val_begin_len); p->http_first_len = val_begin_len; } else if (strcasecmp(var, "strrep") == 0) { - val_begin_len = strlen(val_begin) + 1; + http_node = (tcp *)malloc(sizeof(struct tcp)); + if (http_node == NULL) + return ; + memset(http_node, 0, sizeof(struct tcp)); + http_node->strrep = strdup(val_begin); - p->http_strrep = (char *)malloc(val_begin_len); - if (p->http_strrep == NULL) - free(p->http_strrep); - memset(p->http_strrep, 0, val_begin_len); - memcpy(p->http_strrep, val_begin, val_begin_len); + p1 = strstr(val_begin, "->"); + for (t = p1; *t != '"'; ++t) ; + http_node->strrep_t = strdup(t + 1); - char *p1 = strstr(val_begin, "->"); - p->http_strrep_aim = (char *)malloc(val_begin_len - strlen(p1 + 2) - 2 + 1); - if (p->http_strrep_aim == NULL) { - free(p->http_strrep_aim); + for (s = p1 - 1; *s == ' '; s--) { + if (s == val_begin) + return; } - memset(p->http_strrep_aim, 0, val_begin_len - strlen(p1 + 2) - 2 + 1); - strncpy_(p->http_strrep_aim, val_begin, val_begin_len - strlen(p1 + 2) - 3); // 实际 val_begin_len 多1 - p->http_strrep_obj = (char *)malloc(strlen(p1 + 2) + 1); - if (p->http_strrep_obj == NULL) { - free(p->http_strrep_obj); + if (*s == '"') + s--; + + http_node->strrep_s = strndup(val_begin, s - val_begin + 1); + + http_node->next = NULL; + if (http_head == NULL) { + http_head = http_node; + } else { + http_node->next = http_head; + http_head = http_node; } - memset(p->http_strrep_obj, 0, strlen(p1 + 2) + 1); - strncpy_(p->http_strrep_obj, p1 + 2, strlen(p1 + 2)); - p->http_strrep_aim_len = strlen(p->http_strrep_aim); - p->http_strrep_obj_len = strlen(p->http_strrep_obj); } else if (strcasecmp(var, "regrep") == 0) { - val_begin_len = strlen(val_begin) + 1; + http_node = (tcp *) malloc(sizeof(struct tcp)); + if (http_node == NULL) + return ; + memset(http_node, 0, sizeof(struct tcp)); + http_node->regrep = strdup(val_begin); + + p1 = strstr(val_begin, "->"); + for (t = p1; *t != '"'; ++t) ; + http_node->regrep_t = strdup(t + 1); - p->http_regrep = (char *)malloc(val_begin_len); - if (p->http_regrep == NULL) - free(p->http_regrep); - memset(p->http_regrep, 0, val_begin_len); - memcpy(p->http_regrep, val_begin, val_begin_len); + for (s = p1 - 1; *s == ' '; s--) { + if (s == val_begin) + return ; + } + if (*s == '"') + s--; - char *p1 = strstr(val_begin, "->"); - p->http_regrep_aim = (char *)malloc(val_begin_len - strlen(p1 + 2) - 2 + 1); - if (p->http_regrep_aim == NULL) { - free(p->http_regrep_aim); + http_node->regrep_s = strndup(val_begin, s - val_begin + 1); + + http_node->next = NULL; + if (http_head == NULL) { + http_head = http_node; + } else { + http_node->next = http_head; + http_head = http_node; } - memset(p->http_regrep_aim, 0, val_begin_len - strlen(p1 + 2) - 2 + 1); - strncpy_(p->http_regrep_aim, val_begin, val_begin_len - strlen(p1 + 2) - 3); - p->http_regrep_obj = (char *)malloc(strlen(p1 + 2) + 1); - if (p->http_regrep_obj == NULL) { - free(p->http_regrep_obj); - } - memset(p->http_regrep_obj, 0, strlen(p1 + 2) + 1); - strncpy_(p->http_regrep_obj, p1 + 2, strlen(p1 + 2)); - p->http_regrep_aim_len = strlen(p->http_regrep_aim); - p->http_regrep_obj_len = strlen(p->http_regrep_obj); } content = strchr(lineEnd + 1, '\n'); @@ -298,6 +306,8 @@ static void parse_https_module(char *content, conf * p) { char *var, *val_begin, *val_end, *lineEnd; int val_begin_len; + tcp *https_node = NULL; + char *p1 = NULL, *s = NULL, *t = NULL; while ((lineEnd = set_var_val_lineEnd(content, &var, &val_begin, &val_end)) != NULL) { if (strcasecmp(var, "https_ip") == 0) { @@ -320,57 +330,118 @@ static void parse_https_module(char *content, conf * p) memcpy(p->https_first, val_begin, val_begin_len); p->https_first_len = val_begin_len; } else if (strcasecmp(var, "strrep") == 0) { - val_begin_len = strlen(val_begin) + 1; + // 链表操作,支持多个相同配置KEY + https_node = (tcp *)malloc(sizeof(struct tcp)); + if (https_node == NULL) + return ; + memset(https_node, 0, sizeof(struct tcp)); + https_node->strrep = strdup(val_begin); - p->https_strrep = (char *)malloc(val_begin_len); - if (p->https_strrep == NULL) - free(p->https_strrep); - memset(p->https_strrep, 0, val_begin_len); - memcpy(p->https_strrep, val_begin, val_begin_len); + p1 = strstr(val_begin, "->"); + for (t = p1; *t != '"'; ++t) ; + https_node->strrep_t = strdup(t + 1); - char *p1 = strstr(val_begin, "->"); - p->https_strrep_aim = (char *)malloc(val_begin_len - strlen(p1 + 2) - 2 + 1); - if (p->https_strrep_aim == NULL) { - free(p->https_strrep_aim); + for (s = p1 - 1; *s == ' '; s--) { + if (s == val_begin) + return; } - memset(p->https_strrep_aim, 0, val_begin_len - strlen(p1 + 2) - 2 + 1); - strncpy_(p->https_strrep_aim, val_begin, val_begin_len - strlen(p1 + 2) - 3); - p->https_strrep_obj = (char *)malloc(strlen(p1 + 2) + 1); - if (p->https_strrep_obj == NULL) { - free(p->https_strrep_obj); + if (*s == '"') + s--; + + https_node->strrep_s = strndup(val_begin, 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; } - memset(p->https_strrep_obj, 0, strlen(p1 + 2) + 1); - strncpy_(p->https_strrep_obj, p1 + 2, strlen(p1 + 2)); - p->https_strrep_aim_len = strlen(p->https_strrep_aim); - p->https_strrep_obj_len = strlen(p->https_strrep_obj); } else if (strcasecmp(var, "regrep") == 0) { - val_begin_len = strlen(val_begin) + 1; + https_node = (tcp *) malloc(sizeof(struct tcp)); + if (https_node == NULL) + return ; + memset(https_node, 0, sizeof(struct tcp)); + https_node->regrep = strdup(val_begin); + + p1 = strstr(val_begin, "->"); + for (t = p1; *t != '"'; ++t) ; + https_node->regrep_t = strdup(t + 1); - p->https_regrep = (char *)malloc(val_begin_len); - if (p->https_regrep == NULL) - free(p->https_regrep); - memset(p->https_regrep, 0, val_begin_len); - memcpy(p->https_regrep, val_begin, val_begin_len); + for (s = p1 - 1; *s == ' '; s--) { + if (s == val_begin) + return ; + } + if (*s == '"') + s--; - char *p1 = strstr(val_begin, "->"); - p->https_regrep_aim = (char *)malloc(val_begin_len - strlen(p1 + 2) - 2 + 1); - if (p->https_regrep_aim == NULL) - free(p->https_regrep_aim); - memset(p->https_regrep_aim, 0, val_begin_len - strlen(p1 + 2) - 2 + 1); - strncpy_(p->https_regrep_aim, val_begin, val_begin_len - strlen(p1 + 2) - 3); - p->https_regrep_obj = (char *)malloc(strlen(p1 + 2) + 1); - if (p->https_regrep_obj == NULL) - free(p->https_regrep_obj); - memset(p->https_regrep_obj, 0, strlen(p1 + 2) + 1); - strncpy_(p->https_regrep_obj, p1 + 2, strlen(p1 + 2)); - p->https_regrep_aim_len = strlen(p->https_regrep_aim); - p->https_regrep_obj_len = strlen(p->https_regrep_obj); + https_node->regrep_s = strndup(val_begin, 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; + } } content = strchr(lineEnd + 1, '\n'); } } +// 打印链表 +void print_tcp(tcp * p) +{ + tcp *temp = p; + while (temp) { + if (temp->strrep) + ;//printf("%s\n", temp->strrep); + if (temp->strrep_s) + printf("%s\n", temp->strrep_s); + if (temp->strrep_t) + printf("%s\n", temp->strrep_t); + + if (temp->regrep) + ;//printf("%s\n", temp->regrep); + if (temp->regrep_s) + printf("%s\n", temp->regrep_s); + if (temp->regrep_t) + printf("%s\n", temp->regrep_t); + + temp = temp->next; + } +} + +// free链表 +void free_tcp(tcp * p) +{ + while (p) { + tcp *temp = p; + + 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 (temp) + free(temp); + + p = p->next; + } + free(p); + +} + static void parse_httpdns_module(char *content, conf * p) { char *var, *val_begin, *val_end, *lineEnd; @@ -383,7 +454,6 @@ static void parse_httpdns_module(char *content, conf * p) memset(p->addr, 0, val_begin_len); memcpy(p->addr, val_begin, val_begin_len); } else if (strcasecmp(var, "http_req") == 0) { - //val_begin_len = strlen(val_begin) + 1; val_begin_len = val_end - val_begin; p->http_req = (char *)malloc(val_begin_len + 1); memset(p->http_req, 0, val_begin_len); @@ -409,7 +479,6 @@ static void parse_httpudp_module(char *content, conf * p) memset(p->httpudp_addr, 0, val_begin_len); memcpy(p->httpudp_addr, val_begin, val_begin_len); } else if (strcasecmp(var, "http_req") == 0) { - //val_begin_len = strlen(val_begin) + 1; val_begin_len = val_end - val_begin; p->httpudp_http_req = (char *)malloc(val_begin_len + 1); memset(p->httpudp_http_req, 0, val_begin_len); @@ -432,18 +501,6 @@ void free_conf(conf * p) free(p->http_del); if (p->http_first) free(p->http_first); - if (p->http_strrep) - free(p->http_strrep); - if (p->http_strrep_aim) - free(p->http_strrep_aim); - if (p->http_strrep_obj) - free(p->http_strrep_obj); - if (p->http_regrep) - free(p->http_regrep); - if (p->http_regrep_aim) - free(p->http_regrep_aim); - if (p->http_regrep_obj) - free(p->http_regrep_obj); // https module if (p->https_ip) @@ -452,18 +509,6 @@ void free_conf(conf * p) free(p->https_del); if (p->https_first) free(p->https_first); - if (p->https_strrep) - free(p->https_strrep); - if (p->https_strrep_aim) - free(p->https_strrep_aim); - if (p->https_strrep_obj) - free(p->https_strrep_obj); - if (p->https_regrep) - free(p->https_regrep); - if (p->https_regrep_aim) - free(p->https_regrep_aim); - if (p->https_regrep_obj) - free(p->https_regrep_obj); // httpdns module if (p->addr) diff --git a/conf.h b/conf.h index b624893..159d7a1 100755 --- a/conf.h +++ b/conf.h @@ -24,27 +24,11 @@ typedef struct CONF { int http_port; char *http_ip, *http_del, *http_first; int http_ip_len, http_del_len, http_first_len; - char *http_strrep, *http_regrep; - int http_strrep_len, http_regrep_len; - - char *http_strrep_aim, *http_strrep_obj; - int http_strrep_aim_len, http_strrep_obj_len; - - char *http_regrep_aim, *http_regrep_obj; - int http_regrep_aim_len, http_regrep_obj_len; // https module int https_port; char *https_ip, *https_del, *https_first; int https_ip_len, https_del_len, https_first_len; - char *https_strrep, *https_regrep; - int https_strrep_len, https_regrep_len; - - char *https_strrep_aim, *https_strrep_obj; - int https_strrep_aim_len, https_strrep_obj_len; - - char *https_regrep_aim, *https_regrep_obj; - int https_regrep_aim_len, https_regrep_obj_len; // httpdns module char *addr; @@ -59,8 +43,26 @@ typedef struct CONF { int httpudp_encode; } conf; +typedef struct tcp { + char *strrep; + char *strrep_s, *strrep_t; + + char *regrep; + char *regrep_s, *regrep_t; + + struct tcp *next; +} tcp; + +extern tcp *http_head; +extern tcp *http_node; + +extern tcp *https_head; +extern tcp *https_node; +extern void print_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); -void free_conf(conf * p); +void read_conf(char *file, conf *p); +void free_conf(conf *p); #endif diff --git a/conf.o b/conf.o new file mode 100755 index 0000000000000000000000000000000000000000..215764694659bf21488b44f3a119897562d31c29 GIT binary patch literal 51712 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