web rcon für cs 1.6 - Seryoga - 23.06.2011 11:38
hallo
habe hier ein css web rcon gefunden ist das möglich auf 1.6 zu machen ?
<?php /* Basic CS:S Rcon class by Freman. (V1.00) ---------------------------------------------- Ok, it's a completely working class now with with multi-packet responses
Contact: printf("%s%s%s%s%s%s%s%s%s%d%s%s%s","rc","on",chr(46),"cl","ass",chr(64),"pri","ya",chr(46),2,"y",chr(46),"net")
Behaviour I've noticed: rcon is not returning the packet id. */
define("SERVERDATA_EXECCOMMAND",2); define("SERVERDATA_AUTH",3);
class RCon { var $Password; var $Host; var $Port = 27032; var $_Sock = null; var $_Id = 0;
function RCon ($Host,$Port,$Password) { $this->Password = $Password; $this->Host = $Host; $this->Port = $Port; $this->_Sock = @fsockopen($this->Host,$this->Port, $errno, $errstr, 30) or die("Unable to open socket: $errstr ($errno)\n"); $this->_Set_Timeout($this->_Sock,2,500); } function Auth () { $PackID = $this->_Write(SERVERDATA_AUTH,$this->Password); // Real response (id: -1 = failure) $ret = $this->_PacketRead(); if ($ret[1]['id'] == -1) { die("Authentication Failure\n"); } }
function _Set_Timeout(&$res,$s,$m=0) { if (version_compare(phpversion(),'4.3.0','<')) { return socket_set_timeout($res,$s,$m); } return stream_set_timeout($res,$s,$m); }
function _Write($cmd, $s1='', $s2='') { // Get and increment the packet id $id = ++$this->_Id;
// Put our packet together $data = pack("VV",$id,$cmd).$s1.chr(0).$s2.chr(0);
// Prefix the packet size $data = pack("V",strlen($data)).$data;
// Send packet fwrite($this->_Sock,$data,strlen($data));
// In case we want it later we'll return the packet id return $id; }
function _PacketRead() { //Declare the return array $retarray = array(); //Fetch the packet size while ($size = @fread($this->_Sock,4)) { $size = unpack('V1Size',$size); //Work around valve breaking the protocol if ($size["Size"] > 4096) { //pad with 8 nulls $packet = "\x00\x00\x00\x00\x00\x00\x00\x00".fread($this->_Sock,4096); } else { //Read the packet back $packet = fread($this->_Sock,$size["Size"]); } array_push($retarray,unpack("V1ID/V1Response/a*S1/a*S2",$packet)); } return $retarray; }
function Read() { $Packets = $this->_PacketRead(); foreach($Packets as $pack) { if (isset($ret[$pack['ID']])) { $ret[$pack['ID']]['S1'] .= $pack['S1']; $ret[$pack['ID']]['S2'] .= $pack['S1']; } else { $ret[$pack['ID']] = array( 'Response' => $pack['Response'], 'S1' => $pack['S1'], 'S2' => $pack['S2'], ); } } return $ret; }
function sendCommand($Command) { $Command = '"'.trim(str_replace(' ','" "', $Command)).'"'; $this->_Write(SERVERDATA_EXECCOMMAND,$Command,''); }
function rconCommand($Command) { $this->sendcommand($Command);
$ret = $this->Read();
//ATM: Source servers don't return the request id, but if they fix this the code below should read as // return $ret[$this->_Id]['S1']; return $ret[0]['S1']; } }
$r = new rcon("meineip",meinport,"meinrconpw"); $r->Auth();
echo "Authenticated\n";
//Send a request var_dump($r->rconCommand("stats"));
?>
gruß seryoga
RE: web rcon für cs 1.6 - Storage-Base.de - 23.06.2011 12:31
habe hier ein css web rcon gefunden ist das möglich auf 1.6 zu machen ?
Klar ist das möglich.
RE: web rcon für cs 1.6 - Seryoga - 23.06.2011 13:42
kannst du vll helfen gruß seryoga
RE: web rcon für cs 1.6 - Timoo - 23.06.2011 14:46
Also diese Phprcon class ist meines Wissen nach für css ausgelegt.
Ob es für 1.6 trozdem funktioniert weiß ich nicht.
Bei mir hat es nicht so einfach funktioniert...
RE: web rcon für cs 1.6 - Seryoga - 23.06.2011 15:39
Storage-Base.de sag möglich das würde mich intressieren wie !!
RE: web rcon für cs 1.6 - Storage-Base.de - 23.06.2011 15:54
Storage-Base.de sag möglich das würde mich intressieren wie !!
Wie keine Ahnung, aber möglich ist das
Siehe auch: [Link: Registrierung erforderlich]
So wie ich das sehe gibt es da diverse Klassen, wieso also das Rad neu erfinden?
Ich weiß nicht was so etwas bringen soll, gibst du quit ein ist der Server meist Offline und du kannst damit nichts mehr anfangen. Meine Befehle gebe ich daher vom PHP Script via cURL an eine API Schnittstelle, welche die Befehle wiederum per SSH2 an den Server übergibt und dann dort ausgeführt werden.
RE: web rcon für cs 1.6 - Seryoga - 23.06.2011 16:58
kannst du mir vll dein vorschlag zeigen wie du das gemacht hast mit code genauer ? gruß seryoga
|