<?php
require_once "functions.php";
require_once "jsonwrapper.php";

$query = '';
$output = '';
$temp = '';
$pythonProcess = '';
if (!isAuthenticated()) {
    echo ("Please login before continuing!");
}

$query = 's=' . $_POST['s'] . '&w=' . $_POST['w'] . '&h=' . $_POST['h'];
if (isset($_POST['q'])) {
    $query .= '&q=1';
} else {
    $query .= '&q=0';
}

if (isset($_POST['f'])) {
    $pythonProcess = exec('ps -aef | grep -v grep | grep ajaxterm.py');
    if ('' == $pythonProcess) {
        exec('nohup ' . dirname(__FILE__) . '/ajaxterm/ajaxterm.py >/dev/null 2>&1 &');
    }
    sleep(1);

    $temp = $query . '&k=' . urlencode($_SESSION["username"] . "\r");
    $output = rconsSynchronise($temp);
    if (0 < substr_count($output, 'error')) {
        echo json_encode(array('err'=>$output));
        exit;
    }
    sleep(1);

    $temp = $query . '&k=' . urlencode(getpassword() . "\r");
    $output = rconsSynchronise($temp);
    if (0 < substr_count($output, 'error')) {
        echo json_encode(array('err'=>$output));
        exit;
    }
    sleep(1);

    $temp = $query . '&c=1&k=' . urlencode('rcons ' . $_POST['s'] . "\r");
} else {
    $temp = $query . '&c=1&k=' . urlencode($_POST['k']);
}

$output = rconsSynchronise($temp);
if (0 < substr_count($output, 'error')) {
    echo (array('err'=>$output));
} else {
    $xml = simplexml_load_string($output);
    if ('pre' == $xml->getName()) {
        $output = $xml->asXML();
        $output = preg_replace('/'. chr(160) . '/', '&nbsp;', $output);

        echo json_encode(array('term'=>$output));
    } else {
        echo json_encode(array('nc'=>'nc'));
    }
}

function rconsSynchronise($parameter) {
    $flag = false;
    $return = "";
    $out = "";
    $fp = fsockopen("127.0.0.1", 8022, $errno, $errstr, 30);
    if (!$fp) {
        return "<error>$errstr($errno)</error>";
    }

    $out = "GET /u?$parameter HTTP/1.1\r\nHost: 127.0.0.1:8022\r\nConnection: Close\r\n\r\n";

    fwrite($fp, $out);
    while (!feof($fp)) {
        $line = fgets($fp,1024);
        if (0 == strlen($line)) {
            continue;
        }

        if ('<' == substr($line, 0, 1)) {
            $flag = true;
            $return .= $line;
            break;
        }
    }

    if ($flag) {
        while (!feof($fp)) {
            $return .= fgets($fp, 1024);
        }
    }

    return ($return);
}
?>