/** * Start a server with a given username * @param string $name */ function server_start($name) { // Get user details $user = user_info($name); // Make sure server isn't already running if (server_running($user['user'])) { return false; } // Check that server has a .jar $jar = $user['jar'] ? $user['jar'] : 'craftbukkit.jar'; if (is_file($user['home'] . '/' . $jar)) { // Verify server.properties (Prevent user from modifying port) if (is_file($user['home'] . '/server.properties')) { $prop = file($user['home'] . '/server.properties', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // Remove any port setting foreach ($prop as $i => $p) { if (strpos($p, 'server-port') !== false) { unset($prop[$i]); continue; } } // Add user's port $prop[] = 'server-port=' . intval($user['port']); // Save properties file file_put_contents($user['home'] . '/server.properties', implode("\n", $prop)); } else { // File doesn't exist, use template from ./serverbase file_put_contents($user['home'] . '/server.properties', str_replace('%PORT%', intval($user['port']), file_get_contents('serverbase/server.properties'))); } // Launch server process in a detached GNU Screen shell_exec('cd ' . escapeshellarg($user['home']) . '; ' . sprintf(str_replace('craftbukkit.jar', $jar, KT_SCREEN_CMD_START), escapeshellarg(KT_SCREEN_NAME_PREFIX . $user['user']), intval($user['ram'] / 2), $user['ram'])); } }
file_rename($_POST['path'], $_POST['newname'], $user['home']); break; case 'server_start': echo server_start($user['user']); break; case 'server_cmd': server_cmd($user['user'], $_POST['cmd']); break; case 'server_stop': server_stop($user['user']); break; case 'server_kill': server_kill($user['user']); break; case 'server_running': echo json_encode(server_running($user['user'])); break; case 'server_log': /*if($files = glob($user['home'] . "screenlog.?*")) { // Prefer GNU screen log echo mclogparse2(file_backread($user['home'])); } else*/ if (is_file($user['home'] . "/logs/latest.log")) { // 1.7 logs echo mclogparse2(file_backread($user['home'] . '/logs/latest.log', 64)); } elseif (is_file($user['home'] . "/server.log")) { // 1.6 and earlier echo mclogparse2(file_backread($user['home'] . '/server.log', 64)); } else { echo "No log file found."; }
} // Switch users if ($_POST['action'] == 'user-switch' && $_POST['user']) { $_SESSION['is_admin'] = true; $_SESSION['user'] = $_POST['user']; header('Location: .'); exit('Switching Users'); } // Add new user if ($_POST['action'] == 'user-add') { user_add($_POST['user'], $_POST['pass'], $_POST['role'], $_POST['dir'], $_POST['ram'], $_POST['port']); } // Start a server if ($_POST['action'] == 'server-start') { $stu = user_info($_POST['user']); if (!server_running($stu['user'])) { server_start($stu['user']); } } // Kill a server if ($_POST['action'] == 'server-stop') { if ($_POST['user'] == 'ALL') { server_kill_all(); } else { server_kill($_POST['user']); } } ?> <!doctype html> <html> <head>