Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
<!--
// Mumble Viewer
// Copyright (C) 2008 Dominik Radner (aka Urmel)
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License (GPL) as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//Configuration can be made on Line 112ff.
-->
<html>
<head>
<title>Mumbleviewer</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style>
.div_channel {
margin: 0px;
padding: 0px;
position:relative; top:0px;
border-width: 0.1em;
border-style: hidden;
border-color: blue;
font-family: Tahoma,Helvetica;
font-size: 10px;
}
.div_player {
margin: 0px;
padding: 0px;
position:relative; top:0px;
border-width: 0.1em;
border-style: hidden;
border-color: red;
font-family: Tahoma,Helvetica;
font-size: 10px;
}
a:link {
color:black; text-decoration:none;
}
a:visited {
color:black; text-decoration:none;
}
a:active {
color:black; text-decoration:none;
}
a:hover {
color:black; text-decoration:underline
}
</style>
<script type="text/javascript">
IE4 = (document.all) ? 1 : 0;
IE8 = (document.all) ? 1 : 0;
NS6 = (document.getElementById) ? 1 : 0;
function set_Layer(layername){
theImage = layername;
if (document.images[theImage].src.match('mid2'))
{
document.images[theImage].src = './images/list_tree_mid3.gif';
}
else if (document.images[theImage].src.match('mid3'))
{
document.images[theImage].src = './images/list_tree_mid2.gif';
}
else if (document.images[theImage].src.match('end2'))
{
document.images[theImage].src = './images/list_tree_end3.gif';
}
else if (document.images[theImage].src.match('end3'))
{
document.images[theImage].src = './images/list_tree_end2.gif';
}
theLayer = layername;
if(IE4) {
theStatus = document.all(theLayer).style.display;
if (theStatus == 'none') {
document.all(theLayer).style.display = "inline"; }
else {
document.all(theLayer).style.display = "none";} }
if(NS6) {
theStatus = document.getElementById(theLayer).style.display;
if (theStatus == 'none') {
document.getElementById(theLayer).style.display = "inline"; }
else {
document.getElementById(theLayer).style.display = "none"; } } }
</script>
</head>
<body>
<?php
}
Ice_loadProfile();
// Configuration Start
// Set here your Server IP or DNS
$url='mumble://77.121.4.50:';
// Configuration End
function printmainchannel($channelobject,$url,$servername)
{
$channeldepth = 0;
$menustatus = array("1","1");
$channelobject->c->name = $servername;
echo "<a href=\"".$url."?version=1.2.0\">".$channelobject->c->name."</a><br>\n";
if (count($channelobject->children) + count($channelobject->users) > 0)
{
echo "<div class=div_channel id=div_channel_".$channelobject->c->id.">\n";
foreach ($channelobject->children as $children) {
printchannel($children,$channelobject->children[count($channelobject->children)-1]->c->id,$channeldepth+1,$menustatus,$url); }
foreach ($channelobject->users as $players) {
printplayers($players,$channelobject->users[count($channelobject->users)-1]->playerid,$channeldepth+1,$menustatus,$url); }
echo "</div>\n";
}
}
function printchannel($channelobject,$lastid,$channeldepth,$menustatus,$url)
{
$menustatus[$channeldepth] = 1;
if ($channelobject->c->id == $lastid)
{
$menustatus[$channeldepth] = 0;
}
$count = 1;
while($count < $channeldepth)
{
if ($menustatus[$count] == 0)
{
echo "<img border=0 src=./images/list_tree_space.gif>";
}
else
{
echo "<img border=0 src=./images/list_tree_line.gif>";
}
$count++;
}
if (count($channelobject->children) + count($channelobject->users) > 0)
{
if ($channelobject->c->id != $lastid)
{
$java=$channelobject->c->id;
echo "<a href=\"javascript:set_Layer('div_channel_".$channelobject->c->id."')\"><img border=0 name=div_channel_".$channelobject->c->id." src=./images/list_tree_mid2.gif></a>";
}
else
{
echo "<a href=\"javascript:set_Layer('div_channel_".$channelobject->c->id."')\"><img border=0 name=div_channel_".$channelobject->c->id." src=./images/list_tree_end2.gif></a>";
}
}
else {
if ($channelobject->c->id != $lastid)
{
echo "<img border=0 src=./images/list_tree_mid.gif>";
}
else
{
echo "<img border=0 src=./images/list_tree_end.gif>";
}
}
echo "<img border=0 src=./images/list_channel.gif>";
//echo "<a href=\"".$url."".str_replace(" ","%20",$channelobject->c->name)."\">".$channelobject->c->name."</a><br>\n";
echo "<a href=\"".$url."".str_replace(" ","%20",$channelobject->c->name)."/?version=1.2.0\">".$channelobject->c->name."</a><br>\n";
if (count($channelobject->children) + count($channelobject->users) > 0)
{
echo "<div class=div_channel id=div_channel_".$channelobject->c->id.">\n";
foreach ($channelobject->children as $children) {
printchannel($children,$channelobject->children[count($channelobject->children)-1]->c->id,$channeldepth+1,$menustatus,$url); }
foreach ($channelobject->users as $players) {
printplayers($players,$channelobject->users[count($channelobject->users)-1]->playerid,$channeldepth+1,$menustatus,$url); }
echo "</div>\n";
}
return $menustatus;
}
function printplayers($playerobject,$lastid,$channeldepth,$menustatus)
{
echo "<div class=div_player id=div_player>\n";
$menustatus[$channeldepth] = 1;
if ($channelobject->c->id == $lastid)
{
$menustatus[$channeldepth] = 0;
}
$count = 1;
while($count < $channeldepth)
{
if ($menustatus[$count] == 0)
{
echo "<img border=0 src=./images/list_tree_space.gif>";
}
else
{
echo "<img border=0 src=./images/list_tree_line.gif>";
}
$count++;
}
if ($playerobject->playerid == $lastid) echo "<img border=0 src=./images/list_tree_end.gif>";
else echo "<img border=0 src=./images/list_tree_mid.gif>";
echo "<img border=0 src=./images/list_player.gif>";
echo $playerobject->name;
if ($playerobject->playerid != -1)
{
echo "<img border=0 src=./images/player_auth.gif>";
}
if ($playerobject->mute)
{
echo "<img border=0 src=./images/player_unknown.gif>";
}
if ($playerobject->deaf)
{
echo "<img border=0 src=./images/player_unknown2.gif>";
}
if ($playerobject->suppressed)
{
echo "<img border=0 src=./images/player_suppressed.gif>";
}
if ($playerobject->selfMute)
{
echo "<img border=0 src=./images/player_selfmute.gif>";
}
if ($playerobject->selfDeaf)
{
echo "<img border=0 src=./images/player_selfdeaf.gif>";
}
echo "<br></div>\n";
return $menustatus;
}
$serverid = filter_input(INPUT_GET, 'serverid', FILTER_VALIDATE_INT);
try
{
$base = $ICE->stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502");
$meta = $base->ice_checkedCast("::Murmur::Meta");
$servers = $meta->getBootedServers();
$default = $meta->getDefaultConf();
if($serverid) {
$s = $meta->getServer(intval($serverid));
$port = $s->getConf('port');
if (! $port)
{
$port = $default['port']+$serverid -1;
}
$url = $url . $port . '/';
$name = $s->getConf("registername");
if (! $name) {
$name = $default["registername"];
}
$tree = $s->getTree();
echo "<div class=div_channel>\n";
printmainchannel($tree,$url,$name);
echo "</div>\n";
//Developers only!!!
// If you wanna see the entire Mumbletree Object uncomment the following line.
//print_r($tree);
}
else
{
$servers = $meta->getBootedServers();
foreach($servers as $s)
{
$tmp_url = $url;
$port = $s->getConf('port');
if (! $port)
{
$port = $default['port']+$s->id() - 1;;
}
$tmp_url = $url . $port . '/';
$name = $s->getConf("registername");
if (! $name)
{
$name = $default["registername"];
}
$tree = $s->getTree();
$players = $s->getUsers();
$totaluser=count($players);
echo "<div class=div_channel>\n";
echo 'User : '.$totaluser.'<br><hr>';
printmainchannel($tree,$tmp_url,$name);
echo "</div>\n";
foreach($servers as $s) {
$name = $s->getConf("registername");
if (! $name) {
$name = $default["registername"];
}
}
//Developers only!!!
// If you wanna see the entire Mumbletree Object uncomment the following line.
//print_r($tree);
}
}
}
catch (Ice_LocalException $ex)
{
print_r($ex);
}
?>
</body>
</html>