import type { InstallContext } from "../types/context"; import { runVisible } from "../lib/process"; export async function prepareFilesystem(context: InstallContext): Promise { await runVisible`id -u hysteria >/dev/null 2>&1 || useradd --system --home /var/lib/hysteria --shell /usr/sbin/nologin hysteria`; await runVisible`id -u hy2xs-admin >/dev/null 2>&1 || useradd --system --home ${context.config.dataDir} --shell /usr/sbin/nologin hy2xs-admin`; await runVisible`mkdir -p /etc/hy2xs /etc/hysteria /var/lib/hysteria ${context.config.installDir} ${context.config.dataDir} ${context.config.logDir} /usr/local/lib/hy2xs /etc/nftables.d`; await runVisible`chown -R hysteria:hysteria /etc/hysteria /var/lib/hysteria`; await runVisible`chown -R root:root ${context.config.installDir}`; await runVisible`chmod -R go-w ${context.config.installDir}`; await runVisible`chown -R hy2xs-admin:hy2xs-admin ${context.config.dataDir} ${context.config.logDir}`; await runVisible`chmod 700 /etc/hy2xs`; }