Sida 1 av 1

Lite hjälp med detta script tack

Postat: 12 jun 2010, 17:00
av drance
Tjenare har ett hittat ett script som man ska kunna starta/restarta/stänga av ett program men de funkar inte som de ska och får inga error msg

/etc/init.d/theforgottenserver

Kod: Markera allt

#!/bin/sh
#
# Startup and signals management script for TheForgottenServer
#

case "$1" in
  start)
        echo -n "Starting theforgottenserver: "
        cd $2 && screen -AdmS ./theforgottenserver
        echo "done."
        ;;
  stop)
        echo -n "Shutting down theforgottenserver: "
        killall -TERM theforgottenserver
        echo "done."
        ;;
  kill)
        echo -n "Killing theforgottenserver: "
        killall -KILL theforgottenserver
        echo "done."
        ;;
  quit)
        echo -n "Quitting theforgottenserver: "
        killall -QUIT theforgottenserver
        echo "done."
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  reload)
        echo -n "Reloading theforgottenserver: "
        killall -CONT theforgottenserver
        echo "done."
        ;;
  save)
        echo -n "Saving theforgottenserver data: "
        killall -HUP theforgottenserver
        echo "done."
        ;;
  clean)
        echo -n "Cleaning theforgottenserver map: "
        killall -TRAP theforgottenserver
        echo "done."
        ;;
  refresh)
        echo -n "Refreshing theforgottenserver map: "
        killall -CHLD theforgottenserver
        echo "done."
        ;;
  close)
        echo -n "Setting theforgottenserver gamestate to closed: "
        killall -USR1 theforgottenserver
        echo "done."
        ;;
  open)
        echo -n "Setting theforgottenserver gamestate to normal: "
        killall -USR2 theforgottenserver
        echo "done."
        ;;
  *)
        echo "Usage: $0 {start path|stop|kill|quit|restart|reload|save|clean|refresh|close|open}"
        exit 1
esac

exit 0
Och detta är min index.php

Kod: Markera allt

   <?php
$path = "/home/tfs";
$options = array("start" => true, "stop" => true, "kill" => true, "quit" => false, "restart" => true, "reload" => true, "save" => true, "clean" => true, "refresh" => false, "close" => true, "open" => true);

echo "<html>
    <head>
        <meta content=\"text/html; charset=UTF-8\" http-equiv=\"content-type\">
        <title>TheForgottenServer WWW Control</title>
    </head>
    <body style=\"color: rgb(0, 0, 0); background-color: rgb(204, 204, 255);\" alink=\"#000099\" link=\"#000099\" vlink=\"#990099\">\n";
if(isset($_GET['do']) && in_array($_GET['do'], $options) && $options[$_GET['do']])
{
    $output = shell_exec("/usr/bin/sudo /etc/init.d/theforgottenserver ".$_GET['do'].($_GET['do'] == "start" ? " ".$path : ""));
    echo nl2br($output)."\n<br />\n<a href=\"".$_SERVER['HTTP_REFERER']."\">&raquo Back</a>\n";
}
else
{
    echo "\t\tAvailable options:<br />\n";
    foreach($options as $option => $enabled)
    {
        if($enabled)
            echo "\t\t<br />\n\t\t» <a href=\"".$_SERVER['PHP_SELF']."?do=".$option."\">".ucfirst($option)."</a>\n";
    }
}
    echo "\t</body>
</html>";
?> 
Någon som har något tips hur jag ska få detta och fungera och sedan få de password protected?
Tack på förhand!

Re: Lite hjälp med detta script tack

Postat: 12 jun 2010, 19:23
av ycc
Om jag nu fattat problemet ...

Om du kör skriptet för hand och inte kickar igång det via php, funkar det då?

För att sätta password på php-filer brukar jag göra en av två saker:

1. lägg in en .htaccess-fil i samma mapp som php-filen (den skall inehålla sökvägen till en fil med password, helt utanför dokumentroten). sök på htaccess så hittar du.

eller

2. starta php-filen från en annan php-fil som begär ett lösenord (i ett html-formulär) och skickar som s.k. post-variabel till din index-sida. index-sidan kollar om lösenordet stämmer och aktiverar då skriptet. (man brukar lagra lösenordet som md5-summa om filen skulle komma på avvägar)
Tillägg: Det behöver inte vara en php-sida som kallar på index-sidan. Det går bra med vanlig htm(l), bara ett enkelt formulär. (<form action:din_indexsida method:post ...)
En lite "extrakoll" vore ju också att din indexsida kollar att den anropas från rätt sida (den med formuläret). Anropande url finns i $_SERVER['HTTP_REFERER']. Ytterligare säkerhetsfaktorer tycker jag borde vara att ge sidor och variabler "långa och ovanliga" namn och inte länka till dom öppet förstås.

Ursäkta, hinner inte skriva mer nu.

Välkommen till forum, hoppas många fler också kommer med förlsag :)

Re: Lite hjälp med detta script tack

Postat: 17 jun 2010, 17:55
av drance
ycc skrev:Om jag nu fattat problemet ...

Om du kör skriptet för hand och inte kickar igång det via php, funkar det då?

För att sätta password på php-filer brukar jag göra en av två saker:

1. lägg in en .htaccess-fil i samma mapp som php-filen (den skall inehålla sökvägen till en fil med password, helt utanför dokumentroten). sök på htaccess så hittar du.

eller

2. starta php-filen från en annan php-fil som begär ett lösenord (i ett html-formulär) och skickar som s.k. post-variabel till din index-sida. index-sidan kollar om lösenordet stämmer och aktiverar då skriptet. (man brukar lagra lösenordet som md5-summa om filen skulle komma på avvägar)
Tillägg: Det behöver inte vara en php-sida som kallar på index-sidan. Det går bra med vanlig htm(l), bara ett enkelt formulär. (<form action:din_indexsida method:post ...)
En lite "extrakoll" vore ju också att din indexsida kollar att den anropas från rätt sida (den med formuläret). Anropande url finns i $_SERVER['HTTP_REFERER']. Ytterligare säkerhetsfaktorer tycker jag borde vara att ge sidor och variabler "långa och ovanliga" namn och inte länka till dom öppet förstås.

Ursäkta, hinner inte skriva mer nu.

Välkommen till forum, hoppas många fler också kommer med förlsag :)
hur kör jag scriptet utan php?

Re: Lite hjälp med detta script tack

Postat: 17 jun 2010, 19:26
av ycc
Jag ber om ursäkt om jag gav något råd som inte gick att följa.

Jag har bara tittat som hastigast på skriptet och uppfattat det som ett "klassiskt" start/stop-skript av servrar.

Exakt vilka argument som skall ges har jag inte kollat, men dessa skript brukar ju kickas igång i terminalen med kommandon av typen:

Kod: Markera allt

/etc/init.d/theforgottenserver start
/etc/init.d/theforgottenserver stop
/etc/init.d/theforgottenserver restart