diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/luci-base/luasrc/util.lua | 17 | ||||
-rw-r--r-- | modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua | 39 |
2 files changed, 56 insertions, 0 deletions
diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua index 2956aadcf3..d614a6c799 100644 --- a/modules/luci-base/luasrc/util.lua +++ b/modules/luci-base/luasrc/util.lua @@ -636,6 +636,23 @@ function libpath() return require "nixio.fs".dirname(ldebug.__file__) end +function checklib(fullpathexe, wantedlib) + local fs = require "nixio.fs" + local haveldd = fs.access('/usr/bin/ldd') + if not haveldd then + return -1 + end + local libs = exec("/usr/bin/ldd " .. fullpathexe) + if not libs then + return 0 + end + for k, v in ipairs(split(libs)) do + if v:find(wantedlib) then + return 1 + end + end + return 0 +end -- -- Coroutine safe xpcall and pcall versions modified for Luci diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua index ff9438ae71..476c9262b1 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua @@ -2,6 +2,8 @@ -- Licensed to the public under the Apache License 2.0. local ipc = require "luci.ip" +local o +require "luci.util" m = Map("dhcp", translate("DHCP and DNS"), translate("Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol" .. @@ -70,6 +72,19 @@ s:taboption("advanced", Flag, "localise_queries", translate("Localise queries"), translate("Localise hostname depending on the requesting subnet if multiple IPs are available")) +local have_dnssec_support = luci.util.checklib("/usr/sbin/dnsmasq", "libhogweed.so") + +if have_dnssec_support then + o = s:taboption("advanced", Flag, "dnssec", + translate("DNSSEC")) + o.optional = true + + o = s:taboption("advanced", Flag, "dnsseccheckunsigned", + translate("DNSSEC check unsigned"), + translate("Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains")) + o.optional = true +end + s:taboption("general", Value, "local", translate("Local server"), translate("Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only")) @@ -133,6 +148,7 @@ rl:depends("rebind_protection", "1") rd = s:taboption("general", DynamicList, "rebind_domain", translate("Domain whitelist"), translate("List of domains to allow RFC1918 responses for")) +rd.optional = true rd:depends("rebind_protection", "1") rd.datatype = "host(1)" @@ -206,6 +222,29 @@ db.optional = true db:depends("enable_tftp", "1") db.placeholder = "pxelinux.0" +o = s:taboption("general", Flag, "localservice", + translate("Local Service Only"), + translate("Limit DNS service to subnets interfaces on which we are serving DNS.")) +o.optional = false +o.rmempty = false + +o = s:taboption("general", Flag, "nonwildcard", + translate("Non-wildcard"), + translate("Bind only to specific interfaces rather than wildcard address.")) +o.optional = false +o.rmempty = false + +o = s:taboption("general", DynamicList, "interface", + translate("Listen Interfaces"), + translate("Limit listening to these interfaces, and loopback.")) +o.optional = true +o:depends("nonwildcard", true) + +o = s:taboption("general", DynamicList, "notinterface", + translate("Exclude interfaces"), + translate("Prevent listening on thise interfaces.")) +o.optional = true +o:depends("nonwildcard", true) m:section(SimpleSection).template = "admin_network/lease_status" |