wagon/back/srv/dashboard/del

47 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# FILE: wgapi:back/api/dashboard/del
# DESCRIPTION: Del a peer
# USAGE: del ip querystring
# ERRORS:
# 3: Bad usage
# 4: Missing config
# 5: Invalid token
[ ${#} -eq 2 ] || exit 3
CONFIG_FILE='/etc/wgapi/config'
[ -f "${CONFIG_FILE}" ] || exit 4
source "${CONFIG_FILE}"
ip="${1}"
qs="$(<<<"${2}" tr '&' '\n' | sed 's/?//')"
# Check token
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'
# Parse pubkey
pubkey="$(<<<"${qs#?*}" tr '&' ' ' | grep -oP 'k=[^\s]*' | cut -d'=' -f2)"
while IFS=$'\t' read -r server_hostname server_ipv4 server_ipv6 server_pubkey server_endpoint server_admin server_secret; do
if [ "${server_hostname}" == "${LOCAL_SERVER}" ]
then "${LIB_DIR}/wg_user_del" "${pubkey}"
else "${LIB_DIR}/fed_del" "${server_admin}" "${pubkey}" "${server_secret}"
fi
done <"${SERVERS_FILE}"
# Respond to user
"${LIB_DIR}/http_res" 202
# Update nameserver
# TODO: get these needed vars
#"${LIB_DIR}/ns_update_del" "${domain}" "${ipv4}" "${ipv6}"
# Delete SSL certs
# TODO: get these needed vars
#"${LIB_DIR}/ssl_peer_del" "${hostname}" "${username}"