bind-option: support force aaaa soa bind option, secondary DNS support Force-AAAA-SOA options
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
# -no-cache: skip cache.
|
# -no-cache: skip cache.
|
||||||
# -no-rule-soa: Skip address SOA(#) rules.
|
# -no-rule-soa: Skip address SOA(#) rules.
|
||||||
# -no-dualstack-selection: Disable dualstack ip selection.
|
# -no-dualstack-selection: Disable dualstack ip selection.
|
||||||
|
# -force-aaaa-soa: force AAAA query return SOA.
|
||||||
# example:
|
# example:
|
||||||
# IPV4:
|
# IPV4:
|
||||||
# bind :53
|
# bind :53
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ msgstr "跳过address SOA(#)规则。"
|
|||||||
msgid "Skip Dualstack Selection"
|
msgid "Skip Dualstack Selection"
|
||||||
msgstr "跳过双栈优选"
|
msgstr "跳过双栈优选"
|
||||||
|
|
||||||
msgid "Skip Sualstack Selection."
|
msgid "Skip Dualstack Selection."
|
||||||
msgstr "跳过双栈优选。"
|
msgstr "跳过双栈优选。"
|
||||||
|
|
||||||
msgid "Skip Cache"
|
msgid "Skip Cache"
|
||||||
|
|||||||
@@ -141,13 +141,6 @@ o.cfgvalue = function(...)
|
|||||||
return Flag.cfgvalue(...) or "1"
|
return Flag.cfgvalue(...) or "1"
|
||||||
end
|
end
|
||||||
|
|
||||||
o = s:taboption("seconddns", Flag, "seconddns_no_speed_check", translate("Skip Speed Check"), translate("Do not check speed."))
|
|
||||||
o.rmempty = false
|
|
||||||
o.default = o.disabled
|
|
||||||
o.cfgvalue = function(...)
|
|
||||||
return Flag.cfgvalue(...) or "0"
|
|
||||||
end
|
|
||||||
|
|
||||||
---- dns server group
|
---- dns server group
|
||||||
o = s:taboption("seconddns", Value, "seconddns_server_group", translate("Server Group"), translate("Query DNS through specific dns server group, such as office, home."))
|
o = s:taboption("seconddns", Value, "seconddns_server_group", translate("Server Group"), translate("Query DNS through specific dns server group, such as office, home."))
|
||||||
o.rmempty = true
|
o.rmempty = true
|
||||||
@@ -155,6 +148,13 @@ o.placeholder = "default"
|
|||||||
o.datatype = "hostname"
|
o.datatype = "hostname"
|
||||||
o.rempty = true
|
o.rempty = true
|
||||||
|
|
||||||
|
o = s:taboption("seconddns", Flag, "seconddns_no_speed_check", translate("Skip Speed Check"), translate("Do not check speed."))
|
||||||
|
o.rmempty = false
|
||||||
|
o.default = o.disabled
|
||||||
|
o.cfgvalue = function(...)
|
||||||
|
return Flag.cfgvalue(...) or "0"
|
||||||
|
end
|
||||||
|
|
||||||
---- skip address rules
|
---- skip address rules
|
||||||
o = s:taboption("seconddns", Flag, "seconddns_no_rule_addr", translate("Skip Address Rules"), translate("Skip address rules."))
|
o = s:taboption("seconddns", Flag, "seconddns_no_rule_addr", translate("Skip Address Rules"), translate("Skip address rules."))
|
||||||
o.rmempty = false
|
o.rmempty = false
|
||||||
@@ -187,7 +187,7 @@ o.cfgvalue = function(...)
|
|||||||
return Flag.cfgvalue(...) or "0"
|
return Flag.cfgvalue(...) or "0"
|
||||||
end
|
end
|
||||||
|
|
||||||
o = s:taboption("seconddns", Flag, "seconddns_no_dualstack_selection", translate("Skip Dualstack Selection"), translate("Skip Sualstack Selection."))
|
o = s:taboption("seconddns", Flag, "seconddns_no_dualstack_selection", translate("Skip Dualstack Selection"), translate("Skip Dualstack Selection."))
|
||||||
o.rmempty = false
|
o.rmempty = false
|
||||||
o.default = o.disabled
|
o.default = o.disabled
|
||||||
o.cfgvalue = function(...)
|
o.cfgvalue = function(...)
|
||||||
@@ -202,6 +202,14 @@ o.cfgvalue = function(...)
|
|||||||
return Flag.cfgvalue(...) or "0"
|
return Flag.cfgvalue(...) or "0"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---- Force AAAA SOA
|
||||||
|
o = s:taboption("seconddns", Flag, "force_aaaa_soa", translate("Force AAAA SOA"), translate("Force AAAA SOA."))
|
||||||
|
o.rmempty = false
|
||||||
|
o.default = o.disabled
|
||||||
|
o.cfgvalue = function(...)
|
||||||
|
return Flag.cfgvalue(...) or "0"
|
||||||
|
end
|
||||||
|
|
||||||
----- custom settings
|
----- custom settings
|
||||||
custom = s:taboption("custom", Value, "Custom Settings",
|
custom = s:taboption("custom", Value, "Custom Settings",
|
||||||
translate(""),
|
translate(""),
|
||||||
|
|||||||
@@ -251,11 +251,6 @@ return L.view.extend({
|
|||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
o.default = o.enabled;
|
o.default = o.enabled;
|
||||||
|
|
||||||
o = s.taboption("seconddns", form.Flag, "seconddns_no_speed_check", _("Skip Speed Check"),
|
|
||||||
_("Do not check speed."));
|
|
||||||
o.rmempty = false;
|
|
||||||
o.default = o.disabled;
|
|
||||||
|
|
||||||
// dns server group;
|
// dns server group;
|
||||||
o = s.taboption("seconddns", form.Value, "seconddns_server_group", _("Server Group"),
|
o = s.taboption("seconddns", form.Value, "seconddns_server_group", _("Server Group"),
|
||||||
_("Query DNS through specific dns server group, such as office, home."));
|
_("Query DNS through specific dns server group, such as office, home."));
|
||||||
@@ -264,6 +259,11 @@ return L.view.extend({
|
|||||||
o.datatype = "hostname";
|
o.datatype = "hostname";
|
||||||
o.rempty = true;
|
o.rempty = true;
|
||||||
|
|
||||||
|
o = s.taboption("seconddns", form.Flag, "seconddns_no_speed_check", _("Skip Speed Check"),
|
||||||
|
_("Do not check speed."));
|
||||||
|
o.rmempty = false;
|
||||||
|
o.default = o.disabled;
|
||||||
|
|
||||||
// skip address rules;
|
// skip address rules;
|
||||||
o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_addr", _("Skip Address Rules"),
|
o = s.taboption("seconddns", form.Flag, "seconddns_no_rule_addr", _("Skip Address Rules"),
|
||||||
_("Skip address rules."));
|
_("Skip address rules."));
|
||||||
@@ -289,7 +289,7 @@ return L.view.extend({
|
|||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
|
|
||||||
o = s.taboption("seconddns", form.Flag, "seconddns_no_dualstack_selection", _("Skip Dualstack Selection"),
|
o = s.taboption("seconddns", form.Flag, "seconddns_no_dualstack_selection", _("Skip Dualstack Selection"),
|
||||||
_("Skip Sualstack Selection."));
|
_("Skip Dualstack Selection."));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
|
|
||||||
@@ -298,6 +298,11 @@ return L.view.extend({
|
|||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
o.default = o.disabled;
|
o.default = o.disabled;
|
||||||
|
|
||||||
|
// Force AAAA SOA
|
||||||
|
o = s.taboption("seconddns", form.Flag, "force_aaaa_soa", _("Force AAAA SOA"), _("Force AAAA SOA."));
|
||||||
|
o.rmempty = false;
|
||||||
|
o.default = o.disabled;
|
||||||
|
|
||||||
// custom settings;
|
// custom settings;
|
||||||
o = s.taboption("custom", form.TextValue, "custom_conf",
|
o = s.taboption("custom", form.TextValue, "custom_conf",
|
||||||
_(""),
|
_(""),
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ msgstr "跳过address SOA(#)规则。"
|
|||||||
msgid "Skip Dualstack Selection"
|
msgid "Skip Dualstack Selection"
|
||||||
msgstr "跳过双栈优选"
|
msgstr "跳过双栈优选"
|
||||||
|
|
||||||
msgid "Skip Sualstack Selection."
|
msgid "Skip Dualstack Selection."
|
||||||
msgstr "跳过双栈优选。"
|
msgstr "跳过双栈优选。"
|
||||||
|
|
||||||
msgid "Skip Cache"
|
msgid "Skip Cache"
|
||||||
@@ -187,6 +187,12 @@ msgstr "跳过cache"
|
|||||||
msgid "Skip Cache."
|
msgid "Skip Cache."
|
||||||
msgstr "跳过cache。"
|
msgstr "跳过cache。"
|
||||||
|
|
||||||
|
msgid "Force AAAA SOA"
|
||||||
|
msgstr "停用IPV6地址解析"
|
||||||
|
|
||||||
|
msgid "Force AAAA SOA."
|
||||||
|
msgstr "停用IPV6地址解析。"
|
||||||
|
|
||||||
msgid "Upstream Servers"
|
msgid "Upstream Servers"
|
||||||
msgstr "上游服务器"
|
msgstr "上游服务器"
|
||||||
|
|
||||||
|
|||||||
@@ -242,6 +242,9 @@ load_second_server()
|
|||||||
config_get_bool seconddns_no_cache "$section" "seconddns_no_cache" "0"
|
config_get_bool seconddns_no_cache "$section" "seconddns_no_cache" "0"
|
||||||
[ "$seconddns_no_cache" = "1" ] && ARGS="$ARGS -no-cache"
|
[ "$seconddns_no_cache" = "1" ] && ARGS="$ARGS -no-cache"
|
||||||
|
|
||||||
|
config_get_bool force_aaaa_soa "$section" "force_aaaa_soa" "0"
|
||||||
|
[ "$force_aaaa_soa" = "1" ] && ARGS="$ARGS -force-aaaa-soa"
|
||||||
|
|
||||||
config_get ipv6_server "$section" "ipv6_server" "1"
|
config_get ipv6_server "$section" "ipv6_server" "1"
|
||||||
if [ "$ipv6_server" = "1" ]; then
|
if [ "$ipv6_server" = "1" ]; then
|
||||||
ADDR="[::]"
|
ADDR="[::]"
|
||||||
|
|||||||
@@ -853,6 +853,7 @@ static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
|
|||||||
{"no-speed-check", no_argument, NULL, 'S'},
|
{"no-speed-check", no_argument, NULL, 'S'},
|
||||||
{"no-cache", no_argument, NULL, 'C'},
|
{"no-cache", no_argument, NULL, 'C'},
|
||||||
{"no-dualstack-selection", no_argument, NULL, 'D'},
|
{"no-dualstack-selection", no_argument, NULL, 'D'},
|
||||||
|
{"force-aaaa-soa", no_argument, NULL, 'F'},
|
||||||
{NULL, no_argument, NULL, 0}
|
{NULL, no_argument, NULL, 0}
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
@@ -918,6 +919,10 @@ static int _config_bind_ip(int argc, char *argv[], DNS_BIND_TYPE type)
|
|||||||
server_flag |= BIND_FLAG_NO_DUALSTACK_SELECTION;
|
server_flag |= BIND_FLAG_NO_DUALSTACK_SELECTION;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'F': {
|
||||||
|
server_flag |= BIND_FLAG_FORCE_AAAA_SOA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ typedef enum {
|
|||||||
#define BIND_FLAG_NO_SPEED_CHECK (1 << 5)
|
#define BIND_FLAG_NO_SPEED_CHECK (1 << 5)
|
||||||
#define BIND_FLAG_NO_CACHE (1 << 6)
|
#define BIND_FLAG_NO_CACHE (1 << 6)
|
||||||
#define BIND_FLAG_NO_DUALSTACK_SELECTION (1 << 7)
|
#define BIND_FLAG_NO_DUALSTACK_SELECTION (1 << 7)
|
||||||
|
#define BIND_FLAG_FORCE_AAAA_SOA (1 << 8)
|
||||||
|
|
||||||
struct dns_rule_flags {
|
struct dns_rule_flags {
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
|||||||
@@ -261,8 +261,10 @@ static int _dns_server_is_return_soa(struct dns_request *request)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dns_conf_force_AAAA_SOA == 1 && request->qtype == DNS_T_AAAA) {
|
if (request->qtype == DNS_T_AAAA) {
|
||||||
return 1;
|
if (_dns_server_has_bind_flag(request, BIND_FLAG_FORCE_AAAA_SOA) == 0 || dns_conf_force_AAAA_SOA == 1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rule_flag = request->domain_rule.rules[DOMAIN_RULE_FLAGS];
|
rule_flag = request->domain_rule.rules[DOMAIN_RULE_FLAGS];
|
||||||
|
|||||||
Reference in New Issue
Block a user