优化
This commit is contained in:
3
cache.c
3
cache.c
@@ -88,9 +88,6 @@ void free_ip_cache()
|
|||||||
cache_size = 0;
|
cache_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char cn_ip[MAXIPSET_][MAXIPLEN] = { 0 };
|
char cn_ip[MAXIPSET_][MAXIPLEN] = { 0 };
|
||||||
|
|
||||||
// 添加一个 IP 到集合(如果已存在则不添加)
|
// 添加一个 IP 到集合(如果已存在则不添加)
|
||||||
|
|||||||
24
cap.c
24
cap.c
@@ -43,7 +43,7 @@ void Processing_IP_addresses(char *src_ip)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (1 == is_ip_in_set(cn_ip, src_ip)) {
|
if (1 == is_ip_in_set(cn_ip, src_ip)) {
|
||||||
_printf(RED "IP:%s 已经标记为国内,跳过!!!\n" REDEND, src_ip);
|
_printf(RED "IP:%s 已经标记为国内,跳过!\n" REDEND, src_ip);
|
||||||
|
|
||||||
for (int i = 0; i < MAXIPSET_; i++) {
|
for (int i = 0; i < MAXIPSET_; i++) {
|
||||||
if (cn_ip[i][0] != '\0') {
|
if (cn_ip[i][0] != '\0') {
|
||||||
@@ -96,11 +96,11 @@ void Processing_IP_addresses(char *src_ip)
|
|||||||
if (NULL == strstr(response.continent_country, "中国")) { // 这时是国外IP
|
if (NULL == strstr(response.continent_country, "中国")) { // 这时是国外IP
|
||||||
_printf(RED "CurlGetIpArea(): %s %s\r\n" REDEND, src_ip, response.continent_country);
|
_printf(RED "CurlGetIpArea(): %s %s\r\n" REDEND, src_ip, response.continent_country);
|
||||||
add_ip_to_ipset(RULE_NAME, src_ip);
|
add_ip_to_ipset(RULE_NAME, src_ip);
|
||||||
} else { // 这时是国内IP
|
} else { // 这时是国内IP
|
||||||
if (-1 == add_cn_ip(cn_ip, src_ip)) { // 添加国内IP到缓存
|
if (-1 == add_cn_ip(cn_ip, src_ip)) { // 添加国内IP到缓存
|
||||||
_printf(RED "add_cn_ip() Error!!! 错误:集合已满\n" REDEND);
|
_printf(RED "add_cn_ip() Error!!! 错误:集合已满\n" REDEND);
|
||||||
}
|
}
|
||||||
_printf("IP: %s 离线库为国外, API 判断为国内, 标记为已处理!!!\n", src_ip);
|
_printf("IP: %s 离线库为国外, API 判断为国内, 标记为已处理!\n", src_ip);
|
||||||
|
|
||||||
if (append_string_to_file("cn.txt", src_ip) != 0) {
|
if (append_string_to_file("cn.txt", src_ip) != 0) {
|
||||||
_printf("append_string_to_file() Error!!!\n");
|
_printf("append_string_to_file() Error!!!\n");
|
||||||
@@ -115,13 +115,11 @@ void Processing_IP_addresses(char *src_ip)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (ip2region_area != NULL) {
|
if (ip2region_area != NULL) {
|
||||||
free(ip2region_area);
|
free(ip2region_area);
|
||||||
ip2region_area = NULL;
|
ip2region_area = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 实时检测内存泄漏
|
// 实时检测内存泄漏
|
||||||
dump_mem_leak();
|
dump_mem_leak();
|
||||||
return;
|
return;
|
||||||
@@ -327,6 +325,9 @@ int main(int argc, char **argv)
|
|||||||
remove_char(local_addr, '\n');
|
remove_char(local_addr, '\n');
|
||||||
printf("Local Address: %s\n", local_addr);
|
printf("Local Address: %s\n", local_addr);
|
||||||
|
|
||||||
|
strcpy(cn_ip[line_count], local_addr);
|
||||||
|
line_count++;
|
||||||
|
|
||||||
printf("Read %d lines from file:\n", line_count);
|
printf("Read %d lines from file:\n", line_count);
|
||||||
for (int i = 0; i < line_count; i++) {
|
for (int i = 0; i < line_count; i++) {
|
||||||
printf("Line %d: %s\n", i + 1, cn_ip[i]);
|
printf("Line %d: %s\n", i + 1, cn_ip[i]);
|
||||||
@@ -360,11 +361,11 @@ int main(int argc, char **argv)
|
|||||||
_printf("创建 IPSet %s 失败\n", RULE_NAME);
|
_printf("创建 IPSet %s 失败\n", RULE_NAME);
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
char iptables_command[256];
|
char iptables_command[256];
|
||||||
sprintf(iptables_command, "iptables -I INPUT -m set --match-set %s src -j DROP", RULE_NAME);
|
sprintf(iptables_command, "iptables -I INPUT -m set --match-set %s src -j DROP", RULE_NAME);
|
||||||
system(iptables_command);
|
system(iptables_command);
|
||||||
*/
|
*/
|
||||||
add_iptables_rule(RULE_NAME);
|
add_iptables_rule(RULE_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,6 +433,5 @@ int main(int argc, char **argv)
|
|||||||
pcap_freealldevs(alldevs); // 释放设备列表
|
pcap_freealldevs(alldevs); // 释放设备列表
|
||||||
pcap_close(handle); // 关闭会话句柄
|
pcap_close(handle); // 关闭会话句柄
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -208,7 +208,6 @@ int get_ip_count_in_ipset(char *set_name)
|
|||||||
return ip_count;
|
return ip_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void add_iptables_rule(const char *rule_name)
|
void add_iptables_rule(const char *rule_name)
|
||||||
{
|
{
|
||||||
char iptables_command[256];
|
char iptables_command[256];
|
||||||
@@ -221,7 +220,6 @@ void add_iptables_rule(const char *rule_name)
|
|||||||
fprintf(stderr, "Error: iptables command is too long.\n");
|
fprintf(stderr, "Error: iptables command is too long.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行命令并检查返回值
|
// 执行命令并检查返回值
|
||||||
int ret = system(iptables_command);
|
int ret = system(iptables_command);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user