mirror of
https://github.com/Ride-The-Lightning/RTL.git
synced 2026-08-13 12:33:07 +02:00
40 lines
1.4 KiB
Text
40 lines
1.4 KiB
Text
|
|
#!/usr/bin/env bash
|
||
|
|
#
|
||
|
|
# Print the BTCPay-style single-sign-on entry URL for the SSO harness.
|
||
|
|
#
|
||
|
|
# docker compose --profile sso up -d
|
||
|
|
# bin/sso-url # print it
|
||
|
|
# open "$(bin/sso-url)" # or follow it straight into RTL
|
||
|
|
#
|
||
|
|
# This is the link BTCPay renders on its Services page. BTCPay builds it from
|
||
|
|
# BTCPAY_BTCEXTERNALRTL="server=/rtl/api/authenticate/cookie;cookiefile=..."
|
||
|
|
# by reading the cookie file RTL wrote and appending it as ?access-key=. The
|
||
|
|
# value is the raw file content: RTL's frontend sha256s it before posting
|
||
|
|
# (src/app/app.component.ts) and the backend compares against
|
||
|
|
# sha256(cookieValue), so no hashing happens here.
|
||
|
|
#
|
||
|
|
# Authenticating rotates the cookie (common.refreshCookie), so re-run this for
|
||
|
|
# each login -- exactly as BTCPay re-reads the file on every page render.
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
cd "$(dirname "$0")/.."
|
||
|
|
# shellcheck disable=SC1091
|
||
|
|
[ -f .env ] && source .env
|
||
|
|
|
||
|
|
port="${RTL_SSO_PORT:-3001}"
|
||
|
|
|
||
|
|
if ! docker compose --profile sso ps --status running --services 2>/dev/null | grep -qx rtl-sso; then
|
||
|
|
echo "rtl-sso is not running. Start it with: docker compose --profile sso up -d" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
cookie="$(docker compose --profile sso exec -T rtl-sso cat /RTL/cookie/.cookie | tr -d '\r\n')"
|
||
|
|
|
||
|
|
if [ -z "$cookie" ]; then
|
||
|
|
echo "The cookie file /RTL/cookie/.cookie is empty. Is RTL_SSO=1 set on rtl-sso?" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "http://localhost:${port}/rtl/api/authenticate/cookie?access-key=${cookie}"
|