mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 18:31:52 +00:00
* fix live-build resolv.conf * improved debuggability * wip: start-tunnel * fixes for trixie and tor * non-free-firmware on trixie * wip * web server WIP * wip: tls refactor * FE patchdb, mocks, and most endpoints * fix editing records and patch mocks * refactor complete * finish api * build and formatter update * minor change toi viewing addresses and fix build * fixes * more providers * endpoint for getting config * fix tests * api fixes * wip: separate port forward controller into parts * simplify iptables rules * bump sdk * misc fixes * predict next subnet and ip, use wan ips, and form validation * refactor: break big components apart and address todos (#3043) * refactor: break big components apart and address todos * starttunnel readme, fix pf mocks, fix adding tor domain in startos --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * better tui * tui tweaks * fix: address comments * better regex for subnet * fixes * better validation * handle rpc errors * build fixes * fix: address comments (#3044) * fix: address comments * fix unread notification mocks * fix row click for notification --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> * fix raspi build * fix build * fix build * fix build * fix build * try to fix build * fix tests * fix tests * fix rsync tests * delete useless effectful test --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Alex Inkin <alexander@inkin.ru>
38 lines
965 B
Bash
Executable File
38 lines
965 B
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -z "$sip" ] || [ -z "$dip" ] || [ -z "$sport" ] || [ -z "$dport" ]; then
|
|
>&2 echo 'missing required env var'
|
|
exit 1
|
|
fi
|
|
|
|
# Helper function to check if a rule exists
|
|
nat_rule_exists() {
|
|
iptables -t nat -C "$@" 2>/dev/null
|
|
}
|
|
|
|
# Helper function to add or delete a rule idempotently
|
|
# Usage: apply_rule [add|del] <iptables args...>
|
|
apply_nat_rule() {
|
|
local action="$1"
|
|
shift
|
|
|
|
if [ "$action" = "add" ]; then
|
|
# Only add if rule doesn't exist
|
|
if ! rule_exists "$@"; then
|
|
iptables -t nat -A "$@"
|
|
fi
|
|
elif [ "$action" = "del" ]; then
|
|
if rule_exists "$@"; then
|
|
iptables -t nat -D "$@"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
if [ "$UNDO" = 1 ]; then
|
|
action="del"
|
|
else
|
|
action="add"
|
|
fi
|
|
|
|
apply_nat_rule "$action" PREROUTING -p tcp -d $sip --dport $sport -j DNAT --to-destination $dip:$dport
|
|
apply_nat_rule "$action" OUTPUT -p tcp -d $sip --dport $sport -j DNAT --to-destination $dip:$dport |