Created
September 14, 2021 11:27
-
-
Save Aikhjarto/8be5a9525e667a020ed68c43e6443c05 to your computer and use it in GitHub Desktop.
Convert dd-wrt's forward_spec to OpenWrt's redirct rules suitable for /etc/network/firewall
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Convert dd-wrt's forward_spec from 'nvram get forward_spec' to OpenWrt's | |
redirect rules suitable for /etc/network/firewall | |
""" | |
from io import StringIO | |
import re | |
# example forward line taken from 'nvram get forward_spec' on a dd-wrt router | |
forward_spec=r"https:on:tcp:443>192.168.1.201:443 ssh:on:tcp:22>192.168.1.202:22 ssh2:off:tcp:23>192.168.1.117:22" | |
def process_forward_spec(forward_spec): | |
b=StringIO() | |
for spec in forward_spec.split(' '): | |
name, enabled, proto, src_port, dst, dst_port = re.split(':|>', spec) | |
b.write(f'\nconfig redirect\n' | |
f"\toption target 'DNAT'\n" | |
f"\toption name '{name}'\n" | |
f"\tlist proto '{proto}'\n" | |
f"\toption src 'wan'\n" | |
f"\toption src_dport '{src_port}'\n" | |
f"\toption dest 'lan'\n" | |
f"\toption dest_ip '{dst}'\n" | |
f"\toption dest_port '{dst_port}'\n") | |
if not enabled=='on':` | |
b.write(f"\toption enabled '0'\n") | |
return b.getvalue() | |
if __name__=='__main__': | |
print(process_forward_spec(forward_spec)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment