#!/bin/sh

# PROVIDE: clawdie_tailscale_up
# REQUIRE: LOGIN tailscaled
# KEYWORD: shutdown

. /etc/rc.subr

name="clawdie_tailscale_up"
rcvar="${name}_enable"
start_cmd="${name}_start"
stop_cmd=":"

# No required_files: the key may come from provider.env (vault-fetched by
# join-hive) rather than the legacy keyfile, and onestart still enforces
# required_files. The start function returns 0 cleanly when neither source
# carries a key.
clawdie_tailscale_up_start() {
    _keyfile="/var/lib/clawdie-iso/tailscale-authkey"
    _envfile="/usr/local/etc/colibri/provider.env"

    # Primary: auth key from provider.env (vault-fetched by join-hive).
    # Fallback: legacy key file (ISO-baked or manually staged).
    _authkey=""
    if [ -r "$_envfile" ]; then
        _authkey="$(grep '^TAILSCALE_AUTH_KEY=' "$_envfile" 2>/dev/null | head -1 | cut -d= -f2- | tr -d '\r\n')"
    fi
    if [ -z "${_authkey:-}" ] && [ -s "$_keyfile" ]; then
        _authkey="$(tr -d '\r\n' < "$_keyfile")"
    fi
    [ -n "${_authkey:-}" ] || return 0

    command -v tailscale >/dev/null 2>&1 || return 1
    service tailscaled onestatus >/dev/null 2>&1 || return 1

    if tailscale up --auth-key="${_authkey}" --hostname=clawdie-live --ssh=false; then
        # Clean up both sources so the one-shot key is consumed. provider.env
        # still holds the BW_* creds, so keep it 0600 after the rewrite.
        if grep -v '^TAILSCALE_AUTH_KEY=' "$_envfile" > "$_envfile.tmp" 2>/dev/null; then
            chmod 0600 "$_envfile.tmp"
            mv "$_envfile.tmp" "$_envfile"
        else
            rm -f "$_envfile.tmp"
        fi
        rm -f "$_keyfile"
        /usr/sbin/sysrc ${name}_enable=NO >/dev/null 2>&1 || true
        return 0
    fi

    return 1
}

load_rc_config "$name"
: "${clawdie_tailscale_up_enable:=NO}"
run_rc_command "$1"
