This repository has been archived on 2026-03-19. You can view files and clone it, but cannot push or open issues or pull requests.
Files
galvanic-corrosion/src/config.ts
zombieb 6cdd0946f4 Removed web project (galvanic authentication support in IL2CPP universal patch)
Moved instance ID to header
User instances for profile management
.. other stuff
2025-03-22 21:57:45 -04:00

122 lines
2.6 KiB
TypeScript

import Logging from "@proxnet/undead-logging";
import * as fs from "node:fs";
const log = new Logging("Config");
type RedisConfiguration = {
host: string,
port: number,
username: string,
password: string,
db: number
}
type WebConfiguration = {
port: number,
host: string,
publichost: string,
securepublichost: boolean
}
type PublicConfiguration = {
serverName: string,
serverId: string,
owner: string,
motd: string,
levelScale: number,
maxLevels: number
patches: string[],
}
type LoggingConfiguration = {
notfound: boolean,
debug: boolean,
network: boolean
}
type DiscordConfiguration = {
token: string,
clientId: string,
guildId: string
}
type AuthConfiguration = {
secret: string,
/**
* In Hours
*/
timeout: number
}
export type GalvanicConfiguration = {
redis: RedisConfiguration,
web: WebConfiguration,
public: PublicConfiguration,
logging: LoggingConfiguration,
discord: DiscordConfiguration | null,
auth: AuthConfiguration
}
export const defaultConfig: GalvanicConfiguration = {
redis: {
host: "127.0.0.1",
port: 6379,
username: "",
password: "",
db: 0
},
web: {
port: 3000,
host: "127.0.0.1",
publichost: "127.0.0.1:3000",
securepublichost: false,
},
public: {
serverName: "Galvanic Corrosion",
serverId: "galvanic-corrosion-default",
owner: "John Doe",
motd: "A Galvanic Corrosion server.",
levelScale: 1,
maxLevels: 30,
patches: [],
},
logging: {
notfound: false,
debug: false,
network: false
},
discord: null,
auth: {
secret: "CHANGE-ME-PLEASE",
timeout: 48
}
}
/** The current configuration. Read and parsed only during startup. */
let config: GalvanicConfiguration;
try {
if (!configurationExists()) generateDefaultConfig();
config = JSON.parse(fs.readFileSync('./config.json').toString());
} catch (err) {
log.e(`Could not get config: ${err}`);
Deno.exit(1);
}
/** Does the configuration file exist on the disk? */
export function configurationExists() {
return fs.existsSync('./config.json');
}
/** Place [or overwrite] the [existing] default configuration in the current directory */
export function generateDefaultConfig() {
fs.writeFileSync('./config.json', JSON.stringify(defaultConfig, undefined, ' '));
}
/** Get current server configuration */
export function getConfig() {
return config;
}
export const devMode = Deno.args.includes('--dev');
export * as Config from './config.ts';