Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>lilik-openwrt-22.03
@ -0,0 +1,57 @@ | |||
# | |||
# Copyright (C) 2010 OpenWrt.org | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=luci-app-bcp38 | |||
PKG_VERSION:=2 | |||
PKG_RELEASE:=1 | |||
PKG_LICENSE:=Apache-2.0 | |||
LUCI_DIR:=/usr/lib/lua/luci | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/luci-app-bcp38 | |||
SECTION:=luci | |||
CATEGORY:=LuCI | |||
TITLE:=BCP38 LuCI interface | |||
MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk> | |||
PKGARCH:=all | |||
DEPENDS:= lua luci-base +bcp38 | |||
SUBMENU:=3. Applications | |||
endef | |||
define Package/luci-app-bcp38/description | |||
Control BCP38 subnet blocking | |||
endef | |||
define Build/Compile | |||
endef | |||
define Build/Configure | |||
endef | |||
define Package/luci-app-bcp38/install | |||
$(INSTALL_DIR) $(1)$(LUCI_DIR)/controller $(1)$(LUCI_DIR)/model/cbi | |||
$(INSTALL_DATA) ./files/bcp38-controller.lua $(1)$(LUCI_DIR)/controller/bcp38.lua | |||
$(INSTALL_DATA) ./files/bcp38-cbi.lua $(1)$(LUCI_DIR)/model/cbi/bcp38.lua | |||
$(INSTALL_DIR) $(1)/etc/uci-defaults | |||
$(INSTALL_BIN) ./files/uci-defaults-bcp38 $(1)/etc/uci-defaults/luci-bcp38 | |||
endef | |||
define Package/luci-app-bcp38/postinst | |||
#!/bin/sh | |||
[ -x /etc/uci-defaults/luci-bcp38 ] && /etc/uci-defaults/luci-bcp38 || exit 0 | |||
endef | |||
define Package/luci-app-bcp38/postrm | |||
#!/bin/sh | |||
uci delete ucitrack.@bcp38[0] | |||
uci commit | |||
endef | |||
$(eval $(call BuildPackage,luci-app-bcp38)) |
@ -0,0 +1,58 @@ | |||
--[[ | |||
LuCI - Lua Configuration Interface | |||
Copyright 2014 Toke Høiland-Jørgensen <toke@toke.dk> | |||
Licensed under the Apache License, Version 2.0 (the "License"); | |||
you may not use this file except in compliance with the License. | |||
You may obtain a copy of the License at | |||
http://www.apache.org/licenses/LICENSE-2.0 | |||
$Id$ | |||
]]-- | |||
local wa = require "luci.tools.webadmin" | |||
local net = require "luci.model.network".init() | |||
local ifaces = net:get_interfaces() | |||
m = Map("bcp38", translate("BCP38"), | |||
translate("This function blocks packets with private address destinations " .. | |||
"from going out onto the internet as per " .. | |||
"<a href=\"http://tools.ietf.org/html/bcp38\">BCP 38</a>.")) | |||
s = m:section(TypedSection, "bcp38", translate("BCP38 config")) | |||
s.anonymous = true | |||
-- BASIC | |||
e = s:option(Flag, "enabled", translate("Enable")) | |||
e.rmempty = false | |||
a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"), | |||
translate("Attempt to automatically detect if the upstream IP " .. | |||
"will be blocked by the configuration, and add an exception if it will. " .. | |||
"If this does not work correctly, you can add exceptions manually below.")) | |||
a.rmempty = false | |||
n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " .. | |||
"(should be the upstream WAN interface).")) | |||
for _, iface in ipairs(ifaces) do | |||
if iface:is_up() then | |||
n:value(iface:name()) | |||
end | |||
end | |||
n.rmempty = false | |||
ma = s:option(DynamicList, "match", | |||
translate("Blocked IP ranges")) | |||
ma.datatype = "ip4addr" | |||
nm = s:option(DynamicList, "nomatch", | |||
translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. ".. | |||
"Use to whitelist your upstream network if you're behind a double NAT " .. | |||
"and the auto-detection doesn't work.")) | |||
nm.datatype = "ip4addr" | |||
return m |
@ -0,0 +1,7 @@ | |||
module("luci.controller.bcp38", package.seeall) | |||
function index() | |||
entry({"admin", "network", "firewall", "bcp38"}, | |||
cbi("bcp38"), | |||
_("BCP38"), 50).dependent = false | |||
end |
@ -0,0 +1,11 @@ | |||
#!/bin/sh | |||
uci -q batch <<-EOF >/dev/null | |||
delete ucitrack.@bcp38[-1] | |||
add ucitrack bcp38 | |||
add_list ucitrack.@bcp38[0].affects=firewall | |||
commit ucitrack | |||
EOF | |||
rm -f /tmp/luci-indexcache | |||
exit 0 |