70 lines
3.0 KiB
TypeScript
70 lines
3.0 KiB
TypeScript
import { utils } from '@start9labs/start-sdk'
|
|
|
|
// The SpacesOps HTTP server. The app defaults to 127.0.0.1:3000; we override
|
|
// PLATFORM_HOST to 0.0.0.0 and PLATFORM_PORT to this so the StartOS reverse
|
|
// proxy can reach it.
|
|
export const uiPort = 7264
|
|
|
|
// Our own volume.
|
|
export const dataDir = '/data'
|
|
|
|
// Where the Spaces 'main' volume is mounted (read-only) so we can read the
|
|
// spaced RPC credentials Spaces seeded into its store.json.
|
|
export const spacesDataDir = '/spaces-data'
|
|
|
|
// The Spaces package this service depends on.
|
|
export const SPACES_PACKAGE_ID = 'spaces'
|
|
|
|
// Spaces exposes its spaced JSON-RPC as the `spaces-api` interface on 7225,
|
|
// reachable from a dependent package at this address.
|
|
export const SPACED_RPC_URL = 'http://spaces.startos:7225'
|
|
export const SPACED_WALLETLOAD_NAME = 'default'
|
|
|
|
// The app's admin Basic Auth defaults, which it uses when
|
|
// PLATFORM_ADMIN_USERNAME / PLATFORM_ADMIN_PASSWORD are unset. This package
|
|
// does not currently set either, so these well-known values are live —
|
|
// surfaced (with a warning) via the "Show Admin Credentials" action.
|
|
export const ADMIN_USER = 'admin'
|
|
export const ADMIN_PASSWORD = 'Whatever!'
|
|
|
|
// Where StartOS writes this box's StartOS root CA for outbound *.startos HTTPS
|
|
// (see main.ts). Always injected as NODE_EXTRA_CA_CERTS, which overrides the
|
|
// image's own default of /app/certs/startos-local-root-ca.pem — a CA baked in
|
|
// at build time that does not match this box.
|
|
export const nodeExtraCaCertVolumeSubpath = '.startos/startos-root-ca.crt'
|
|
export const nodeExtraCaCertContainerPath = `${dataDir}/.startos/startos-root-ca.crt`
|
|
|
|
// Legacy aliases (same file path after rename).
|
|
export const subsCaCertVolumeSubpath = nodeExtraCaCertVolumeSubpath
|
|
export const subsCaCertContainerPath = nodeExtraCaCertContainerPath
|
|
|
|
// Returns the hostname when url targets another StartOS service on this server
|
|
// (e.g. https://spaces.startos:7777), otherwise null.
|
|
export function startOsHostnameFromUrl(url: string): string | null {
|
|
try {
|
|
const hostname = new URL(url).hostname
|
|
return hostname.endsWith('.startos') ? hostname : null
|
|
} catch {
|
|
return null
|
|
}
|
|
}
|
|
|
|
export const DEFAULT_OPERATOR_RELAY = 'wss://relay.primal.net'
|
|
export const DEFAULT_PLATFORM_MODE = 'prod'
|
|
export const DEFAULT_COINGECKO_TOKEN_COINS = 'bitcoin'
|
|
// Hostname SpacesOps uses when building payment callback URLs
|
|
// (http://${PLATFORM_CALLBACK_HOST}:${PORT}/...).
|
|
export const DEFAULT_PLATFORM_CALLBACK_HOST = 'spacesops.startos'
|
|
|
|
// 32 random bytes as a 64-char hex string — a secp256k1/Nostr secret key. The
|
|
// odds of an out-of-range key are ~1 in 2^128; if getPublicKey rejects it,
|
|
// init throws and StartOS retries with fresh entropy.
|
|
export function randomOperatorSecretHex(): string {
|
|
return utils.getDefaultString({ charset: '0-9,a-f', len: 64 })
|
|
}
|
|
|
|
// A strong replacement for the app's weak hardcoded PLATFORM_SESSION_SECRET.
|
|
export function randomSessionSecret(): string {
|
|
return utils.getDefaultString({ charset: 'a-z,A-Z,0-9', len: 48 })
|
|
}
|