* Все права защищены. Не удаляйте этот копирайт. */ header("Content-Type: text/html;charset=utf-8"); include("config.php"); function getShoutcast1Stats( $ip, $port, $pass ){ $hostname = Array(); $connecttime = Array(); $useragent = Array(); $fp = @fsockopen( $ip, $port, $errno, $errstr, 30); if( $fp ){ fputs($fp,"GET /admin.cgi?pass=$pass&mode=viewxml HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n"); //get XML page $page = ""; while(!feof($fp)) { $page .= fgets($fp, 1000); } $m = Array(); //preg_match( "/\.*\<\/LISTENER\>/", $page, $m ); preg_match_all( "|(.*)|U", $page, $m ); if( count($m[1]) > 0 ){ for( $i = 0; $i < count($m[1]); $i++ ){ $hm_m = Array(); if( preg_match( "/\(.*?)\<\/HOSTNAME\>/", $m[1][$i], $hn_m ) ){ $ct_m = Array(); if( preg_match( "/\(.*?)\<\/CONNECTTIME\>/", $m[1][$i], $ct_m ) ){ $ua_m = Array(); if( preg_match( "/\(.*?)\<\/USERAGENT\>/", $m[1][$i], $ua_m ) ){ $hostname[] = $hn_m[1]; $connecttime[] = $ct_m[1]; $useragent[] = $ua_m[1]; } } } } } } else{ //print "Shoutcast connection error: ".$errstr; } @fclose($fp); return Array( $hostname, $connecttime, $useragent ); } function getIcecastStats( $ip, $port, $mount, $pass ){ $hostname = Array(); $connecttime = Array(); $useragent = Array(); $url = "http://admin:".$pass."@".$ip.":".$port."/admin/listclients?mount=".$mount; $page = strtolower(file_get_contents($url)); $listeners = new SimpleXMLElement($page); foreach ($listeners->source[0]->listener as $listener) { $hostname[] = $listener->ip; $connecttime[] = $listener->connected; $useragent[] = $listener->useragent; } return Array( $hostname, $connecttime, $useragent ); } $db = @mysql_connect( $db_host, $db_user, $db_pass ); if($db){ if( @mysql_select_db( $db_name, $db ) ){ // Получить админский пароль сервера $sql = "SELECT `s_type`,`ip_address`,`port`,`mount_point`,`password` FROM `main_channel` WHERE `server_id`=".$server_id." AND `active`"; $res = mysql_query( $sql ); $hostname = Array(); $connecttime = Array(); $useragent = Array(); if( $res && mysql_num_rows($res) > 0 ){ while ( $row=mysql_fetch_array($res) ){ $ip = $row[1]; $port = $row[2]; $mount = $row[3]; $pass = $row[4]; if( $row['s_type'] == "shoutcast1" ){ $r = getShoutcast1Stats( $ip, $port, $pass ); } else if( $row['s_type'] == "icecast" ){ $r = getIcecastStats( $ip, $port, $mount, $pass ); } else{ continue; } $hostname = array_merge( $hostname, $r[0] ); $connecttime = array_merge( $connecttime, $r[1] ); $useragent = array_merge( $useragent, $r[2] ); } } else{ die("Ошибка подключения к серверу."); } } else{ die("Ошибка соединения с базой данных."); } } else{ die("Ошибка соединения с базой данных."); } @mysql_close($db); ?>