import { versions } from 'node:process'; import { data } from 'react-router'; import type { Route } from './+types/info'; export async function loader({ request, context }: Route.LoaderArgs) { if (context.config.server.info_secret == null) { throw data( { status: 'Forbidden', }, 403, ); } const bearer = request.headers.get('Authorization') ?? ''; if (!bearer.startsWith('Bearer ')) { throw data( { status: 'Unauthorized', }, 401, ); } const token = bearer.slice('Bearer '.length).trim(); if (token !== context.config.server.info_secret) { throw data( { status: 'Forbidden', }, 403, ); } // Use a fake API key for healthcheck const api = context.hsApi.getRuntimeClient('fake-api-key'); const healthy = await api.isHealthy(); const body = { status: healthy ? 'healthy' : 'unhealthy', headplane_version: __VERSION__, headscale_canonical_version: healthy ? context.hsApi.apiVersion : 'unknown', internal_versions: { node: versions.node, v8: versions.v8, uv: versions.uv, zlib: versions.zlib, openssl: versions.openssl, libc: versions.libc, }, }; return new Response(JSON.stringify(body), { status: 200, headers: { 'Content-Type': 'application/json', }, }); }