Nach Wechsel auf Shoutcast2 funktionieren PHP-Skripte nicht mehr

Status
Für weitere Antworten geschlossen.

MacSlon

Benutzer
Hallo, ich hoffe mir kann jemand von euch helfen.

Ich benutze zu Ansicht des laufenden Titels auf meiner Webseite für den alten Stream zum Beispiel folgendes Script:

http://www.macslons-irish-pub-radio.com/nowplaying.php

<html>
<body bgcolor="#0D2A0C" text="#FFFF00">

<meta http-equiv="Refresh" content="30" />
<div align="center">
<?
$open = fsockopen("193.111.140.238","9024");
if ($open) {
fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n");
$read = fread($open,1000);
$text = explode("content-type:text/html",$read);
$text = explode(",",$text[1]);
} else { $er="Connection Refused!"; }
?>
</div>
<div align="left">
<?
if ($text[1]==1) { $state = "Up"; } else { $state = "Down"; }
if ($er) { echo $er; exit; }
echo "<font face=verdana size=3>
<u><b>Gerade läuft:</u></b> <br>
$text[6] <br><br>
*Wir haben $text[0] Zuhörer.* <br>
</font>";?>
</body>
</html>



Mein neuer Stream ist Shoutcast 2 (46.235.26.22:12300) bei dem dieses Script nicht mehr arbeitet. Ich selbst vermute dass das was mit der Stream ID zu tun hat. Inwieweit muss ich diese ID und vor allem wie im Script angeben?

Das Gleiche Problem habe ich mit der Darstellung der zuletzt gespielten Songs, für die ich samt Player folgendes Script benutze:

http://www.macslons-irish-pub-radio.com/appplayer/

<?php
/* Streamers Webplayer 1.057
**
** Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
** Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
**
** License:
**
** Creative Commons Attribution-ShareAlike 3.0 Unported License
** This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
** To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
** send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
**
** URL: http://www.streamerspanel.com
** SUPPORT: http://support.streamerspanel.com
** MAIL: info@streamerspanel.com
** PAYPAL: info@streamerspanel.com
**
*************************************************************************************************
** Filename: ./includes/streams/stream1.inc.php | Stream Example Configuration
*/
// Required values which will needed to be changed!
$shoutcast_ip = '193.111.140.238';
$shoutcast_port = '9024';
$shoutcast_admin_pass = 'password';
// Optional Data
$page_title = "MacSlon's Irish Pub Radio";
$page_volume = '50'; // In percent
$page_auto = 'true'; // true/false
$page_logo = "";
// If Facebook/Twitter should be added please keep
// enabled and provide your stream image for FB.
$social_enable = TRUE; // TRUE/FALSE
$facebook_image = ""; // A full url, like http://www.domain.com/images/logo.png
?>




Kennt sich damit jemand aus?
 
ok ich formulier meine Frage anders, ich bin mit meinem Latein am Ende. Ich nutze für mein Radio derzeit (Shoutcast 1) ein PHP Script, welches einen Player, den aktuell gespielten Song sowie eine Historie anzeigt. Nun habe ich einen neuen Shoutcast2 Stream der mit dem PHP Script nicht zurecht kommt.

Hier die Ausgabe: http://www.macslons-irish-pub-radio.com/player/

