PDA

Bekijk Volledige Versie : rcon gedeelte voor eigen panel



B3rt
15/09/06, 02:27
In ons eigen controle panel miste ik nog steeds een optie om rcon commandos te geven aan de server.
Hier ben ik dus aan begonnen (oh ja ik script in PHP), voor de quake engine games was ik snel klaar, werkte prima.
Nu dacht ik natuurlijk, zo ik ben klaar even testen nog op counterstrike en een update erneer zetten.
Mooi niet dus......

Het hele rcon gedeelte wat ik dus gemaakt had werkt niet op op CS of CSS, de vraag is nu dus..
Heeft iemand een stukje PHP code liggen waarmee ik op CS en CSS servers rcon commandos kan geven?

Want ik kom er niet uit, ik dacht dit doe ik snel even maar ik heb geen idee waarom dit niet werkt op CS/CSS.

(ik weet dat dit eigenlijk meer in het scripting forum thuis hoort maar omdat het toch puur gamepanel gerelateerd is plaats ik het toch hier)

WI-Hosting
15/09/06, 09:05
Kan je het niet doen met sockets?

Een socket openen op rcon poort (is bij CS anders dan de normale port dacht ik), command doorvoeren, en dan sluiten?

Geen ervaring ermee, maar lijkt me het meest logische :)

B3rt
16/09/06, 02:02
Dat dacht ik dus ook, alleen ik krijg totaal geen responce terug van de server.
Ik dacht dat rcon bij alle games hetzelfde zou zijn maar dat is dus niet zo.

Dus heeft iemand een scrippie wat ik kan gebruiken, gaat puur op het geven van commando's (map_restart etc etc)

DruM
16/09/06, 04:05
misschien heb je hier iets aan:)

http://server.counter-strike.net/phprcon/

B3rt
16/09/06, 14:16
Nee dat had ik al gezien, dat script is te groot en veel te complex om "te lenen" voor ons eigen panel.
Voor de Q3 engine is het geloof ik maar 20 tot 30 regels code.

Sander-
16/09/06, 15:25
Nee dat had ik al gezien, dat script is te groot en veel te complex om "te lenen" voor ons eigen panel.
Voor de Q3 engine is het geloof ik maar 20 tot 30 regels code.

Betekend toch niet dat je er niet even in kan loeren om te checken hoe ze het daar doen?

MikeN
16/09/06, 23:27
http://developer.valvesoftware.com/wiki/Source_RCON_Protocol

Weet niet precies voor hlds, maar volgens mij is die hetzelfde of bijna hetzelfde.

B3rt
17/09/06, 03:19
Betekend toch niet dat je er niet even in kan loeren om te checken hoe ze het daar doen?

Dat had ik al gedaan alleen ik kom er niet uit hoe ze het precies werkt, het script is te "onoverzichtelijk" geschreven om alleen het CS gedeelte eruit te halen.

Update:
Ik heb het gedeeltelijk werkend, alleen wat blijkt nu...
Source en Standaard CS hebben afwijkende rcon, ik had dus gehoopt dat dit hetzelfde zou zijn, helaas dus. Source heb ik dus werkend nu nog CS(1.6)...

Walraaf
01/10/06, 04:09
mooi dat het lukt zover, ikzelf ben ook met een control panel bezig voor games, op t moment alleen hlds, morgen of overmorgen ga ik ook aan het rcon gedeelte werken (rest is vrijwel klaar, ik ben bezig met een gamepanel voor zowel windows als linux), enige kans dat je als je t werkend hebt of hetgeen dat je werkend hebt laat zien? Hoef ik dat in ieder geval niet meer te doen :P naja maakt ook niet zoveel uit, succes :)

B3rt
01/10/06, 04:27
Dat is moeilijk, het rcon stukje is geen enkel probleem alleen het maakt deel uit van een compleet systeem.

Alleen het rcon gedeelte werkt niet los, maargoed hier is het:


function rcon_query_server($command, $rcon_pwd)
{
$get_challenge="\xFF\xFF\xFF\xFFchallenge rcon\n";
if(!($challenge_rcon=$this->_sendCommand($this->address,$this->queryport,$get_challenge))) {
$this->debug["Command send " . $command]="No challenge rcon received";
return FALSE;
}
if (!ereg('challenge rcon ([0-9]+)', $challenge_rcon)) {
$this->debug["Command send " . $command]="No valid challenge rcon received";
return FALSE;
}
$challenge_rcon=substr($challenge_rcon, 19,10);
$command="\xFF\xFF\xFF\xFFrcon \"".$challenge_rcon."\" ".$rcon_pwd." ".$command."\n";
if(!($result=$this->_sendCommand($this->address,$this->queryport,$command))) {
$this->debug["Command send " . $command]="No reply received";
return FALSE;
} else {
return substr($result, 5);
}
}

