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/config.ts
zombieb 746c2203e5
All checks were successful
Galvanic Corrosion Cross-Compile / build (push) Successful in 57s
uhh
The Rewrite™️

- Discord bot removed, will return *eventually*
- Watchdog kills the server with a knife when it does not shut down in (default) 60 seconds
- New event system that works.. better.. and callbacks have types
- Removed a metric ton of circular dependencies that previously would not let the server start up
    * This included splitting up some classes
- Other. internal stuff. I forgot.
2025-06-29 00:16:07 -04:00

104 lines
3.0 KiB
TypeScript

/* Galvanic Corrosion - Rec Room custom server for communities.
<https://gitea.proxnet.dev/zombieb/galvanic-corrosion>
Copyright (C) 2025 @zombieb (Discord / proxnet Gitea)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
import Logging from "@proxnet/undead-logging";
import * as fs from "node:fs";
import { GalvanicConfiguration } from "./GalvanicConfiguration.ts";
import { PhotonRegionCodeNumber } from "../data/live/PhotonTypes.ts";
const log = new Logging("Config");
export const defaultConfig: GalvanicConfiguration = {
redis: {
host: "127.0.0.1",
port: 6379,
username: "",
password: "",
db: 0,
},
web: {
api: {
port: 13370,
host: "127.0.0.1",
publichost: "127.0.0.1:13370",
securepublichost: false,
},
socket: {
port: 13371,
host: "127.0.0.1",
publichost: "127.0.0.1:13371",
securepublichost: false,
}
},
public: {
serverName: "Galvanic Corrosion",
serverId: "galvanic-corrosion-default",
owner: "John Doe",
motd: "A Galvanic Corrosion server.",
levelScale: 1,
maxLevels: 30,
patches: [],
photonRegionId: PhotonRegionCodeNumber.us,
initialRoom: null
},
general: {
watchdogTimeout: 60000
},
logging: {
notfound: false,
debug: false,
network: false,
},
auth: {
secret: "CHANGE-ME-PLEASE",
timeout: 3,
steamkey: null
},
};
/** 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? */
function configurationExists() {
return fs.existsSync("./config.json");
}
/** Place [or overwrite] the [existing] default configuration in the current directory */
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";