mirror of
https://github.com/NeoCloud/NeoNetwork
synced 2024-12-24 19:59:24 +08:00
74 lines
1.4 KiB
Bash
Executable file
74 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
FILE="dns/db.10.127"
|
|
TUN30_TEMP="$(mktemp)"
|
|
PP_TEMP="$(mktemp)"
|
|
LO_TEMP="$(mktemp)"
|
|
|
|
if [[ "$(uname)" = *BSD ]]; then
|
|
TAC=gtac
|
|
else
|
|
TAC=tac
|
|
fi
|
|
|
|
print_record()
|
|
{
|
|
printf "%s\tIN\tPTR\t%s\n" "$1" "$2"
|
|
}
|
|
|
|
ipcalc()
|
|
{
|
|
local subnet="$1"
|
|
local add="$2"
|
|
|
|
REV="$(echo -n "${subnet%,*}." | "$TAC" -s .)"
|
|
REV="${REV%.*.*.}"
|
|
|
|
echo "$[ ${REV%.*} + $add ].${REV#*.}"
|
|
}
|
|
|
|
# PROGRAM BEGIN
|
|
|
|
sed -i '/AUTOGENERATED/,$d' "$FILE"
|
|
echo '; AUTOGENERATED' >> "$FILE"
|
|
|
|
(
|
|
cd route
|
|
for i in *; do
|
|
source "$i"
|
|
if [ "$TYPE" = "TUN30" ]; then
|
|
upstream_ip=$(ipcalc "$i" 1)
|
|
downstream_ip=$(ipcalc "$i" 2)
|
|
|
|
(
|
|
print_record "$upstream_ip" "$DOWNSTREAM.$UPSTREAM.tun30.neo."
|
|
print_record "$downstream_ip" "$UPSTREAM.$DOWNSTREAM.tun30.neo."
|
|
) >> "$TUN30_TEMP"
|
|
elif [ "$TYPE" = "PTP" ]; then
|
|
i="${i/PP,/}"
|
|
upstream_ip="${i%~*}"
|
|
downstream_ip="${i#*~}"
|
|
|
|
(
|
|
print_record "$(ipcalc "$upstream_ip" 0)" "$UPSTREAM.ptp.neo."
|
|
print_record "$(ipcalc "$downstream_ip" 0)" "$DOWNSTREAM.ptp.neo."
|
|
) >> "$PP_TEMP"
|
|
elif [ "$TYPE" = "LO" ]; then
|
|
ip="${i/,32/}"
|
|
|
|
print_record "$(ipcalc "$ip" 0)" "$NAME.neo" >> "$LO_TEMP"
|
|
fi
|
|
done
|
|
)
|
|
|
|
{
|
|
echo -e "\n; Tunnel /30 Addresses"
|
|
sort -n < "$TUN30_TEMP"
|
|
echo -e "\n; Point to Point Addresses"
|
|
sort -n < "$PP_TEMP"
|
|
echo -e "\n; Loopback Addresses"
|
|
sort -n < "$LO_TEMP"
|
|
} >> "$FILE"
|
|
|
|
rm -f "$TUN30_TEMP" "$PP_TEMP" "$LO_TEMP"
|