#!/bin/sh TAG="$(date +%Y%m%d%H%M%S)-$@" OUTFILE="$TAG.out" JAR="$TAG.cj" echo "OUTFILE=$OUTFILE" test -z "$PROTOCOL" && echo -n "enter PROTOCOL : " && PROTOCOL=$(read $PROTOCOL) test -z "$HOST_PORT" && echo -n "enter HOST:PORT : " && HOST_PORT=$(read $HOST_PORT) test -z "$CLIENT" && echo -n "enter CLIENT : " && CLIENT=$(read $CLIENT) test -z "$OAUTH_URL" && test -z "$USER" && echo -n "enter OAUTH_URL to enable OAUTH (blank means no) : " && OAUTH_URL=$(read $OAUTH_URL) if [[ -z "$OAUTH_URL" ]]; then test -z "$USER" && echo -n "enter USER : " && USER=$(read $USER) test -z "$PASSWORD" && echo -n "enter PASSWORD : " && PASSWORD=$(read $PASSWORD) AUTH="Authorization: Basic $(echo -n "$USER:$PASSWORD" | base64)" else test -z "$CLIENT_ID" && echo -n "enter CLIENT_ID : " && CLIENT_ID=$(read $CLIENT_ID) test -z "$CLIENT_SECRET" && echo -n "enter CLIENT_SECRET : " && CLIENT_SECRET=$(read $CLIENT_SECRET) test -z "$SCOPE" && echo -n "enter SCOPE : " && SCOPE=$(read $SCOPE) fi test -z "${BASE_PATH+1}" && echo -n "enter BASE_PATH (leave empty or end with /) : " && BASE_PATH=$(read $BASE_PATH) # --- function arbitrary() { echo GET $1: curl $FLAGS -sv -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/$1?sap-client=$CLIENT } function closeConnection() { echo ConnectionClose=true curl $FLAGS -sv -HConnectionClose=true -c"$JAR" -Hx-csrf-token:$CSRF -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/version?sap-client=$CLIENT } function csrfToken() { echo GET ping: curl $FLAGS -sv -c"$JAR" -Hx-csrf-token:fetch -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/ping?sap-client=$CLIENT > "$OUTFILE" 2>&1 echo 'OUTPUT:' cat "$OUTFILE" CSRF=$(grep '< x-csrf-token' "$OUTFILE" | awk '{ print $3 }') echo token is $CSRF } function oauth() { BODY="grant_type=client_credentials&scope=$SCOPE&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET" curl $FLAGS -v -d "$BODY" $OAUTH_URL > "$OUTFILE" echo 'OUTPUT:' cat "$OUTFILE" AUTH="Authorization: Bearer $(cat "$OUTFILE" | jq -r '.access_token')" echo AUTH is now $AUTH } function ping() { echo GET ping: curl $FLAGS -sv -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/ping?sap-client=$CLIENT } function post_ping() { echo POST ping: curl $FLAGS -sv -b"$JAR" -Hx-csrf-token:$CSRF -H'Content-Type:application/json' -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/ping?sap-client=$CLIENT -d='' } function post_fi() { echo POST FI: curl $FLAGS -sv -b"$JAR" -Hx-csrf-token:$CSRF -H'Content-Type:application/json' -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/post_fi_invoice?sap-client=$CLIENT -d@$@ > "$OUTFILE" echo 'OUTPUT:' cat "$OUTFILE" } function post_payment() { echo POST payment: curl $FLAGS -sv -b"$JAR" -Hx-csrf-token:$CSRF -H'Content-Type:application/json' -H"$AUTH" $PROTOCOL://$HOST_PORT/${BASE_PATH}medius/clear_invoice?sap-client=$CLIENT -d@$@ > "$OUTFILE" echo 'OUTPUT:' cat "$OUTFILE" } # --- if [[ -z "$@" ]]; then echo give a command exit 1 fi cmd=$1 shift if [[ "$cmd" == "arbitrary" ]]; then arbitrary $@ elif [[ "$cmd" == "oauth" ]]; then oauth elif [[ "$cmd" == "oauth-ping" ]]; then oauth ping elif [[ "$cmd" == "ping" ]]; then ping elif [[ "$cmd" == "post-fi" ]]; then csrfToken post_fi $@ elif [[ "$cmd" == "post-ping" ]]; then csrfToken post_ping elif [[ "$cmd" == "post-ping-with-close" ]]; then csrfToken closeConnection post_ping elif [[ "$cmd" == "csrf" ]]; then csrfToken elif [[ "$cmd" == "payment" ]]; then csrfToken post_payment $@ fi