Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche dringend Shoutcast Bannergenerator
Hallo!
Ich suche ein kleines Script, welches in der Lage ist aus 2 vorgefertigten Bilden bzw. Bannern (Online / Offline) einen entsprechenden Banner nach abhängigkeit des Shoutcast-Sendestatusses zu generieren, d.h. das "Online" Bild wird angezeigt, wenn gesendet wird und "Offline" wenn nicht gesendet wird. Der Online-Banner sollte falls möglich direkt im Banner den Songtitel, Interpret sowie Streambeschreibung (Name der Sendung) anzeigen.
Wichtig hierbei ist jedoch, das sich das Script nicht der PHP-Funktion "imagecreatefrompng" bedient, da diese ein Sicherheitsrisiko bedeuten würde.
Der Server ist wie folgt eingestellt:
allow_url_fopen = off
allow_url_include = off
PHP Version ist glaube Ich noch Version 4.3.2
Gibt es evtl. eine Lösung oder vorgefertigtes Script dafür?
Notfalls würde mir auch eine Weiterleitung zu einer bestimmten Grafik weiter helfen, so das man das Ganze per I-Frame machen könnte oder wie auch immer.
Vielen Dank im Voraus.
Original geschrieben von PARALAX
Wichtig hierbei ist jedoch, das sich das Script nicht der PHP-Funktion "imagecreatefrompng" bedient, da diese ein Sicherheitsrisiko bedeuten würde.
Ach, und warum das?
IchBinIch 12-01-2008, 16:57 hehe :rofl:
BTW: Falsches Forum, aber wen wunderts...
Weil sich dadurch natürlich auch andere Sachen ausführen lassen, die schädigend sein können.
Nicht gerade eine hilfreiche Antwort von Dir...vorher mal nachdenken wäre nicht schlecht.
Original geschrieben von PARALAX
Weil sich dadurch natürlich auch andere Sachen ausführen lassen, die schädigend sein können.
Nicht gerade eine hilfreiche Antwort von Dir...
Wenn du hier Käse erzählst, der sich dann leider auch noch bei Google fortpflanzt ist DEINE Aussage anderen Leuten nicht hilfreich. Meine hingegen schon.
Also erzähl doch mal, wo ist imagecreatefrompng() Fehlerbehaftet? Wie kann man andere Sachen ausführen (Kaffee kochen? Nass durchwischen?) die schädigend sein können (Kaffee Nachts kochen? Nass auf Laminat wischen?).
IchBinIch 12-01-2008, 17:01 Weil sich dadurch natürlich auch andere Sachen ausführen lassen, die schädigend sein können. Wie lassen sich denn mittels imagecreatefrompng "andere Sachen" ausführen? Erklär mal bitte.
Es gab in eine Sicherheitslücke, die erst durch das Einstellen der beiden Funktionen geschlossen werden konnten.
allow_url_fopen = off
allow_url_include = off
Ich muß dazu sagen, das das unser Webmaster veranlasst hat. Denn nachdem diese Funktionen eingestellt wurden, bekomme ich nach dem Aufrufen meines alten Scriptes folgende Meldung:
Warning: imagecreatefrompng() [function.imagecreatefrompng]: URL file-access is disabled in the server configuration in /srv/www/acc1/html/banner/status.php on line 79
Warning: imagecreatefrompng(http://www.meine-webseite.de/banner/Banner_Online.png) [function.imagecreatefrompng]: failed to open stream: no suitable wrapper could be found in /srv/www/acc1/html/banner/status.php on line 79
no image
Vor dem Angriff waren die beiden Funktionen deaktiviert und nun suche ich nach einer Alternative.
P.S.: Es geht auch etwas freundlicher, ihr Lieben...:rolleyes:
Original geschrieben von PARALAX
Es gab in eine Sicherheitslücke, die erst durch das Einstellen der beiden Funktionen geschlossen werden konnten. Ich muß dazu sagen, das das unser Webmaster veranlasst hat. Denn nachdem diese Funktionen eingestellt wurden, bekomme ich nach dem Aufrufen meines alten Scriptes folgende Meldung:
Warning: imagecreatefrompng() [function.imagecreatefrompng]: URL file-access is disabled in the server configuration in /srv/www/web2/html/rp/banner/status.php on line 79
Okay, viel Text, keine Antwort. Ich frage nochmal: Welche Schwachstelle existiert genau in imagecreatefrompng()?
Original geschrieben von PARALAX
Vor dem Angriff waren die beiden Funktionen deaktiviert und nun suche ich nach einer [b]Alternative.
Wenn imagecreatefrompng() vor dem Angriff deaktiviert war, wie kommst du dann darauf, dass es an dieser Funktion gelegen haben soll?
Original geschrieben von PARALAX
P.S.: Es geht auch etwas freundlicher, ihr Lieben...:rolleyes:
Du warst es, der mit dem motzen anfing! Wie man in den Wald hineinruft ... kennste sicher!
P.S.: Und wenn du dir die Fehlermeldung mal genau ansehen würdest, wüsstest du auch, dass das alles gar nicht mit der imamgecreatefrompng()-Funktion zu tun hat ;)
IchBinIch 12-01-2008, 17:18 Mit den "Funktionen" meint er sicher die beiden Einstellungen die für das laden externer Resourcen zuständig sind. Den Unterschied zu kennen, würde aber Grundlagenwissen voraussetzen. :D
Dennoch kann auch ich keine Sicherheitslücke in der Funktion erkennen.
Und dass ihr Torfnasen Parameter ungeprüft in eure Scripte reinlasst, dafür seid ihr selbst verantwortlich. Hat aber alles nichts mit der Imagefunktion zu tun. Folglich war eure Sicherheitslücke ganz wo anders, stimmts?
IchBinIch 12-01-2008, 17:20 Durch einen schwerwiegenden Systemfehler auf unserem Server sowie Komplikationen mit unserem Webhoster, waren wir in den letzten beiden Tagen weder von unsere Homepage, noch über das Forum erreichbar. Wir bedauern diesen Vorfall sehr, zumal uns auch in diesem Falle keine Schuld traf. Ja ne, ist klar. Fehlerhafte Scripte nutzen und den Hoster verantwortlich machen. :D
Ich hab ja auch nicht gesagt, das ich Programmierer bin. Und zum Thema Sicherheit kann ich nicht viel sagen. Ich weiß nur, das laut seiner Aussage diese Einstellungen von Nöten waren und seitdem funktioniert mein Script nicht mehr.:(
Ich hatte eigentlich die Hoffnung, das ihr weiter helfen könnt. Scheint aber leider nicht der Fall zu sein.
Nun ja...würde mich trotzdem über eine PN oder Nachricht freuen. Vielleicht bin ich ja hier wirklich falsch. Trotz Allem brauche ich Hilfe oder ggf. eine Alternative. Denn vielleicht geht es ja auch mit einer anderen Funktion.
Und das Script war im Übrigen nicht fehlerhaft. Wer mir helfen möchte, dem händige ich es gerne aus.
IchBinIch 12-01-2008, 17:31 Nein, DAS Script ist vermutlich nicht fehlerhaft, aber wahrscheinlich ein anderes.
Wenn dein Webmaster meint, dass er nur so in der Lage ist das Problem zu beheben, ist das eigentlich schon ein Armutszeugnis, aber gut.
Eine Alternative zu der FKT gibt es nicht (außer im Bezug auf das Format (JPG, GIF)), aber du kannst mittels fsockopen() die Datei auf deinen Server holen.
Vielleicht bin ich ja hier wirklich falsch. Ja, wer die Forenbeschreibungen liest, merkt das auch vor dem Posten.
Original geschrieben von PARALAX
Ich hab ja auch nicht gesagt, das ich Programmierer bin. Und zum Thema Sicherheit kann ich nicht viel sagen. Ich weiß nur, das laut seiner Aussage diese Einstellungen von Nöten waren und seitdem funktioniert mein Script nicht mehr.:(
Das Problem ist, dass du NICHT gesagt hast, dass du PHP nicht beherrschst, denn dann bist du in diesem Teil des Forums an der ganz falschen Adresse. Dein Gesuch ist eher was für "Appz- und Scriptgesuche". Man sollte doch annehmen, dass ein Jemand, der ein Forum betreibt, in der Lage ist, sich ein anderes genau anzusehen und die Regeln zu lesen ...
Original geschrieben von PARALAX
Ich hatte eigentlich die Hoffnung, das ihr weiter helfen könnt. Scheint aber leider nicht der Fall zu sein.
Da wir doch ganz nette Typen sind: Speicher dein "banner_online.png" lokal, und änder den Aufruf in einen relativen auf deinem System. Dann geht es wieder (sofern der Hoster nicht nich mehr geändert hat).
Original geschrieben von PARALAX
Nun ja...würde mich trotzdem über eine PN oder Nachricht freuen. Vielleicht bin ich ja hier wirklich falsch. Trotz Allem brauche ich Hilfe oder ggf. eine Alternative. Denn vielleicht geht es ja auch mit einer anderen Funktion.
Und nochmal: Regeln lesen ;) PNs sind hier deaktiviert!
Bei welchem Hoster bist du denn? Sieht mir schwer nach Plusserver aus.
Bitte verzeiht mir den Fehltritt bzw. meine Unwissenheit. Auch das man hier keine PN's verschicken kann, war mir nicht bekannt. Deswegen veröffentliche ich jetzt hier einfach den Skript (es ist nur eine Datei namens "status.php"). Sollte Er dennoch einen Fehler enthalten, dürft ihr gern wieder mit mir schimpfen.;)
<?php
$announce_colour = $_GET['announce'];
$song_colour = $_GET['song'];
if ( !$announce_colour )
{
$announce_colour="0,0,0";
}
if ( !$song_colour )
{
$song_colour="0,0,0";
}
$announce_colour=check_colour_specific( $announce_colour );
$song_colour=check_colour_specific( $song_colour );
$ip="62.75.215.179";
$port="8000";
$online="http://www.radio-paralax.de/banner/Banner_Online.png";
$offline="http://www.radio-paralax.de/banner/Banner_Offline.png";
// init
$stream_title="";
$current_song="";
$artist="";
$song="";
$max_zeichenanzahl = 44;
$sp = @fsockopen($ip,$port,&$errno,&$errstr,10);
if ($sp)
{
$cast_found = false;
set_socket_blocking($sp,false);
fputs($sp,"GET /index.html HTTP/1.1\nUser-Agent:Mozilla\n\n");
for($i=0; $i<30; $i++)
{
if (feof($sp))
{
break; // exit if connection broken
}
$sp_data.=fread($sp,1024);
usleep(500000);
}
$lines=split("/\n",$sp_data);
foreach ($lines as $line)
{
if ( preg_match("/SHOUTcast/",$line ) )
{
$cast_found = true;
}
}
// retrieve stream title, current song
// -> $data_block['stream_title']
// -> $data_block['current_song']
if ($cast_found)
{
$lines =split("<tr>",$sp_data);
foreach ($lines as $line)
{
if (preg_match("/Stream Title:/", $line))
{
$stream_title = retrieve_data( "Stream Title:", $line ,"<b>" ,1, 1, 0, 1, "</b>");
}
if (preg_match("/Current Song:/", $line))
{
$current_song = retrieve_data( "Current Song:", $line ,"<b>" ,1, 1, 0 ,1 ,"</b>");
}
}
}
}
// -> im
if ( ($stream_title != "") &&
($current_song != "") )
{
$im = imagecreatefrompng($online); /* Attempt to open */
if (!$im)
{
print "no image\n"; exit(0);
}
$info= "Aktueller Song:";
$tmp = split(" - ", $current_song);
$artist = $tmp[0];
$song = $tmp[1];
if (strlen($current_song) > $max_zeichenanzahl)
{
$current_song = substr($current_song, 0, $max_zeichenanzahl-3)."...";
}
$stream_title= "auf ".$stream_title;
if (strlen($stream_title) > $max_zeichenazahl)
{
$stream_title = substr($stream_title, 0, $max_zeichenanzahl-3)."...";
}
}
else
{
$im = imagecreatefrompng($offline); /* Attempt to open */
}
// we are delivering an image
Header("Content-type: image/png");
// set up colors
$colour_array = split (",", $announce_colour );
$text_colour1 = ImageColorAllocate($im, $colour_array[0], $colour_array[1], $colour_array[2]);
$colour_array = split (",",$song_colour );
$text_colour2 = ImageColorAllocate($im, $colour_array[0], $colour_array[1], $colour_array[2]);
# this is image pointer,1,xpos, ypos, string, colour
ImageString($im,2,200,0,$info,$text_colour1);
ImageString($im,2,200,15,$current_song,$text_colour2);
ImageString($im,2,200,30,$stream_title,$text_colour2);
ImagePng($im);
ImageDestroy($im);
exit(0);
function retrieve_data (
$match,
$string,
$split,
$pos1,
$pos2,
$white,
$chop,
$chopper)
{
$array = split($match, $string);
$array = split($split,$array[$pos1]);
if ( $white )
{
$array[$pos2] = ereg_replace(" ", "", $array[$pos2]);
}
if ( $chop )
{
$array = split($chopper, $array[$pos2] );
}
else
{
$array[0] = $array[$pos2];
}
$version = $array[0];
return $version;
}
function check_colour_specific ( $colour_string )
{
$colour_array= split (",",$colour_string );
$colour_count =0;
foreach ( $colour_array as $colour )
{
if ( $colour<0 || $colour>255 )
{
$colour_array[$colour_count]="0";
}
$colour_count++;
}
if ( $colour_count<2 )
{
return "0,0,0";
}
return ( $colour_array[0].",".$colour_array[1].",".$colour_array[2] );
}
?>
Der Banner befindet sich auf dem Webspace im Verzeichnis "banner".
Da wir doch ganz nette Typen sind: Speicher dein "banner_online.png" lokal, und änder den Aufruf in einen relativen auf deinem System. Dann geht es wieder (sofern der Hoster nicht nich mehr geändert hat).
Sorry aber kannst Du mir das nochmal genauer erläutern? Vielen Dank!:)
IchBinIch 12-01-2008, 17:45 Und nochmals: REGELN! :teach: :motz: Wozu gibt es hier[php ]php-Tags[/ php]?
Du sollst "on line 79" den Pfad zum Banner anpassen, so dass dieser auf deinen Lokalen Banner zeigt!
BTW: Wenn dein Script den lokalen Banner tatsächlich über HTTP einbindet, dann ... :rolleyes: So viel zum Thema das Script ist nicht buggy. ;)
So, habs geändert.
Also Zeile 79 ist bei mir das hier:
$im = imagecreatefrompng($online); /* Attempt to open */
Aber sorry...ich weiß nicht, was Du meinst.:confused:
Lässt sich das mit der HTTP-Sache irgendwie umändern?
Edit: Lösung gefunden! Vielen Dank!
IchBinIch 12-01-2008, 18:35 Und damit dieser Thread hier nicht ganz für die Katz ist, verraten wir auch anderen Hilfesuchenden (die die Suchfunktion verwenden können) die Lösung:
Hinter der Variable $online (die Definition findet man irgendwo um Zeile 20 rum) hat der Programmierer unfähiger-/unsinnigerweise einen vollständige URL angegeben, der den Parser dazu veranlasst, das Bild über HTTP zu laden.
Ja, genau so war es. Habe jetzt beide Zeilen geändert und die Datei Serverintern verlinkt und jetzt geht es wieder.:)
Der Banner ist jetzt wieder auf der Supportseite zu sehen.
Vielen Dank.
|
-
- |