X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=applications%2Fluci-app-ddns%2Fluasrc%2Ftools%2Fddns.lua;h=690b9b30ceb57d62a1ef3bce90917326e229d5ac;hb=09ea6dbd33cc46df3ca17c640ffcb3d148a4639a;hp=b326cd1206b436e70cc00f5bddf65856fb738a52;hpb=e1fb9e579a69406f0c7c632792f9602de0609709;p=project%2Fluci.git diff --git a/applications/luci-app-ddns/luasrc/tools/ddns.lua b/applications/luci-app-ddns/luasrc/tools/ddns.lua index b326cd120..690b9b30c 100755 --- a/applications/luci-app-ddns/luasrc/tools/ddns.lua +++ b/applications/luci-app-ddns/luasrc/tools/ddns.lua @@ -1,4 +1,4 @@ --- Copyright 2014-2016 Christian Schoenebeck +-- Copyright 2014-2018 Christian Schoenebeck -- Licensed to the public under the Apache License 2.0. module("luci.tools.ddns", package.seeall) @@ -24,12 +24,14 @@ has_fetch = (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0) has_fetchssl = NXFS.access("/lib/libustream-ssl.so") has_bbwget = (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0) has_bindhost = (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) + or (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0) + or (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0) has_hostip = (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0) has_nslookup = (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0) has_ipv6 = (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables")) has_ssl = (has_wgetssl or has_curlssl or (has_fetch and has_fetchssl)) has_proxy = (has_wgetssl or has_curlpxy or has_fetch or has_bbwget) -has_forceip = ((has_wgetssl or has_curl or has_fetch) and (has_bindhost or has_hostip)) +has_forceip = (has_wgetssl or has_curl or has_fetch) -- only really needed for transfer has_dnsserver = (has_bindhost or has_hostip or has_nslookup) has_bindnet = (has_wgetssl or has_curl) has_cacerts = _check_certs() @@ -55,7 +57,7 @@ end function epoch2date(epoch, format) if not format or #format < 2 then local uci = UCI.cursor() - format = uci:get("ddns", "global", "date_format") or "%F %R" + format = uci:get("ddns", "global", "ddns_dateformat") or "%F %R" uci:unload("ddns") end format = format:gsub("%%n", "
") -- replace newline @@ -65,18 +67,35 @@ end -- read lastupdate from [section].update file function get_lastupd(section) - local uci = UCI.cursor() - local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns" - local etime = tonumber(NXFS.readfile("%s/%s.update" % { run_dir, section } ) or 0 ) + local uci = UCI.cursor() + local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns" + local etime = tonumber(NXFS.readfile("%s/%s.update" % { rdir, section } ) or 0 ) uci:unload("ddns") return etime end +-- read registered IP from [section].ip file +function get_regip(section, chk_sec) + local uci = UCI.cursor() + local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns" + local ip = "NOFILE" + if NXFS.access("%s/%s.ip" % { rdir, section }) then + local ftime = NXFS.stat("%s/%s.ip" % { rdir, section }, "ctime") or 0 + local otime = os.time() + -- give ddns-scripts time (9 sec) to update file + if otime < (ftime + chk_sec + 9) then + ip = NXFS.readfile("%s/%s.ip" % { rdir, section }) + end + end + uci:unload("ddns") + return ip +end + -- read PID from run file and verify if still running function get_pid(section) - local uci = UCI.cursor() - local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns" - local pid = tonumber(NXFS.readfile("%s/%s.pid" % { run_dir, section } ) or 0 ) + local uci = UCI.cursor() + local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns" + local pid = tonumber(NXFS.readfile("%s/%s.pid" % { rdir, section } ) or 0 ) if pid > 0 and not NX.kill(pid, 0) then pid = 0 end