|
[PHP] status
|
|
Geplaatst op 26-08-2011 11:10
|

Actief

|
Posts: 123
Joined: 03.05.09
|
hey,
ik heb een website en ik heb een stuckje php code nodig die via rcon naar een cod server cmd status opvraagt,
kan iemand me helpen. het rcon paswoord zou dan opgeslagen zijn in bv Rcon1.txt ofzo
het meot geen online rcontool ofzo zijn, gewoon een soort van status checker
alvast bedankt,
Jens
|
| |
| |
Geplaatst op 26-08-2011 11:18 | Gewijzigd door Stijn op 26-08-2011 11:18
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
Met fsockopen() maak je een UDP verbinding met de server.
Dan maak je bv. gebruik van onderstaande functie om een command op de server uit te voeren:
GeSHi: PHPfunction exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":''); fwrite($connect, $send); $output = (($server_extra_wait)?(fread($connect, 1)):''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; }
De globals:
$rcon_pass - nogal duidelijk ...
$connect - je socket verbinding die je aangemaakt hebt
$server_extra_wait - zet je op false
$server_buffer_results - zet je op 2048
$server_extra_footer - zet je op true
Proud Coder & Founder of Modbase

|
| |
| |
Geplaatst op 26-08-2011 11:24 | Gewijzigd door Derix op 26-08-2011 11:40
|

Actief

|
Posts: 123
Joined: 03.05.09
|
zo snap ik er niet veel van=D ben newb in php
maar je kent php fuzion wel daar heb ik een custom page op gemaakt
dus wat meot ik nu bij het tekstvak Page Content: ?
en welke files meot ik nog aanmaken?
ik gebruikte
Code<?php
function exec_command($cmd){
global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer;
$send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":'');
fwrite($connect, $send);
$output = (($server_extra_wait)?(fread($connect, 1)):'');
do {
$status_pre = socket_get_status($connect);
if (($server_extra_wait && $output != '') || (!$server_extra_wait))
$output .= fread($connect, $server_buffer_results);
$status_post = socket_get_status($connect);
} while($status_pre['unread_bytes'] != $status_post['unread_bytes']);
return $output;
}
?>
dus wat je zij
in page content maar krijg niets, ook waar moet ik die globals zetten?
|
| |
| |
Geplaatst op 26-08-2011 11:36 | Gewijzigd door HuRRaCaNe op 26-08-2011 11:41
|

Actief

|
Posts: 123
Joined: 03.05.09
|
srr voor de vele posten maar ik weet niet of je het al zou gelzen hebben,
nu heb ik GeSHi: PHP<?php $rcon_pass = "oeps" $connect = "192.168.1.14:28960" $server_extra_wait = false $server_buffer_results = "2048" $server_extra_footer = true function exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":''); fwrite($connect, $send); $output = (($server_extra_wait)?(fread($connect, 1)):''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; } ?>
en krijg op page CodeParse error: syntax error, unexpected T_VARIABLE in E:\xampp\xampp\htdocs\tec\administration\custom_pages.php(114) : eval()'d code on line 4
alvast bedankt
Bericht van Moderator:Je kan gemakkelijk de edit knop gebruiken. Gebruik die in de toekomst :/
~HuRRaCaNe
|
| |
| |
|
Geplaatst op 26-08-2011 11:46
|

Opgewarmd

|
Posts: 68
Joined: 12.07.11
|
't zou ook handig zijn als je in plaats van de interne ip (192.168.x.x) je externe IP gebruikt, zodat anderen de server ook kunnen zien.
|
| |
| |
Geplaatst op 26-08-2011 11:59 | Gewijzigd door jensser op 26-08-2011 12:03
|

Actief

|
Posts: 123
Joined: 03.05.09
|
met het external ip zal het niet gaan want de website en server zijn op zelfde machine dan kun je niet connecten met external ip naar je eigen computer.
ik ga nu nog eens proberen maar met 127.0.0.1
edit
met 127.0.0.1:28960 werkt het ook niet
dit heb ik nu als code
GeSHi: PHP<?php $rcon_pass = "159357" $connect = "127.0.0.1:28960" $server_extra_wait = false $server_buffer_results = "2048" $server_extra_footer = true function exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":''); fwrite($connect, $send); $output = (($server_extra_wait)?(fread($connect, 1)):''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; } ?>
|
| |
| |
Geplaatst op 26-08-2011 12:02 | Gewijzigd door HuRRaCaNe op 26-08-2011 12:03
|

Moderator
.gif)
Donator
|
Posts: 5129
Joined: 24.08.06
|
Maar, je verbindt met het server IP. Tenzij het IP van je server "192.168.1.14" is zal je er niet mee kunnen verbinden.
|
| |
| |
|
Geplaatst op 26-08-2011 12:17
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
Natuurlijk werkt het nog niet, je hebt bij $connect je ip-adres ingevuld.
$connect stelt de verbinding voor die je via fsockopen() aanmaakt.
Proud Coder & Founder of Modbase
 |
| |
| |
|
Geplaatst op 26-08-2011 12:33
|

Actief

|
Posts: 123
Joined: 03.05.09
|
ik ben echt een newb in php,
hoe maak ik een fsockopen() aan dan?
ik zou dus in php fuzion zon custom page met daarop dan de stat4s zoals in de cod console
bedankt dat julie me proberen te helpen =D
|
| |
| |
|
Geplaatst op 26-08-2011 12:38
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
Google: 'php fsockopen' doet wonderen.
De PHP manual is erg duidelijk opgesteld: http://php.net/ma...ckopen.php
Er staan zelfs voorbeelden bij 
Ik vermeld er alvast nog eens bij: verbind via UDP!
Proud Coder & Founder of Modbase
 |
