Gameserver per php Script starten
-
- Posts: 13
- Joined: 2006-11-10 06:32
Gameserver per php Script starten
Hallo zusammen ich habe ein kleines problem.
Ich versuche schon seit geraumer zeit ein Webinterface auf die beine zu stellen.Das mit den server scripts hat auch gut geklabt aber was jetz mein problem ist ich wil das ich von meinem exsternen Webserver das Webinterface bedinen kann.Aber das funtz irgend wie ned Weil ich weis ned wie ich eine Verbindung herstellen kann ,ich habe mal ein Script probiert aber das funtz irgend wie ned so wie ich wiel.Hir mal das script.
<?php
$connection = ssh2_connect('217.150.1.1', 22);
ssh2_auth_password($connection, 'x', 'x');
$stream = ssh2_exec($connection, '/home/server1/hlds/start.sh');
?>
Hoffe jemand kann mir helfen oder ne bessere Lössung geben wie ich das realisiren kann.
Besten dank
Ich versuche schon seit geraumer zeit ein Webinterface auf die beine zu stellen.Das mit den server scripts hat auch gut geklabt aber was jetz mein problem ist ich wil das ich von meinem exsternen Webserver das Webinterface bedinen kann.Aber das funtz irgend wie ned Weil ich weis ned wie ich eine Verbindung herstellen kann ,ich habe mal ein Script probiert aber das funtz irgend wie ned so wie ich wiel.Hir mal das script.
<?php
$connection = ssh2_connect('217.150.1.1', 22);
ssh2_auth_password($connection, 'x', 'x');
$stream = ssh2_exec($connection, '/home/server1/hlds/start.sh');
?>
Hoffe jemand kann mir helfen oder ne bessere Lössung geben wie ich das realisiren kann.
Besten dank
Re: Gameserver per php Script starten
Du hast eben nicht Dein Passwort gepostet, oder?
Re: Gameserver per php Script starten
Vermutlich verhindert eine Firewall die Verbindung. Andere möglichkeit, die entsprechende PECL Extension ist nicht installiert.
-
- Posts: 13
- Joined: 2006-11-10 06:32
Re: Gameserver per php Script starten
ja das könnte auch sein.anber das script stimmt sonst schon oder?Ich muss einfach das ssh zweugs auf meinem webserver instaliren dan solte da funzen .
Re: Gameserver per php Script starten
Machs doch wie er:
http://www.linuxforen.de/forums/showthread.php?t=244072
Per PHP mit dem Nutzer des Webservers z.B. wwwrun die Serverscripte ausführen lassen.
http://www.linuxforen.de/forums/showthread.php?t=135735
Mit /etc/sudoers geht es auch.
Kein PW mehr im Script und wunderbar. :)
http://www.linuxforen.de/forums/showthread.php?t=244072
Per PHP mit dem Nutzer des Webservers z.B. wwwrun die Serverscripte ausführen lassen.
http://www.linuxforen.de/forums/showthread.php?t=135735
Mit /etc/sudoers geht es auch.
Kein PW mehr im Script und wunderbar. :)
// -----------------------------------------------------------------------------------------
// http://zyrusthc.homeip.net
// Webinterface v.1.3
// (c) 2006 Zyrusthc
//
// Autor: Zyrusthc, zyrus@zyrusthc.homeip.net
// Stand: 27.01.2006
// License: GNU General Public License as published by
// the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
// -----------------------------------------------------------------------------------------
// required PHP version: at least 4.3.3
// -----------------------------------------------------------------------------------------
// File : README
// -----------------------------------------------------------------------------------------
Webinterface Features
-Starten , Stoppen und Restarten von Moh:AA, Moh:SH, CoD, CoDUO, CoD2, BfV, BF1942, BF2, ET LinuxServern.
-Editieren der Serverkonfigurationsdatei von Moh:AA, Moh:SH, CoD, CoDUO, CoD2, BfV, BF1942, BF2, ET Servern.
-Rconconsole mit Antwortfenster für Moh:AA, Moh:SH, CoD, CoDUO, CoD2, BfV, BF1942, BF2, ET Server.
-Maps per Mausklick starten und Laufzeitwerte setzen für Moh:AA, Moh:SH, CoD, CoDUO, CoD2, ET
-Logbetrachter für Moh:AA, Moh:SH, CoD, CoDUO, CoD2, BfV, BF1942, BF2, ET
-Ausführlicher Gameserver Status für Moh:AA, Moh:SH, CoD, CoDUO, CoD2, BfV, BF1942, BF2, ET
-Playerstatus "name" "ping" für Moh:AA, Moh:SH, ET
-Playerstatus "name "frags" "ping" für CoD, CoDUO, CoD2
-Dateien Upload (mods,maps) für alle oben genannten Spiele
-RAM und Swap Status
Install:
Es wird vorausgesetzt das eurer gameserver sich von der Console aus manuell starten lässt!
1. Webinterface-1.3.tar.gz auf Server kopieren
Entpacken mit :
- tar xzfv Webinterface-1.2.2.tar.gz
2. Anlegen der Startscripte.
Verwendet dazu das von mir beigelegte startscript , aus dem Grund weil php die ausgaben vom startscript in das
Webinterface holt und ich dort die nötigen Umbrüche eingearbeitet habe!
Jetzt notiert ihr euch genau die Pfade zu den startscripten.
3. Editieren der /etc/sudoers:
Die /etc/sudoers darf nur mit dem consoleneditor "visudo" bearbeitet , bzw verändert werden!
Also :
- su
- visudo
Kurz zum Umgang mit visudo : a drücken --> einträge schreiben --> ESC taste drücken --> : drücken -- exit eingeben --> ENTER taste
In der Datei findet ihr den Abschnitt # 2User privilege specification"
Standartmässig dieht dieser so aus :
# User privilege specification
root ALL=(ALL) ALL
Wir fügen nun ein paar einträge genau unter "root ALL=(ALL) ALL"
ein!
Ein Eintrag kann so aussehen :
apache ALL=(gameserver)NOPASSWD: /home/gameserver/moh/ssr
Das erlaubt dem Benutzer apache den Befehl /home/gameserver/moh/ssr als user gameserver ohne passwort auszuführen!
Also ergänzt "apache" durch den benutzer unter dem der Apachewebserver läuft , in manchen Fällen heisst
dieser auch www-run, www oder httpd. Wenn ihr nicht sicher seid prüft dies mit "ps aux"!
Als nächstes ergänzt ihr "gameserver" gegen den user unter dem letzt endlich der Spieleserver laufen soll.
So nun noch "/home/gameserver/moh/ssr" ergänzen , dies ist der komlette pfad/startscriptname.
Hier noch mal meine /etc/sudoers :
# User privilege specification
root ALL=(ALL) ALL
apache ALL=(gameserver)NOPASSWD: /home/gameserver/moh/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/moh/ssr-sh
apache ALL=(gameserver)NOPASSWD: /home/gameserver/cod_uo/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/cod_uo/ssr-uo
apache ALL=(gameserver)NOPASSWD: /home/gameserver/cod2/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/et/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/bf1942/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/bf2_v1_1/ssr
apache ALL=(gameserver)NOPASSWD: /home/gameserver/bfv/ssr
4. config.inc.php konfigurieren!
Achtung nicht mit Windows Editor , Konsoleneditor nano,pico,vi etc nutzen
Die angaben in der config.inc.php müssen absolut korrekt sein, besonders die Ports!
Fals ihr euch nicht sicher , startet den gameserver von hand und führt mit nmap einen portscan aus.
"nmap -sT -sU -p U:4000-35000,T:4000-35000 192.168.10.1"
scannt tcp/udp ports ab 4000 bis 35000 auf der IP 192.168.10.1 , dort könnt ihr dann sehen welche ports belegt sind
, um diese dann richtig einzutragen.
Wenn das erledigt ist war er dann auch schon :) Zeit für einen Test im Browser.
Schützt das Webinterface Verzeichnis mit .htaccess damit nicht jeder euren Server bearbeiten kann !
Wenn es Fragen oder Probleme gibt einfach auf http://zyrusthc.homeip.net in das Forum posten ;)
Vor dem posten in Beiträgen lesen :)
gruss Oli (zyrusthc)
visit this http://zyrusthc.homeip.net
-
- Anbieter
- Posts: 232
- Joined: 2005-07-14 14:13
Re: Gameserver per php Script starten
Hallo
Soviel ich noch weis muss ssh2 mit PHP compiliert werden.
http://www.libssh2.org/wiki/index.php/Main_Page
http://sourceforge.net/projects/libssh2/
erst dann kannst du über PHP eine verbindung aufbauen !
Gruss
Twister
Soviel ich noch weis muss ssh2 mit PHP compiliert werden.
http://www.libssh2.org/wiki/index.php/Main_Page
http://sourceforge.net/projects/libssh2/
erst dann kannst du über PHP eine verbindung aufbauen !
Gruss
Twister
Re: Gameserver per php Script starten
Ich verstehe nicht wieso die "Webinterfaces" für Gameserver immer mittels sudo usw.. realisiert werden.
Ich habe 3 ET sowie ein ETQW und ein CoD4 Server am laufen.
Ein Reset kann jeder user machen der ein Zugriff zu meinem kleinen "Webinterface" hat. Durch klicken eines "Neustart" Buttons wird eine Datei mit dem Namen: et.sh erstellt, bzw. gefüllt.
Ein CRONJOB des Gameserver-User (etserver) checkt minütlich diese Datei die von PHP gefüllt wird.
Wenn dort befehle drin sind, werden diese unter dem usernamen ausgeführt.
Die Datei wird mit diesem Befehlen via PHP gefüllt. Der CRONJOB prüft wie gesagt minütlich den Inhalt der Datei.
Der Gameserver wird neugestartet und fertig, dank rsync wird auch noch ein FTP Verzeichniss mit dem Installverzeichnis des Servers synchronisiert, so benötigt ein "gemeiner" User lediglich FTP zum Webpsace für Map/config upload und den Zugang zu der PHP Seite die bei neustart die befehle in die Datei schreibt.
Sicherer und einfach gehts wohl nicht.
Auf Anfrage kann das Script gerne versendet werden.
Ich habe 3 ET sowie ein ETQW und ein CoD4 Server am laufen.
Ein Reset kann jeder user machen der ein Zugriff zu meinem kleinen "Webinterface" hat. Durch klicken eines "Neustart" Buttons wird eine Datei mit dem Namen: et.sh erstellt, bzw. gefüllt.
Ein CRONJOB des Gameserver-User (etserver) checkt minütlich diese Datei die von PHP gefüllt wird.
Wenn dort befehle drin sind, werden diese unter dem usernamen ausgeführt.
Die Datei wird mit diesem Befehlen via PHP gefüllt. Der CRONJOB prüft wie gesagt minütlich den Inhalt der Datei.
Code: Select all
$filename = '/var/kunden/webs/peperoni/public_html/shellscript/et.sh';
$content = "#!/bin/sh
export TERM=xterm
/usr/local/games/enemy-territory/server.sh restart 27960
unlink /var/kunden/webs/peperoni/public_html/shellscript/et.sh
touch /var/kunden/webs/peperoni/public_html/shellscript/et.sh
chmod 777 /var/kunden/webs/peperoni/public_html/shellscript/et.sh";
Sicherer und einfach gehts wohl nicht.
Auf Anfrage kann das Script gerne versendet werden.
Re: Gameserver per php Script starten
Dann fang schon mal an zu beten, dass kein pöhser H4x0r eine Schwachstelle in Deinem PHP-Skript findet, so dass am Ende ein paar andere Befehle in Deinem Cron-Skript landen...peperoni wrote:Sicherer und einfach gehts wohl nicht.
Re: Gameserver per php Script starten
eigentlich gibt es keine Schwachstelle. Es ist alles gut geschützt. Die Befehle kommen aus einem vordefiniertem String. Rein theoretisch kann nichts passieren. Denkst Du PHP Scripte die mittels SUDO oder ähnlichem arbeiten sind sicherer? wohl kaum... :) und exec und so spielerein via PHP ausführen ist mindestens genauso für den Ar***.
Ich bin mir ziemlich sicher das diese Methode zu den sicheren gehört, aber jeder solls machen wir er es möchte. :)
Ich bin mir ziemlich sicher das diese Methode zu den sicheren gehört, aber jeder solls machen wir er es möchte. :)