Files
44r0n7 0265afa054 chore: bootstrap lean sysadmin-chronicles repo
Import the runnable game code, content, docs, scripts, and repo guidance while leaving local agent state, dependency installs, build output, and backup copies out of the published tree.
2026-05-02 11:49:07 -04:00

102 lines
2.6 KiB
Bash

#!/usr/bin/env bash
# Shared internal HTTPS/URL helpers for Sysadmin Chronicles launch and VM build scripts.
# Source this file; do not execute directly.
sc_internal_port() {
printf '%s\n' "${PORT:-3000}"
}
sc_cert_dir() {
printf '%s\n' "${SC_CERT_DIR:-$HOME/.local/share/sysadmin-chronicles/certs}"
}
sc_tls_cert() {
printf '%s/server.crt\n' "$(sc_cert_dir)"
}
sc_tls_key() {
printf '%s/server.key\n' "$(sc_cert_dir)"
}
sc_ca_cert() {
printf '%s/ca.crt\n' "$(sc_cert_dir)"
}
sc_hud_url() {
printf '%s\n' "${SC_HUD_URL:-https://portal.axiomworks.internal:$(sc_internal_port)}"
}
sc_sage_url() {
printf '%s\n' "${SC_SAGE_URL:-https://sage.axiomworks.internal:$(sc_internal_port)/sage/}"
}
sc_company_url() {
printf '%s\n' "${SC_COMPANY_URL:-https://www.axiomworks.corp/}"
}
sc_have_internal_certs() {
[[ -f "$(sc_tls_cert)" && -f "$(sc_tls_key)" && -f "$(sc_ca_cert)" ]]
}
sc_ensure_internal_certs() {
local project_root="$1"
if sc_have_internal_certs; then
return 0
fi
bash "$project_root/tools/setup/generate-certs.sh"
}
sc_export_internal_https_env() {
export SC_CERT_DIR="$(sc_cert_dir)"
export SC_TLS_CERT="$(sc_tls_cert)"
export SC_TLS_KEY="$(sc_tls_key)"
export SC_HUD_URL="$(sc_hud_url)"
export SC_SAGE_URL="$(sc_sage_url)"
export SC_COMPANY_URL="$(sc_company_url)"
}
sc_listen_pids() {
local port="$1"
if command -v lsof >/dev/null 2>&1; then
lsof -tiTCP:"$port" -sTCP:LISTEN 2>/dev/null | sort -u
return 0
fi
ss -H -ltnp "sport = :$port" 2>/dev/null \
| sed -n 's/.*pid=\([0-9][0-9]*\).*/\1/p' \
| sort -u
}
sc_pid_is_repo_server() {
local pid="$1"
local project_root="$2"
local server_dir="$project_root/server"
local cwd=""
local cmdline=""
[[ -r "/proc/$pid/cmdline" ]] || return 1
cwd="$(readlink -f "/proc/$pid/cwd" 2>/dev/null || true)"
cmdline="$(tr '\0' ' ' < "/proc/$pid/cmdline" 2>/dev/null || true)"
[[ "$cwd" == "$server_dir" ]] || return 1
[[ "$cmdline" == *"node"* && "$cmdline" == *"src/index.js"* ]]
}
sc_pid_has_internal_tls() {
local pid="$1"
[[ -r "/proc/$pid/environ" ]] || return 1
tr '\0' '\n' < "/proc/$pid/environ" 2>/dev/null \
| grep -q '^SC_TLS_CERT=.*server\.crt$' \
&& tr '\0' '\n' < "/proc/$pid/environ" 2>/dev/null \
| grep -q '^SC_TLS_KEY=.*server\.key$'
}
sc_stop_pid() {
local pid="$1"
kill "$pid" 2>/dev/null || true
for _ in 1 2 3 4 5 6 7 8 9 10; do
kill -0 "$pid" 2>/dev/null || return 0
sleep 0.2
done
kill -TERM "$pid" 2>/dev/null || true
}