| |
| |
|
Geplaatst op 26-08-2011 12:39
|

Actief

|
Posts: 123
Joined: 03.05.09
|
ok bedankt, ik ga nu naar mijn pc om het te volgen en uit te proberen, ik zal wel iets posten als het werkt of niet
alvast bedankt
|
| |
| |
|
Geplaatst op 26-08-2011 12:50
|

Actief

|
Posts: 123
Joined: 03.05.09
|
hmm ik heb het niet helemaal,
ik heb nu GeSHi: PHP<?php $fp = fsockopen("udp://127.0.0.1", 28960, $errno, $errstr); if (!$fp) { echo "ERROR: $errno - $errstr<br />\n"; } else { } $rcon_pass = "159357" $connect = "udp://127.0.0.1" $server_extra_wait = false $server_buffer_results = "2048" $server_extra_footer = true function exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":''); fwrite($connect, $send); $output = (($server_extra_wait)?(fread($connect, 1)):''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; } ?>
en nogaltijd
CodeParse error: syntax error, unexpected T_VARIABLE in E:\xampp\xampp\htdocs\tec\administration\custom_pages.php(114) : eval()'d code on line 13
hoe kan ik de fsocket dan verbinden met connect?
|
| |
| |
|
Geplaatst op 26-08-2011 12:54
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
3 fouten:
1. Je eindigt nergens een declaratie/codefragment met een ; -> verplicht in PHP
2. Je moet fsockopen koppelen aan $connect, niet aan $fp
3. Gebruik de exec_command() functie, en begin niet zo random fread en fwrite te doen (wat blijkbaar letterlijk het voorbeeld van de manual is)
Proud Coder & Founder of Modbase
 |
| |
| |
|
Geplaatst op 26-08-2011 13:03
|

Actief

|
Posts: 123
Joined: 03.05.09
|
ok ik snap er totaal niets van maar heb iets gebrobeert,
GeSHi: PHP<?php $connect = fsockopen("udp://192.168.1.14", 28960, $errno, $errstr); if (!$connect) { echo "ERROR: $errno - $errstr<br />\n"; } else { echo fread($connect, 26); } $rcon_pass = "159357"; $server_extra_wait = false; $server_buffer_results = "2048"; $server_extra_footer = true; function exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer)?"\n":''); fwrite($connect, $send); $output = (($server_extra_wait)?(fread($connect, 1)):''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; } ?>
maar nu als ik de pagina laadt, blijft hij oneindig laden, de gameserver staat aan
kun je me nog helpen?
bedankt
|
| |
| |
|
Geplaatst op 26-08-2011 13:06
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
Eventjes met de paplepel erin geven dan :p
GeSHi: PHP<?php $connect = fsockopen("udp://127.0.0.1", 28960, $errno, $errstr, 4); if(!$connect) die('Kan niet verbinden met de server'); $rcon_pass = "159357"; $server_extra_wait = false; $server_buffer_results = 2048; $server_extra_footer = true; function exec_command($cmd){ global $rcon_pass, $connect, $server_extra_wait, $server_buffer_results, $server_extra_footer; $send = "\xff\xff\xff\xff" . 'rcon "' . $rcon_pass . '" '.$cmd.(($server_extra_footer) ? "\n" : ''); fwrite($connect, $send); $output = (($server_extra_wait) ? (fread($connect, 1)) : ''); do { $status_pre = socket_get_status($connect); if (($server_extra_wait && $output != '') || (!$server_extra_wait)) $output .= fread($connect, $server_buffer_results); $status_post = socket_get_status($connect); } while($status_pre['unread_bytes'] != $status_post['unread_bytes']); return $output; } echo exec_command('status'); ?>
Proud Coder & Founder of Modbase

|
| |
| |
|
Geplaatst op 26-08-2011 13:06
|

Master

|
Posts: 875
Joined: 14.10.10
|
Probeer je dit vanaf je lokale servertje te doen, of vanaf een internetserver?
Indien vanaf een internetserver: fix het ip
LMGTFY! |
| |
| |
|
Geplaatst op 26-08-2011 13:10
|

Actief

|
Posts: 123
Joined: 03.05.09
|
het is op de same machine heb mijn local ip 192.168.1.14 en 127.0.0.1 al geprobeert.
|
| |
| |
|
Geplaatst op 26-08-2011 13:14
|

Actief

|
Posts: 123
Joined: 03.05.09
|
@stijn hij heeft verbinding
maar nu heb ik dit Codeÿÿÿÿprint map: mp_array num score ping guid name lastmsg address qport rate --- ----- ---- ---------- --------------- ------- --------------------- ------ -----
er is niemand in dus dat klopt maar de
ÿÿÿÿprint
en de layout is niet zoals het meot zijn, wat kan ik daar aan doeN?
ÿÿÿÿprint is nog niet zo erg
|
| |
| |
|
Geplaatst op 26-08-2011 13:16
|

Admin
.gif)
|
Posts: 2065
Joined: 17.01.06
|
Die output lijkt te kloppen, net hetzelfde als je in de console zou krijgen.
Om die 'ÿÿÿÿprint' weg te hebben kun je gewoon een substring nemen vanaf positie 11.
Proud Coder & Founder of Modbase
 |
| |
| |
|
Geplaatst op 26-08-2011 13:18
|

Actief

|
Posts: 123
Joined: 03.05.09
|
ok erg bedankt, ik ben niet zo snel in php
erg bedankt allemaal om me te helpen.
|
| |