11.12.2012, 13:05
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
sind bisher auch keine schutz mechanismen drinnen
kann aber noch alles hinzugefügt werden
hier das script
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

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