Replace all ips_to_peers_rdns with rxfr

master
Keith Irwin 2022-11-07 11:30:56 -07:00
parent 567501c785
commit fc9ad8b64d
Signed by: ki9
GPG Key ID: DF773B3F4A88DA86
10 changed files with 10 additions and 59 deletions

View File

@ -99,7 +99,7 @@ if [ "${user_peers}" == "" ]; then
fi
# Get user peer domains
if ! peers="$("${LIB_DIR}/ips_to_peers_rdns" tsv <<<"${user_peers}")"; then
if ! peers="$("${LIB_DIR}/ips_to_peers" tsv <<<"${user_peers}")"; then
printf 'ERROR! Failed to retrieve peers for %s!\n' "${${IPV4_NET%.*.*}.${usernumber}}" >>"${LOGFILE}"
printf 'Failed to retrieve peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" | "${LIB_DIR}/http_res" 500
exit 10

View File

@ -60,7 +60,7 @@ if [ "${user_peers}" == "" ]; then
fi
# Get peer domains
if ! peer="$("${LIB_DIR}/ips_to_peers_rxfr" tsv <<<"${user_peers}" | grep "${pubkey}")"; then
if ! peer="$("${LIB_DIR}/ips_to_peers" tsv <<<"${user_peers}" | grep "${pubkey}")"; then
printf 'ERROR! Peer %s not found for user %s!\n' "${pubkey}" "${ip}" >>"${LOGFILE}" &
printf 'Peer not found\n' | "${LIB_DIR}/http_res" 404
exit 6

View File

@ -61,7 +61,7 @@ if [ "${un}" != '' ]; then
fi
# Get domains for each peer
if peers="[$("${LIB_DIR}/ips_to_peers_rxfr" json <<<"${peers}")]"; then
if peers="[$("${LIB_DIR}/ips_to_peers" json <<<"${peers}")]"; then
printf '{"token":"%s","peers":%s}' "${token:?}" "${peers:?}" | "${LIB_DIR}/http_res" 200 'application/json'
printf 'Sent peers to admin %s\n' "${ip}" >>"${LOGFILE}"
else

View File

@ -79,7 +79,7 @@ if [ "${user_peers}" == "" ]; then
fi
# Get user peer domains
if ! peers="$("${LIB_DIR}/ips_to_peers_rdns" tsv <<<"${user_peers}")"; then
if ! peers="$("${LIB_DIR}/ips_to_peers" tsv <<<"${user_peers}")"; then
printf 'ERROR! Failed to retrieve peers for %s!\n' "${${IPV4_NET%.*.*}.${usernumber}}" >>"${LOGFILE}"
printf 'Failed to retrieve peers for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" | "${LIB_DIR}/http_res" 500
exit 12

View File

@ -94,7 +94,7 @@ if [ "${user_peers}" == "" ]; then
fi
# Create new IPs
if ! peers="$("${LIB_DIR}/ips_to_peers_rdns" tsv <<<"${user_peers}")"; then
if ! peers="$("${LIB_DIR}/ips_to_peers" tsv <<<"${user_peers}")"; then
printf 'ERROR! Failed to parse peers for %s!\n' "${ip}" >>"${LOGFILE}"
exit 10
fi

View File

@ -61,7 +61,7 @@ if [ "${user_peers}" == "" ]; then
fi
# Get peer domains
if ! peer="$("${LIB_DIR}/ips_to_peers_rdns" tsv <<<"${user_peers}" | grep "${pubkey}")"; then
if ! peer="$("${LIB_DIR}/ips_to_peers" tsv <<<"${user_peers}" | grep "${pubkey}")"; then
printf 'ERROR! Peer %s not found for user %s!\n' "${pubkey}" "${ip}" >>"${LOGFILE}" &
printf 'Peer not found\n' | "${LIB_DIR}/http_res" 404
exit 6

View File

@ -56,7 +56,7 @@ if [ "${user_peers}" == '' ]; then
fi
# Get domains for each one
if peers="[$("${LIB_DIR}/ips_to_peers_rdns" json <<<"${user_peers}")]"; then
if peers="[$("${LIB_DIR}/ips_to_peers" json <<<"${user_peers}")]"; then
printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | "${LIB_DIR}/http_res" 200 'application/json'
printf 'Sent peers to user %s\n' "${ip}" >>"${LOGFILE}"
else

View File

@ -1,8 +1,8 @@
#!/bin/bash
# FILE: ips_to_peers_rxfr
# FILE: ips_to_peers
# DESCRIPTION: Takes a list of IPs from wg show allowed-ips
# and adds domains using rxfr lookups
# USAGE: ips_to_peers_rxfr json <<<"${user_peers}"
# USAGE: ips_to_peers json <<<"${user_peers}"
# ERRORS:
# 3: bad usage
# 4: nslookup failed

View File

@ -1,50 +0,0 @@
#!/bin/bash
# FILE: ips_to_peers_rdns
# DESCRIPTION: Takes a list of IPs from wg show allowed-ips
# and adds domains using rdns lookups
# USAGE: ips_to_peers_rdns json <<<"${user_peers}"
# ERRORS:
# 3: bad usage
# 4: nslookup failed
# 5: Invalid format
# 6: Config file not found
CONFIG_FILE='/etc/wgapi/config'
if ! [ -f "${CONFIG_FILE}" ]; then
printf 'ERROR! %s Config file not found\n' "${0}" >>"${LOGFILE}"
exit 6
fi & if ! [ ${#} -eq 1 ] || [ ${#} -eq 3 ]; then
printf 'ERROR! Bad usage: %s %s\n' "$0" "$*" >>"${LOGFILE}"
exit 3
fi & if ! [ -x /usr/bin/wg ]; then
printf 'ERROR! %s /usr/bin/wg not found\n' "${0}" >>"${LOGFILE}"
exit 5
fi
source "${CONFIG_FILE}"
format="${1}"
# Loop through each peer in parallel and do an rDNS lookup for the hostnames
do_lookup(){
pubkey="$(<<<"${1}" cut -d ' ' -f1)"
ips="$(<<<"${1}" cut -d ' ' -f2 | tr ' ' '\n')"
ipv4="$(<<<"${ips}" grep '\.')"
ipv6="$(<<<"${ips}" grep ':')"
ipv4="${ipv4%%/*}"
ipv6="${ipv6%%/*}"
if ! domain="$("${LIB_DIR:?}/ns_lookup_rdns" "${ipv4:?}" | xargs)"
then exit 4
fi
case "${format}" in
'json') printf '{"domain":"%s","ipv4":"%s","ipv6":"%s","pubkey":"%s"},' \
"${domain}" "${ipv4}" "${ipv6}" "${pubkey}";;
'tsv') printf '%s\t%s\t%s\t%s\n' "${domain}" "${ipv4}" "${ipv6}" "${pubkey}";;
*) printf 'ERROR! Invalid format for %s: %s\n' "${0}" "${format}" >>"${LOGFILE}"
exit 5;
esac
}
# This should read from stdin
while IFS= read -r line
do do_lookup "${line}" "${1}" &
[ $( jobs | wc -l ) -ge $( nproc ) ] && wait
done | sed 's/\n//g' | sed 's/,$//' # Remove trailing comma and newline

View File

@ -13,6 +13,7 @@
[X] Add Loading...
[X] Let users download ssl certs
[ ] Replace ns_lookup_rdns with ns_lookup_rxfr where applicable
[ ] Prepare config portability
[ ] Prevent deleting user's only peer
[ ] Show QR code with new config
[ ] Clean up bash file headings