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.
This commit is contained in:
103
src/config/config.ts
Normal file
103
src/config/config.ts
Normal file
@@ -0,0 +1,103 @@
|
||||
/* 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";
|
||||
Reference in New Issue
Block a user