Go Back   Winamp Forums > SHOUTcast > SHOUTcast Discussions

Reply
Thread Tools Search this Thread Display Modes
Old 12th April 2006, 03:12   #1
devinkray
Junior Member
 
Join Date: Apr 2006
Posts: 1
Grabbing the DJ's IP from the admin page

I have modded SHoutcast into my site.. and I can grab most any info i want via a script i have, Song title, listeners IP, and time connected, but i was wondering a way to have it also grab the DJ's IP address so i can have it live who it hosting, but that is not where the info is...in the XML so any way to grab the hosters IP?

here is the script maybe you will see what i mean by grabbing it...

PHP Code:
<?php
 
require_once('bittorrent.php');

class 
xml2Array {
    var 
$arrOutput = array();
    var 
$resParser;
    var 
$strXmlData;

    function 
parse($strInputXML)
    {
        
$this->resParser xml_parser_create ();
        
xml_set_object($this->resParser$this);
        
xml_set_element_handler($this->resParser"tagOpen""tagClosed");

        
xml_set_character_data_handler($this->resParser"tagData");

        
$this->strXmlData xml_parse($this->resParser$strInputXML);
        if (!
$this->strXmlData) {
            die(
sprintf("XML error: %s at line %d",
                    
xml_error_string(xml_get_error_code($this->resParser)),
                    
xml_get_current_line_number($this->resParser)));
        }

        
xml_parser_free($this->resParser);

        return 
$this->arrOutput;
    }
    function 
tagOpen($parser$name$attrs)
    {
        
$tag = array("name" => $name"attrs" => $attrs);
        
array_push($this->arrOutput$tag);
    }

    function 
tagData($parser$tagData)
    {
        if (
trim($tagData)) {
            if (isset(
$this->arrOutput***91;count($this->arrOutput)-1***93;***91;'tagData'***93;)) {
                
$this->arrOutput***91;count($this->arrOutput)-1***93;***91;'tagData'***93; .= $tagData;
            } else {
                
$this->arrOutput***91;count($this->arrOutput)-1***93;***91;'tagData'***93; = $tagData;
            }
        }
    }

    function 
tagClosed($parser$name)
    {
        
$this->arrOutput***91;count($this->arrOutput)-2***93;***91;'children'***93;***91;***93; = $this->arrOutput***91;count($this->arrOutput)-1***93;;
        
array_pop($this->arrOutput);
    }
}

// Simple HTTP-Anfragefunktion, um die Stats zu erhalten
// Funktioniert auch mit aktivem safe_mode
function get_http_data($URL$referrer "")
{
    
// Gibt die Daten der HTTP-Antwort zurück
    // URL zerlegen
    
if (!preg_match("/http\:\/\/((***91;\w\.\-***93;+)(\:(.+?))?@)?(***91;\w\.\-***93;+)\:?(\d*)(\/?\S*)/i"$URL$match)) return false;
    
// Verbinden
    
$cut 2;
    
$fhandle = @fsockopen($match***91;5***93;, ($match***91;6***93; > 0?$match***91;6***93;:80), &$errno, &$errstr$cut);

    if (!
$fhandle) {
        return 
false;
    } else {
        
$request "GET " . ($match***91;7***93; <> ""?$match***91;7***93;:"/") . " HTTP/1.0\r\n";
        
$request .= "Host: " $match***91;5***93; . "\r\n";
        if (
$referrer != "") {
            
$request .= "Referer: " $referrer "\r\n";
        }
        if (
$match***91;2***93; != "") {
            
$authstring base64_encode($match***91;2***93; . ":" $match***91;4***93;);
            
$request .= "Authorization: Basic " $authstring "\r\n";
        }
        
$request .= "Connection: close\r\nUser-Agent: Mozilla/5.0 (compatible;)\r\n\r\n";
        
// Request senden. HTTP 1.0 verwenden, um Chunked Encoding zu verhindern
        
fputs ($fhandle$request);

        
$retr "";
        while (!
feof($fhandle)) {
            
$retr .= fgets($fhandle128);
        }
        
// Verbindung beenden
        
fclose($fhandle);
        
// Daten und Header trennen
        
$pos strpos($retr"\r\n\r\n");
        
$header substr($retr0$pos 1);
        
$data substr($retr$pos 4);
        
// Daten und Header zurückgeben
        
return array("header" => $header"data" => $data);
    }
}

// Tag suchen und inkl. Kinder zurückgeben
function xmlarr_find_tag(&$array$tagname)
{
    foreach (
$array as $search) {
        if (
$search***91;"name"***93; == $tagname) {
            return 
$search;
        }
    }
    return 
false;
}

// Daten des aktuellen Tags zurückgeben
function xmlarr_get_tagdata(&$array$tagname)
{
    foreach (
$array as $search) {
        if (
$search***91;"name"***93; == $tagname) {
            return 
$search***91;"tagData"***93;;
        }
    }
    return 
false;
}

