Example #1
0
/**
 * 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']));
    }
}
Example #2
0
     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.";
     }
Example #3
0
}
// 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>