UNPKG

@judgeq/simple-sandbox

Version:

A simple sandbox for Node.js using Linux namespaces and cgroup.

70 lines (66 loc) 1.71 kB
interface MountInfo { src: string; dst: string; limit: number; } interface SandboxParameter { time: number; memory: number; process: number; chroot: string; hostname: string; mounts: MountInfo[]; redirectBeforeChroot: boolean; mountProc: boolean; executable: string; stdin?: string | number; stdout?: string | number; stderr?: string | number; user: { uid: number; gid: number; }; cgroup: string; parameters?: string[]; environments?: string[]; workingDirectory: string; stackSize?: number; } declare enum SandboxStatus { Unknown = 0, OK = 1, TimeLimitExceeded = 2, MemoryLimitExceeded = 3, RuntimeError = 4, Cancelled = 5, OutputLimitExceeded = 6 } interface SandboxResult { status: SandboxStatus; time: number; memory: number; code: number; } declare class SandboxProcess { readonly parameter: SandboxParameter; readonly pid: number; private readonly cancellationToken; private readonly stopCallback; private countedCpuTime; private actualCpuTime; private timeout; private cancelled; private waitPromise; running: boolean; constructor(parameter: SandboxParameter, pid: number, execParam: ArrayBuffer); private removeCgroup; private cleanup; stop(): void; waitForStop(): Promise<SandboxResult>; } declare function startSandbox(parameter: SandboxParameter): SandboxProcess; declare function getUidAndGidInSandbox(rootfs: string, username: string): { uid: number; gid: number; }; export { MountInfo, SandboxParameter, SandboxResult, SandboxStatus, getUidAndGidInSandbox, startSandbox };