📄 Source: clientid.php
<?php
require_once __DIR__ . '/../auth.php';
require_once __DIR__ . '/../lib/servers.php';
require_once __DIR__ . '/../lib/clientid.php';
require_auth_json();
$CFG = $GLOBALS['__CFG'];
$server = $_GET['server'] ?? '';
$player = $_GET['player'] ?? '';
if ($server === '' || strpos($server, '/') !== false || strpos($server, '..') !== false) {
http_response_code(400);
echo json_encode(['ok' => false, 'error' => 'Invalid server name']);
exit;
}
if ($player === '' || strlen($player) > 32) {
http_response_code(400);
echo json_encode(['ok' => false, 'error' => 'Invalid player name']);
exit;
}
$path = server_path($CFG['server_root'], $server);
try {
$modsRaw = clientid_rcon($path, $CFG, "/clientid viewmods $player");
$packsRaw = clientid_rcon($path, $CFG, "/clientid viewpacks $player");
$mods = clientid_parse_mods($modsRaw);
$packs = clientid_parse_packs($packsRaw);
$baselineMods = $CFG['clientid_expected_mods'] ?? [];
$baselinePacks = $CFG['clientid_expected_packs'] ?? [];
$extraMods = clientid_filter_mods($mods, $baselineMods);
$extraPacks = clientid_filter_packs($packs, $baselinePacks);
header('Content-Type: application/json');
echo json_encode([
'ok' => true,
'player' => $player,
'mods_all' => $mods,
'mods_extra' => $extraMods,
'packs_all' => $packs,
'packs_extra' => $extraPacks,
'baseline_count' => count($baselineMods),
]);
} catch (Throwable $e) {
header('Content-Type: application/json');
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
}
← Back