Wenn ich nun die neuen Streamdaten des Shoutcast 2 Streams (http://46.235.26.22:12300/index.html?sid=1) eintrage werden die Titel nicht angezeigt.

Hier der verwendete Code:

info.php
PHP:
<?php
/*   MacSlon's Irish Pub Radio 1.057
**
**   Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
**   Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
**
**   License:
**
**   Creative Commons Attribution-ShareAlike 3.0 Unported License
**     This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
**     To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
**     send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
**
**   URL:     http://www.streamerspanel.com
**   SUPPORT:   http://support.streamerspanel.com
**   MAIL:     info@streamerspanel.com
**   PAYPAL:     info@streamerspanel.com
**
*************************************************************************************************
**   Filename: ./index.php | Main index project file
*/

require_once("./includes/config.inc.php");
require_once("./includes/functions.inc.php");
try {
   $fileLoader=streamChooser();
   if (file_exists($fileLoader))
     include $fileLoader;
   else
     throw new Exception('Streamdata could not be accessed!');
   if ($shoutcast_ip=='__ip__')
     throw new Exception('Streamdata could not be accessed!');
}
catch (Exception $e) {
   die($e->getMessage());
}
if ((isset($_GET['request'])) && ($_GET['request']=="json")) {
   $connection_handler=@fsockopen($shoutcast_ip, $shoutcast_port, $connection_errorn, $connection_error_str, 30);
   if ($connection_errorn)
     die ($connection_errorn."_".$connection_error_str);
   fwrite($connection_handler,"GET /admin.cgi?pass=$shoutcast_admin_pass&mode=viewxml HTTP/1.0\r\n");
   fwrite($connection_handler,"User-Agent: MacSlon Irish Pub Radio (Mozilla Compatible)\r\n");
   fwrite($connection_handler,"Host: $shoutcast_ip\r\n");
   fwrite($connection_handler,"Conection: close\r\n\r\n");
   $connection_file=NULL;
   while (!feof($connection_handler))
     $connection_file.=fgets($connection_handler, 128);
   fclose($connection_handler);
   $connection_file = preg_split("/[\r\n]+/",$connection_file);
   $server_info=XMLtoArray(utf8_encode($connection_file[2]));
   $server_info=$server_info['SHOUTCASTSERVER'];
   header("Content-Type: application/json; charset=UTF-8");
   if (is_array($server_info['SONGHISTORY']['SONG']))
     foreach ($server_info['SONGHISTORY']['SONG'] as $server_data)
       $server_info_title[]=rawurlencode($server_data['TITLE']);
   $arrayimage=rawurlencode("<img src=\"".alivePicture(imageRequest(rawurldecode($server_info_title[0])." cover"))."\" />");
   if (strlen($server_info_title[0])>81) {
     $top_title=str_replace("_", "*", $server_info_title[0]);
     $top_title=substr($top_title,0,80)."..";
     $top_title_string_search = array('*', '%..', '%2..', '_');
     $top_title_string_replace = array('&nbsp;', '&nbsp;', '&nbsp;', '&nbsp;');
     $top_title=str_replace($top_title_string_search, $top_title_string_replace, $top_title);
   }
   else {
     $top_title_string_search = array('%...', '%2...', '_');
     $top_title_string_replace = array('&nbsp;', '&hellip;', '&nbsp;');
     $top_title=str_replace($top_title_string_search, $top_title_string_replace, $server_info_title[0]);
   }
   $raw_title=$server_info_title;
   for($i=0;$i<count($server_info_title);$i++) {
     if (strlen($server_info_title[$i])>59) {
       $top_title_string_search = array('_');
       $top_title_string_replace = array('*');
       $server_info_title[$i]=str_replace($top_title_string_search, $top_title_string_replace, $server_info_title[$i]);
       $server_info_title[$i]=substr($server_info_title[$i],0,59)."..";
     }
     $top_title_string_search = array('*', '%..', '%2..', '_');
     $top_title_string_replace = array('&nbsp;', '&nbsp;', '&nbsp;', '&nbsp;');
     $server_info_title[$i]=str_replace($top_title_string_search, $top_title_string_replace, $server_info_title[$i]);
   }
   if (strlen($server_info['SERVERTITLE'])>58) {
     $server_info['SERVERTITLE']=substr($server_info['SERVERTITLE'],0,60)."..";
   }
   echo json_encode(array('titel' => $server_info_title, 'raw_title' => $raw_title, 'servername' => rawurldecode($server_info['SERVERTITLE']), 'serverurl' => rawurldecode($server_info['SERVERURL']), 'titelcover' => $arrayimage, 'toptitle' => $top_title));
   die();
}
getChanger();
?>
<!DOCTYPE HTML>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <!--
   **   This is a HTML5 code - If Social Widgets is enable, it will not
   **    be valid HTML5 code, since Facebook and W3C don't feel yet to
   **    work together... Anyways otherwise the rest of the code if fine =)
   **
   **   Star Fox Radio 1.057
   **
   **   Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
   **   Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
   **
   **   License:
   **
   **   Creative Commons Attribution-ShareAlike 3.0 Unported License
   **     This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
   **     To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
   **     send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
   **
   **   URL:     http://www.streamerspanel.com
   **   SUPPORT:   http://support.streamerspanel.com
   **   MAIL:     info@streamerspanel.com
   **   PAYPAL:     info@streamerspanel.com
   **
   *************************************************************************************************
   -->
   <meta name="viewport" content="width=device-width, minimum-scale=0.57, maximum-scale=0.57" />
   <meta name="author" content="djcrackhome" />
   <meta name="robots" content="index, nofollow" />
  <?php if ($social_enable) {?>
   <meta property="og:title" content="<?php echo htmlspecialchars($page_title);?>" />
   <meta property="og:type" content="song" />
   <meta property="og:url" content="<?php echo htmlspecialchars(urlCleaner());?>" />
  <?php if (($facebook_image==NULL) || (!@getimagesize($facebook_image))) {?>
   <meta property="og:image" content="<?php echo htmlspecialchars(urlCleaner(1)."images/logo.png");?>" />
  <?php
  } else { ?>
   <meta property="og:image" content="<?php echo htmlspecialchars($facebook_image);?>" />
  <?php } ?>
   <meta property="fb:app_id" content="505294526236719" />
   <meta property="og:site_name" content="<?php echo htmlspecialchars($page_title);?>" />
  <?php } ?>
   <title><?php echo htmlspecialchars($page_title);?></title>
   <link rel="icon" href="./images/favicon.ico" type="image/x-icon" />
   <link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
   <link rel="stylesheet" type="text/css" href="./style/style.css" />
   <link rel="stylesheet" type="text/css" href="./style/style_css3.css" />
   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
   <script type="text/javascript" src="./embed/js/script.js"></script>
  <script type="text/javascript" src="./embed/js/modernizr.js"></script>
