53 lines
1.7 KiB
Bash
Executable File
53 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Please supply one file"
|
|
$(exit 1); echo "$?"
|
|
elif [ $# -ge 2 ]; then
|
|
echo "Please only give one argument"
|
|
$(exit 1); echo "$?"
|
|
fi
|
|
|
|
cd "$HOME"
|
|
|
|
file="$1"
|
|
parent="$(dirname "$file")"
|
|
extract="${parent}/vpnconfigs"
|
|
patched="${file%.*}-patched.zip"
|
|
|
|
cd "$parent"
|
|
|
|
mkdir -p "${parent}/vpnconfigs"
|
|
|
|
unzip "$file" -d "$extract"
|
|
|
|
readarray -d '' conffiles < <(find "$extract" -name "*\.conf" -print0)
|
|
|
|
for file in "${conffiles[@]}"; do
|
|
if grep "PostUp" "$file" &>/dev/null; then
|
|
echo "Skipping $file"
|
|
else
|
|
echo "Patching $file"
|
|
# NOTE route while being connected into my lan
|
|
awk 'NR==5{print "PostUp = ip route add 192.168.1.0/24 via 172.16.52.1 metric 10"}NR==5{print "PreDown = ip route del 192.168.1.0/24"}1' "$file" > "${file}.tmp"
|
|
mv "${file}.tmp" "$file"
|
|
# NOTE only one PreDown line is required as we are using a specific table for this
|
|
# TODO tables do not work as intended
|
|
#awk 'NR==5{print "PostUp = ip route add 192.168.1.0/24 via 192.168.86.1 metric 10 table 7"}NR==5{print "PreDown = ip route flush table 7"}1' "$file" > "${file}.tmp"
|
|
# NOTE adds a dns to all configs
|
|
awk 'NR==4{print "DNS = 172.16.52.5"}1' "$file" > "${file}.tmp"
|
|
mv "${file}.tmp" "$file"
|
|
# NOTE adds a dns to all configs
|
|
awk 'NR==5{print "DNS = 172.16.16.1"}1' "$file" > "${file}.tmp"
|
|
mv "${file}.tmp" "$file"
|
|
# wifi
|
|
#awk 'NR==6{print "PostUp = ip route add 192.168.1.0/24 via 172.16.52.1 metric 20 table 7"}1' "$file" > "${file}.tmp"
|
|
#mv "${file}.tmp" "$file"
|
|
fi
|
|
done
|
|
|
|
zip -r -9 "$patched" "vpnconfigs"
|
|
|
|
rm -rf "$extract"
|