kleines Game WebInterface

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kleines Game WebInterface

    Hallo, ich versuche nun schon seit Tagen ein WebInterface zu bastln um meine GameServer (CS, Q3A & UT2k4) starten,stoppen und neustarten zu können. Ich habe das Forum durchsucht und alles versucht aba nix funktioniert (habe auch ned so die Ahnung von dem ganzen) hier der Code den ich gemacht habe (von einigen posts etc. etwas dabei) vielleicht findet ihr den fehler.

    <?php
    $port= "27015";
    $startscript= "cd /srv/gameserver/hlds/; ./hlds -game cstrike -port 27015 +map de_dust2 +maxplayers 16 +exec server.cfg";
    if (isset($action) && ($action == "restart")) {
    // Den Prozess killen, der den Port vom Server enthält
    echo exec("kill `ps auxww | grep hlds_run | grep ".$port." | awk '{print $2}'`")."<br>";
    // Danach das Startscript ausführen
    echo exec($startscript)."<br>";
    echo "<br>Versuche den Server neu zu starten ... bitte etwas Geduld<br>";
    }

    if (isset($action) && ($action == "stop")) {
    // Den Prozess killen, der den Port vom Server enthält
    echo exec("kill `ps auxww | grep hlds_run | grep ".$port." | awk '{print $2}'`")."<br>";
    echo "<br>Versuche den Server zu stoppen ... bitte etwas Geduld<br>";
    }

    ?>

    <center>
    <a href="index.php?action=restart">Server startet / neustarten</a><br>
    <a href="index.php?action=stop">Server stoppen</a><br>
    </center>

  • #2
    Re: kleines Game WebInterface

    Original geschrieben von damace2k
    vielleicht findet ihr den fehler
    vielleicht beschreibst du den fehler


    und das $2 in deinem exec solltest du vielleicht mal in \$2 ändern, anderenfalls wird das vermutlich von php interpretiert und du setzt statt
    Code:
    kill `ps auxww | grep hlds_run | grep 27015 | awk '{print $2}'`
    vermutlich
    Code:
    kill `ps auxww | grep hlds_run | grep 27015 | awk '{print }'
    ab, was awk nicht mögen tun wird

    lass dir eifnach mal alles was du per exec ausführen willst vorher mit echo ausgeben und kontrolliere, ob die werte alle stimmen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      es kommt ja keine Fehlermeldung, er startet bzw. stoppt den Server ja nicht

      Kommentar


      • #4
        du hast die befehle mit echo kontrolliert?

        was setzt du tatsächlich ab?

        funktionieren die anweisungen, die du absetzt/absetzen willst so direkt am promt?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          also wenn ich es in echo setzte kommt das zurück

          kill `ps auxww | grep hlds_run | grep 27015 | awk '{print $2}'`
          cd /srv/gameserver/hlds/; ./hlds -game cstrike -port 27015 +map de_dust2 +maxplayers 16 +exec server.cfg

          alter hätte nie gedacht das das so schwer is, bin absolut neu was php & linux betrifft

          Kommentar


          • #6
            habe es mal bisschen geändert funtzt zwar noch ned aba egal
            index.php::
            <?php
            $port= "27015";
            $start= "start.sh";
            $restart= "restart.sh";
            $stop= "stop.sh";

            if (isset($action) && ($action == "start")) {
            // Den Prozess killen, der den Port vom Server enthält
            // Danach das Startscript ausführen
            echo exec($start)."<br>";
            echo "<br>Versuche den Server neu zu starten ... bitte etwas Geduld<br>";
            }

            if (isset($action) && ($action == "restart")) {
            // Den Prozess killen, der den Port vom Server enthält
            // Danach das Startscript ausführen
            echo exec($restart)."<br>";
            echo "<br>Versuche den Server neu zu starten ... bitte etwas Geduld<br>";
            }

            if (isset($action) && ($action == "stop")) {
            // Den Prozess killen, der den Port vom Server enthält
            echo exec($stop)."<br>";
            echo "<br>Versuche den Server zu stoppen ... bitte etwas Geduld<br>";
            }

            ?>

            <center>
            <a href="index.php?action=start">Server starten </a><br>
            <a href="index.php?action=restart">Server neustarten</a><br>
            <a href="index.php?action=stop">Server stoppen</a><br>
            </center>

            start.sh::
            CS_USER=web1
            NAME=hlds
            PATH=/bin:/usr/bin:/sbin:/usr/sbin
            DIR=/srv/gameserver/hlds
            DAEMON=hlds_run
            PARAMS="-game cstrike -port 27015 +map de_dust2 +maxplayers 16 +exec server.cfg"
            DESC="Counter-Strike dedicated server"
            su $CS_USER -c "cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS"

            stop.sh::
            CS_USER=web1
            NAME=hlds
            PATH=/bin:/usr/bin:/sbin:/usr/sbin
            DIR=/srv/gameserver/hlds
            DAEMON=hlds_run
            PARAMS="-game cstrike -port 27015 +map de_dust2 +maxplayers 16 +exec server.cfg"
            DESC="Counter-Strike dedicated server"
            kill `ps aux | grep -v grep | grep -i $CS_USER | grep -i screen | grep -i $NAME | awk '{print \$2}'`

            die scripte funktionieren auf dem Root ohne Probleme, jedoch muss ich das PW für jeden user eingeben. Kann es sein das die Scripte nur in bestimmten Ordnern liegen dürfen etc. ? Habe da ned so die ahnung

            Kommentar


            • #7
              Ok nu hab ich es geschafft das er den Server startet, neustartet und stoppt. Habe das Script auch per mysql mit einem LoginScript ausgestattet nu fehlt nur noch ein simples Script um die server.cfg auszulesen und zu editieren. Kann ich ja dann für jedes andere Game leicht anpassen. Ich find aber ums verrecken ned nen ansatz bzw. nen Script das bei mir funktionieren will.
              Kann bitte jemand helfen .

              Kommentar


              • #8
                wäre mal nett wenn mir jemand helfen könnte. Ich kann zwar jetzt die server.cfg öffnen und drin rumschrieben aber wenn ich sie speichern will übernimmt er es nicht. Es kommt keine fehlermeldung etc. kann sich plz jemand das Script ankuckn und nen Tip geben.

                <?php

                // the file, that should be modified
                $file = '../gameserver/hlds/cstrike/server.cfg';
                $length = 10000;

                // function getContent
                function getContent( $file, $length )
                {
                if ( !file_exists( $file ) )
                return false;

                if ( !is_readable( $file ) )
                return false;

                if ( !$handle = fopen( $file, "r") )
                {
                echo "Opening $file failed.";
                return false;
                }

                if ( !$content = fread( $handle, $length ) )
                {
                echo "Reading content of $file failed.";
                return false;
                }

                fclose( $handle );

                return $content;
                }

                // function setContent
                function setContent( $file, $code )
                {
                if ( !file_exists( $file ) )
                return false;

                if ( !is_writable( $file ) )
                return false;

                if ( !$handle = fopen( $file, "w") )
                {
                echo "Opening $file failed.";
                return false;
                }

                if ( !fwrite( $handle, stripslashes($code)) )
                {
                echo "Writing content to $file failed.";
                return false;
                }

                fclose( $handle );
                }

                # END OF FUNCTIONS ...

                if ( isset($_POST['sent']) )
                setContent( $file, $_POST['code'] );

                $content = getContent( $file, $length );

                ?>


                <form action="<?=$_SERVER['PHP_SELF']?>" method="post">

                <textarea name="code" cols="80" rows="25"><?=stripslashes($content)?>
                </textarea>
                <br />
                <input type="submit" name="sent" value="change settings">

                </form>

                Kommentar


                • #9
                  Falls es noch hilft, so würde das Script funktionieren

                  PHP-Code:

                  <?php

                  // the file, that should be modified
                  $file 'D:/HLDS/CSS/cstrike/cfg/server.cfg';

                  // function getContent

                  function getContent($file){
                      if(!
                  file_exists($file)){
                          echo 
                  "$file not found.";
                          return 
                  false;
                      }
                      if(!
                  is_readable($file)){
                          echo 
                  "$file not readable.";
                          return 
                  false;
                      }
                      
                  $length filesize($file);        //    filesize ermittelt die Dateilänge, somit wird die ganze Datei eingelesen
                      
                  if($length == 0){
                          echo 
                  "$file is empty.";
                          return 
                  false;
                      }
                      if(!
                  $handle fopen($file,'r')){
                          echo 
                  "Opening $file failed.";
                          return 
                  false;
                      }
                      if (!
                  $content = @fread($handle,$length)){
                          echo 
                  "Reading content of $file failed.";
                          return 
                  false;
                      }
                      
                  fclose($handle);
                      return 
                  $content;
                      }

                  // function setContent

                  function setContent($file,$file_content){
                      if(!
                  file_exists($file)){
                          echo 
                  "$file not found.";
                          return 
                  false;
                      }
                      if(!
                  is_writable($file)){
                          echo 
                  "$file not writable.";
                          return 
                  false;
                      }
                      if(!
                  $handle fopen($file,'w')){
                          echo 
                  "Opening $file failed.";
                          return 
                  false;
                      }
                      if (!
                  $content fputs($handle,$file_content))    {
                          echo 
                  "Writing contents to $file failed.";
                          return 
                  false;
                      }
                      
                  fclose($handle);
                  }

                  # END OF FUNCTIONS ...

                  if(isset($_POST['code'])){
                      
                  setContent($file,stripslashes($_POST['code']));
                  }
                  $content getContent($file);
                  ?>

                  <form action="<?=$_SERVER['PHP_SELF']?>" method="post">

                  <textarea name="code" cols="80" rows="25"><?=stripslashes($content)?>
                  </textarea>
                  <br />
                  <input type="submit" name="sent" value="change settings">

                  </form>
                  GreeZ
                  Zuletzt geändert von rACT; 30.01.2007, 21:55.

                  Kommentar

                  Lädt...
                  X