</head>
<body>
<div id="frame">
   <div id="main">
     <div id="logo">
       <?php
       if (($page_logo==NULL) || (!@getimagesize($page_logo))) {?>
         <img src="<?php echo htmlspecialchars(urlCleaner(1)."images/logo.png");?>" alt="" />
       <?php
       } else { ?>
         <img src="<?php echo htmlspecialchars($page_logo);?>" alt="" />
       <?php
       }?>
     </div>
     <div id="top">
       <div id="top_oben">
         <h1 id="top_name"></h1>
       </div>
       <div id="top_unten">
         <h2 id="top_title"></h2>
       </div>
     </div>
     <div id="bottom">
       <div id="playlist">
         <div id="playlist_first">
           <span id="playlistlisting1_num">01</span>
           <span id="playlistlisting1"></span>
         </div>
         <?php
         for($i=2;$i<=10;$i++) {
           echo "
         <div id=\"playlist_bottom".$i."\">
           <span id=\"playlistlisting".$i."_num\">";
           if ($i=="10")
             echo $i;
           else
             echo "0".$i;
           echo "</span>
           <span id=\"playlistlisting".$i."\"></span>
         </div>\n";
         }
         ?>
       </div>
       <div id="playlistcurrentcover">
         <img src="images/loader.gif" width="16" height="16" alt="" />
       </div>
       <div id="player">
     <div id="streamplayerFlash">
           <script type='text/javascript' src='./embed/js/swfobject.js'></script>
  <div id='mediaspace'><img src="images/loader.gif" width="16" height="16" alt="" /></div>
  <script type='text/javascript'>
  var so = new SWFObject('./embed/swf/player.swf','mpl','230','24','9');
  so.addParam('allowfullscreen','false');
  so.addParam('allowscriptaccess','always');
  so.addParam('wmode','opaque');
  so.addVariable('file','http://<?php echo htmlspecialchars($shoutcast_ip.":".$shoutcast_port);?>/;file.mp3');
  so.addVariable('backcolor','4c4643');
  so.addVariable('frontcolor','FFFFFF');
  so.addVariable('volume','<?php echo htmlspecialchars($page_volume);?>');
  so.addVariable('autostart','<?php echo htmlspecialchars($page_auto);?>');
  so.write('mediaspace');
  </script>
  </div>
  <!-- HTML5 Player will be activated as soon more browsers accept MP3 HTML5 Streaming
  <div id="streamplayerHTML5">
           <audio id="streamplayerHTML5Player" <?php if ($page_auto=='true') echo 'autoplay ';?>controls src="http://<?php echo htmlspecialchars($shoutcast_ip.":".$shoutcast_port);?>/;file.mp3"></audio>
  </div>
  -->
  </div>
  
     </div>
     <div id="footer">
       <p><?php echo htmlspecialchars($page_title); ?> | djcrackhome | <a href="http://www.streamerspanel.com" target="_blank">http://www.streamerspanel.com</a></p>
     </div>



   </div>

</div>



</body>

</html>



functions.inc.php:
PHP:
<?php
/*   Streamers Webplayer 1.057
**
**   Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
**   Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
**
**   License:
**
**   Creative Commons Attribution-ShareAlike 3.0 Unported License
**     This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
**     To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
**     send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
**
**   URL:     http://www.streamerspanel.com
**   SUPPORT:   http://support.streamerspanel.com
**   MAIL:     info@streamerspanel.com
**   PAYPAL:     info@streamerspanel.com
**
*************************************************************************************************
**   Filename: ./includes/functions.php | Function containing file
*/

