Skip to content

Commit 05d611d

Browse files
miniupnpd: Add uci-defaults script to migrate UCI config options
Signed-off-by: Self Hosting Group <[email protected]>
1 parent 3f50225 commit 05d611d

File tree

2 files changed

+111
-0
lines changed

2 files changed

+111
-0
lines changed

net/miniupnpd/Makefile

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

0 commit comments

Comments
 (0)