Asta e tot scriptul de autentificare , dar merge ca naiba
<?
$db_hostname = 'localhost';
$db_login = 'xxx';
$db_password = 'xxxx';
$db_database = 'xxx_db';
$db_tablename = 'auth';
$db_username_field = 'username';
$db_password_field = 'password';
$db_timefield = 'timestamp';
$sc_host = 'xxxxx.ro';
$sc_port = 'xxxx';
$time_out = '30';
set_time_limit(0);
ignore_user_abort();
register_shutdown_function("afara");
function afara() {
global
$shutdown_flag,$db_tablename,$db_timefield,$db_username_field,$PHP_AUTH_USER
;
$shutdown_flag=1;
@mysql_query("UPDATE $db_tablename SET $db_timefield=0 WHERE
$db_username_field='$PHP_AUTH_USER'");
@fclose($sp);
}
if (!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate: Basic realm=\"Autentificare WEBcast Media Radio
Station\"");
header("HTTP/1.0 401 Neautorizat");
echo "Acest serviciu necesita utilizator/parola.\n";
exit;
}
[EMAIL PROTECTED]($db_hostname, $db_login, $db_password) or die("Cannot
connect to authentication database to verify login.");
@mysql_select_db($db_database) or die("Unable to select database
$db_database.\n");
$query="SELECT $db_timefield AS lastupdate FROM $db_tablename WHERE
$db_username_field='$PHP_AUTH_USER' AND $db_password_field='$PHP_AUTH_PW'";
$matches=0;
$lastupdate=0;
[EMAIL PROTECTED]($query);
if([EMAIL PROTECTED]($res)) {
$lastupdate=$obj->lastupdate;
$matches=mysql_num_rows($res);
}
if(!$matches) {
header("WWW-Authenticate: Basic realm=\"Autentificare WEBcast Media Radio
Station\"");
header("HTTP/1.0 401 Neautorizat");
echo "Acest serviciu necesita utilizator/parola.\n";
exit;
}
if(time()-$lastupdate<600) {
header("ICY 404 Acest cont este deja utilizat. Asteptati 10 minute si
apoi incercati din nou.");
exit("Acest cont este deja utilizat. Asteptati 10 minute si apoi
incercati din nou.");
}
$sp = fsockopen($sc_host, $sc_port, &$errno, &$errstr, &$time_out);
if (!$sp) exit("Nu ma pot conecta la serverul WEBcast Media.\n");
//set_socket_blocking($sp,false);
fwrite($sp,"GET / HTTP/1.0\nUser-Agent:WEBcast Media Protected Radio
Station\nicy-metadata:1\n\n");
$sockack=0;
for ($i=0; $i<120; $i++) {
if (feof($sp)) break;
$str.=fread($sp,4096);
usleep(200000);
if (strpos($str,"\r\n\r\n")) break;
}
if(strpos($str,"\r\n\r\n")===false) exit("Nu ma pot conecta la stream-ul
serverului WEBcast Media.\n");
else {
$head=substr($str,0,strpos($str,"\r\n\r\n"));
$head=eregi_replace("ICY 200 OK\r\n","",$head);
header($head);
}
flush();
echo substr($str,strpos($str,"\r\n\r\n")+4);
flush();
while(!$shutdown_flag) {
$buf=fread($sp,4096);
if (feof($sp)) $shutdown_flag=1;
echo $buf;
flush();
usleep(75000);
if(time()-$lasttime>300) {
@mysql_query("UPDATE $db_tablename SET $db_timefield=".time()." WHERE
$db_username_field='$PHP_AUTH_USER'");
$lasttime=time();
}
}
?>