summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua
blob: 8b5bedc089c73dce744e8d6f0092a78bdb508ccf (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
-- Copyright 2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0

local fs      = require("nixio.fs")
local uci     = require("luci.model.uci").cursor()
local sys     = require("luci.sys")
local net     = require "luci.model.network".init()
local util    = require("luci.util")
local dump    = util.ubus("network.interface", "dump", {})
local devices = sys.net:devices()

m = Map("banip", translate("banIP"),
	translate("Configuration of the banIP package to block ip adresses/subnets via IPSet. ")
	.. translatef("For further information "
	.. "<a href=\"%s\" target=\"_blank\">"
	.. "check the online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/banip/files/README.md"))

-- Main banIP Options

s = m:section(NamedSection, "global", "banip")

o1 = s:option(Flag, "ban_enabled", translate("Enable banIP"))
o1.default = o1.disabled
o1.rmempty = false

o2 = s:option(Flag, "ban_automatic", translate("Automatic WAN Interface Detection"))
o2.default = o2.enabled
o2.rmempty = false

o3 = s:option(MultiValue, "ban_iface", translate("Interface Selection"),
	translate("Disable the automatic WAN detection and select your preferred interface(s) manually."))
for _, dev in ipairs(devices) do
	if dev ~= "lo" and dev ~= "br-lan" then
		local iface = net:get_interface(dev)
		if iface then
			iface = iface:get_networks() or {}
			for k, v in pairs(iface) do
				iface[k] = iface[k].sid
				if iface[k] ~= "lan" then
					o3:value(iface[k], iface[k].. " (" ..dev.. ")")
				end
			end
		end
	end
end
o3.widget = "checkbox"
o3.default = ban_iface
o3.rmempty = false

o4 = s:option(ListValue, "ban_fetchutil", translate("Download Utility"),
	translate("List of supported and fully pre-configured download utilities."))
o4:value("uclient-fetch")
o4:value("wget")
o4:value("curl")
o4:value("aria2c")
o4:value("wget-nossl", "wget-nossl (noSSL)")
o4:value("busybox", "wget-busybox (noSSL)")
o4.default = "uclient-fetch"
o4.rmempty = false
	
-- Runtime Information

ds = s:option(DummyValue, "_dummy")
ds.template = "banip/runtime"

-- Source Table

bl = m:section(TypedSection, "source", translate("IP Blocklist Sources"))
bl.template = "banip/sourcelist"

ssl = bl:option(DummyValue, "ban_src", translate("SSL req."))
function ssl.cfgvalue(self, section)
	local source = self.map:get(section, "ban_src") or self.map:get(section, "ban_src_6")
	if source then
		if source:match("https://") then
			return translate("Yes")
		else
			return translate("No")
		end
	end
	return translate("n/a")
end

name_4 = bl:option(Flag, "ban_src_on", translate("enable IPv4"))
name_4.rmempty = false

name_6 = bl:option(Flag, "ban_src_on_6", translate("enable IPv6"))
name_6.rmempty = false

type = bl:option(ListValue, "ban_src_ruletype", translate("SRC/DST"))
type:value("src")
type:value("dst")
type:value("src+dst")
type.default = "src"
type.rmempty = false

des = bl:option(DummyValue, "ban_src_desc", translate("Description"))

cat = bl:option(DynamicList, "ban_src_cat", translate("ASN/Country"))
cat.datatype = "uciname"
cat.optional = true

-- Extra options

e = m:section(NamedSection, "extra", "banip", translate("Extra Options"),
	translate("Options for further tweaking in case the defaults are not suitable for you."))

e1 = e:option(Flag, "ban_debug", translate("Verbose Debug Logging"),
	translate("Enable verbose debug logging in case of any processing error."))
e1.default = e1.disabled
e1.rmempty = false

e2 = e:option(Flag, "ban_nice", translate("Low Priority Service"),
	translate("Set the nice level to 'low priority' and banIP background processing will take less resources from the system. ")
	..translate("This change requires a manual service stop/re-start to take effect."))
e2.default = e2.disabled
e2.disabled = "0"
e2.enabled = "10"
e2.rmempty = false

e3 = e:option(Value, "ban_maxqueue", translate("Max. Download Queue"),
	translate("Size of the download queue to handle downloads &amp; IPset processing in parallel (default '8'). ")
	.. translate("For further performance improvements you can raise this value, e.g. '16' or '32' should be safe."))
e3.default = 8
e3.datatype = "range(1,32)"
e3.rmempty = false

e4 = e:option(Value, "ban_triggerdelay", translate("Trigger Delay"),
	translate("Additional trigger delay in seconds before banIP processing begins."))
e4.default = 2
e4.datatype = "range(1,60)"
e4.optional = true

e5 = e:option(Value, "ban_fetchparm", translate("Download Options"),
	translate("Special options for the selected download utility, e.g. '--timeout=20 --no-check-certificate -O'."))
e5.optional = true

e10 = e:option(Value, "ban_wan_input_chain", translate("WAN Input Chain IPv4"))
e10.default = "input_wan_rule"
e10.datatype = "uciname"
e10.optional = true

e11 = e:option(Value, "ban_wan_forward_chain", translate("WAN Forward Chain IPv4"))
e11.default = "forwarding_wan_rule"
e11.datatype = "uciname"
e11.optional = true

e12 = e:option(Value, "ban_lan_input_chain", translate("LAN Input Chain IPv4"))
e12.default = "input_lan_rule"
e12.datatype = "uciname"
e12.optional = true

e13 = e:option(Value, "ban_lan_forward_chain", translate("LAN Forward Chain IPv4"))
e13.default = "forwarding_lan_rule"
e13.datatype = "uciname"
e13.optional = true

e14 = e:option(ListValue, "ban_target_src", translate("SRC Target IPv4"))
e14:value("REJECT")
e14:value("DROP")
e14.default = "DROP"
e14.optional = true

e15 = e:option(ListValue, "ban_target_dst", translate("DST Target IPv4"))
e15:value("REJECT")
e15:value("DROP")
e15.default = "REJECT"
e15.optional = true

e16 = e:option(Value, "ban_wan_input_chain_6", translate("WAN Input Chain IPv6"))
e16.default = "input_wan_rule"
e16.datatype = "uciname"
e16.optional = true

e17 = e:option(Value, "ban_wan_forward_chain_6", translate("WAN Forward Chain IPv6"))
e17.default = "forwarding_wan_rule"
e17.datatype = "uciname"
e17.optional = true

e18 = e:option(Value, "ban_lan_input_chain_6", translate("LAN Input Chain IPv6"))
e18.default = "input_lan_rule"
e18.datatype = "uciname"
e18.optional = true

e19 = e:option(Value, "ban_lan_forward_chain_6", translate("LAN Forward Chain IPv6"))
e19.default = "forwarding_lan_rule"
e19.datatype = "uciname"
e19.optional = true

e20 = e:option(ListValue, "ban_target_src_6", translate("SRC Target IPv6"))
e20:value("REJECT")
e20:value("DROP")
e20.default = "DROP"
e20.optional = true

e21 = e:option(ListValue, "ban_target_dst_6", translate("DST Target IPv6"))
e21:value("REJECT")
e21:value("DROP")
e21.default = "REJECT"
e21.optional = true

return m