diff --git a/wireguard/wgportal_peer_install.sh b/wireguard/wgportal_peer_install.sh index b335bdb..17280e1 100755 --- a/wireguard/wgportal_peer_install.sh +++ b/wireguard/wgportal_peer_install.sh @@ -139,18 +139,23 @@ _download() { WGPORTAL_APIURL=$WGPORTAL_URL"api/v1/provisioning/peer" _debug "GET request to $WGPORTAL_APIURL" - HTTP_STATUS=$(curl -w "%{http_code}" -G -s -o $WG_CONFFILE --user $username:$password --data-urlencode "PublicKey=$wgpubkey" -X GET $WGPORTAL_APIURL -H "accept: text/plain") + HTTP_RESPONSE=$(curl -G -s --write-out "HTTPSTATUS:%{http_code}" --user $username:$password --data-urlencode "PublicKey=$wgpubkey" -X GET $WGPORTAL_APIURL -H "accept: text/plain") res=$? if [ "$res" != "0" ]; then echo "the curl command failed with: $res" fi - if [ $HTTP_STATUS -ne 200 ]; then - printf "Curl returned HTTP code %s\n" "$HTTP_STATUS" - exit 1; + HTTP_BODY=$(echo "$HTTP_RESPONSE" | sed -E 's/HTTPSTATUS\:[0-9]{3}$//') + HTTP_STATUS=$(echo "$HTTP_RESPONSE" | tr -d '\n' | sed -E 's/.*HTTPSTATUS:([0-9]{3})$/\1/') + + if [ $HTTP_STATUS = "200" ]; then + echo "$HTTP_BODY" > $WG_CONFFILE + printf "WG config successfully downloaded at %s\n" "$WG_CONFFILE" + return fi - printf "WG config successfully download at %s\n" "$WG_CONFFILE" + printf "Curl returned HTTP code %s\n" "$HTTP_STATUS" + exit 1; } _install() {