Walraaf
01/10/06, 05:21
thnx^^, ik heb net ff in de source van PHPrcon gekeken, en ik denk dat ik er wel uit kan komen als ik er wat meer tijd voor neem (nu is t vrij laat en ben ziek), anyways ik hoop dat t 1.6 je ook lukt, en anders kunnen we er misschien samen uitkomen ;) maar als je goed kijkt in phprcon moet t volgens mij te doen zijn (ook al werkt het script niet eens bij mij heh, krijg timeouts bij uitvoeren van commands/links clicken, maar heb wel de functie bekeken, en kan via de webpage met wat modificaties in de source t commando uitvoeren wat ik wil, dus met wat aanpassingen moet t te doen zijn, maar je hebt gelijk hij heeft het heel warrig in elkaar gezet, overal nieuwe variables en andere definities, heel onoverzichtelijk.

ok, net wakker, even gekeken naar rcon, met dat phprcon script kun je zelf redelijk makkelijk een nieuwe rcon command pagina maken als je t bestand met de functions include:


<?php include("./classes/rcon_hl_net.inc");
//server ip
$server_ip = "192.168.1.6";
//de poort
$server_port = "27015";
//je rcon_password
$server_password = "";
//rcon command halen uit t formulier
$testcommand = $_POST["testcommand"];
//zolang er geen command is, niets doen, anders een nieuwe verbinding maken met bovenstaande server, en command uitvoeren
if ($testcommand == "") { echo ""; } else {
$server = new rcon();
if($server->connect($server_ip, $server_port, $server_password))
{
$list = $server->RconCommand("$testcommand");
$server->disconnect();
}
if ($list == "") { echo "Command executed"; } else { echo $list; }
} ?>

<form action="test.php" method="post">
<input type="text" name="testcommand"> <input type="submit" name="Submit" value="Run Command"></form>

B3rt
04/10/06, 05:31
Ik heb 1.6 en css reeds werkend, heb voor de meeste rcon werkend nu

B3rt
10/10/06, 23:41
Heeft iemand ervaring in hoe je een TeamSpeak server kan bedienen via PHP?

Ik bedoel voornamelijk het beheer ervan.
bv via PHP een gameserver toevoegen, verwijderen, starten/stoppen, admin paswoord wijzigen etc
Ik bedoel geen functies voor de gebruiker/huurder om zijn server te beheren maar echt voor de admin(superadmin functies dus).

De situatie is dus dat er 1 TS server draait op een andere (windows)machine dan de webserver waarop het controle panel draait.
Nu wil ik dus via het controle panel snel een server gereed kunnen maken of kunnen verwijderen.

Iemand een compleet PHP scripje of voorbeeld code hiervoor liggen?

Gomer
11/10/06, 00:44
Tip: PHP + telnet class.

B3rt
11/10/06, 00:51
Al geprobeert maar werkte niet.
Krijg totaal geen responce van de server en na 30 seconden stopt het script met de bekende error.... (max time exeed blabla)
Er is ook een speciaal PHP scripje voor te connecten naar Telnet wat je kant en klaar kunt downloaden alleen werkt dat dus niet.......

Daarom de vraag of iemand een werkend scripje heeft, bv met 1 werkend TS commando waarop ik dan zelf kan verder scripten.

BDigitinternetdiensten
25/06/07, 19:09
Webmin heeft live ssh(via site) waarin je een screen natuurlijk kan openen. kan je niet een werkend script maken of kijken hoe webmin dat doet?

Goldeneye
26/06/07, 10:21
http://tsac.cash-area.de/

TiMMiEJ
27/06/07, 10:40
Ik weet niet of je met screens werkt? Neem aan van wel, daar kan je gewoon je commands inzetten. Zal zo even het stuk code opzoeken.



screen -S prog -X -p0 eval "stuff 'changelevel map'^m"

Cyberdevil
05/07/07, 19:42
Ow TiMMiEJ die zoek ik al een tijdje ;)

Mijn control panel is dus volledig. Via webmin kan je commands zoals screen sturen maar dit kan je ook via php in PHP5. Want uit webmin zal je niet veel halen want is CGI...

Bento
18/12/07, 19:16
Ik probeer nu via een PHP scriptje 1 rcon command te sturen naar een CS 1.6 server.
Ik zit een beetje te vogelen met het stukje PHP wat bert hier heeft geplakt, ik zit nu met 2 dingen:

- Waar geef ik het IP aan waar naar toe moet worden geconnect
- Is dat stukje eigenlijk wel voor HLDS? (of voor SRCDS dus)

Ik heb dit even aan elkaar geplakt:



<?php

function rcon_query_server($command, $rcon_pwd)
{
$get_challenge="\xFF\xFF\xFF\xFFchallenge rcon\n";
if(!($challenge_rcon=$this->_sendCommand($this->address,$this->queryport,$get_challenge))) {
$this->debug["Command send " . $command]="No challenge rcon received";
return FALSE;
}
if (!ereg('challenge rcon ([0-9]+)', $challenge_rcon)) {
$this->debug["Command send " . $command]="No valid challenge rcon received";
return FALSE;
}
$challenge_rcon=substr($challenge_rcon, 19,10);
$command="\xFF\xFF\xFF\xFFrcon \"".$challenge_rcon."\" ".$rcon_pwd." ".$command."\n";
if(!($result=$this->_sendCommand($this->address,$this->queryport,$command))) {
$this->debug["Command send " . $command]="No reply received";
return FALSE;
} else {
return substr($result, 5);
}


}
rcon_query_server("rcon say test",rconpasswordhier");

?>


Kan iemand me een beetje opweg helpen? :) Ben geen PHP guru.

nvm, Ik heb het al voor elkaar met het stukje van Walraaf en phprcon. :)