summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-simple-adblock/luasrc/model/cbi/simple-adblock.lua
blob: 4dbb21c6edd9cfae3f029156fa6cd6fb42ad6557 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
-- Copyright 2016-2018 Stan Grishin <stangri@melmac.net>
-- Licensed to the public under the Apache License 2.0.

m = Map("simple-adblock", translate("Simple AdBlock Settings"))

h = m:section(NamedSection, "config", "simple-adblock", translate("Service Status"))

local packageName = "simple-adblock"
local uci = require "luci.model.uci".cursor()
local util = require "luci.util"
local enabledFlag = uci:get(packageName, "config", "enabled")
local status = util.ubus('service', 'list', { name = packageName })
if status and status[packageName] and status[packageName]['instances'] and status[packageName]['instances']['status'] and status[packageName]['instances']['status']['data'] and status[packageName]['instances']['status']['data']['status'] then
	status = status[packageName]['instances']['status']['data']['status']
else
	status =  "Stopped"
end
if status:match("Reloading") then
	ds = h:option(DummyValue, "_dummy", translate("Service Status"))
	ds.template = "simple-adblock/status"
	ds.value = status
else
	en = h:option(Button, "__toggle")
	if enabledFlag ~= "1" or status:match("Stopped") then
		en.title      = translate("Service is disabled/stopped")
		en.inputtitle = translate("Enable/Start")
		en.inputstyle = "apply important"
		if nixio.fs.access("/var/simple-adblock.cache") then
			ds = h:option(DummyValue, "_dummy", translate("Service Status"))
			ds.template = "simple-adblock/status"
			ds.value = "Cache file containing " .. luci.util.trim(luci.sys.exec("wc -l < /var/simple-adblock.cache")) .. " domains found"
		end
	else
		en.title      = translate("Service is enabled/started")
		en.inputtitle = translate("Stop/Disable")
		en.inputstyle = "reset important"
		ds = h:option(DummyValue, "_dummy", translate("Service Status"))
		ds.template = "simple-adblock/status"
		ds.value = status
		if not status:match("Success") then
			reload = h:option(Button, "__reload")
			reload.title      = translate("Service started with error")
			reload.inputtitle = translate("Reload")
			reload.inputstyle = "apply important"
			function reload.write()
				luci.sys.exec("/etc/init.d/simple-adblock reload")
				luci.http.redirect(luci.dispatcher.build_url("admin/services/" .. packageName))
			end
		end
	end
	function en.write()
		enabledFlag = enabledFlag == "1" and "0" or "1"
		uci:set(packageName, "config", "enabled", enabledFlag)
		uci:save(packageName)
		uci:commit(packageName)
		if enabledFlag == "0" then
			luci.sys.init.stop(packageName)
--			luci.sys.exec("/etc/init.d/simple-adblock killcache")
		else
			luci.sys.init.enable(packageName)
			luci.sys.init.start(packageName)
		end
		luci.http.redirect(luci.dispatcher.build_url("admin/services/" .. packageName))
	end
end

s = m:section(NamedSection, "config", "simple-adblock", translate("Configuration"))
-- General options
s:tab("basic", translate("Basic Configuration"))

o2 = s:taboption("basic", ListValue, "verbosity", translate("Output Verbosity Setting"),translate("Controls system log and console output verbosity"))
o2:value("0", translate("Suppress output"))
o2:value("1", translate("Some output"))
o2:value("2", translate("Verbose output"))
o2.rmempty = false
o2.default = 2

o3 = s:taboption("basic", ListValue, "force_dns", translate("Force Router DNS"), translate("Forces Router DNS use on local devices, also known as DNS Hijacking"))
o3:value("0", translate("Let local devices use their own DNS servers if set"))
o3:value("1", translate("Force Router DNS server to all local devices"))
o3.rmempty = false
o3.default = 1

local sysfs_path = "/sys/class/leds/"
local leds = {}
if nixio.fs.access(sysfs_path) then
	leds = nixio.util.consume((nixio.fs.dir(sysfs_path)))
end
if #leds ~= 0 then
	o3 = s:taboption("basic", Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in")
		.. [[ <a href="]] .. luci.dispatcher.build_url("admin/system/leds") .. [[">]]
		.. translate("System LED Configuration") .. [[</a>]])
	o3.rmempty = true
	o3:value("", translate("none"))
	for k, v in ipairs(leds) do
		o3:value(v)
	end
end

s:tab("advanced", translate("Advanced Configuration"))

o6 = s:taboption("advanced", Value, "boot_delay", translate("Delay (in seconds) for on-boot start"), translate("Run service after set delay on boot"))
o6.default = 120
o6.datatype = "range(1,600)"

o7 = s:taboption("advanced", Value, "download_timeout", translate("Download time-out (in seconds)"), translate("Stop the download if it is stalled for set number of seconds"))
o7.default = 10
o7.datatype = "range(1,60)"

o8 = s:taboption("advanced", ListValue, "debug", translate("Enable Debugging"), translate("Enables debug output to /tmp/simple-adblock.log"))
o8:value("", translate("Disable Debugging"))
o8:value("1", translate("Enable Debugging"))
o8.rmempty = true
o8.default = 0


s2 = m:section(NamedSection, "config", "simple-adblock", translate("Whitelist and Blocklist Management"))
-- Whitelisted Domains
d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted"))
d1.addremove = false
d1.optional = false

-- Blacklisted Domains
d3 = s2:option(DynamicList, "blacklist_domain", translate("Blacklisted Domains"), translate("Individual domains to be blacklisted"))
d3.addremove = false
d3.optional = false

-- Whitelisted Domains URLs
d2 = s2:option(DynamicList, "whitelist_domains_url", translate("Whitelisted Domain URLs"), translate("URLs to lists of domains to be whitelisted"))
d2.addremove = false
d2.optional = false

-- Blacklisted Domains URLs
d4 = s2:option(DynamicList, "blacklist_domains_url", translate("Blacklisted Domain URLs"), translate("URLs to lists of domains to be blacklisted"))
d4.addremove = false
d4.optional = false

-- Blacklisted Hosts URLs
d5 = s2:option(DynamicList, "blacklist_hosts_url", translate("Blacklisted Hosts URLs"), translate("URLs to lists of hosts to be blacklisted"))
d5.addremove = false
d5.optional = false

return m