diff --git a/back/lib/admin/user/del b/back/lib/admin/user/del index 5b72849..3e8851a 100755 --- a/back/lib/admin/user/del +++ b/back/lib/admin/user/del @@ -10,7 +10,11 @@ # 6: Servers file not found # 7: Token file not found # 8: Invalid token -# 9: Username not provided +# 9: Username or usernumber not provided +# 10: Wireguard failed to get peers +# 11: Failed to find user's peers +# 12: Failed to get domains for user's peers +# 13: Failed to delete a peer from wireguard server CONFIG_FILE='/etc/wgapi/config' SERVERS_FILE='/etc/wgapi/servers' @@ -63,7 +67,7 @@ fi if ! wg_output="$(sudo /usr/bin/wg show "${TLD}" allowed-ips)"; then printf 'ERROR! Wireguard failed!\n' >>"${LOGFILE}" printf 'Wireguard failed!\n' | "${LIB_DIR}/http_res" 500 - exit 5 + exit 10 fi # Filter out the user's @@ -71,14 +75,14 @@ user_peers="$(grep "${IPV4_NET%.*.*}.${usernumber}." <<<"${wg_output}" 2>/dev/nu if [ "${user_peers}" == "" ]; then printf "ERROR! Couldn't find any peers for %s!\n" "${IPV4_NET%.*.*}.${usernumber}." >>"${LOGFILE}" printf 'No user peers found for %s!\n' "${IPV4_NET%.*.*}.${usernumber}" | "${LIB_DIR}/http_res" 404 - exit 14 + exit 11 fi # Get user peer domains if ! peers="$("${LIB_DIR}/ips_to_peers_rdns" 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 + exit 12 fi # Run this function in parallel in the while loop below @@ -94,11 +98,11 @@ for_server_do() { printf 'ERROR! Failed to delete %s from local wireguard server!\n' "${domain}" >>"${LOGFILE}" # TODO: Send a 500 error # TODO: clear existing progress - exit 15 + exit 13 fi - # TODO Add federated peer + # TODO Delete federated peer #else - # if "${LIB_DIR}/fed_peer_add" "${server_admin}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then + # if "${LIB_DIR}/fed_peer_del" "${server_admin}" "${pubkey}" "${server_psk}" "${ipv4}/32,${ipv6}/128" "${server_secret}"; then # printf 'Deleted %s from remote wireguard server %s.\n' "${domain}" "${server_hostname}" >>"${LOGFILE}" # else # printf 'ERROR! Failed to delete %s from remote wireguard server %s!\n' "${domain}" "${server_hostname}" >>"${LOGFILE}" diff --git a/checklist.md b/checklist.md index 3c370fe..4e45f9f 100644 --- a/checklist.md +++ b/checklist.md @@ -10,6 +10,7 @@ [X] Admin user add/delete frontend [X] admin user adding backend [ ] admin user deleting backend +[ ] Replace ns_lookup_rdns with ns_lookup_rxfr where applicable [ ] Prevent deleting user's only peer [ ] Let users download ssl certs [ ] Show QR code with new config diff --git a/front/admin.js b/front/admin.js index fd153df..035b6ec 100644 --- a/front/admin.js +++ b/front/admin.js @@ -200,7 +200,7 @@ function PeerList() { const res = await fetch(url, {method: 'DELETE'}) if (res.ok) self.peers.remove(peer) else { - if (res.status===404) { + if (res.status===202) { self.users.remove(user) self.peers().forEach( (peer)=> { if ( peer.domain.split('.')[1] === user.name) @@ -215,6 +215,7 @@ function PeerList() { } finally { user.isDeleting(false) } } } catch (err) { + if (err) console.error(err) alert(`Failed to contact the server. Are you online?`) } finally { user.isDeleting(false)