userid($_GET['id']); $entry = $PokemonServers[$id] ?? null; if (!$entry) { header('HTTP/1.1 404 Not Found'); die(isset($_REQUEST['json']) ? 'null' : '404 Not Found'); } } $page = 'servers'; $pageTitle = "Servers"; $success = false; // Single server view //================================================================================= if (isset($_REQUEST['json'])) { header('Content-type: application/json'); header('Access-Control-Allow-Origin: *'); if (!$entry) die('null'); $out = [ 'host' => '', 'id' => $id, ]; if ($entry['banned'] ?? false) { $out['banned'] = true; } else { $out['banned'] = false; $out['host'] = $entry['server']; $out['port'] = $entry['port']; if (isset($entry['altport'])) $out['altport'] = $entry['altport']; } die(json_encode($out)); } if (!$entry) { die("server not found"); } $is_owner = $users->isLeader(); if (!@$entry['banned'] && strpos(','.@$entry['owner'].',', ','.$curuser['userid'].',') !== false) { $is_owner = true; } if (@$_POST['act'] === 'editserver') { if (!$is_owner) die('access denied'); if (!$users->csrfCheck()) die('invalid data, please retry'); $id = $entry['id']; $loc = trim($_POST['loc'] ?? ''); if ($loc) { if (substr($loc, 0, 7) === 'http://') $loc = substr($loc, 7); if (substr($loc, 0, 8) === 'https://') $loc = substr($loc, 8); $slashpos = strpos($loc, '/'); if ($slashpos !== false) $loc = substr($loc, 0, $slashpos); if (substr($loc, -8) === '.psim.us') $loc = substr($loc, 0, -8); $parts = explode(':', $loc); $server = $loc; $port = 8000; if (@$parts[1]) { $port = intval($parts[1]); $server = $parts[0]; } else { $dashpos = strrpos($loc, '-'); if ($dashpos !== false && ctype_digit(substr($loc, $dashpos+1))) { $port = intval(substr($loc, $dashpos+1)); $server = substr($loc, 0, $dashpos); } } if (strpos($server, '.') === false) { die("invalid server location"); } $PokemonServers[$id]['server'] = $server; $PokemonServers[$id]['port'] = $port; } $owners = explode(',', $_POST['owner']); foreach ($owners as $i=>$owner) $owners[$i] = $users->userid($owner); $PokemonServers[$id]['owner'] = implode(',',$owners); saveservers(); $success = 'editserver'; $entry = $PokemonServers[$id]; } if (@$_POST['act'] === 'deleteserver') { if (!$is_owner) die('access denied'); if (!$users->csrfCheck()) die('invalid data, please retry'); $id = $entry['id']; unset($PokemonServers[$id]); saveservers(); $success = 'deleteserver'; $entry = false; } if (@$_POST['act'] === 'banserver') { if (!$is_owner) die('access denied'); if (!$users->csrfCheck()) die('invalid data, please retry'); $id = $entry['id']; $message = @$_POST['message']; if (!$message) $message = 'banned'; $PokemonServers[$id]['banned'] = $_POST['message']; saveservers(); $success = 'banserver'; $entry = $PokemonServers[$id]; } if (@$_POST['act'] === 'maketoken') { if (!$is_owner) die('access denied'); if (!$users->csrfCheck()) die('invalid data, please retry'); $id = $entry['id']; $token = base64_encode(openssl_random_pseudo_bytes(9)); $PokemonServers[$id]['token'] = md5($token); saveservers(); $success = 'maketoken'; $entry = $PokemonServers[$id]; } if (@$_POST['act'] === 'deltoken') { if (!$is_owner) die('access denied'); if (!$users->csrfCheck()) die('invalid data, please retry'); $id = $entry['id']; unset($PokemonServers[$id]['token']); saveservers(); $success = 'deltoken'; $entry = $PokemonServers[$id]; } includeHeader(); // if (!$is_owner) { // die('access denied'); // } ?>

You're logged in as:

« Back to server list

Successfully updated.

'; if (!$entry) die(); ?>

Add this to your config.js, replacing all other "exports.serverid" and "exports.servertoken" lines if you have them:

[Hidden]

Banned
Reason:

.psim.us

Owner: