0265afa054
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.
102 lines
2.6 KiB
Bash
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
|
|
}
|