// Alle Shoutcast-Statistiken in ein einfach zu verwendendes Array kopieren
function get_sc_stats()
{
    
$URL "http://admin:password@";
    
$URL .= "kraytracker.com:8000/admin.cgi?mode=viewxml";
    
$retr get_http_data($URL);

    if (
$retr == FALSE)
        return 
FALSE;

    
$XMLParser = new xml2Array();
    
$array $XMLParser->parse($retr***91;"data"***93;);
    
$array xmlarr_find_tag($array"SHOUTCASTSERVER");
    
$array $array***91;"children"***93;;

    
$statsarr = array();

    
// Global stats
    
$statsarr***91;"currentlisteners"***93;  = xmlarr_get_tagdata($array"CURRENTLISTENERS");
    
$statsarr***91;"peaklisteners"***93;     = xmlarr_get_tagdata($array"PEAKLISTENERS");
    
$statsarr***91;"maxlisteners"***93;      = xmlarr_get_tagdata($array"MAXLISTENERS");
    
$statsarr***91;"reportedlisteners"***93; = xmlarr_get_tagdata($array"REPORTEDLISTENERS");
    
$statsarr***91;"averagetime"***93;       = xmlarr_get_tagdata($array"AVERAGETIME");
    
$statsarr***91;"servergenre"***93;       = xmlarr_get_tagdata($array"SERVERGENRE");
    
$statsarr***91;"serverurl"***93;         = xmlarr_get_tagdata($array"SERVERURL");
    
$statsarr***91;"servertitle"***93;       = xmlarr_get_tagdata($array"SERVERTITLE");
    
$statsarr***91;"songtitle"***93;         = xmlarr_get_tagdata($array"SONGTITLE");
    
$statsarr***91;"songurl"***93;           = xmlarr_get_tagdata($array"SONGURL");
    
$statsarr***91;"irc"***93;               = xmlarr_get_tagdata($array"IRC");
    
$statsarr***91;"icq"***93;               = xmlarr_get_tagdata($array"ICQ");
    
$statsarr***91;"aim"***93;               = xmlarr_get_tagdata($array"AIM");
    
$statsarr***91;"webhits"***93;           = xmlarr_get_tagdata($array"WEBHITS");
    
$statsarr***91;"streamhits"***93;        = xmlarr_get_tagdata($array"STREAMHITS");
    
$statsarr***91;"streamstatus"***93;      = xmlarr_get_tagdata($array"STREAMSTATUS");
    
$statsarr***91;"bitrate"***93;           = xmlarr_get_tagdata($array"BITRATE");
    
$statsarr***91;"content"***93;           = xmlarr_get_tagdata($array"CONTENT");
    
$statsarr***91;"version"***93;           = xmlarr_get_tagdata($array"VERSION");
   
// $statsarr***91;"connecttime"***93;          = xmlarr_get_tagdata($array, "CONNECTTIME");


    // Web stats
    
$webarray xmlarr_find_tag($array"WEBDATA");
    
$webarray $webarray***91;"children"***93;;
    
$statsarr***91;"webdata"***93;              = array();
    
$statsarr***91;"webdata"***93;***91;"index"***93;     = xmlarr_get_tagdata($webarray"INDEX");
    
$statsarr***91;"webdata"***93;***91;"listen"***93;    = xmlarr_get_tagdata($webarray"LISTEN");
    
$statsarr***91;"webdata"***93;***91;"palm7"***93;     = xmlarr_get_tagdata($webarray"PALM7");
    
$statsarr***91;"webdata"***93;***91;"login"***93;     = xmlarr_get_tagdata($webarray"LOGIN");
    
$statsarr***91;"webdata"***93;***91;"loginfail"***93; = xmlarr_get_tagdata($webarray"LOGINFAIL");
    
$statsarr***91;"webdata"***93;***91;"played"***93;    = xmlarr_get_tagdata($webarray"PLAYED");
    
$statsarr***91;"webdata"***93;***91;"cookie"***93;    = xmlarr_get_tagdata($webarray"COOKIE");
    
$statsarr***91;"webdata"***93;***91;"admin"***93;     = xmlarr_get_tagdata($webarray"ADMIN");
    
$statsarr***91;"webdata"***93;***91;"updinfo"***93;   = xmlarr_get_tagdata($webarray"UPDINFO");
    
$statsarr***91;"webdata"***93;***91;"kicksrc"***93;   = xmlarr_get_tagdata($webarray"KICKSRC");
    
$statsarr***91;"webdata"***93;***91;"kickdst"***93;   = xmlarr_get_tagdata($webarray"KICKDST");
    
$statsarr***91;"webdata"***93;***91;"unbandst"***93;  = xmlarr_get_tagdata($webarray"UNBANDST");
    
$statsarr***91;"webdata"***93;***91;"bandst"***93;    = xmlarr_get_tagdata($webarray"BANDST");
    
$statsarr***91;"webdata"***93;***91;"viewban"***93;   = xmlarr_get_tagdata($webarray"VIEWBAN");
    
$statsarr***91;"webdata"***93;***91;"unripdst"***93;  = xmlarr_get_tagdata($webarray"UNRIPDST");
    
$statsarr***91;"webdata"***93;***91;"ripdst"***93;    = xmlarr_get_tagdata($webarray"RIPDST");
    
$statsarr***91;"webdata"***93;***91;"viewrip"***93;   = xmlarr_get_tagdata($webarray"VIEWRIP");
    
$statsarr***91;"webdata"***93;***91;"viewxml"***93;   = xmlarr_get_tagdata($webarray"VIEWXML");
    
$statsarr***91;"webdata"***93;***91;"viewlog"***93;   = xmlarr_get_tagdata($webarray"VIEWLOG");
    
$statsarr***91;"webdata"***93;***91;"invalid"***93;   = xmlarr_get_tagdata($webarray"INVALID");

    
// Listener stats
    
$statsarr***91;"listeners"***93; = array();
    
$lstarray xmlarr_find_tag($array"LISTENERS");
    if (
is_array($lstarray)) {
        
$lstarray $lstarray***91;"children"***93;;
        for (
$I 0$I count($lstarray); $I++) {
            
$listener $lstarray***91;$I***93;***91;"children"***93;;
            
$listener_info = array();
            
$listener_info***91;"hostname"***93;    = xmlarr_get_tagdata($listener"HOSTNAME");
            
$listener_info***91;"useragent"***93;   = xmlarr_get_tagdata($listener"USERAGENT");
            
$listener_info***91;"underruns"***93;   = xmlarr_get_tagdata($listener"UNDERRUNS");
            
$listener_info***91;"connecttime"***93; = xmlarr_get_tagdata($listener"CONNECTTIME");
            
$listener_info***91;"pointer"***93;     = xmlarr_get_tagdata($listener"POINTER");
            
$listener_info***91;"uid"***93;         = xmlarr_get_tagdata($listener"UID");
            
array_push($statsarr***91;"listeners"***93;, $listener_info);
        }
    }

    
// Song history
    
$statsarr***91;"songhistory"***93; = array();
    
$songarray xmlarr_find_tag($array"SONGHISTORY");
    if (
is_array($songarray)) {
        
$songarray $songarray***91;"children"***93;;
        for (
$I 0$I count($songarray); $I++) {
            
$song $songarray***91;$I***93;***91;"children"***93;;
            
$song_info = array();
            
$song_info***91;"playedat"***93; = xmlarr_get_tagdata($song"PLAYEDAT");
            
$song_info***91;"title"***93;    = xmlarr_get_tagdata($song"TITLE");
            
array_push($statsarr***91;"songhistory"***93;, $song_info);
        }
    }

    return 
$statsarr;
}


