dns_conf: add short option for server options

This commit is contained in:
Nick Peng
2023-09-24 22:55:10 +08:00
parent 1dd01ff4bd
commit 51c81513ab
2 changed files with 58 additions and 57 deletions

View File

@@ -193,9 +193,9 @@ log-level info
# -blacklist-ip: filter result with blacklist ip
# -whitelist-ip: filter result with whitelist ip, result in whitelist-ip will be accepted.
# -check-edns: result must exist edns RR, or discard result.
# -group [group]: set server to group, use with nameserver /domain/group.
# -exclude-default-group: exclude this server from default group.
# -proxy [proxy-name]: use proxy to connect to server.
# g|-group [group]: set server to group, use with nameserver /domain/group.
# e|-exclude-default-group: exclude this server from default group.
# p|-proxy [proxy-name]: use proxy to connect to server.
# -bootstrap-dns: set as bootstrap dns server.
# -set-mark: set mark on packets.
# -subnet [ip/subnet]: set edns client subnet.
@@ -214,8 +214,8 @@ log-level info
# -spki-pin: TLS spki pin to verify.
# -tls-host-verify: cert hostname to verify.
# -host-name: TLS sni hostname.
# -no-check-certificate: no check certificate.
# -proxy [proxy-name]: use proxy to connect to server.
# k|-no-check-certificate: no check certificate.
# p|-proxy [proxy-name]: use proxy to connect to server.
# -bootstrap-dns: set as bootstrap dns server.
# Get SPKI with this command:
# echo | openssl s_client -connect '[ip]:853' | openssl x509 -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
@@ -229,8 +229,8 @@ log-level info
# -tls-host-verify: cert hostname to verify.
# -host-name: TLS sni hostname.
# -http-host: http host.
# -no-check-certificate: no check certificate.
# -proxy [proxy-name]: use proxy to connect to server.
# k|-no-check-certificate: no check certificate.
# p|-proxy [proxy-name]: use proxy to connect to server.
# -bootstrap-dns: set as bootstrap dns server.
# default port is 443
# server-https https://cloudflare-dns.com/dns-query

View File

