Hallo,
Ik heb me eigen CSS server draaien en ik heb een Webserver.
Dus nu ben ik bezig met een Web Based RCON panel.
Ik heb het al zover dat ik commands kan verzenden, maar ik wou ook graag weten of het mogelijk is om de server log te ontvangen.
En zo ja, hoe ?
Alvast bedankt,
GR Arjen
Evenementen voor de komende 60 Dag(en)
Resultaten 1 tot 11 van de 11
Onderwerp: Counter Strike Source WebBased RCON panel.
-
01/07/08 14:54
Counter Strike Source WebBased RCON panel.
- advertentie
-
01/07/08 15:46moderator5.194 Berichten- Ingeschreven
- 12/09/05
- Locatie
- Zuid Holland
68 Berichten zijn liked
KvK nummer: 14074337
Die kan je via mods uitlezen danwel vanaf de console doorsturen.
-
01/07/08 16:12Ik weet dat je dan logaddress_add xxxxxxxxxx:7130 moet doen, waar XXX het IP is van de Webserver.
Dan verzend je CSS Server het dus naar dat adres, het enige dat ik niet weet is hoe je het op moet vangen, Nou heb ik wel gehoort dat het iets is met UDP ? (fsockopen(); ) ?
Kan iemand mij hier aub mee helpen.
GR Arjen
-
01/07/08 17:03moderator5.194 Berichten- Ingeschreven
- 12/09/05
- Locatie
- Zuid Holland
68 Berichten zijn liked
KvK nummer: 14074337
Het programma dat op die poort draait moet dan wel continu aanstaan.
Weet je zeker dat je dat in PHP wilt doen?
-
01/07/08 17:28Zou het anders in Perl moeten Net zo als HLstatsX, een perl script dat continu draait en de gegevens ontvangt, naar een database stuurt en een PHP sript dat ze realtime opvraagt.
Dat zou inderdaad wel kunnen, waren het niet dat ik totaal geen verstand heb van Perl.
Iemand die mij daar misschien mee kan helpen?
En ALS het in PHP kan (het moment dat je de pagina bekijkt een socket openen en zien welke spelers er zijn) dan is dat beter.
GR Arjen
-
02/07/08 19:54Omdat ik niet meer kan editten (knopje weg ?) schrijf ik het als reactie.
Ik wil dit gebruiken om een command "maps *" naar de server te sturen en dan de output in het PHP script te laten verschijnen (met while() { ?).
De command "maps *" geeft in de console een lijst van alle maps die in de server staan.
Iemand die weet hoe dit moet ?
GR Arjen
-
03/07/08 10:28Met PHP kan je niet oneindig blijven luisteren op een bepaalde poort. Als je PHP script bezig is, in dit geval met data ophalen dan zal je pagina blijven laden. Als je oneindig wilt blijven luisteren zal je pagina dus blijven laden.
Je kunt dit oplossen met een beetje Javascript. Het enige nadeel daarvan is dat je moet gaan werken met intervallen, maar je log real-time verwerken is nergens voor nodig, toch?
PHP is er niet voor bedoeld om een connectie continue open te houden, trouwens het hele HTTP protocol niet.
Ik zou het oplossen met een beetje C++, die de gegevens wegschrijft naar een database en dan kan je hem vervolgens met PHP uitlezen.
@ TS: aan je reacties te zien heb je nog niet veel (diepgaande) kennis van PHP. Een project als deze gaat je heel veel moeite kosten. Als je toch besluit je log uit te willen lezen met PHP kijk dan eens naar de volgende functies: stream_socket_server & stream_socket_accept. Vervolgens kun je met fread de data ophalen.
-
03/07/08 12:43Hey, bedankt.
Ik heb inderdaad niet veel verstand van PHP.
Maar ik snap wel dat het niet zomaar in PHP kan, de log ophalen.
Ik heb nu wel een script (niet van mij zelf) waar je een RCon command inzet, en dan de output krijgt. Dit gaat via TCP (fsockopen). Maar dit duurt heel lang.
En een stukje C++ ? Daar weet ik helemaal niets vanaf
Het is trouwens de bedoeling dat dit alles op Linux draait (ubuntu).
GR SVP STOPPEN MET URL SPAM IN ELK BERICHT
Vul hiervoor je signature in
-
03/07/08 15:47Wat is lang? 10sec, 20sec? Als je het stuk code even plaatst hier, dan kan ik er wel even naar kijken.
-
04/07/08 13:44Sorry Stewie :| Had niet door dat dat niet de bedoeling was.
En de Code, is nogal een stukje. Maar het zit versprijd in verschillende scripts.
Ik plaats het zo. Bedankt.
FUNC2.php:
Test.php:PHP Code:<?php
function getByte(&$string)
{
$data = substr($string, 0, 1);
$string = substr($string, 1);
$data = unpack('Cvalue', $data);
return $data['value'];
}
function getShortUnsigned(&$string)
{
$data = substr($string, 0, 2);
$string = substr($string, 2);
$data = unpack('nvalue', $data);
return $data['value'];
}
function getShortSigned(&$string)
{
$data = substr($string, 0, 2);
$string = substr($string, 2);
$data = unpack('svalue', $data);
return $data['value'];
}
function getLong(&$string)
{
$data = substr($string, 0, 4);
$string = substr($string, 4);
$data = unpack('Vvalue', $data);
return $data['value'];
}
function getFloat(&$string)
{
$data = substr($string, 0, 4);
$string = substr($string, 4);
$array = unpack("fvalue", $data);
return $array['value'];
}
function getString(&$string)
{
$data = "";
$byte = substr($string, 0, 1);
$string = substr($string, 1);
while (ord($byte) != "0")
{
$data .= $byte;
$byte = substr($string, 0, 1);
$string = substr($string, 1);
}
return $data;
}
?>
PHP Code:<?php
include("./config.php");
include("./func2.php");
if (isset($_POST['testb'])) {
define('PACKET_SIZE', '1400');
define('SERVERQUERY_INFO', "\xFF\xFF\xFF\xFFTSource Engine Query");
define('REPLY_INFO', "\x49");
define('SERVERQUERY_GETCHALLENGE', "\xFF\xFF\xFF\xFF\x57");
define('REPLY_GETCHALLENGE', "\x41");
// Ip address and port
//$_ip = '86.83.25.94' ; // server ip
//$_port = '27015'; // server port
//$_password = 'Tog maar wel verborgen :P' ; // your rcon password
$s2 = '';
$command = 'status';
$requestId = 1;
// open connection with server
$socket = fsockopen ('tcp://'.$ip, $port, $errno, $errstr, 15) ;
// Construct packet
$data = pack("VV", $requestId, SERVERDATA_AUTH).$pass.chr(0).$s2.chr(0);
// Prefix the packet by its size
$data = pack("V",strlen($data)).$data;
// Send packet
fwrite ($socket, $data, strlen($data)) ;
$requestId++ ;
// Check if auth is successful
$junk = fread ($socket, PACKET_SIZE) ;
$string = fread ($socket, PACKET_SIZE) ;
$size = getLong($string) ;
$id = getLong ($string) ;
if ($id == -1)
{
// Error
die ('Auth failed: bad password !') ;
}
// Sending the command and getting the answer
$data = pack ("VV", $requestId, SERVERDATA_EXECCOMMAND).$command.chr(0).$s2.chr(0) ;
// Prefix the packet by its size
$data = pack ("V", strlen ($data)).$data ;
// Send packet
fwrite ($socket, $data, strlen($data)) ;
$requestId++ ;
// Read response
$i = 0 ;
$text = '' ;
while ($string = fread($socket, 4))
{
$info[$i]['size'] = getLong($string) ;
$string = fread($socket, $info[$i]['size']) ;
$info[$i]['id'] = getLong ($string) ;
$info[$i]['type'] = getLong ($string) ;
$info[$i]['s1'] = getString ($string) ;
$info[$i]['s2'] = getString ($string) ;
$text .= $info[$i]['s1'] ;
$i++ ;
}
echo "<br/> TEXT:".$text;
}
?>
-
05/07/08 16:41Srry voor dubbelpost.
Bedankt alllemaal voor je hulp !
Het is opgelost. En gelukt.
Het is alleen te lang om hier uit te leggen
Wil weten hoe ? PM me of Mail me: admin@gtml.nl



LinkBack URL
About LinkBacks

