|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -VERBOSE=true |
4 | | -if [ "$1" = "-q" ]; then |
5 | | - VERBOSE=false |
6 | | - shift |
7 | | -fi |
| 3 | +ME=htdestroytoken |
8 | 4 |
|
9 | | -if [ $# != 0 ]; then |
10 | | - echo "Usage: htdestroytoken [-q]" >&2 |
11 | | - echo "Removes bearer and vault tokens" >&2 |
12 | | - echo "-q means to do it silently" >&2 |
| 5 | +usage() |
| 6 | +{ |
| 7 | + echo "Usage: $ME [-h] [-q] [-f [htgettoken options]]" |
| 8 | + echo "Removes bearer and vault tokens if present" |
| 9 | + echo " -h prints this help message and exits" |
| 10 | + echo " -q do removals silently" |
| 11 | + echo " -f first force removal of refresh token from vault, if vault token is valid." |
| 12 | + echo " Runs htgettoken to find the vault path so requires sufficient htgettoken" |
| 13 | + echo " options on command line or in \$HTGETTOKENOPTS." |
| 14 | + echo "The location of the bearer token can be set by \$BEARER_TOKEN_FILE" |
| 15 | + echo " and the location of the vault token can be set by \$VAULT_TOKEN_FILE." |
13 | 16 | exit 2 |
14 | | -fi |
| 17 | +} >&2 |
| 18 | + |
| 19 | +VERBOSE=true |
| 20 | +RMREFRESH=false |
| 21 | +HTGETOPTS="" |
| 22 | +for ARG; do |
| 23 | + case $ARG in |
| 24 | + -h) usage;; |
| 25 | + -q) VERBOSE=false; HTGETOPTS="$HTGETOPTS -q";; |
| 26 | + -f) RMREFRESH=true;; |
| 27 | + *) if $RMREFRESH; then |
| 28 | + HTGETOPTS="$HTGETOPTS $ARG" |
| 29 | + else |
| 30 | + usage |
| 31 | + fi;; |
| 32 | + esac |
| 33 | +done |
15 | 34 |
|
16 | 35 | # UID is a standard bash variable |
| 36 | +VTFILE="/tmp/vt_u$UID" |
| 37 | +if [ -n "$VAULT_TOKEN_FILE" ]; then |
| 38 | + VTFILE="$VAULT_TOKEN_FILE" |
| 39 | + HTGETOPTS="$HTGETOPTS --vaulttokenfile=$VTFILE" |
| 40 | +fi |
| 41 | +if $RMREFRESH && [ -f "$VTFILE" ]; then |
| 42 | + if ( [ -z "$HTGETOPTS" ] || [ "$HTGETOPTS" = "-q" ] ) \ |
| 43 | + && [ -z "$HTGETTOKENOPTS" ]; then |
| 44 | + echo "$ME: no htgettoken options were given" >&2 |
| 45 | + usage |
| 46 | + fi |
| 47 | + BEARERURL="$(htgettoken $HTGETOPTS --novaulttoken --nobearertoken --showbearerurl)" |
| 48 | + if [ -z "$BEARERURL" ]; then |
| 49 | + echo "$ME: Unable to obtain vault URL to remove refresh token" >&2 |
| 50 | + exit 3 |
| 51 | + fi |
| 52 | + if $VERBOSE; then |
| 53 | + echo "Deleting refresh token" |
| 54 | + echo " at path $BEARERURL" |
| 55 | + fi |
| 56 | + # be careful to not let the vault token show up in a ps list; send to stdin |
| 57 | + if ! (echo -n "X-Vault-Token: ";cat $VTFILE) | \ |
| 58 | + curl -q -f -m 5 -H @- -X DELETE "$BEARERURL"; then |
| 59 | + echo "$ME: Unable to delete refresh token" >&2 |
| 60 | + exit 3 |
| 61 | + fi |
| 62 | +fi |
17 | 63 | TOKENFILE="${BEARER_TOKEN_FILE:-${XDG_RUNTIME_DIR:-/tmp}/bt_u$UID}" |
18 | | -for FILE in $TOKENFILE /tmp/vt_u$UID*; do |
| 64 | +for FILE in $TOKENFILE ${VTFILE}; do |
19 | 65 | if [ -f "$FILE" ]; then |
20 | 66 | if $VERBOSE; then |
21 | 67 | echo "Removing $FILE" |
|
0 commit comments