Last active
October 12, 2019 15:13
-
-
Save VitaliiTsilnyk/e23ff3660266cf81e2e8 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
#!/bin/bash | |
#REPO_PATH=/etc/openvpn/zapret-info | |
CUSTOM_DOMAINS_FILE=/etc/openvpn/custom_domains.txt | |
OPENVPN_CONFIG_FILE=/etc/openvpn/server.conf | |
#echo "Updating git repo..." | |
#git -C "$REPO_PATH" pull | |
echo "Parsing the dump..." | |
TMP_ADDR_FILE=$(mktemp) | |
echo -n "" > "$TMP_ADDR_FILE" | |
#tail -n +2 "$REPO_PATH/dump.csv" | while IFS=";" read col1 col2; do | |
# while IFS=' | ' read -ra addr; do | |
# for i in "${addr[@]}"; do | |
# echo "$i" >> "$TMP_ADDR_FILE" | |
# done | |
# done <<< "$col1" | |
#done | |
echo "Adding custom addresses..." | |
while read domain; do | |
if [[ -n "${domain}" && "${domain:0:1}" != "#" ]]; then | |
dig "$domain" A -4 +short | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' >> "$TMP_ADDR_FILE" | |
fi | |
done < "$CUSTOM_DOMAINS_FILE" | |
echo "Filtering address database..." | |
TMP_ADDR_U_FILE=$(mktemp) | |
cat "$TMP_ADDR_FILE" | sort | uniq > "$TMP_ADDR_U_FILE" | |
rm "$TMP_ADDR_FILE" | |
echo "Creating route file..." | |
TMP_ROUTES_FILE=$(mktemp) | |
echo -n "" > "$TMP_ROUTES_FILE" | |
while read addr; do | |
echo "push \"route $addr 255.255.255.255\"" >> "$TMP_ROUTES_FILE" | |
done < "$TMP_ADDR_U_FILE" | |
rm "$TMP_ADDR_U_FILE" | |
echo "Writing config file..." | |
lead='### BEGIN GENERATED ROUTES ###' | |
tail='### END GENERATED ROUTES ###' | |
if grep -q "$lead" "$OPENVPN_CONFIG_FILE"; then | |
echo " Removing old generated routes..." | |
TMP_CONF_FILE=$(mktemp) | |
sed -e "/^$lead\$/,/^$tail\$/d" "$OPENVPN_CONFIG_FILE" > "$TMP_CONF_FILE" | |
mv "$TMP_CONF_FILE" "$OPENVPN_CONFIG_FILE" | |
fi | |
echo " Writing generated routes..." | |
echo "$lead" >> "$OPENVPN_CONFIG_FILE" | |
cat "$TMP_ROUTES_FILE" >> "$OPENVPN_CONFIG_FILE" | |
echo "$tail" >> "$OPENVPN_CONFIG_FILE" | |
rm "$TMP_ROUTES_FILE" | |
echo "Restarting OpenVPN service..." | |
service openvpn stop | |
service openvpn start | |
echo "Done." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment