ОсновноеRadiotalkПользовательское
Технологии вещания, софт, скрипты
3   •   Посмотреть все темы

Получить список ip адресов слушателей

 

44
firefedot @firefedot
А вообще. может кому тоже пригодиться искать не ведомое))),, то много можно найти в исходниках.
Например, не мог найти, как получить id для Кика пользователя с точки. А на самом деле просто, может конечно кто знал, я не знал), но в исходниках. в папке src есть файл admin.c и там как раз есть все то что отображено в админке и там на строчке (примерно) 731

xmlNewChild(listenernode, NULL, XMLSTR("ID"), XMLSTR(buf));

От сюда получаем как правильно обратится к этой будущей переменной.
Так что, в исходниках можно найти все что нужно, главное искать не там. где светло, а там где надо)

А сам файл listclients.xsl пока оставил вида xml. как и писал выше


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" />
<xsl:template match = "/icestats" >
<icecast>
<xsl:for-each select="source">
<mount><xsl:value-of select="@mount" /></mount>
<xsl:choose>
<xsl:when test="listener">
<xsl:variable name = "themount"><xsl:value-of select="@mount" /></xsl:variable>
<xsl:for-each select="listener">
<users>
<id><xsl:value-of select="ID" /></id>
<ip><xsl:value-of select="IP" /></ip>
<username><xsl:if test="username">
(<xsl:value-of select="username" />)
</xsl:if></username>...............
<time><xsl:value-of select="Connected" /></time>
<client><xsl:value-of select="UserAgent" /></client>
</users>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</icecast>
</xsl:template>
</xsl:stylesheet>


А что бы кикать в файле обработчике, назову его так) сделал так (приведу весь файл. может кто поправит. как правильней и лучше сделать))


<?php
$url = 'http://admin:pass@10.0.0.1:8888/admin/listclients.xsl?mount=/home';

echo '<p>Список тех кто слушает</p>';
echo '<table id="select" border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>ip</th>';
echo '<th>Имя</th>';
echo '<th>Времени слушает</th>';
echo '<th>Действия</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';

$smpl_xml=simplexml_load_file($url);
$mount = $smpl_xml->mount;
echo "Точка вещания <b>".$mount."</b>";
foreach ($smpl_xml->users as $us){
$ip2=$us->ip;
$time2=(int)$us->time;
$id2=$us->id;
$time_hour= floor($time2/3600);
$time_all= date('i:s',$time2);
echo '<tr><td>'.$ip2.'</td><td>'.$us->username.'</td><td align="center">'.$time_hour.':'.$time_all.'</td><td><a href="http://10.0.0.1:8888/admin/killclient.xsl?mount=/home&amp;id='.$id2.'" >Отключить</a></td></tr>';
}
echo '</tbody>';
echo '</table>';



Конечно, надо все до конца облагородить переменными и получением точки вещания из админки ... но может и это пригодится кому. хотя не знаю, видимо таких извращенцев не много )))