import { readFileSync, existsSync } from "node:fs"; import { resolve } from "node:path"; import { buildApp } from "./app.js"; import { loadConfig } from "./config.js"; for (const path of [ resolve(import.meta.dirname, "../../../.env"), ".env", "../.env", ]) { if (!existsSync(path)) continue; const content = readFileSync(path, "utf-8"); for (const line of content.split("\n")) { const trimmed = line.trim(); if (!trimmed || trimmed.startsWith("#")) continue; const eq = trimmed.indexOf("="); if (eq === -1) continue; const key = trimmed.slice(0, eq).trim(); let value = trimmed.slice(eq + 1).trim(); if ( (value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'")) ) { value = value.slice(1, -1); } if (!(key in process.env)) process.env[key] = value; } break; } const config = loadConfig(); if (!config.cloudflareApiToken) { console.warn( "CLOUDFLARE_API_TOKEN не задан — импорт доменов из Cloudflare недоступен", ); } const app = await buildApp({ config }); try { await app.listen({ port: config.serverPort, host: "0.0.0.0" }); app.log.info(`listening on ${config.serverPort}`); } catch (err) { app.log.error(err); process.exit(1); }