73 lines
2.4 KiB
TypeScript
73 lines
2.4 KiB
TypeScript
import { readFileSync } from "fs";
|
|
import { join } from "path";
|
|
|
|
interface Config {
|
|
canvasWidth: number;
|
|
canvasHeight: number;
|
|
defaultCooldown: number;
|
|
enableAutomaticEvents: boolean;
|
|
eventDurationMinutes: number;
|
|
eventIntervalHours: number;
|
|
|
|
autoExportIntervalSeconds: number;
|
|
exportPath: string;
|
|
adminKey: string;
|
|
|
|
enableKeycloak: boolean;
|
|
keycloakRealm: string;
|
|
keycloakAuthUrl: string;
|
|
keycloakClientId: string;
|
|
}
|
|
|
|
function parseConfigFile(): Config {
|
|
try {
|
|
const configPath = join(process.cwd(), "config.cfg");
|
|
const configContent = readFileSync(configPath, "utf-8");
|
|
|
|
const configMap = new Map<string, string>();
|
|
configContent.split("\n").forEach(line => {
|
|
line = line.trim();
|
|
if (line.startsWith("#") || !line.includes("=")) return;
|
|
const [key, value] = line.split("=");
|
|
configMap.set(key.trim(), value.trim());
|
|
});
|
|
|
|
|
|
return {
|
|
canvasWidth: parseInt(configMap.get('CANVAS_WIDTH') || '500'),
|
|
canvasHeight: parseInt(configMap.get('CANVAS_HEIGHT') || '200'),
|
|
defaultCooldown: parseInt(configMap.get('DEFAULT_COOLDOWN') || '10'),
|
|
enableAutomaticEvents: configMap.get('ENABLE_AUTOMATIC_EVENTS') === 'true',
|
|
eventDurationMinutes: parseInt(configMap.get('EVENT_DURATION_MINUTES') || '30'),
|
|
eventIntervalHours: parseInt(configMap.get('EVENT_INTERVAL_HOURS') || '1'),
|
|
autoExportIntervalSeconds: parseInt(configMap.get('AUTO_EXPORT_INTERVAL_SECONDS') || '60'),
|
|
exportPath: configMap.get('EXPORT_PATH') || './exports/',
|
|
adminKey: configMap.get('ADMIN_KEY') || 'admin123',
|
|
enableKeycloak: configMap.get('ENABLE_KEYCLOAK') === 'true',
|
|
keycloakRealm: configMap.get('KEYCLOAK_REALM') || 'rplace',
|
|
keycloakAuthUrl: configMap.get('KEYCLOAK_AUTH_URL') || 'http://localhost:8080/auth',
|
|
keycloakClientId: configMap.get('KEYCLOAK_CLIENT_ID') || 'rplace-client',
|
|
};
|
|
} catch (error) {
|
|
console.error("Error reading config file, using defaults:", error);
|
|
return {
|
|
canvasWidth: 500,
|
|
canvasHeight: 200,
|
|
defaultCooldown: 10,
|
|
enableAutomaticEvents: false,
|
|
eventDurationMinutes: 30,
|
|
eventIntervalHours: 1,
|
|
|
|
autoExportIntervalSeconds: 60,
|
|
exportPath: "./exports/",
|
|
adminKey: 'admin123',
|
|
|
|
enableKeycloak: false,
|
|
keycloakRealm: "rplace",
|
|
keycloakAuthUrl: "http://localhost:8080/auth",
|
|
keycloakClientId: "rplace-client",
|
|
};
|
|
}
|
|
}
|
|
|
|
export const config = parseConfigFile(); |