summaryrefslogtreecommitdiff
path: root/public/zsh/.usr/local/bin/aws-console
diff options
context:
space:
mode:
authorChristian Segundo2023-10-12 14:23:49 +0200
committerChristian Segundo2023-10-12 14:23:49 +0200
commit449a6f57a36862a8ff27b2a3cee0922f4e4d949e (patch)
treec9d0d9f9d055e89a5046c75b613fc8bafea5715c /public/zsh/.usr/local/bin/aws-console
parent0b7186eac839b8690f8951aca4fc2657944ab3b6 (diff)
downloaddotfiles-449a6f57a36862a8ff27b2a3cee0922f4e4d949e.tar.gz
Add zsh
Diffstat (limited to 'public/zsh/.usr/local/bin/aws-console')
-rwxr-xr-xpublic/zsh/.usr/local/bin/aws-console36
1 files changed, 36 insertions, 0 deletions
diff --git a/public/zsh/.usr/local/bin/aws-console b/public/zsh/.usr/local/bin/aws-console
new file mode 100755
index 0000000..77c2320
--- /dev/null
+++ b/public/zsh/.usr/local/bin/aws-console
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eufo pipefail
+export SHELLOPTS
+IFS=$'\t\n'
+
+if [[ -z "${AWS_ACCESS_KEY_ID:-}" ]] ||
+ [[ -z "${AWS_SECRET_ACCESS_KEY:-}" ]] ||
+ [[ -z "${AWS_SESSION_TOKEN:-}" ]]; then
+ echo "AWS_ required variables not set"
+ exit 1
+fi
+
+command -v curl >/dev/null 2>&1 || { echo "curl is not installed!"; exit 1; }
+command -v jq >/dev/null 2>&1 || { echo "jq is not installed!"; exit 1; }
+
+credentials='{"sessionId":"'"${AWS_ACCESS_KEY_ID}"'","sessionKey":"'"${AWS_SECRET_ACCESS_KEY}"'","sessionToken":"'"${AWS_SESSION_TOKEN}"'"}'
+
+uc="${credentials//'%'/%25}"; uc="${uc//'"'/%22}"; uc="${uc//','/%2C}"
+uc="${uc//'/'/%2F}"; uc="${uc//':'/%3A}"; uc="${uc//'='/%3D}"
+uc="${uc//'{'/%7B}"; uc="${uc//'}'/%7D}"; uc="${uc//'+'/%2B}"
+
+federation_url="https://signin.aws.amazon.com/federation"
+federation_url="${federation_url}?Action=getSigninToken"
+federation_url="${federation_url}&SessionDuration=3600"
+federation_url="${federation_url}&Session=$(printf %s "$uc")"
+
+token=$(curl -s "${federation_url}" | jq -r '.SigninToken' 2>/dev/null) ||
+ { echo "invalid or expired credentials"; exit 1; }
+
+console_url="https://signin.aws.amazon.com/federation"
+console_url="${console_url}?Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F"
+console_url="${console_url}&SigninToken=${token}"
+console_url="${console_url}&Issuer=https%3A%2F%2Fexample.com"
+console_url="${console_url}&Action=login"
+
+open "${console_url}"