• Administrator

Little Script to switch between Auth Server on Linux

got a post that doesn't fit anywhere else? here's the place!


Post Reply
PileOfOxides
Visitor
Posts: 1
Joined: Sun Jun 07, 2026 7:41 am
Pronouns: He/They
Space Station 14: NotReallyPileOfOxides

departments

Little Script to switch between Auth Server on Linux

Post by PileOfOxides »

A little bash script which saves your login token (unencrypted :godo:), 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
 

POSTREACT(ions) SUMMARY

I use NixOS & Niri, btw

Post Reply