ACPlayer_Webpage/lib/serverConfig.ts

47 lines
1.3 KiB
TypeScript

// lib/serverConfig.ts
// Parse AC server config to get available cars
import { promises as fs } from 'fs';
const SERVER_CONFIG_PATH = '/mnt/combined/servers/acserver_EVENTS/utils/cfg/server_cfg.ini';
export async function getAvailableCars(): Promise<string[]> {
try {
const content = await fs.readFile(SERVER_CONFIG_PATH, 'utf-8');
// Find the CARS= line
const carsLine = content
.split('\n')
.find(line => line.trim().startsWith('CARS='));
if (!carsLine) {
console.error('CARS line not found in server config');
return [];
}
// Extract cars list after "CARS="
const carsString = carsLine.split('CARS=')[1].trim();
// Split by semicolon and remove duplicates
const cars = carsString
.split(';')
.map(car => car.trim())
.filter(car => car.length > 0);
// Remove duplicates using Set
const uniqueCars = Array.from(new Set(cars));
return uniqueCars.sort();
} catch (error) {
console.error('Error reading server config:', error);
return [];
}
}
// Format car name for display (optional - makes it prettier)
export function formatCarName(carId: string): string {
return carId
.replace(/_/g, ' ')
.replace(/\b\w/g, char => char.toUpperCase());
}