luci-app-banip: sync with banIP 0.2.0

* see details in package PR

Signed-off-by: Dirk Brenken <dev@brenken.org>
This commit is contained in:
Dirk Brenken 2019-09-09 16:51:42 +02:00
parent dffe9ca0a4
commit f21f4bd7e5
No known key found for this signature in database
GPG key ID: 9D71CD547BFAE684
3 changed files with 129 additions and 104 deletions

View file

@ -30,7 +30,9 @@ function index()
end end
function ban_action(name) function ban_action(name)
if name == "do_reload" then if name == "do_refresh" then
luci.sys.call("/etc/init.d/banip refresh >/dev/null 2>&1")
elseif name == "do_reload" then
luci.sys.call("/etc/init.d/banip reload >/dev/null 2>&1") luci.sys.call("/etc/init.d/banip reload >/dev/null 2>&1")
end end
luci.http.prepare_content("text/plain") luci.http.prepare_content("text/plain")

View file

@ -45,8 +45,6 @@ o4:value("uclient-fetch")
o4:value("wget") o4:value("wget")
o4:value("curl") o4:value("curl")
o4:value("aria2c") o4:value("aria2c")
o4:value("wget-nossl", "wget-nossl (noSSL)")
o4:value("busybox", "wget-busybox (noSSL)")
o4.default = "uclient-fetch" o4.default = "uclient-fetch"
o4.rmempty = false o4.rmempty = false
@ -57,22 +55,9 @@ ds.template = "banip/runtime"
-- Source Table -- Source Table
bl = m:section(TypedSection, "source", translate("IP Blocklist Sources")) bl = m:section(TypedSection, "source", translate("IPSet Sources"))
bl.template = "banip/sourcelist" 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 = bl:option(Flag, "ban_src_on", translate("enable IPv4"))
name_4.rmempty = false name_4.rmempty = false
@ -108,39 +93,36 @@ e2.disabled = "0"
e2.enabled = "10" e2.enabled = "10"
e2.rmempty = false e2.rmempty = false
e3 = e:option(Flag, "ban_backup", translate("Enable Blocklist Backup"), e3 = e:option(Value, "ban_backupdir", translate("Backup Directory"),
translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in 'backup mode'.")) translate("Target directory for banIP backups. Default is '/tmp', please use preferably a non-volatile disk if available."))
e3.rmempty = false e3.datatype = "directory"
e3.default = "/tmp"
e3.rmempty = true
e4 = e:option(Value, "ban_backupdir", translate("Backup Directory"), e4 = e:option(Value, "ban_maxqueue", translate("Max. Download Queue"),
translate("Target directory for banIP backups. Please use preferably a non-volatile disk, e.g. an external usb stick."))
e4:depends("ban_backup", 1)
e4.datatype = "directory"
e4.default = "/mnt"
e4.rmempty = true
e5 = e:option(Flag, "ban_backupboot", translate("Backup Mode"),
translate("Do not automatically update blocklists during startup, use their backups instead."))
e5:depends("ban_backup", 1)
e5.rmempty = true
e6 = e:option(Value, "ban_maxqueue", translate("Max. Download Queue"),
translate("Size of the download queue to handle downloads &amp; IPset processing in parallel (default '4'). ") translate("Size of the download queue to handle downloads &amp; IPset processing in parallel (default '4'). ")
.. translate("For further performance improvements you can raise this value, e.g. '8' or '16' should be safe.")) .. translate("For further performance improvements you can raise this value, e.g. '8' or '16' should be safe."))
e6.default = 4 e4.default = 4
e6.datatype = "range(1,32)" e4.datatype = "range(1,32)"
e6.rmempty = false e4.rmempty = false
e7 = e:option(Flag, "ban_autoblacklist", translate("Local Save Blacklist Addons"), e5 = e:option(ListValue, "ban_sshdaemon", translate("SSH Daemon"),
translate("Select the SSH daemon for logfile parsing, to detect break-in events."))
e5:value("dropbear")
e5:value("sshd")
e5.default = "dropbear"
e5.rmempty = true
e6 = e:option(Flag, "ban_autoblacklist", translate("Local Save Blacklist Addons"),
translate("Blacklist auto addons are stored temporary in the IPSet and saved permanently in the local blacklist. Disable this option to prevent the local save.")) translate("Blacklist auto addons are stored temporary in the IPSet and saved permanently in the local blacklist. Disable this option to prevent the local save."))
e6.default = e6.enabled
e6.rmempty = true
e7 = e:option(Flag, "ban_autowhitelist", translate("Local Save Whitelist Addons"),
translate("Whitelist auto addons are stored temporary in the IPSet and saved permanently in the local whitelist. Disable this option to prevent the local save."))
e7.default = e7.enabled e7.default = e7.enabled
e7.rmempty = true e7.rmempty = true
e8 = e:option(Flag, "ban_autowhitelist", translate("Local Save Whitelist Addons"),
translate("Whitelist auto addons are stored temporary in the IPSet and saved permanently in the local whitelist. Disable this option to prevent the local save."))
e8.default = e8.enabled
e8.rmempty = true
-- Optional Extra Options -- Optional Extra Options
e20 = e:option(Value, "ban_triggerdelay", translate("Trigger Delay"), e20 = e:option(Value, "ban_triggerdelay", translate("Trigger Delay"),
@ -149,72 +131,79 @@ e20.default = 2
e20.datatype = "range(1,60)" e20.datatype = "range(1,60)"
e20.optional = true e20.optional = true
e21 = e:option(Value, "ban_fetchparm", translate("Download Options"), e21 = e:option(ListValue, "ban_starttype", translate("Start Type"),
translate("Special options for the selected download utility, e.g. '--timeout=20 --no-check-certificate -O'.")) translate("Select the used start type during boot."))
e21:value("start")
e21:value("reload")
e21.default = "start"
e21.optional = true e21.optional = true
e22 = e:option(Value, "ban_wan_input_chain", translate("WAN Input Chain IPv4")) e22 = e:option(Value, "ban_fetchparm", translate("Download Options"),
e22.default = "input_wan_rule" translate("Special options for the selected download utility, e.g. '--timeout=20 --no-check-certificate -O'."))
e22.datatype = "uciname"
e22.optional = true e22.optional = true
e23 = e:option(Value, "ban_wan_forward_chain", translate("WAN Forward Chain IPv4")) e30 = e:option(Value, "ban_wan_input_chain", translate("WAN Input Chain IPv4"))
e23.default = "forwarding_wan_rule" e30.default = "input_wan_rule"
e23.datatype = "uciname"
e23.optional = true
e24 = e:option(Value, "ban_lan_input_chain", translate("LAN Input Chain IPv4"))
e24.default = "input_lan_rule"
e24.datatype = "uciname"
e24.optional = true
e25 = e:option(Value, "ban_lan_forward_chain", translate("LAN Forward Chain IPv4"))
e25.default = "forwarding_lan_rule"
e25.datatype = "uciname"
e25.optional = true
e26 = e:option(ListValue, "ban_target_src", translate("SRC Target IPv4"))
e26:value("REJECT")
e26:value("DROP")
e26.default = "DROP"
e26.optional = true
e27 = e:option(ListValue, "ban_target_dst", translate("DST Target IPv4"))
e27:value("REJECT")
e27:value("DROP")
e27.default = "REJECT"
e27.optional = true
e28 = e:option(Value, "ban_wan_input_chain_6", translate("WAN Input Chain IPv6"))
e28.default = "input_wan_rule"
e28.datatype = "uciname"
e28.optional = true
e29 = e:option(Value, "ban_wan_forward_chain_6", translate("WAN Forward Chain IPv6"))
e29.default = "forwarding_wan_rule"
e29.datatype = "uciname"
e29.optional = true
e30 = e:option(Value, "ban_lan_input_chain_6", translate("LAN Input Chain IPv6"))
e30.default = "input_lan_rule"
e30.datatype = "uciname" e30.datatype = "uciname"
e30.optional = true e30.optional = true
e31 = e:option(Value, "ban_lan_forward_chain_6", translate("LAN Forward Chain IPv6")) e31 = e:option(Value, "ban_wan_forward_chain", translate("WAN Forward Chain IPv4"))
e31.default = "forwarding_lan_rule" e31.default = "forwarding_wan_rule"
e31.datatype = "uciname" e31.datatype = "uciname"
e31.optional = true e31.optional = true
e32 = e:option(ListValue, "ban_target_src_6", translate("SRC Target IPv6")) e32 = e:option(Value, "ban_lan_input_chain", translate("LAN Input Chain IPv4"))
e32:value("REJECT") e32.default = "input_lan_rule"
e32:value("DROP") e32.datatype = "uciname"
e32.default = "DROP"
e32.optional = true e32.optional = true
e33 = e:option(ListValue, "ban_target_dst_6", translate("DST Target IPv6")) e33 = e:option(Value, "ban_lan_forward_chain", translate("LAN Forward Chain IPv4"))
e33:value("REJECT") e33.default = "forwarding_lan_rule"
e33:value("DROP") e33.datatype = "uciname"
e33.default = "REJECT"
e33.optional = true e33.optional = true
e34 = e:option(ListValue, "ban_target_src", translate("SRC Target IPv4"))
e34:value("REJECT")
e34:value("DROP")
e34.default = "DROP"
e34.optional = true
e35 = e:option(ListValue, "ban_target_dst", translate("DST Target IPv4"))
e35:value("REJECT")
e35:value("DROP")
e35.default = "REJECT"
e35.optional = true
e36 = e:option(Value, "ban_wan_input_chain_6", translate("WAN Input Chain IPv6"))
e36.default = "input_wan_rule"
e36.datatype = "uciname"
e36.optional = true
e37 = e:option(Value, "ban_wan_forward_chain_6", translate("WAN Forward Chain IPv6"))
e37.default = "forwarding_wan_rule"
e37.datatype = "uciname"
e37.optional = true
e38 = e:option(Value, "ban_lan_input_chain_6", translate("LAN Input Chain IPv6"))
e38.default = "input_lan_rule"
e38.datatype = "uciname"
e38.optional = true
e39 = e:option(Value, "ban_lan_forward_chain_6", translate("LAN Forward Chain IPv6"))
e39.default = "forwarding_lan_rule"
e39.datatype = "uciname"
e39.optional = true
e40 = e:option(ListValue, "ban_target_src_6", translate("SRC Target IPv6"))
e40:value("REJECT")
e40:value("DROP")
e40.default = "DROP"
e40.optional = true
e41 = e:option(ListValue, "ban_target_dst_6", translate("DST Target IPv6"))
e41:value("REJECT")
e41:value("DROP")
e41.default = "REJECT"
e41.optional = true
return m return m

View file

@ -10,16 +10,23 @@ This is free software, licensed under the Apache License, Version 2.0
{ {
var btn1 = document.getElementById("btn1"); var btn1 = document.getElementById("btn1");
var btn1_running = document.getElementById("btn1_running"); var btn1_running = document.getElementById("btn1_running");
var btn2 = document.getElementById("btn2");
var btn2_running = document.getElementById("btn2_running");
var view = document.getElementById("value_1"); var view = document.getElementById("value_1");
var input = json.data.status; var input = json.data.status;
btn1.value = "<%:Reload%>"; btn1.value = "<%:Refresh%>";
btn1.name = "do_reload"; btn1.name = "do_refresh";
btn2.value = "<%:Reload%>";
btn2.name = "do_reload";
view.innerHTML = input || "-"; view.innerHTML = input || "-";
if (input != "running") if (input != "running")
{ {
btn1.disabled = false; btn1.disabled = false;
running(btn1_running, 0); running(btn1_running, 0);
btn2.disabled = false;
running(btn2_running, 0);
} }
view = document.getElementById("value_2"); view = document.getElementById("value_2");
input = json.data.version; input = json.data.version;
@ -31,6 +38,9 @@ This is free software, licensed under the Apache License, Version 2.0
input = json.data.ipset_info; input = json.data.ipset_info;
view.innerHTML = input || "-"; view.innerHTML = input || "-";
view = document.getElementById("value_5"); view = document.getElementById("value_5");
input = json.data.backup_dir;
view.innerHTML = input || "-";
view = document.getElementById("value_6");
input = json.data.last_run; input = json.data.last_run;
view.innerHTML = input || "-"; view.innerHTML = input || "-";
} }
@ -39,10 +49,21 @@ function btn_action(action)
{ {
var btn1 = document.getElementById("btn1"); var btn1 = document.getElementById("btn1");
var btn1_running = document.getElementById("btn1_running"); var btn1_running = document.getElementById("btn1_running");
var btn2 = document.getElementById("btn2");
var btn2_running = document.getElementById("btn2_running");
btn1.disabled = true; if (action.name === "do_refresh")
running(btn1_running, 1); {
btn1.disabled = true;
btn2.disabled = true;
running(btn1_running, 1);
}
else if (action.name === "do_reload")
{
btn1.disabled = true;
btn2.disabled = true;
running(btn2_running, 1);
}
new XHR.get('<%=luci.dispatcher.build_url("admin", "services", "banip")%>/action/' + action.name, null, new XHR.get('<%=luci.dispatcher.build_url("admin", "services", "banip")%>/action/' + action.name, null,
function(x) function(x)
{ {
@ -114,17 +135,30 @@ function btn_action(action)
</div> </div>
</div> </div>
<div class="cbi-value" id="status_5"> <div class="cbi-value" id="status_5">
<label class="cbi-value-title" for="status_5"><%:Last Run%></label> <label class="cbi-value-title" for="status_5"><%:Backup Directory%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<span class="runtime" id="value_5">-</span> <span class="runtime" id="value_5">-</span>
</div> </div>
</div> </div>
<div class="cbi-value" id="status_6">
<label class="cbi-value-title" for="status_6"><%:Last Run%></label>
<div class="cbi-value-field">
<span class="runtime" id="value_6">-</span>
</div>
</div>
<hr /> <hr />
<div class="cbi-value" id="button_1"> <div class="cbi-value" id="button_1">
<label class="cbi-value-title" for="button_1"><%:Reload IPSets%></label> <label class="cbi-value-title" for="button_1"><%:Refresh IPSets%></label>
<div class="cbi-value-field"> <div class="cbi-value-field">
<input class="cbi-button cbi-button-apply" id="btn1" type="button" name="do_reload" value="<%:Reload%>" onclick="btn_action(this)" /> <input class="cbi-button cbi-button-apply" id="btn1" type="button" name="do_refresh" value="<%:Refresh%>" onclick="btn_action(this)" />
<span id="btn1_running" class="btn_running"></span> <span id="btn1_running" class="btn_running"></span>
</div> </div>
</div> </div>
<div class="cbi-value" id="button_2">
<label class="cbi-value-title" for="button_2"><%:Reload IPSet Sources%></label>
<div class="cbi-value-field">
<input class="cbi-button cbi-button-reset" id="btn2" type="button" name="do_reload" value="<%:Reload%>" onclick="btn_action(this)" />
<span id="btn2_running" class="btn_running"></span>
</div>
</div>