X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=applications%2Fluci-app-ddns%2Fluasrc%2Fmodel%2Fcbi%2Fddns%2Fglobal.lua;fp=applications%2Fluci-app-ddns%2Fluasrc%2Fmodel%2Fcbi%2Fddns%2Fglobal.lua;h=32ca5418ef62f8dadcc2cf5b16dab0059682ab57;hp=0000000000000000000000000000000000000000;hb=8b0f83264a5d33078eaca1f15de226cc7f984f59;hpb=86c627224091bb4ea6df961470464f5ed1748d07 diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua new file mode 100644 index 000000000..32ca5418e --- /dev/null +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua @@ -0,0 +1,159 @@ +-- Copyright 2014 Christian Schoenebeck +-- Licensed to the public under the Apache License 2.0. + +local NX = require "nixio" +local NXFS = require "nixio.fs" +local DISP = require "luci.dispatcher" +local SYS = require "luci.sys" +local DDNS = require "luci.tools.ddns" -- ddns multiused functions + +-- Bootstrap theme needs 2 or 3 additional linefeeds for tab description for better optic +local LFLF = (DDNS.get_theme() == "Bootstrap") and [[

]] or [[]] + +-- cbi-map definition -- ####################################################### +local m = Map("ddns") + +-- first need to close from cbi map template our closed by template +m.title = [[]] + .. translate("Dynamic DNS") + +m.description = translate("Dynamic DNS allows that your router can be reached with " .. + "a fixed hostname while having a dynamically changing IP address.") + +m.redirect = DISP.build_url("admin", "services", "ddns") + +function m.commit_handler(self) + if self.changed then -- changes ? + os.execute("/etc/init.d/ddns reload &") -- reload configuration + end +end + +-- cbi-section definition -- ################################################### +local ns = m:section( NamedSection, "global", "ddns", + translate("Global Settings"), + translate("Configure here the details for all Dynamic DNS services including this LuCI application.") + .. [[
]] + .. translate("It is NOT recommended for casual users to change settings on this page.") + .. [[
]] + .. [[
]] + .. translate("For detailed information about parameter settings look here.") + .. [[]] + .. LFLF ) +-- section might not exist +function ns.cfgvalue(self, section) + if not self.map:get(section) then + self.map:set(section, nil, self.sectiontype) + end + return self.map:get(section) +end + +-- allow_local_ip -- ########################################################## +local ali = ns:option(Flag, "allow_local_ip") +ali.title = translate("Allow non-public IP's") +ali.description = translate("Non-public and by default blocked IP's") .. ":" + .. [[
IPv4: ]] + .. "0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16" + .. [[
IPv6: ]] + .. "::/32, f000::/4" +ali.reempty = true +ali.default = "0" +function ali.parse(self, section) + DDNS.flag_parse(self, section) +end +function ali.validate(self, value) + if value == self.default then + return "" -- default = empty + end + return value +end + +-- date_format -- ############################################################# +local df = ns:option(Value, "date_format") +df.title = translate("Date format") +df.description = [[]] + .. translate("For supported codes look here") + .. [[]] +df.template = "ddns/global_value" +df.rmempty = true +df.default = "%F %R" +df.date_string = "" +function df.cfgvalue(self, section) + local value = AbstractValue.cfgvalue(self, section) or self.default + local epoch = os.time() + self.date_string = DDNS.epoch2date(epoch, value) + return value +end +function df.validate(self, value) + if value == self.default then + return "" -- default = empty + end + return value +end + +-- run_dir -- ################################################################# +local rd = ns:option(Value, "run_dir") +rd.title = translate("Status directory") +rd.description = translate("Directory contains PID and other status information for each running section") +rd.rmempty = true +rd.default = "/var/run/ddns" +function rd.validate(self, value) + if value == self.default then + return "" -- default = empty + end + return value +end + +-- log_dir -- ################################################################# +local ld = ns:option(Value, "log_dir") +ld.title = translate("Log directory") +ld.description = translate("Directory contains Log files for each running section") +ld.rmempty = true +ld.default = "/var/log/ddns" +function ld.validate(self, value) + if value == self.default then + return "" -- default = empty + end + return value +end + +-- log_lines -- ############################################################### +local ll = ns:option(Value, "log_lines") +ll.title = translate("Log length") +ll.description = translate("Number of last lines stored in log files") +ll.rmempty = true +ll.default = "250" +ll.datatype = "and(uinteger,min(1))" +function ll.validate(self, value) + local n = tonumber(value) + if not n or math.floor(n) ~= n or n < 1 then + return nil, self.title .. ": " .. translate("minimum value '1'") + end + if value == self.default then + return "" -- default = empty + end + return value +end + +-- use_curl -- ################################################################ +if (SYS.call([[ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 ]]) == 0) +and NXFS.access("/usr/bin/curl") then + local pc = ns:option(Flag, "use_curl") + pc.title = translate("Use cURL") + pc.description = translate("If both cURL and GNU Wget are installed, Wget is used by default.") + .. [[
]] + .. translate("To use cURL activate this option.") + pc.orientation = "horizontal" + pc.rmempty = true + pc.default = "0" + function pc.parse(self, section) + DDNS.flag_parse(self, section) + end + function pc.validate(self, value) + if value == self.default then + return "" -- default = empty + end + return value + end +end + +return m