mirror of
https://github.com/NebulaServices/Nebula.git
synced 2025-05-13 12:00:01 -04:00
82 lines
3 KiB
TypeScript
82 lines
3 KiB
TypeScript
import { readFileSync } from 'node:fs';
|
|
import { parse, TomlPrimitive } from 'smol-toml';
|
|
import { fileURLToPath } from 'node:url';
|
|
import chalk from 'chalk';
|
|
|
|
interface TomlData {
|
|
marketplace: {
|
|
enabled: boolean;
|
|
psk: String
|
|
}
|
|
server: {
|
|
server: {
|
|
port: number;
|
|
wisp: boolean;
|
|
logging: boolean;
|
|
}
|
|
rammerhead: {
|
|
reverseproxy: boolean;
|
|
localstorage_sync: boolean;
|
|
http2: boolean;
|
|
}
|
|
},
|
|
db: {
|
|
name: string;
|
|
username: string;
|
|
password: string;
|
|
postgres: boolean;
|
|
},
|
|
postgres: {
|
|
domain: string;
|
|
port: number;
|
|
}
|
|
}
|
|
|
|
interface Verify {
|
|
name: string,
|
|
typeOF: any,
|
|
type: any
|
|
}
|
|
|
|
let doc = readFileSync(fileURLToPath(new URL('../config.toml', import.meta.url))).toString();
|
|
const parsedDoc = parse(doc) as unknown as TomlData;
|
|
|
|
function verify(t: Verify[]) {
|
|
for (let i: number = 0; i !== t.length; i++) {
|
|
if (typeof t[i].typeOF !== t[i].type) {
|
|
throw new Error(`Invalid structure: "${t[i].name}" should be a(n) ${t[i].type}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
verify([
|
|
{name: 'marketplace', typeOF: parsedDoc.marketplace, type: 'object'},
|
|
{name: 'marketplace.enabled', typeOF: parsedDoc.marketplace.enabled, type: 'boolean'},
|
|
{name: 'marketplace.psk', typeOF: parsedDoc.marketplace.psk, type: 'string'},
|
|
{name: 'server', typeOF: parsedDoc.server, type: 'object'},
|
|
{name: 'server.server', typeOF: parsedDoc.server.server, type: 'object'},
|
|
{name: 'server.rammerhead', typeOF: parsedDoc.server.rammerhead, type: 'object'},
|
|
{name: 'server.server.port', typeOF: parsedDoc.server.server.port, type: 'number'},
|
|
{name: 'server.server.wisp', typeOF: parsedDoc.server.server.wisp, type: 'boolean'},
|
|
{name: 'server.server.logging', typeOF: parsedDoc.server.server.logging, type: 'boolean'},
|
|
{name: 'server.rammerhead.reverseproxy', typeOF: parsedDoc.server.rammerhead.reverseproxy, type: 'boolean'},
|
|
{name: 'server.rammerhead.localstorage_sync', typeOF: parsedDoc.server.rammerhead.localstorage_sync, type: 'boolean'},
|
|
{name: 'server.rammerhead.http2', typeOF: parsedDoc.server.rammerhead.http2, type: 'boolean'},
|
|
{name: 'db', typeOF: parsedDoc.db, type: 'object'},
|
|
{name: 'db.name', typeOF: parsedDoc.db.name, type: 'string'},
|
|
{name: 'db.username', typeOF: parsedDoc.db.username, type: 'string'},
|
|
{name: 'db.password', typeOF: parsedDoc.db.password, type: 'string'},
|
|
{name: 'db.postgres', typeOF: parsedDoc.db.postgres, type: 'boolean'},
|
|
{name: 'postgres', typeOF: parsedDoc.postgres, type: 'object'},
|
|
{name: 'postgres.domain', typeOF: parsedDoc.postgres.domain, type: 'string'},
|
|
{name: 'postgres.port', typeOF: parsedDoc.postgres.port, type: 'number'}
|
|
]);
|
|
|
|
if (parsedDoc.marketplace.psk === "CHANGEME") {
|
|
console.warn(chalk.yellow.bold('PSK should be changed from "CHANGEME"'));
|
|
}
|
|
if (parsedDoc.db.password === "password") {
|
|
console.warn(chalk.red.bold('You should change your DB password!!'));
|
|
}
|
|
|
|
export { TomlData, parsedDoc }
|