#!/usr/bin/php 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); } } 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); } function do_count() { global $ICE, $host, $port; $totalMaxUsers="U"; $totalConnectedUsers="U"; 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; } fwrite(STDOUT, "maxusers.value ".$totalMaxUsers."\n"); fwrite(STDOUT, "online.value ".$totalConnectedUsers."\n"); exit(0); } catch (Exception $e) { fwrite(STDERR, $e."\n"); exit(1); } } function countConnectedUsers($channelTree) { $count = intval(count($channelTree->users)); if (isset($channelTree->children)) { foreach ($channelTree->children as $c) { $count += countConnectedUsers($c); } } return $count; } ?>