summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-adblock/luasrc/controller
diff options
context:
space:
mode:
authorDirk Brenken <dev@brenken.org>2018-12-19 17:33:29 +0100
committerDirk Brenken <dev@brenken.org>2018-12-20 08:45:35 +0100
commit87ec92d1ed7cf94b1b17248728e59770c242570c (patch)
tree752f2b31000db49ddd69abe7f1ae7f55e07213b9 /applications/luci-app-adblock/luasrc/controller
parentefb4d7c40a058d7191bc8ac0074aeccb7774365b (diff)
luci-app-adblock: sync with release 3.6.0
* add adblock dns query reporting via tcpdump (see readme for details) * fix tld compression on low memory systems (< 64 MB) * fix various small issues Signed-off-by: Dirk Brenken <dev@brenken.org>
Diffstat (limited to 'applications/luci-app-adblock/luasrc/controller')
-rw-r--r--applications/luci-app-adblock/luasrc/controller/adblock.lua76
1 files changed, 73 insertions, 3 deletions
diff --git a/applications/luci-app-adblock/luasrc/controller/adblock.lua b/applications/luci-app-adblock/luasrc/controller/adblock.lua
index 4c77244710..0cfb8fc80c 100644
--- a/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -16,7 +16,8 @@ function index()
end
entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
- entry({"admin", "services", "adblock", "log"}, template("adblock/logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "adblock", "report"}, template("adblock/report"), _("DNS Query Report"), 20).leaf = true
+ entry({"admin", "services", "adblock", "log"}, template("adblock/logread"), _("Logfile"), 30).leaf = true
entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
entry({"admin", "services", "adblock", "advanced", "blacklist"}, form("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
entry({"admin", "services", "adblock", "advanced", "whitelist"}, form("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
@@ -24,17 +25,49 @@ function index()
entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true
entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
entry({"admin", "services", "adblock", "logread"}, call("logread"), nil).leaf = true
- entry({"admin", "services", "adblock", "status"}, call("status_update"), nil).leaf = true
+ entry({"admin", "services", "adblock", "status_update"}, call("status_update"), nil).leaf = true
+ entry({"admin", "services", "adblock", "report_json"}, call("report_json"), nil).leaf = true
+ entry({"admin", "services", "adblock", "report_text"}, call("report_text"), nil).leaf = true
entry({"admin", "services", "adblock", "action"}, call("adb_action"), nil).leaf = true
end
-function adb_action(name)
+function adb_action(name, domain)
if name == "do_suspend" then
luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
elseif name == "do_resume" then
luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
elseif name == "do_refresh" then
luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ local pid_file = "/var/run/adblock.pid"
+ if nixio.fs.access(pid_file) then
+ repeat
+ nixio.nanosleep(1)
+ until nixio.fs.readfile(pid_file) == ""
+ end
+ elseif name == "do_report" then
+ luci.sys.call("/etc/init.d/adblock report false >/dev/null 2>&1")
+ local rep_dir = uci:get("adblock", "extra", "adb_repdir") or "/tmp"
+ repeat
+ nixio.nanosleep(1)
+ until not nixio.fs.access(rep_dir.. "/adb_report.raw")
+ elseif name == "add_blacklist" then
+ local file = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
+ if nixio.fs.access(file) then
+ local blacklist = nixio.fs.readfile(file)
+ if not string.find(blacklist, domain, 1, plain)
+ then
+ nixio.fs.writefile(file, blacklist.. domain.. "\n")
+ end
+ end
+ elseif name == "add_whitelist" then
+ local file = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+ if nixio.fs.access(file) then
+ local whitelist = nixio.fs.readfile(file)
+ if not string.find(whitelist, domain, 1, plain)
+ then
+ nixio.fs.writefile(file, whitelist.. domain.. "\n")
+ end
+ end
end
luci.http.prepare_content("text/plain")
luci.http.write("0")
@@ -53,6 +86,43 @@ function status_update()
end
end
+function report_json()
+ local rep_dir
+ local rep_file
+ local content
+
+ rep_dir = uci:get("adblock", "extra", "adb_repdir") or "/tmp"
+ rep_file = rep_dir.. "/adb_report.json"
+ http.prepare_content("application/json")
+
+ if nixio.fs.access(rep_file) then
+ content = json.parse(nixio.fs.readfile(rep_file) or "")
+ http.write_json(content)
+ else
+ http.write_json("{}")
+ end
+end
+
+function report_text()
+ local file
+ local rep_dir
+ local rep_file
+ local content
+
+ rep_dir = uci:get("adblock", "extra", "adb_repdir") or "/tmp"
+ rep_file = rep_dir.. "/adb_report"
+ http.prepare_content("text/plain")
+
+ if nixio.fs.access(rep_file) then
+ file = io.open(rep_file, "r")
+ content = file:read("*all")
+ file:close()
+ http.write(content)
+ else
+ http.write("")
+ end
+end
+
function logread()
local content