Sponsor-Board.de

Normale Version: TSDNS start/stop/add/del script
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

habe vor einiger zeit mal nen kleines script gemacht um
einen tsdns server zu starten/stopen
und einträge in der tsdns_settings.ini hinzufügen/entfernen zu können

das ganze war/ist eigetlich nur für mich privat
aber ich poste es mal hier

es ist nichts großes aber es funktioniert
und villeicht hilft es ja einigen ein interface zu erstellen

da es wie gesagt nur für mich privar gedacht war
muss man beim eintragen befehlt die domain und ip manuell an die adresse anhängen Wink

sind bisher auch keine schutz mechanismen drinnen
kann aber noch alles hinzugefügt werden

hier das script

PHP-Code:
<?php

$cmd
=$_GET['cmd'];
$user="ts3";
echo 
"<a href=\"start.php?cmd=start\">start</a><br>";
echo 
"<a href=\"start.php?cmd=ein\">eintrag</a><br>";
echo 
"<a href=\"start.php?cmd=del\">delete</a><br>";
echo 
"<a href=\"start.php?cmd=stop\">stop</a><br>";
echo 
"<a href=\"start.php?cmd=status\">status</a><br>";
if(
$cmd == "start"){
    echo 
"<br>starting server";
    
shell_exec('sudo su '.$user.' -l -c "screen -a -d -m -S tsdns /var/www/tsdns/tsdnsserver_linux_x86"');
}
if(
$cmd == "ein"){
    
$domain=$_GET['domain'];
    
$ip=$_GET['ip'];
    
$text $domain."=".$ip."\n";
    
$dateiname "tsdns_settings.ini";
    
$handler fOpen($dateiname "a+");
    
fWrite($handler $text);
    
fClose($handler);
}
if(
$cmd == "del"){
    
$domain=$_GET['domain'];
    
$ip=$_GET['ip'];
    
$suchen=$domain."=".$ip;
    
$datei=file("tsdns_settings.ini");
    
$l=count($datei);
    for(
$i=0;$i<$l;$i++){
        if(
chop($datei[$i])==$suchen){
            unset(
$datei[$i]);
            break;
        }
    }
    
$datei array_values($datei);
    
$l=count($datei);
    
$fp=fopen("tsdns_settings.ini","w");
    for(
$i=0;$i<$l;$i++){
        
fputs($fp,$datei[$i]);
    }
    
fclose($fp);
}
if(
$cmd == "stop"){
    echo 
"<br>stopping server";
    
shell_exec('sudo su '.$user.' -l -c "screen -r tsdns -X quit"');
}
if(
$cmd == "status"){
    
$otp2 shell_exec('sudo su '.$user.' -l -c "screen -list"');
    if (
stristr($otp2".tsdns") == true) {
        echo 
"TSDNS is running.";
    }else{
        echo 
"TSDNS is NOT running.";
    }
}
?>


MfG

EDIT://
habe nun ein shellscript zum starten/stopen des tsdns server gebaut
damit brauch man screen nichtmehr
hier das shell script

Code:
#!/bin/sh
# Copyright (c) 2012 Terrax2


case "$1" in
    start)
        if [ -e tsdns.pid ]; then
            if ( kill -0 $(cat tsdns.pid) 2> /dev/null ); then
                echo "The server is already running, try restart or stop"
                exit 1
            else
                echo "tsdns.pid found, but no server running. Possibly your previously started server crashed"
                echo "Please view the logfile for details."
                rm tsdns.pid
            fi
        fi
        echo "Starting the TSDNS"
        if [ -e tsdnsserver_linux_x86 ]; then
            if [ ! -x tsdnsserver_linux_x86 ]; then
                echo "tsdnsserver_linux_x86 is not executable, trying to set it"
                chmod u+x tsdnsserver_linux_x86
            fi
            if [ -x tsdnsserver_linux_x86 ]; then            
                "./tsdnsserver_linux_x86" > /dev/null &
                echo $! > tsdns.pid
                echo "TSDNS server started, for details please view the log file"
            else
                echo "tsdnsserver_linux_x86 is not exectuable, cannot start TSDNS"
            fi
        else
            echo "Could not find binary, aborting"
            exit 5
        fi
    ;;
    stop)
        if [ -e tsdns.pid ]; then
            echo -n "Stopping the TSDNS server"
            if ( kill -TERM $(cat tsdns.pid) 2> /dev/null ); then
                c=1
                while [ "$c" -le 300 ]; do
                    if ( kill -0 $(cat tsdns.pid) 2> /dev/null ); then
                        echo -n "."
                        sleep 1
                    else
                        break
                    fi
                    c=$((++c))
                done
            fi
            if ( kill -0 $(cat tsdns.pid) 2> /dev/null ); then
                echo "Server is not shutting down cleanly - killing"
                kill -KILL $(cat tsdns.pid)
            else
                echo "\ndone"
            fi
            rm tsdns.pid
        else
            echo "No server running (tsdns.pid is missing)"
            exit 7
        fi
    ;;
    restart)
        $0 stop && $0 start || exit 1
    ;;
    status)
        if [ -e tsdns.pid ]; then
            if ( kill -0 $(cat tsdns.pid) 2> /dev/null ); then
                echo "Server is running"
            else
                echo "Server seems to have died"
            fi
        else
            echo "No server running (tsdns.pid is missing)"
        fi
    ;;
    *)
        echo "Usage: ${0} {start|stop|restart|status}"
        exit 2
esac
exit 0

Sieht schon ganz nett aus aber bei eintragen würde ich den server gleich updaten, dass man ihn nicht neustarten muss also tsdnsserver --update
danke für das feedback
naja wie gesagt war nur für mich privat gedacht gewesen
da war das eigentlich egal
da ich privat villt max 1mal in 2 monaten was eingetragen habe
war es nicht wirklich schlimm ihn zu stopen und dann zu starten
wer möchte kann es ja umschreiben und eine bessere version des scrips hier posten
Ziemlich nettes Script
Referenz-URLs