2022-08-29 11:42:13 -06:00
|
|
|
#!/bin/bash
|
|
|
|
# FILE: wgapi:back/api/dashboard/del
|
|
|
|
# DESCRIPTION: Del a peer
|
|
|
|
# USAGE: del ip querystring
|
2022-09-08 21:15:30 -06:00
|
|
|
# ERRORS:
|
|
|
|
# 3: Bad usage
|
|
|
|
# 4: Missing config
|
|
|
|
# 5: Invalid token
|
2022-08-29 11:42:13 -06:00
|
|
|
|
2022-09-08 21:15:30 -06:00
|
|
|
[ ${#} -eq 2 ] || exit 3
|
2022-09-06 20:57:41 -06:00
|
|
|
CONFIG_FILE='/etc/wgapi/config'
|
2022-09-08 21:15:30 -06:00
|
|
|
[ -f "${CONFIG_FILE}" ] || exit 4
|
2022-09-06 20:57:41 -06:00
|
|
|
source "${CONFIG_FILE}"
|
2022-09-08 21:15:30 -06:00
|
|
|
ip="${1}"
|
|
|
|
qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')"
|
2022-08-29 11:42:13 -06:00
|
|
|
|
|
|
|
# Check token
|
2022-09-08 21:15:30 -06:00
|
|
|
token_fail(){
|
|
|
|
printf 'Rejecting %s request for new peer due to %s token\n' "${ip}" "${1}" >>"${LOGFILE}"
|
|
|
|
printf 'Invalid token\n' | "${LIB_DIR}/http_res" 403
|
|
|
|
exit 8
|
|
|
|
}
|
|
|
|
saved_token="$(grep "${ip}" "${TOKENS_FILE}" | cut -f2)"
|
|
|
|
[ "${saved_token}" == "" ] && token_fail 'missing'
|
|
|
|
<<<"${qs}" grep -x "t=${saved_token}" || token_fail 'mismatched'
|
2022-08-29 11:42:13 -06:00
|
|
|
|
|
|
|
# Parse pubkey
|
2022-09-08 21:15:30 -06:00
|
|
|
pubkey="$(<<<"${qs#?*}" tr '&' ' ' | grep -oP 'k=[^\s]*' | cut -d'=' -f2)"
|
2022-08-29 11:42:13 -06:00
|
|
|
|
2022-09-08 21:44:46 -06:00
|
|
|
while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_admin server_secret; do
|
2022-08-29 11:42:13 -06:00
|
|
|
if [ "${server_hostname}" == "${LOCAL_SERVER}" ]
|
2022-09-06 20:57:41 -06:00
|
|
|
then "${LIB_DIR}/wg_user_del" "${pubkey}"
|
|
|
|
else "${LIB_DIR}/fed_del" "${server_admin}" "${pubkey}" "${server_secret}"
|
2022-08-29 11:42:13 -06:00
|
|
|
fi
|
2022-09-08 21:15:30 -06:00
|
|
|
done <"${SERVERS_FILE}"
|
|
|
|
|
|
|
|
# Respond to user
|
|
|
|
"${LIB_DIR}/http_res" 202
|
2022-08-29 11:42:13 -06:00
|
|
|
|
|
|
|
# Update nameserver
|
2022-09-08 21:15:30 -06:00
|
|
|
# TODO: get these needed vars
|
|
|
|
#"${LIB_DIR}/ns_update_del" "${domain}" "${ipv4}" "${ipv6}"
|
2022-08-29 11:42:13 -06:00
|
|
|
|
|
|
|
# Delete SSL certs
|
2022-09-08 21:15:30 -06:00
|
|
|
# TODO: get these needed vars
|
2022-09-10 09:29:23 -06:00
|
|
|
#"${LIB_DIR}/ssl_peer_del" "${hostname}" "${username}"
|