This commit is contained in:
Raven Scott
2026-04-22 05:40:16 -04:00
parent 33e343a127
commit 200873ab41
9 changed files with 196 additions and 276 deletions
@@ -3,29 +3,12 @@
*/
import { bareHolesailEnvTruthy } from './bare-holesail-env.js'
import {
BARE_HOLESAIL_STATE_GUEST,
bareHolesailManagedReadState,
bareHolesailManagedServiceIsRunning,
bareHolesailManagedSessionUsesGuestHolesailState,
bareHolesailManagedStartOne,
bareHolesailManagedWriteState
} from './bare-holesail-managed.js'
/**
* Guest session: persist **`bare-www-*`** next to initd boot state. Unlocked: caller's default
* **`~/.holesail/state.json`** (same as other managed rows).
* @param {Record<string, string | undefined>} env
*/
function wwwHolesailManagedEnv(env) {
if (bareHolesailManagedSessionUsesGuestHolesailState(env)) {
return {
.../** @type {Record<string, string | undefined>} */ (env),
BARE_OS_HOLESAIL_STATE: BARE_HOLESAIL_STATE_GUEST
}
}
return /** @type {Record<string, string | undefined>} */ (env)
}
export const BARE_OS_WWW_HOLESAIL_CONNECTION_ID_PREFIX = 'bare-www-'
/**
@@ -64,8 +47,10 @@ export async function ensureBareOsWwwHolesailTunnel(ctx, env, port) {
}
if (!ctx.b4a || typeof ctx.b4a.from !== 'function') return
const gEnv = wwwHolesailManagedEnv(env)
const { path, state } = await bareHolesailManagedReadState(ctx, gEnv)
const { path, state } = await bareHolesailManagedReadState(
ctx,
/** @type {Record<string, string | undefined>} */ (env)
)
/** Holesail server mode requires an explicit loopback host. */
const wantHost = '127.0.0.1'
/** @type {Record<string, unknown>} */
@@ -84,7 +69,11 @@ export async function ensureBareOsWwwHolesailTunnel(ctx, env, port) {
if (server && curPort === p && enabled && hostOk) {
if (bareHolesailManagedServiceIsRunning()) {
try {
await bareHolesailManagedStartOne(ctx, gEnv, id)
await bareHolesailManagedStartOne(
ctx,
/** @type {Record<string, string | undefined>} */ (env),
id
)
} catch {
/* may already run */
}
@@ -100,11 +89,19 @@ export async function ensureBareOsWwwHolesailTunnel(ctx, env, port) {
if (k) next.key = k
}
state.connections[id] = next
await bareHolesailManagedWriteState(ctx, gEnv, state)
await bareHolesailManagedWriteState(
ctx,
/** @type {Record<string, string | undefined>} */ (env),
state
)
void path
if (bareHolesailManagedServiceIsRunning()) {
try {
await bareHolesailManagedStartOne(ctx, gEnv, id)
await bareHolesailManagedStartOne(
ctx,
/** @type {Record<string, string | undefined>} */ (env),
id
)
} catch (e) {
try {
ctx.console?.error?.(