dns_conf: add short option for server options
This commit is contained in:
@@ -193,9 +193,9 @@ log-level info
|
|||||||
# -blacklist-ip: filter result with blacklist ip
|
# -blacklist-ip: filter result with blacklist ip
|
||||||
# -whitelist-ip: filter result with whitelist ip, result in whitelist-ip will be accepted.
|
# -whitelist-ip: filter result with whitelist ip, result in whitelist-ip will be accepted.
|
||||||
# -check-edns: result must exist edns RR, or discard result.
|
# -check-edns: result must exist edns RR, or discard result.
|
||||||
# -group [group]: set server to group, use with nameserver /domain/group.
|
# g|-group [group]: set server to group, use with nameserver /domain/group.
|
||||||
# -exclude-default-group: exclude this server from default group.
|
# e|-exclude-default-group: exclude this server from default group.
|
||||||
# -proxy [proxy-name]: use proxy to connect to server.
|
# p|-proxy [proxy-name]: use proxy to connect to server.
|
||||||
# -bootstrap-dns: set as bootstrap dns server.
|
# -bootstrap-dns: set as bootstrap dns server.
|
||||||
# -set-mark: set mark on packets.
|
# -set-mark: set mark on packets.
|
||||||
# -subnet [ip/subnet]: set edns client subnet.
|
# -subnet [ip/subnet]: set edns client subnet.
|
||||||
@@ -214,8 +214,8 @@ log-level info
|
|||||||
# -spki-pin: TLS spki pin to verify.
|
# -spki-pin: TLS spki pin to verify.
|
||||||
# -tls-host-verify: cert hostname to verify.
|
# -tls-host-verify: cert hostname to verify.
|
||||||
# -host-name: TLS sni hostname.
|
# -host-name: TLS sni hostname.
|
||||||
# -no-check-certificate: no check certificate.
|
# k|-no-check-certificate: no check certificate.
|
||||||
# -proxy [proxy-name]: use proxy to connect to server.
|
# p|-proxy [proxy-name]: use proxy to connect to server.
|
||||||
# -bootstrap-dns: set as bootstrap dns server.
|
# -bootstrap-dns: set as bootstrap dns server.
|
||||||
# Get SPKI with this command:
|
# 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
|
# 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.
|
# -tls-host-verify: cert hostname to verify.
|
||||||
# -host-name: TLS sni hostname.
|
# -host-name: TLS sni hostname.
|
||||||
# -http-host: http host.
|
# -http-host: http host.
|
||||||
# -no-check-certificate: no check certificate.
|
# k|-no-check-certificate: no check certificate.
|
||||||
# -proxy [proxy-name]: use proxy to connect to server.
|
# p|-proxy [proxy-name]: use proxy to connect to server.
|
||||||
# -bootstrap-dns: set as bootstrap dns server.
|
# -bootstrap-dns: set as bootstrap dns server.
|
||||||
# default port is 443
|
# default port is 443
|
||||||
# server-https https://cloudflare-dns.com/dns-query
|
# server-https https://cloudflare-dns.com/dns-query
|
||||||
|
|||||||
101
src/dns_conf.c
101
src/dns_conf.c
@@ -509,26 +509,26 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
|
|||||||
int ttl = 0;
|
int ttl = 0;
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
static struct option long_options[] = {
|
static struct option long_options[] = {
|
||||||
{"blacklist-ip", no_argument, NULL, 'b'}, /* filtering with blacklist-ip */
|
{"drop-packet-latency", required_argument, NULL, 'D'},
|
||||||
{"whitelist-ip", no_argument, NULL, 'w'}, /* filtering with whitelist-ip */
|
{"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
|
#ifdef FEATURE_CHECK_EDNS
|
||||||
/* experimental feature */
|
/* experimental feature */
|
||||||
{"check-edns", no_argument, NULL, 'e'}, /* check edns */
|
{"check-edns", no_argument, NULL, 251}, /* check edns */
|
||||||
#endif
|
#endif
|
||||||
{"drop-packet-latency", required_argument, NULL, 'D'},
|
{"whitelist-ip", no_argument, NULL, 252}, /* filtering with whitelist-ip */
|
||||||
{"spki-pin", required_argument, NULL, 'p'}, /* check SPKI pin */
|
{"blacklist-ip", no_argument, NULL, 253}, /* filtering with blacklist-ip */
|
||||||
{"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 */
|
|
||||||
{"set-mark", required_argument, NULL, 254}, /* set mark */
|
{"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 */
|
{"subnet", required_argument, NULL, 256}, /* set subnet */
|
||||||
{"hitchhiking", no_argument, NULL, 257}, /* hitchhiking */
|
{"hitchhiking", no_argument, NULL, 257}, /* hitchhiking */
|
||||||
{"host-ip", required_argument, NULL, 258}, /* host ip */
|
{"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}
|
{NULL, no_argument, NULL, 0}
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* 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 */
|
/* process extra options */
|
||||||
optind = 1;
|
optind = 1;
|
||||||
while (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) {
|
if (opt == -1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (opt) {
|
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': {
|
case 'D': {
|
||||||
drop_packet_latency_ms = atoi(optarg);
|
drop_packet_latency_ms = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'E': {
|
case 'e': {
|
||||||
server_flag |= SERVER_FLAG_EXCLUDE_DEFAULT;
|
server_flag |= SERVER_FLAG_EXCLUDE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -637,10 +614,6 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'p': {
|
case 'p': {
|
||||||
safe_strncpy(server->spki, optarg, DNS_MAX_SPKI_LEN);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 'P': {
|
|
||||||
if (_dns_conf_get_proxy_name(optarg) == NULL) {
|
if (_dns_conf_get_proxy_name(optarg) == NULL) {
|
||||||
tlog(TLOG_ERROR, "add proxy server failed.");
|
tlog(TLOG_ERROR, "add proxy server failed.");
|
||||||
goto errout;
|
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);
|
safe_strncpy(server->proxyname, optarg, PROXY_NAME_LEN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'V': {
|
|
||||||
safe_strncpy(server->tls_host_verify, optarg, DNS_MAX_CNAME_LEN);
|
case 'k': {
|
||||||
|
server->skip_check_cert = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'N': {
|
case 'b': {
|
||||||
server->skip_check_cert = 1;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case 254: {
|
case 254: {
|
||||||
server->set_mark = atoll(optarg);
|
server->set_mark = atoll(optarg);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 255: {
|
|
||||||
is_bootstrap_dns = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 256: {
|
case 256: {
|
||||||
_conf_client_subnet(optarg, &server->ipv4_ecs, &server->ipv6_ecs);
|
_conf_client_subnet(optarg, &server->ipv4_ecs, &server->ipv6_ecs);
|
||||||
break;
|
break;
|
||||||
@@ -679,6 +661,25 @@ static int _config_server(int argc, char *argv[], dns_server_type_t type, int de
|
|||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user