All checks were successful
Galvanic Corrosion Cross-Compile / build (push) Successful in 57s
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.
104 lines
3.0 KiB
TypeScript
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";
|