Shoutcast Interface

h4dhunTer

Erfahrenes Mitglied
Hallo,

ich möchte ein Shoutcast Webinterface bauen. Mit: Starten/Stoppen/Neustarten , Passwort ändern, Intro hochladen und Titel ändern.

Womit kann ich das am schnellsten Bauen? In PHP habe ich nun schon Passwort ändern und Starten hinbekommen. Beim Stoppten ist das Problem, dass ich irgendwie die PID speichern muss und dadurch geht neustarten auch nicht.

Kann ich eine mischung aus zwei Programmiersprachen machen? Das heißt, dass ich mit PHP und einer anderen Sprache arbeite. Z.B. währe es super, wenn ich mit einem PHP Code ein programm unter Linux ausführe. Da sollte dann das Starten mit PID speichern (Textdatei) drinne sein. -Achtung: Linux anfänger :) .

Vielleicht könntent Ihr mir paar Links geben oder an welches Forum ich mir hier wenden sollte.
 
Ich habe für shoutcast server ein autopilot in php geschrieben der automatisch eine Playliste aus dem Dateien in Musik-Verzeichniss erstellt und den autopilot (sc_trans) startet. Da ich das gleiche Problem hatte wie du ,"konnte die pid nicht ermitteln" habe ich die Funktionen Start, Stop, Nächstes Lied und E-RDS als cgi-skrypt in perl geschrieben.
So sieht das start-skrypt aus:

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/plain\n\n";
my $apnamekill = 'kill $(ps auxwww | grep -v grep | grep sc_trans | awk \'{print $2}\')';
my $apname = 'httpdocs/autopilot/sc_trans httpdocs/autopilot/sc_trans.conf &';
system $apnamekill;
system $apname;


Dieses skrypt beendet erst das Programm, falls es gestartet ist, bevor es ein neues Programm startet und dabei wird die ausgabe von der SHELL im Browser angezeigt so kann ich auch sehen was der shoutcast server macht oder wenn eine fehler meldung kommt. Du kannst die Zeilen 3 und 4 löschen wenn du keine Ausgabe im Browser brauchst.

mit "kill $(ps auxwww | grep -v grep | grep sc_trans | awk \'{print $2}\')'" kann man mit der shell die pid ermitteln. Dabei wird an kill als Parameter die Ausgabe von ps auxww übergeben und AWK schneidet nur die zweite Spalte aus, was ein pid ist.
Das gleiche Skrypt kannst du auch für den sc_serv benutzten. Den Skrypt rufst über einen link auf in html z.B. "<a href="cgi-bin/start.pl">Radio</a>". Denke daran das ein cgi-perl skryt im richtigen Verzeichniss ist und die endung .pl oder .cgi hat. Die Zugriffsrechte für ein cgi-skrypt müssen auf 755 gesetzt sein sonst kommt "Internal Server Error". Die Datei darf nur einen Benutzter angehören der Zugriff über www hat.
 
Ich habe für shoutcast server ein autopilot in php geschrieben der automatisch eine Playliste aus dem Dateien in Musik-Verzeichniss erstellt und den autopilot (sc_trans) startet. Da ich das gleiche Problem hatte wie du ,"konnte die pid nicht ermitteln" habe ich die Funktionen Start, Stop, Nächstes Lied und E-RDS als cgi-skrypt in perl geschrieben.
So sieht das start-skrypt aus:

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/plain\n\n";
my $apnamekill = 'kill $(ps auxwww | grep -v grep | grep sc_trans | awk \'{print $2}\')';
my $apname = 'httpdocs/autopilot/sc_trans httpdocs/autopilot/sc_trans.conf &';
system $apnamekill;
system $apname;


Dieses skrypt beendet erst das Programm, falls es gestartet ist, bevor es ein neues Programm startet und dabei wird die ausgabe von der SHELL im Browser angezeigt so kann ich auch sehen was der shoutcast server macht oder wenn eine fehler meldung kommt. Du kannst die Zeilen 3 und 4 löschen wenn du keine Ausgabe im Browser brauchst.

mit "kill $(ps auxwww | grep -v grep | grep sc_trans | awk \'{print $2}\')'" kann man mit der shell die pid ermitteln. Dabei wird an kill als Parameter die Ausgabe von ps auxww übergeben und AWK schneidet nur die zweite Spalte aus, was ein pid ist.
Das gleiche Skrypt kannst du auch für den sc_serv benutzten. Den Skrypt rufst über einen link auf in html z.B. "<a href="cgi-bin/start.pl">Radio</a>". Denke daran das ein cgi-perl skryt im richtigen Verzeichniss ist und die endung .pl oder .cgi hat. Die Zugriffsrechte für ein cgi-skrypt müssen auf 755 gesetzt sein sonst kommt "Internal Server Error". Die Datei darf nur einen Benutzter angehören der Zugriff über www hat.

Habe ich gerade im Netz gefunden. Man kann auch in php den handle für ein Prozess ermitteln.
<?php
$handle = popen ("sc_serv", "r");
?>
 
Hi,
naja das Problem bei mir ist, dass ich mehrere Configdatein über sc_serv lade. Deswegen gibt es da immer probleme, dass er mir bei der Prozessabfrage immer mehrere PIDs bekomme.
 
Das ist bei vServern meistens so. Bei mir hat jede sc_serv 5 Prozess mit eigenen pids, aber das ist nicht schlimm denn beendest du nur einen dann werden alle anderen auch beendet. Die ermittelte pid ist die erste pid, wenn das Prozess nicht mehr da ist werden alle anderen dazugehorige automatisch beendet.
 
Hallo,

genau das Problem habe ich. Dann werde ich mal gucken, ob ich das irgendwie umgehen kann. Vielen Dank schonmal
 
Zurück