no cover -  

Jak na SHOUTcast v2 a SSL pomocí proxy

Comments · 4549 Views

Určitě si většina uživatel SHOUTcastu, ať už posluchačů a nebo rádií všimla, že stream nelze spustit na zabezpečených stránkách v Google Chrome. V tomto článku si ukážeme, jak lze toto omezení jednoduše obejít pomocí proxy.

Pokud nevyužíváte na vašich webových stránkách SSL, tak se vás prozatím tento problém netýká, ale do budoucna to bude nutností. 

Toto použití navíc překonává problém CORS při použití JavaScriptu k načtení streamů pro přehrávání a analýzu.

Pro náš script budeme potřebovat dva soubory: .htaccess a index.php. V našem případě vše nakonfigurujeme pro co možná nejširší použití. Poté si ukážeme jak vše omezit pouze pro danou potřebu.

Struktura souboru .htaccess:

FilesMatch "mp3$"
    SetHandler application/x-httpd-php5
/FilesMatch
FilesMatch "aac$"
    SetHandler application/x-httpd-php5
/FilesMatch
FilesMatch "ogg$"
    SetHandler application/x-httpd-php5
/FilesMatch

IfModule mod_rewrite.c

RewriteEngine On

# Přesměrování STREAMU do PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*).mp3$ index.php?server=$1port=$2sid=$3format=mp3 [L,QSA]
RewriteRule ^(.*)/(.*)/(.*).ogg$ index.php?server=$1port=$2sid=$3format=ogg [L,QSA]
RewriteRule ^(.*)/(.*)/(.*).aac$ index.php?server=$1port=$2sid=$3format=aac [L,QSA]
/IfModule

Struktura souboru index.php


if($_GET['format'] == 'mp3'){
   header('Content-Type: audio/mpeg');
}elseif($_GET['format'] == 'aac'){
   header('Content-Type: audio/aac');
}elseif($_GET['format'] == 'ogg'){
   header('Content-Type: audio/ogg');
}else{
   header('Content-Type: audio/mpeg');
}

if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
}

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

}

$server = $_GET['server'];
$port = $_GET['port'];
$sid = $_GET['sid'];

$url = "http://".$server.":".$port."/stream/".$sid."/";

$f=fopen($url,'r');

if(!$f) exit;
while(!feof($f))
{
    echo fread($f,320);  
    flush();
}
fclose($f);

Tyto dva soubory nahrajeme pomocí FTP na server, například do adresáře stream. Výsledná adresa našeho streamu pak bude https://vasedomena.com/stream/{IP adresa}/{port}/{sid}.{formát}

Příklad: https:///vasedomena.com/stream/89.221.210.76/7000/1.mp3

Pokud vysíláte ve formátu OGG a nebo AAC, místo mp3 zvolíte příslušný formát.

Takhle můžete bez jakéhokoliv dalšího nastavení využít proxy pro svůj stream, veškeré nastavení je definované v URL.

Pokud ptřebujete zamezit, aby někdo cizí nemohl využít vaše proxy, stačí jednoduchá úprava v souboru index.php:

$server = $_GET['server'];
$port = $_GET['port'];
$sid = $_GET['sid'];

změníte na:

$server = 'vaše IP';
$port = 'váš port';
$sid = 'vaše SID';

v tuto chvíly již může být v URL definována jakákoliv IP, port, sid a vždy bude hrát pouze vaše rádio.

Celí script přikládám ke stažení, stačí nahrát na váš web a začít ihned využívat. V případě nějakých dotazů mě kontaktujte pomocí podpory BeatZone.

Stáhnout: https://beatzone.cz/files/proxy_shoutcast.zip

Comments