// Radio-Infobox für den Tracker
function sc_infobox()
{
    
$stats get_sc_stats();
    if (
$stats == FALSE)
        return;


    if (
$stats***91;"streamstatus"***93; == 1) {
    
?>
<tr>
    <td class="tableb" colspan=2 align="left">&curren;&nbsp;<a class=altlink href="http://kraytracker.com:8000/listen.pls">Listen</a></td>
</tr>
<?php
$res 
mysql_query("SELECT * from users WHERE id = ".$stats***91;'icq'***93;."");
$arr mysql_fetch_assoc($res);

      echo 
"<tr><td colspan=2 class=tableb>&curren;&nbsp;Current DJ: <a class=altlink href=/userdetails.php?id=".$arr***91;'id'***93;.">".$arr***91;'username'***93;."</a><br />";
      
// echo "<tr><td colspan=2 class=tableb>&curren;&nbsp;".$stats***91;'icq'***93;."<br />";
                 
printf("&curren;&nbsp;Total Listeners: <b>%d</b><br />&curren;&nbsp;Max Listeners: <b>%d</b><br />&curren;&nbsp;Record: <b>%d</b>"$stats***91;"currentlisteners"***93;, $stats***91;"maxlisteners"***93;, $stats***91;"peaklisteners"***93;);
      echo 
"</td></tr> ";
        
?>

     <tr><td colspan=2 class=tableb>&curren;&nbsp;<b>Current Song:</b></td></tr>

                  <tr>
                    <td class=tableb valign="middle"><img src="/pic/song.png" width="16" height="16" alt=""></td>
                    <td class=tableb style="vertical-align:middle;text-align:left;"><?=htmlspecialchars($stats***91;"songtitle"***93;)?></td>
                  </tr>

        <?php
    
} else {
        echo 
"<tr><td class=tableb colspan=2>&curren;&nbsp;<b>Offline</b></td></tr>";
    }
    
?>

    </td>
  </tr>

<?php

}

?>
devinkray is offline   Reply With Quote
Reply
Go Back   Winamp Forums > SHOUTcast > SHOUTcast Discussions

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump