Skip to content

Commit 124dd12

Browse files
miniupnpd: Add uci-defaults script to migrate UCI config options
Signed-off-by: Self Hosting Group <[email protected]>
1 parent 2da9f2b commit 124dd12

File tree

2 files changed

+107
-1
lines changed

2 files changed

+107
-1
lines changed

net/miniupnpd/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
99

1010
PKG_NAME:=miniupnpd
1111
PKG_VERSION:=2.3.7
12-
PKG_RELEASE:=1
12+
PKG_RELEASE:=2
1313

1414
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
1515
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
@@ -94,8 +94,10 @@ define Package/miniupnpd/install/Default
9494
$(INSTALL_DIR) $(1)/etc/init.d
9595
$(INSTALL_DIR) $(1)/etc/config
9696
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
97+
$(INSTALL_DIR) $(1)/etc/uci-defaults
9798
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/miniupnpd $(1)/usr/sbin/miniupnpd
9899
$(INSTALL_BIN) ./files/miniupnpd.init $(1)/etc/init.d/miniupnpd
100+
$(INSTALL_BIN) ./files/upnpd-migration.uci-defaults $(1)/etc/uci-defaults/98-miniupnpd
99101
$(INSTALL_CONF) ./files/upnpd.config $(1)/etc/config/upnpd
100102
$(INSTALL_DATA) ./files/miniupnpd.hotplug $(1)/etc/hotplug.d/iface/50-miniupnpd
101103
endef
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#!/bin/sh
2+
3+
uci get upnpd.config.download_kbps 2>/dev/null && exit 0
4+
5+
# Remove clean_ruleset_interval and clean_ruleset_threshold as not standard/working
6+
uci -q batch 2>/dev/null <<-EOF
7+
delete upnpd.config.clean_ruleset_interval
8+
delete upnpd.config.clean_ruleset_threshold
9+
commit upnpd
10+
EOF
11+
12+
# Rename enable_nat_pmp to enable_pcp_pmp as upstream
13+
enable_pcp_pmp="$(uci get upnpd.config.enable_natpmp 2>/dev/null || echo 1)"
14+
uci -q batch 2>/dev/null <<-EOF
15+
set upnpd.config.enable_pcp_pmp="$enable_pcp_pmp"
16+
delete upnpd.config.enable_natpmp
17+
commit upnpd
18+
EOF
19+
20+
# Convert download/upload to kbit/s and rename to download_kbps/upload_kbps and update defaults
21+
download="$(uci get upnpd.config.download 2>/dev/null || echo 1024)"
22+
upload="$(uci get upnpd.config.upload 2>/dev/null || echo 512)"
23+
if [ "$download" = "1024" ] && [ "$upload" = "512" ]; then
24+
download_kbps=100000
25+
upload_kbps=50000
26+
else
27+
download_kbps="$((download * 8 * 1000 / 1024))"
28+
upload_kbps="$((upload * 8 * 1000 / 1024))"
29+
fi
30+
uci -q batch 2>/dev/null <<-EOF
31+
set upnpd.config.download_kbps="$download_kbps"
32+
set upnpd.config.upload_kbps="$upload_kbps"
33+
delete upnpd.config.download
34+
delete upnpd.config.upload
35+
commit upnpd
36+
EOF
37+
38+
# Convert igdv1 boolean to upnp_igd_compat string with value igdv1
39+
if [ "$(uci get upnpd.config.igdv1 2>/dev/null || echo 1)" = "1" ]; then
40+
upnp_igd_compat=igdv1
41+
else
42+
upnp_igd_compat=igdv2
43+
fi
44+
uci -q batch 2>/dev/null <<-EOF
45+
set upnpd.config.upnp_igd_compat="$upnp_igd_compat"
46+
delete upnpd.config.igdv1
47+
commit upnpd
48+
EOF
49+
50+
# Rename and invert secure_mode to allow_third_party_mapping
51+
if [ "$(uci get upnpd.config.secure_mode 2>/dev/null)" = "0" ]; then
52+
allow_third_party_mapping=1
53+
else
54+
allow_third_party_mapping=0
55+
fi
56+
uci -q batch 2>/dev/null <<-EOF
57+
set upnpd.config.allow_third_party_mapping="$allow_third_party_mapping"
58+
delete upnpd.config.secure_mode
59+
commit upnpd
60+
EOF
61+
62+
# Remove port if UCI default
63+
if [ "$(uci get upnpd.config.port 2>/dev/null)" = "5000" ]; then
64+
uci -q batch 2>/dev/null <<-EOF
65+
delete upnpd.config.port
66+
commit upnpd
67+
EOF
68+
fi
69+
70+
# Update access control list defaults
71+
if [ "$(uci get upnpd.@perm_rule[0].action)" = "allow" ] &&
72+
[ "$(uci get upnpd.@perm_rule[0].ext_ports)" = "1024-65535" ] &&
73+
[ "$(uci get upnpd.@perm_rule[0].int_addr)" = "0.0.0.0/0" ] &&
74+
[ "$(uci get upnpd.@perm_rule[0].int_ports)" = "1024-65535" ] &&
75+
[ "$(uci get upnpd.@perm_rule[1].action)" = "deny" ] &&
76+
[ "$(uci get upnpd.@perm_rule[1].ext_ports)" = "0-65535" ] &&
77+
[ "$(uci get upnpd.@perm_rule[1].int_addr)" = "0.0.0.0/0" ] &&
78+
[ "$(uci get upnpd.@perm_rule[1].int_ports)" = "0-65535" ] &&
79+
[ "$(uci get upnpd.@perm_rule[2] 2>/dev/null)" != "perm_rule" ]; then
80+
uci -q batch 2>/dev/null <<-EOF
81+
set upnpd.@perm_rule[0]=perm_rule
82+
set upnpd.@perm_rule[0].action='allow'
83+
set upnpd.@perm_rule[0].ext_ports='1024-65535'
84+
set upnpd.@perm_rule[0].int_addr='0.0.0.0/0'
85+
set upnpd.@perm_rule[0].int_ports='1024-65535'
86+
set upnpd.@perm_rule[0].comment='Allow high ports'
87+
set upnpd.@perm_rule[1]=perm_rule
88+
set upnpd.@perm_rule[1].action='deny'
89+
set upnpd.@perm_rule[1].ext_ports='1-1023'
90+
set upnpd.@perm_rule[1].int_addr='0.0.0.0/0'
91+
set upnpd.@perm_rule[1].int_ports='1-1023'
92+
set upnpd.@perm_rule[1].comment='Low ports'
93+
add upnpd perm_rule
94+
set upnpd.@perm_rule[2]=perm_rule
95+
set upnpd.@perm_rule[2].action='deny'
96+
set upnpd.@perm_rule[2].ext_ports='1-65535'
97+
set upnpd.@perm_rule[2].int_addr='0.0.0.0/0'
98+
set upnpd.@perm_rule[2].int_ports='1-65535'
99+
set upnpd.@perm_rule[2].comment='Deny by default'
100+
commit upnpd
101+
EOF
102+
fi
103+
104+
exit 0

0 commit comments

Comments
 (0)