A little bash script which saves your login token (unencrypted
), so that you can just choose your Auth Server and not have to login again each time.
It needs fzf, the sqlite3 CLI, find, awk and the coreutils to run.
If SS14.Launcher is not in your PATH, set SS14_CMD to the executable.
Might work under Flatpak. The script won't launch the Launcher using Steam, so this might also cause issues.
Works on my Machine™
It will automatically create a backup of your settings.db if anything goes wrong though.
Code: Select all
#!/usr/bin/env bash
set -euo pipefail
SS14="${SS14_CMD:-SS14.Launcher}"
DATA="$(dirname $(readlink -f $0))/ss14-auth-data/"
SETTINGS="${XDG_DATA_HOME:-$HOME/.local/share}/Space Station 14/launcher/settings.db"
choose() {
HEADER="$1"
shift
printf "%s\0" $@ | tr '|' ' ' | fzf --header "$HEADER" --read0 +s
}
save-login () {
sqlite3 "$SETTINGS" 'SELECT * FROM Login' > "$1"
}
restore-login () {
IFS='|' read UserId UserName Token Expires < "$1"
sqlite3 "$SETTINGS" "UPDATE Login SET UserId = '$UserId', UserName = '$UserName', Token = '$Token', Expires = '$Expires'"
}
[[ ! -f "$DATA/backup.db" ]] && cp "$SETTINGS" "$DATA/backup.db" && echo "Created Backup"
mkdir -p "$DATA/"
mkdir -p "$DATA/funky"
echo "https://tempauth.funkystation.org/" > "$DATA/funky/url"
mkdir -p "$DATA/wizden"
echo "https://auth.spacestation14.com/" > "$DATA/wizden/url"
FOUND_AUTH="$(find "$DATA" -name url -exec bash -c 'basename $(dirname {})' \;)"
FOUND_LOGINS="$(find "$DATA" -name login -exec bash -c 'basename $(dirname {})' \;)"
AUTH_WITHOUT_LOGIN="$(comm -23 <(echo $FOUND_AUTH | tr ' ' '\n' | sort) <(echo $FOUND_LOGINS | tr ' ' '\n' | sort) | tr '\n' ' ')"
if [[ -z "$FOUND_LOGINS" ]]; then
CHOICE=$(choose "(Initial Setup) Where are you currently logged in?" $FOUND_AUTH)
save-login "$DATA/$CHOICE/login"
echo "Saved Login for $CHOICE"
else
CHOICE=$(choose "Choose Auth Server" $FOUND_LOGINS $([[ -n "$AUTH_WITHOUT_LOGIN" ]] && printf "(NEW)|%s" $AUTH_WITHOUT_LOGIN))
if [[ -f "$DATA/$CHOICE/login" ]]; then
USERNAME=$(awk -F'|' '{ print $2 }' "$DATA/$CHOICE/login")
echo "Logging in with $CHOICE as $USERNAME"
restore-login "$DATA/$CHOICE/login"
env SS14_LAUNCHER_OVERRIDE_AUTH="$(cat "$DATA/$CHOICE/url")" "$SS14" &>/dev/null
save-login "$DATA/$CHOICE/login"
else
CHOICE=${CHOICE#* }
echo "Please login with your account on $CHOICE and then close the launcher! (Ctrl-C inside the Terminal to Abort)"
env SS14_LAUNCHER_OVERRIDE_AUTH="$(cat "$DATA/$CHOICE/url")" "$SS14" &>/dev/null
save-login "$DATA/$CHOICE/login"
echo "Logged in with $CHOICE as $(awk -F'|' '{ print $2 }' "$DATA/$CHOICE/login")"
fi
fi
