|
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($fhandle, 128);
}
// Verbindung beenden
fclose($fhandle);
// Daten und Header trennen
$pos = strpos($retr, "\r\n\r\n");
$header = substr($retr, 0, $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">¤ <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>¤ 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>¤ ".$stats***91;'icq'***93;."<br />";
printf("¤ Total Listeners: <b>%d</b><br />¤ Max Listeners: <b>%d</b><br />¤ 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>¤ <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>¤ <b>Offline</b></td></tr>";
}
?>
</td>
</tr>
<?php
}
?>
|