Posts: 177
Threads: 18
Joined: Oct 2005
Reputation:
0
is it possible to have a <textbox></textbox> where is shown the activity of the src server and also act as a remote console?, with typing in commands and the server execs them?
thx
Posts: 700
Threads: 19
Joined: May 2007
Reputation:
0
get Wrote:is it possible to have a <textbox></textbox> where is shown the activity of the src server and also act as a remote console?, with typing in commands and the server execs them?
thx
Couldn't find one that shows output of what is happening on server through console (although have seen this before elsewhere), but came across this:
http://fremnet.net/article/199/source-rcon-class
Posts: 5,178
Threads: 65
Joined: Mar 2005
Reputation:
22
You need a plugin on the srcds to send console info to another application/website/etc
Posts: 177
Threads: 18
Joined: Oct 2005
Reputation:
0
10-12-2007, 02:03 AM
(This post was last modified: 10-12-2007, 02:29 AM by get.)
yep i already using the source rcon class but,
i guess it is what drocona means a plugin to send the activity to a web aplication, but, is this aplication only one way?
EX: srcds server --> website
or in both ways?
srcds server --> website, website input ---> srcds server
that should be a great goal in programming remote management panels
regards
PD: sending log with logadress_add $IP:$PORT, how to handle the submitted log on $IP and show it on the <textbox></textbox> ?
any good manual tutorial for this using php ?
Posts: 177
Threads: 18
Joined: Oct 2005
Reputation:
0
guys thx for the help
just forking and fooling arround with a test server, i added my linuxbox's ip to the server by logaddress_add myip:port
and on my pc i run netcat listening in udp mode all packets who comes in in verbose mode: and look out:
Code:
����RL 10/11/2007 - 17:52:07: server_cvar: "mp_timelimit" "10"
����RL 10/11/2007 - 17:52:11: server_cvar: "mp_timelimit" "30"
����RL 10/11/2007 - 17:52:59: server_cvar: "sv_password" "***PROTECTED***"
now i just need to handle this with php and wipe out all useless stuff and let php show the output as a tail -f in the textbox ^^
Posts: 5,178
Threads: 65
Joined: Mar 2005
Reputation:
22
Totally forgot about the logaddress_add command!
Posts: 177
Threads: 18
Joined: Oct 2005
Reputation:
0
so here is a sample code:
rcon.php
Code:
<?php
if(isset($_POST['command'])){
include_once("rcon.class.php");
$r = new rcon($_POST['ip'],$_POST['port'],$_POST['rcon']);
$r->Auth();
echo "<pre>";
var_dump($r->rconCommand($_POST['command']));
echo "</pre>
<br>
<form method='post' action={$_SERVER['PHP_SELF']}>
<input type=submit value='« back'>
</form>
<br>
<img src='http://www.game-monitor.com/server-stat-image/{$_POST['ip']}:{$_POST['port']}.png'>
";
}else{
echo "
<form method='post' action={$_SERVER['PHP_SELF']}>
IP: <input type='text' name='ip'></input>:<input type='text' name='port'></input><br>
Rcon Password: <input type='text' name='rcon'></input><br>
Command: <input type='text' name='command'></input>
<input type=submit value='enviar consulta'>
</form>
<br>
";
}
?>
rcon.class.php
Code:
<?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 = 27015;
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)).'"';
//$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'];
echo $ret[$this->_Id]['S1'];
//return $ret[0]['S1'];
}
}
?>
Preview:
Posts: 5,178
Threads: 65
Joined: Mar 2005
Reputation:
22
|