Avatar billede anderseiler Nybegynder
02. maj 2007 - 23:27 Der er 5 kommentarer og
1 løsning

Hente info fra CS server på linux

Hejsa

Jeg skal udskrive nogle informationer fra min CS server (som kører på linux, ved ik om det gør nogen forskel?!) i mit PHP dokument.

Jeg skal bruge ting som antal spillere, map, osv osv. Jeg ved, hvordan jeg kan skrive kommandoer til serveren, nemlig med:

<?php
// Her bliver de sendte post variabler behandlet.
$_POST['rconpw'] = $inputrcon;
$_POST['srvip'] = $inputsrvip;
$_POST['srvport'] = $inputsrvport;

// Her bliver alle kundes custom variabler lavet om til std. variabler.
$protocol = "udp://";
$ip = $inputservip;
$port = $inpusrvport;
$rcon_password = "rcon_password ";
$rcon = "rcon ";
$rconpw = $inputrconpw;
$cmd = "quit";

$fp = fsockopen($protocol . $ip, $port, $errno, $errstr, 30);
   
    // Open Connection to server
    fsockopen($protocol . $ip, $port, $errno, $errstr, 30);
    // Auth rcon to srv.
    fwrite($fp, $rcon_password . $rconpw, 260);
    // Write cmd to srv.
    fwrite($fp, $rcon . $cmd, 260);
    // Close connection.
    fclose($fp);
?>

Ovenstående for blot CS Serveren til at genstarte. Men når jeg skal have et svar fra serveren, f.eks. med hvilket map den kører lige nu, så... Ved jeg ikke hvad jeg skal gøre :p

Jeg ved, at hvis man skriver  status  i konsollen i CS, så kommer al den info frem, som man skal bruge. Jeg aner bare ikke hvordan jeg får det ud i mit PHP dokument :)


Mvh
Anders Eiler
Avatar billede jakobdo Ekspert
03. maj 2007 - 07:54 #1
Denne linie:

// Write cmd to srv.
fwrite($fp, $rcon . $cmd, 260);
Det er den som sender en kommando til serveren.
Prøv at ret til:

// Write cmd to srv.
fwrite($fp, $rcon . 'status', 260);
$status = fread($fp, 1024);
echo $status;

Det med fread osv er ikke pæn kodning, men blot for at vise der gerne skulle komme noget retur.
Avatar billede anderseiler Nybegynder
03. maj 2007 - 09:32 #2
Jeg giver dig ret i, at der gerne skulle komme noget retur. Men det eneste der sker er, at jeg får en timeout...

Fatal error: Maximum execution time of 30 seconds exceeded.... :/
Avatar billede jakobdo Ekspert
03. maj 2007 - 18:24 #3
Så har jeg ingen ide. :o(
Avatar billede black-eye Nybegynder
05. maj 2007 - 11:05 #4
Okay, jeg kan se du ikke har gjordt så meget research i det at få info fra en cs server...
Først syndes jeg lige du skal tage et kik på http://dev.kquery.com/index.php?article=46
Der står de tre commandoer man kan få fra serveren uden rcon.
Den øverste FF FF FF FF 54 (ÿÿÿÿT) indeholder det du skrev du gerne vil have fra serveren.

Så prøve med:
  // Open Connection to server
    fsockopen($protocol . $ip, $port, $errno, $errstr, 30);
    // Write cmd to srv.
    fwrite($fp, "ÿÿÿÿT", 260);
    // Timeout hvis serveren ikke svare inden for 2 sek.
    socket_set_timeout($fp, 2);
    // Read from serv.
    $incomming = fread($fp, 4096);
    // Close connection.
    fclose($fp);
    echo $incomming;

Den der skulle gerne give bonus nu skal du så bare lige sortere den info serveren giver dig.
og btw. hvis du vil bruge rcon på serveren er det en helt anden må man gør det på.
Avatar billede anderseiler Nybegynder
07. maj 2007 - 00:02 #5
Nice, takker!

Smider du et svar?? Så kan jeg få lukket :)

Og jo, har søgt lidt hist og her, men kom ikke rigtig frem til noget brugbart :/

Men takker for hjælpen! :)

Mvh
Anders
Avatar billede black-eye Nybegynder
07. maj 2007 - 06:46 #6
Her er et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester