Gameserver per php Script starten

Gameserver und Clan-Zubehör
Post Reply
papetmaster
Posts: 13
Joined: 2006-11-10 06:32
 

Gameserver per php Script starten

Post by papetmaster »

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
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin
 

Re: Gameserver per php Script starten

Post by flo »

Du hast eben nicht Dein Passwort gepostet, oder?
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: Gameserver per php Script starten

Post by oxygen »

Vermutlich verhindert eine Firewall die Verbindung. Andere möglichkeit, die entsprechende PECL Extension ist nicht installiert.
papetmaster
Posts: 13
Joined: 2006-11-10 06:32
 

Re: Gameserver per php Script starten

Post by papetmaster »

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 .
suxxess
Posts: 6
Joined: 2004-02-24 18:41
 

Re: Gameserver per php Script starten

Post by suxxess »

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://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
twisterchen
Anbieter
Posts: 232
Joined: 2005-07-14 14:13
 

Re: Gameserver per php Script starten

Post by twisterchen »

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
peperoni
Posts: 6
Joined: 2007-02-13 16:07
 

Re: Gameserver per php Script starten

Post by peperoni »

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.

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";
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.
User avatar
daemotron
Administrator
Administrator
Posts: 2641
Joined: 2004-01-21 17:44
Contact:
 

Re: Gameserver per php Script starten

Post by daemotron »

peperoni wrote:Sicherer und einfach gehts wohl nicht.
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
Posts: 6
Joined: 2007-02-13 16:07
 

Re: Gameserver per php Script starten

Post by peperoni »

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. :)
Post Reply