From ef50ea9c5e2e5e90c0944e4b0f5a552228d87eab Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Wed, 19 Jun 2019 23:42:06 +0800 Subject: [PATCH] Change rule domain to lowercase --- src/dns_conf.c | 4 ++-- src/dns_server.c | 4 ++-- src/util.c | 8 +++++++- src/util.h | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/dns_conf.c b/src/dns_conf.c index c44466d..9886f8a 100644 --- a/src/dns_conf.c +++ b/src/dns_conf.c @@ -344,7 +344,7 @@ static int _config_domain_rule_add(char *domain, enum domain_rule type, void *ru tlog(TLOG_ERROR, "domain name %s too long", domain); goto errout; } - reverse_string(domain_key, domain, len); + reverse_string(domain_key, domain, len, 1); domain_key[len] = '.'; len++; domain_key[len] = 0; @@ -405,7 +405,7 @@ static int _config_domain_rule_flag_set(char *domain, unsigned int flag) tlog(TLOG_ERROR, "domain %s too long", domain); return -1; } - reverse_string(domain_key, domain, len); + reverse_string(domain_key, domain, len, 1); domain_key[len] = '.'; len++; domain_key[len] = 0; diff --git a/src/dns_server.c b/src/dns_server.c index 9c9fec1..c4eece8 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -1375,7 +1375,7 @@ static void _dns_server_log_rule(char *domain, unsigned char *rule_key, int rule return; } - reverse_string(rule_name, (char *)rule_key, rule_key_len); + reverse_string(rule_name, (char *)rule_key, rule_key_len, 1); rule_name[rule_key_len] = 0; tlog(TLOG_INFO, "RULE-MATCH, domain: %s, rule: %s", domain, rule_name); } @@ -1390,7 +1390,7 @@ static struct dns_domain_rule *_dns_server_get_domain_rule(char *domain) /* reverse domain string */ domain_len = strlen(domain); - reverse_string(domain_key, domain, domain_len); + reverse_string(domain_key, domain, domain_len, 1); domain_key[domain_len] = '.'; domain_len++; domain_key[domain_len] = 0; diff --git a/src/util.c b/src/util.c index 2fce2a4..32874b8 100644 --- a/src/util.c +++ b/src/util.c @@ -350,7 +350,7 @@ int set_fd_nonblock(int fd, int nonblock) return 0; } -char *reverse_string(char *output, char *input, int len) +char *reverse_string(char *output, char *input, int len, int to_lower_case) { char *begin = output; if (len <= 0) { @@ -361,6 +361,12 @@ char *reverse_string(char *output, char *input, int len) len--; while (len >= 0) { *output = *(input + len); + if (to_lower_case) { + if (*output >= 'A' && *output <= 'Z') { + /* To lower case */ + *output = *output + 32; + } + } output++; len--; } diff --git a/src/util.h b/src/util.h index c4b908f..c7f9f58 100644 --- a/src/util.h +++ b/src/util.h @@ -23,7 +23,7 @@ int parse_uri(char *value, char *scheme, char *host, int *port, char *path); int set_fd_nonblock(int fd, int nonblock); -char *reverse_string(char *output, char *input, int len); +char *reverse_string(char *output, char *input, int len, int to_lower_case); void print_stack(void);