Пример #1
0
function HalfLife_Rcon($ip, $port, $rcon, $command, &$challenge, $challenged = 0)
{
    # No point challenging more than we have too.
    if (strlen($challenge) < 5) {
        $challenge = HalfLife_GetChallenge($ip, $port);
        $challenged++;
    }
    $cmd = "ÿÿÿÿrcon {$challenge} \"{$rcon}\" {$command}";
    if (!($serverdata = GetServerData($cmd, $ip, $port))) {
        return false;
    }
    $serverdata = trim($serverdata);
    if (eregi('^Bad challenge.', $serverdata)) {
        # Try for the challenge twice, if that fails... fail?
        if ($challenged < 2) {
            $challenge = '';
            $serverdata = HalfLife_Rcon($ip, $port, $rcon, $command, $challenge, $challenged);
        } else {
            return false;
        }
    } elseif (eregi('^Bad rcon_password.', $serverdata)) {
        return false;
    }
    return $serverdata;
}
Пример #2
0
// strange as of 29.10.2008 only the Source_A2S_Rules returns a challenge which
// is used and needed in Source_A2S_Player
$server_rules = Source_A2S_Rules($server_ip, $server_port, $query_challenge);
$server_players = Source_A2S_Player($server_ip, $server_port, $query_challenge);
$server_details = Format_Info_Array($server_details);
// If HLStats currently stores the rcon, might as well try to get more data from a HL status
// since the rcon is broken we deactivate this.... 31.10.2008 banana
// @todo: to complete this and use eg. steamcondenser
$server_rcon = false;
$server_status = false;
if ($server_rcon) {
    if ($server['source'] == 1) {
        $server_players_tmp = $server_players;
        $server_status = Source_Rcon($server_ip, $server_port, $server_rcon, 'status');
    } else {
        $server_status = HalfLife_Rcon($server_ip, $server_port, $server_rcon, 'status', $query_challenge);
    }
    if ($server_status) {
        # Rcon worked
        $server_players = array();
        $server_hltv = array();
        Parse_HL_Status($server_status, $server['source'], $server_players, $server_hltv);
        $player_columns[] = array('column' => 'id', 'name' => ' ID', 'align' => 'left', 'width' => '25');
        $player_columns[] = array('column' => 'name', 'name' => 'Name', 'align' => 'left', 'width' => '');
        $player_columns[] = array('column' => 'uid', 'name' => 'Unique ID', 'align' => 'left', 'width' => '125');
        $player_columns[] = array('column' => 'ping', 'name' => 'Ping', 'align' => 'right', 'width' => '35');
        $player_columns[] = array('column' => 'frags', 'name' => 'Frags', 'align' => 'right', 'width' => '30');
        $player_columns[] = array('column' => 'loss', 'name' => 'Loss', 'align' => 'right', 'width' => '30');
        $player_columns[] = array('column' => 'time', 'name' => 'Connected', 'align' => 'right', 'width' => '75');
    }
}