/*
**   imageRequest function
**   Requests from Google Images the current cover of the current track, and
**    returns the url to the image.
**
**   Original Author: djcrackhome / Awais Qarni
**  
**   Based on the idea of Awais Qarni and continued it.
*/
function imageRequest($image_request_search) {
   $image_request_url = "http://www.google.com/images?hl=en&source=imghp&q=+*image_query*+&safe=images&imgsz=m";
   $image_request_content = file_get_contents(str_replace("+*image_query*+",urlencode($image_request_search), $image_request_url));
   $image_request_filter = stristr($image_request_content,"dyn.setResults(");
   $image_request_filter = str_replace("dyn.setResults(","", str_replace(stristr($image_request_filter,");"),"",$image_request_filter) );
   $image_request_filter = str_replace("[]","",$image_request_filter);
   $image_request = preg_split("/[\[\]]/",$image_request_filter);
   for($i=0;$i<count($image_request);$i++) {
     $image_request[$i] = str_replace("/imgres?imgurl\\x3d","",$image_request[$i]);
     $image_request[$i] = str_replace(stristr($image_request[$i],"\\x26imgrefurl"),"",$image_request[$i]);
     $image_request[$i] = preg_replace("/^\"/i","",$image_request[$i]);
     $image_request[$i] = preg_replace("/^,/i","",$image_request[$i]);
     if ($image_request[$i]!="") return $image_request[$i];
   }
}
/*
**   XMLtoArray function
**   Converts the requested XML from the SHOUTcast admin webpage and converts it
**    into various array.
**
**   Original Source: http://php.net/manual/en/function.xml-parse-into-struct.php#49154
**   Original Author: dudus@onet.pl
**  
**   Thank you for your kind agreement of me using your code, thanks!
*/
function XMLtoArray($XML) {
   $xml_parser = xml_parser_create();
   xml_parse_into_struct($xml_parser, $XML, $vals);
   xml_parser_free($xml_parser);
   $_tmp='';
   foreach ($vals as $xml_elem) {
     $x_tag=$xml_elem['tag'];
     $x_level=$xml_elem['level'];
     $x_type=$xml_elem['type'];
     if ($x_level!=1 && $x_type == 'close') {
       if (isset($multi_key[$x_tag][$x_level]))
         $multi_key[$x_tag][$x_level]=1;
       else
         $multi_key[$x_tag][$x_level]=0;
     }
     if ($x_level!=1 && $x_type == 'complete') {
       if ($_tmp==$x_tag)
         $multi_key[$x_tag][$x_level]=1;
       $_tmp=$x_tag;
     }
   }
   foreach ($vals as $xml_elem) {
     $x_tag=$xml_elem['tag'];
     $x_level=$xml_elem['level'];
     $x_type=$xml_elem['type'];
     if ($x_type == 'open')
       $level[$x_level] = $x_tag;
     $start_level = 1;
     $php_stmt = '$xml_array';
     if ($x_type=='close' && $x_level!=1)
       $multi_key[$x_tag][$x_level]++;
     while($start_level < $x_level) {
       $php_stmt .= '[$level['.$start_level.']]';
       if (isset($multi_key[$level[$start_level]][$start_level]) && $multi_key[$level[$start_level]][$start_level])
         $php_stmt .= '['.($multi_key[$level[$start_level]][$start_level]-1).']';
       $start_level++;
     }
     $add='';
     if (isset($multi_key[$x_tag][$x_level]) && $multi_key[$x_tag][$x_level] && ($x_type=='open' || $x_type=='complete')) {
       if (!isset($multi_key2[$x_tag][$x_level]))
         $multi_key2[$x_tag][$x_level]=0;
       else
         $multi_key2[$x_tag][$x_level]++;
       $add='['.$multi_key2[$x_tag][$x_level].']';
     }
     if (isset($xml_elem['value']) && trim($xml_elem['value'])!='' && !array_key_exists('attributes',$xml_elem)) {
       if ($x_type == 'open')
         $php_stmt_main=$php_stmt.'[$x_type]'.$add.'[\'content\'] = $xml_elem[\'value\'];';
       else
         $php_stmt_main=$php_stmt.'[$x_tag]'.$add.' = $xml_elem[\'value\'];';
       eval($php_stmt_main);
     }
     if (array_key_exists('attributes',$xml_elem)) {
       if (isset($xml_elem['value'])) {
         $php_stmt_main=$php_stmt.'[$x_tag]'.$add.'[\'content\'] = $xml_elem[\'value\'];';
         eval($php_stmt_main);
       }
       foreach ($xml_elem['attributes'] as $key=>$value) {
         $php_stmt_att=$php_stmt.'[$x_tag]'.$add.'[$key] = $value;';
         eval($php_stmt_att);
       }
     }
   }
   return $xml_array;
}
/*
**   alivePicture function
**   Checks if the picture url, which is given by the parameter, does exist.
**    Otherwise it will replace it with the 'nocover.jpg' image.
**
**   Original Author: djcrackhome
*/
function alivePicture($aliveURL) {
   if (!ini_get('safe_mode'))
     set_time_limit(3);
   if (!@getimagesize($aliveURL))
     $aliveURL = "./images/nocover.jpg";
   return $aliveURL;
}
function urlCleaner($urlSkipper=0) {
   if ((strpos($_SERVER['REQUEST_URI'], "stream")) && ($_GET['stream']!=NULL) && ($urlSkipper!=1))
     $lastURL=dirname($_SERVER["SCRIPT_NAME"])."/?stream=".$_GET['stream'];
   else
     $lastURL=dirname($_SERVER["SCRIPT_NAME"])."/";
   return "http://".$_SERVER['HTTP_HOST'].$lastURL;
}
function getChanger() {
   global $page_auto;
   global $page_volume;
   if (isset($_GET['play'])) {
     if ($_GET['play'] == 1)
       $page_auto = 'true';
     elseif ($_GET['play'] == 0)
       $page_auto = 'false';
   }
   if (isset($_GET['vol'])) {
     $page_volume = $_GET['vol'];
   }
}
function streamChooser() {
   global $standard_stream;
   if ((!isset($_GET['stream'])) || ($_GET['stream']==""))
     $fileLoader = "./includes/streams/".$standard_stream.".inc.php";
   else
     $fileLoader = "./includes/streams/".$_GET['stream'].".inc.php";
   return $fileLoader;
}
?>



