From a8819e19934cee14ffcb9c488639c17cf740631f Mon Sep 17 00:00:00 2001 From: DisasteR Date: Tue, 19 Apr 2011 09:52:09 +0200 Subject: [PATCH] Code cleanning/refactoring // Stats for root server and virtual servers --- plugins/other/murmur_ice_users | 341 +++++++++++++++++++-------------- 1 file changed, 193 insertions(+), 148 deletions(-) diff --git a/plugins/other/murmur_ice_users b/plugins/other/murmur_ice_users index da491184..ed97980d 100755 --- a/plugins/other/murmur_ice_users +++ b/plugins/other/murmur_ice_users @@ -1,185 +1,230 @@ #!/usr/bin/php 'mumble42' ); if (isset($_ENV['host'])) $host = $_ENV['host']; if (isset($_ENV['port'])) $port = $_ENV['port']; +if (isset($_ENV['IceProfile'])) $IceProfile = $_ENV['IceProfile']; +if (isset($_ENV['IceScret'])) $IceSecret = array( 'secret' => $_ENV['IceScret'] ); if (count($argv)==1) { - do_count(); -} + do_count(); + } switch ($argv[1]) -{ - case 'autoconf': - do_autoconf(); - break; + { + case 'autoconf': + do_autoconf(); + break; - case 'config': - do_config(); - break; + case 'config': + do_config(); + break; - default: - do_count(); - break; -} + default: + do_count(); + break; + } exit(1); +function IceConnect() +{ + global $ICE, $host, $port, $IceProfile, $IceSecret; + try + { + Ice_loadProfile($IceProfile); + $iceproxy = $ICE->stringToProxy("Meta:tcp -h $host -p $port"); + $metaServer = $iceproxy->ice_checkedCast("::Murmur::Meta")->ice_context($IceSecret); + } + catch (Exception $e) + { + fwrite(STDERR, $e."\n"); + exit(1); + } + return $metaServer; +} function do_autoconf() { - global $ICE, $host, $port; - try + $metaServer = null; + + $metaServer = IceConnect(); + if ($metaServer != null) + { + fwrite(STDOUT, "yes\n"); + exit(0); + } + fwrite(STDOUT, "no\n"); + exit(1); +} + +function do_config_header() +{ + fwrite(STDOUT, "graph_title Mumble Users\n"); + fwrite(STDOUT, "graph_vlabel Connected Users\n"); + fwrite(STDOUT, "graph_category VoIP\n"); + fwrite(STDOUT, "graph_info This graph shows the number of connected users on a murmur server\n"); + fwrite(STDOUT, "total_maxusers.label Maximum allowed users\n"); + fwrite(STDOUT, "total_maxusers.type GAUGE\n"); + fwrite(STDOUT, "total_online.label Connected users\n"); + fwrite(STDOUT, "total_online.type GAUGE\n"); +} + +function do_config_data() +{ + global $ICE, $IceSecret; + + try + { + $metaServer = IceConnect(); + $AdefaultConf = $metaServer->getDefaultConf(); + + $AvirtualServer = $metaServer->getAllServers(); + + foreach ($AvirtualServer as $numserver=>$s) { - Ice_loadProfile(); - $iceproxy = $ICE->stringToProxy("Meta:tcp -h $host -p $port"); - $metaServer = $iceproxy->ice_checkedCast("::Murmur::Meta"); - fwrite(STDOUT, "yes\n"); - exit(0); - } - catch (Exception $e) - { - fwrite(STDOUT, "no\n"); - exit(1); + $serverid = $s->ice_context($IceSecret)->id(); + $servename = $s->ice_context($IceSecret)->getConf( 'registername'); + $servename = preg_replace('/[^a-zA-Z0-9-#\$%&@\.+=§\/\\\]/', ' ', $servename); + $servename = trim(preg_replace('/\s+/', ' ', $servename)); + + fwrite(STDOUT, "vserver_".$serverid."_maxusers.label ".$servename." Max users\n"); + fwrite(STDOUT, "vserver_".$serverid."_maxusers.type GAUGE\n"); + fwrite(STDOUT, "vserver_".$serverid."_online.label ".$servename." Connected users\n"); + fwrite(STDOUT, "vserver_".$serverid."_online.type GAUGE\n"); } + exit(0); + } + catch (Exception $e) + { + fwrite(STDERR, $e."\n"); + exit(1); + } } function do_config() { - fwrite(STDOUT, "graph_title Mumble Users\n"); - fwrite(STDOUT, "graph_vlabel Connected Users\n"); - fwrite(STDOUT, "graph_category VoIP\n"); - fwrite(STDOUT, "graph_info This graph shows the number of connected users on a murmur server\n"); - fwrite(STDOUT, "maxusers.label Maximum number of users allowed\n"); - fwrite(STDOUT, "maxusers.type GAUGE\n"); - fwrite(STDOUT, "online.label connected users\n"); - fwrite(STDOUT, "online.type GAUGE\n"); - exit(0); + do_config_header(); + do_config_data(); + exit(0); } function do_count() { - global $ICE, $host, $port; - - $totalMaxUsers="U"; - $totalConnectedUsers="U"; + global $ICE, $IceSecret; - try - { - Ice_loadProfile(); - $iceproxy = $ICE->stringToProxy("Meta:tcp -h $host -p $port"); - $metaServer = $iceproxy->ice_checkedCast("::Murmur::Meta"); - $AdefaultConf = $metaServer->getDefaultConf(); - - $AvirtualServer = $metaServer->getBootedServers(); - - $totalMaxUsers = 0; - foreach ($AvirtualServer as $numserver=>$s) - { - $maxusers = $s->getConf('users'); - if (!$maxusers) $maxusers = $AdefaultConf['users']; - $totalMaxUsers += intval($maxusers); - - $tree = $s->getTree(); - //print_r($tree); - $connectedUsers = countConnectedUsers($s->getTree()); - $totalConnectedUsers += $connectedUsers; - } - + $totalMaxUsers="0"; + $totalConnectedUsers="0"; - fwrite(STDOUT, "maxusers.value ".$totalMaxUsers."\n"); - fwrite(STDOUT, "online.value ".$totalConnectedUsers."\n"); - exit(0); - } - catch (Exception $e) - { - fwrite(STDERR, $e."\n"); - exit(1); - } -} + try + { + $metaServer = IceConnect(); + $AdefaultConf = $metaServer->getDefaultConf(); + + $AvirtualServer = $metaServer->getAllServers(); -function countConnectedUsers($channelTree) -{ - $count = intval(count($channelTree->users)); - - if (isset($channelTree->children)) + foreach ($AvirtualServer as $numserver=>$s) { - foreach ($channelTree->children as $c) - { - $count += countConnectedUsers($c); - } + $maxusers = $s->ice_context($IceSecret)->getConf( 'users' ); + if (!$maxusers) $maxusers = $AdefaultConf['users']; + $totalMaxUsers += intval($maxusers); + + if ($s->ice_context( $IceSecret )->isRunning()) + { + $connectedUsers = count($s->ice_context($IceSecret)->getUsers()); + $totalConnectedUsers += intval($connectedUsers); + } + else + $connectedUsers = 0; + + $serverid = $s->ice_context($IceSecret)->id(); + + fwrite(STDOUT, "vserver_".$serverid."_maxusers.value ".$maxusers."\n"); + fwrite(STDOUT, "vserver_".$serverid."_online.value ".$connectedUsers."\n"); } - - return $count; + + fwrite(STDOUT, "total_maxusers.value ".$totalMaxUsers."\n"); + fwrite(STDOUT, "total_online.value ".$totalConnectedUsers."\n"); + exit(0); + } + catch (Exception $e) + { + fwrite(STDERR, $e."\n"); + exit(1); + } } ?> \ No newline at end of file