import cors from "cors"; import express from "express"; import morgan from "morgan"; import { consola } from "consola"; import bsky from "bsky"; import { contextMiddleware, ctx } from "context"; import { createServer } from "lexicon"; import chalk from "chalk"; import API from "./xrpc"; import ssh from "./ssh"; import tty from "./tty"; let server = createServer({ validateResponse: false, payload: { jsonLimit: 100 * 1024, // 100kb textLimit: 100 * 1024, // 100kb blobLimit: 5 * 1024 * 1024, // 5mb }, }); server = API(server, ctx); const app = express(); app.use(contextMiddleware); app.use(cors()); app.use(morgan("dev")); const banner = ` ___ __ __ / _ \\___ ____/ /_____ / /____ ___ _ __ / ___/ _ \\/ __/ '_/ -_) __/ -_) _ \\ |/ / /_/ \\___/\\__/_/\\_\\__/\\__/\\__/_/ /_/___/ `; app.get("/", (req, res) => { const accept = req.headers.accept || ""; const wantsHTML = accept.includes("text/html"); if (wantsHTML) { res.contentType("text/html"); res.send(`
${banner}
`); return; } res.contentType("text/plain"); res.send(banner); }); app.use(bsky); app.use(server.xrpc.router); app.use("/ssh", ssh); app.use("/tty", tty); app.listen(process.env.POCKETENV_XPRC_PORT || 8789, () => { consola.log(chalk.greenBright(banner)); consola.info( `Pocketenv XRPC API is running on port ${process.env.POCKETENV_XPRC_PORT || 8789}`, ); });