Suche dringend Shoutcast Bannergenerator

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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.
    Zuletzt geändert von PARALAX; 12.01.2008, 16:50.

  • #2
    Re: Suche dringend Shoutcast Bannergenerator

    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?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      hehe

      BTW: Falsches Forum, aber wen wunderts...
      ICH BIN ICH!!!

      Kommentar


      • #4
        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.

        Kommentar


        • #5
          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?).
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            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.
            ICH BIN ICH!!!

            Kommentar


            • #7
              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...
              Zuletzt geändert von PARALAX; 12.01.2008, 17:13.

              Kommentar


              • #8
                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
                [B]Vor dem Angriff waren die beiden Funktionen deaktiviert und nun suche ich nach einer 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...
                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
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  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.

                  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?
                  ICH BIN ICH!!!

                  Kommentar


                  • #10
                    OffTopic:
                    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.
                    ICH BIN ICH!!!

                    Kommentar


                    • #11
                      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.

                      Kommentar


                      • #12
                        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.
                        ICH BIN ICH!!!

                        Kommentar


                        • #13
                          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.
                          [FONT="Helvetica"]twitter.com/unset[/FONT]

                          Shitstorm Podcast – Wöchentliches Auskotzen

                          Kommentar


                          • #14
                            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-Code:
                            <?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>" ,1101"</b>");
                                        }
                                        if (
                            preg_match("/Current Song:/"$line)) 
                                        {
                                            
                            $current_song retrieve_data"Current Song:"$line ,"<b>" ,11,,"</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_song0$max_zeichenanzahl-3)."...";
                                }
                                
                                
                            $stream_title"auf ".$stream_title
                                if (
                            strlen($stream_title) > $max_zeichenazahl)
                                {
                                    
                            $stream_title substr($stream_title0$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_arraysplit (",",$colour_string ); 
                                
                            $colour_count =0
                                foreach ( 
                            $colour_array as $colour 
                                {
                                    if ( 
                            $colour<|| $colour>255 
                                    {
                                        
                            $colour_array[$colour_count]="0";
                                    } 
                                    
                            $colour_count++;
                                }
                                if ( 
                            $colour_count<)
                                {
                                    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!
                            Zuletzt geändert von PARALAX; 12.01.2008, 17:51.

                            Kommentar


                            • #15
                              Und nochmals: REGELN! 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 ... So viel zum Thema das Script ist nicht buggy.
                              ICH BIN ICH!!!

                              Kommentar

                              Lädt...
                              X