@@ -509,26 +509,26 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
int ttl = 0;
/* clang-format off */
static struct option long_options[] = {
{"blacklist-ip", no_argument, NULL, 'b'}, /* filtering with blacklist-ip */
{"whitelist-ip", no_argument, NULL, 'w'}, /* filtering with whitelist-ip */
{"drop-packet-latency", required_argument, NULL, 'D'},
{"exclude-default-group", no_argument, NULL, 'e'}, /* exclude this from default group */
{"group", required_argument, NULL, 'g'}, /* add to group */
{"proxy", required_argument, NULL, 'p'}, /* proxy server */
{"no-check-certificate", no_argument, NULL, 'k'}, /* do not check certificate */
{"bootstrap-dns", no_argument, NULL, 'b'}, /* set as bootstrap dns */
#ifdef FEATURE_CHECK_EDNS
/* experimental feature */
{"check-edns", no_argument, NULL, 'e'}, /* check edns */
{"check-edns", no_argument, NULL, 251}, /* check edns */
#endif
{"drop-packet-latency", required_argument, NULL, 'D'},
{"spki-pin", required_argument, NULL, 'p'}, /* check SPKI pin */
{"host-name", required_argument, NULL, 'h'}, /* host name */
{"http-host", required_argument, NULL, 'H'}, /* http host */
{"no-check-certificate", no_argument, NULL, 'N'}, /* do not check certificate */
{"tls-host-verify", required_argument, NULL, 'V' }, /* verify tls hostname */
{"group", required_argument, NULL, 'g'}, /* add to group */
{"proxy", required_argument, NULL, 'P'}, /* proxy server */
{"exclude-default-group", no_argument, NULL, 'E'}, /* exclude this from default group */
{"whitelist-ip", no_argument, NULL, 252}, /* filtering with whitelist-ip */
{"blacklist-ip", no_argument, NULL, 253}, /* filtering with blacklist-ip */
{"set-mark", required_argument, NULL, 254}, /* set mark */
{"bootstrap-dns", no_argument, NULL, 255}, /* set as bootstrap dns */
{"subnet", required_argument, NULL, 256}, /* set subnet */
{"hitchhiking", no_argument, NULL, 257}, /* hitchhiking */
{"host-ip", required_argument, NULL, 258}, /* host ip */
{"spki-pin", required_argument, NULL, 259}, /* check SPKI pin */
{"host-name", required_argument, NULL, 260}, /* host name */
{"http-host", required_argument, NULL, 261}, /* http host */
{"tls-host-verify", required_argument, NULL, 262 }, /* verify tls hostname */
{NULL, no_argument, NULL, 0}
};
/* clang-format on */
@@ -592,40 +592,17 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
/* process extra options */
optind = 1;
while (1) {
opt = getopt_long_only(argc, argv, "", long_options, NULL);
opt = getopt_long_only(argc, argv, "D:kg:p:eb", long_options, NULL);
if (opt == -1) {
break;
}
switch (opt) {
case 'b': {
result_flag |= DNSSERVER_FLAG_BLACKLIST_IP;
break;
}
case 'w': {
result_flag |= DNSSERVER_FLAG_WHITELIST_IP;
break;
}
case 'e': {
result_flag |= DNSSERVER_FLAG_CHECK_EDNS;
break;
}
case 'h': {
safe_strncpy(server->hostname, optarg, DNS_MAX_CNAME_LEN);
if (strncmp(server->hostname, "-", 2) == 0) {
server->hostname[0] = '\0';
}
break;
}
case 'H': {
safe_strncpy(server->httphost, optarg, DNS_MAX_CNAME_LEN);
break;
}
case 'D': {
drop_packet_latency_ms = atoi(optarg);
break;
}
case 'E': {
case 'e': {
server_flag |= SERVER_FLAG_EXCLUDE_DEFAULT;
break;
}
@@ -637,10 +614,6 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
break;
}
case 'p': {
safe_strncpy(server->spki, optarg, DNS_MAX_SPKI_LEN);
break;
}
case 'P': {
if (_dns_conf_get_proxy_name(optarg) == NULL) {
tlog(TLOG_ERROR, "add proxy server failed.");
goto errout;
@@ -648,22 +621,31 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
safe_strncpy(server->proxyname, optarg, PROXY_NAME_LEN);
break;
}
case 'V': {
safe_strncpy(server->tls_host_verify, optarg, DNS_MAX_CNAME_LEN);
case 'k': {
server->skip_check_cert = 1;
break;
}
case 'N': {
server->skip_check_cert = 1;
case 'b': {
is_bootstrap_dns = 1;
break;
}
case 251: {
result_flag |= DNSSERVER_FLAG_CHECK_EDNS;
break;
}
case 252: {
result_flag |= DNSSERVER_FLAG_WHITELIST_IP;
break;
}
case 253: {
result_flag |= DNSSERVER_FLAG_BLACKLIST_IP;
break;
}
case 254: {
server->set_mark = atoll(optarg);
break;
}
case 255: {
is_bootstrap_dns = 1;
break;
}
case 256: {
_conf_client_subnet(optarg, &server->ipv4_ecs, &server->ipv6_ecs);
break;
@@ -679,6 +661,25 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
}
break;
}
case 259: {
safe_strncpy(server->spki, optarg, DNS_MAX_SPKI_LEN);
break;
}
case 260: {
safe_strncpy(server->hostname, optarg, DNS_MAX_CNAME_LEN);
if (strncmp(server->hostname, "-", 2) == 0) {
server->hostname[0] = '\0';
}
break;
}
case 261: {
safe_strncpy(server->httphost, optarg, DNS_MAX_CNAME_LEN);
break;
}
case 262: {
safe_strncpy(server->tls_host_verify, optarg, DNS_MAX_CNAME_LEN);
break;
}
default:
break;
}