config.inc.php:
PHP:
<?php
/*   Streamers Webplayer 1.057
**
**   Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
**   Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
**
**   License:
**
**   Creative Commons Attribution-ShareAlike 3.0 Unported License
**     This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
**     To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
**     send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
**
**   URL:     http://www.streamerspanel.com
**   SUPPORT:   http://support.streamerspanel.com
**   MAIL:     info@streamerspanel.com
**   PAYPAL:     info@streamerspanel.com
**
*************************************************************************************************
**   Filename: ./includes/config.php | Config file for standard stream
*/
if (!eregi("index.php", $_SERVER['PHP_SELF'])) {
   header("Location: index.php");
   die();
}
//   Required values which will needed to be changed!
$standard_stream = 'stream1';
?>



stream1.inc.php:
PHP:
<?php
/*   Streamers Webplayer 1.057
**
**   Developer: djcrackhome [Sebastian Graebner] [PHP/HTML/Idea]
**   Thanks to 'Raimund Barendt' [JQuery/JSON] & 'Rico Reinheckel' [Idea]
**
**   License:
**
**   Creative Commons Attribution-ShareAlike 3.0 Unported License
**     This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
**     To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or
**     send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
**
**   URL:     http://www.streamerspanel.com
**   SUPPORT:   http://support.streamerspanel.com
**   MAIL:     info@streamerspanel.com
**   PAYPAL:     info@streamerspanel.com
**
*************************************************************************************************
**   Filename: ./includes/streams/stream1.inc.php | Stream Example Configuration
*/
//   Required values which will needed to be changed!
$shoutcast_ip = '193.111.140.238';
$shoutcast_port = '9024';
$shoutcast_admin_pass = '***';
//   Optional Data
$page_title = "MacSlon's Irish Pub Radio";
$page_volume = '50'; //   In percent
$page_auto = 'true'; //   true/false
$page_logo = "";
//   If Facebook/Twitter should be added please keep
//    enabled and provide your stream image for FB.
$social_enable = TRUE; // TRUE/FALSE
$facebook_image = ""; // A full url, like http://www.domain.com/images/logo.png
?>


Ich bin mir eigentlich ziemlich sicher, dass das mit der neuen "sid=1" Endung zu tun hat, nur leider weiß ich nicht was genau ich nun in welchem der Scripte ändern muss, damit das Script sich ordentlich einloggen kann. Für euch Profis sicher einfach und logisch für mich aber böhmische Dörfer. ich war schon stolz, dass ich geschafft habe die Farben meinem Layout anzupassen. ;) Es wäre super wenn mal jemand von euch drüber gucken könnte und mir dann erklärt was genau ich wo ändern muss.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben