diff options
Diffstat (limited to 'murmur-munin.py')
-rwxr-xr-x | murmur-munin.py | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/murmur-munin.py b/murmur-munin.py deleted file mode 100755 index 99846cd..0000000 --- a/murmur-munin.py +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -# -# munin-murmur.py - "murmur stats (User/Bans/Uptime/Channels)" script for munin. -# Copyright (c) 2014, Natenom / natenom@natenom.name -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the developer nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - - - -#Path to Murmur.ice -iceslice='/usr/share/Ice/slice/Murmur.ice' - -#Includepath for Ice, this is default for Debian -iceincludepath="/usr/share/Ice/slice" - -#Murmur-Port (not needed to work, only for display purposes) -serverport=64738 - -#Port where ice listen -iceport=6502 - -#Ice Password to get read access. -#If there is no such var in your murmur.ini, this can have any value. -#You can use the values of icesecret, icesecretread or icesecretwrite in your murmur.ini -icesecret="Ac8unPPK7u" - -#MessageSizeMax; increase this value, if you get a MemoryLimitException. -# Also check this value in murmur.ini of your Mumble-Server. -# This value is being interpreted in kibiBytes. -messagesizemax="65535" - -#Exclude names containing these keywords from being counted as users. -#Useful for excluding bots -exclude_keywords=["Delay","BBUBot","PeiPeiBot"] - -import Ice, sys -Ice.loadSlice("--all -I%s %s" % (iceincludepath, iceslice)) - -props = Ice.createProperties([]) -props.setProperty("Ice.MessageSizeMax", str(messagesizemax)) -props.setProperty("Ice.ImplicitContext", "Shared") -id = Ice.InitializationData() -id.properties = props - -ice = Ice.initialize(id) -ice.getImplicitContext().put("secret", icesecret) - -import Murmur - -if (sys.argv[1:]): - if (sys.argv[1] == "config"): - print 'graph_title Murmur (Port %s)' % (serverport) - print 'graph_vlabel Count' - print 'users.label Users' - print 'usersnotauth.label Users (Not authenticated)' - print 'uptime.label Uptime in days' - print 'chancount.label Channelcount' - print 'bancount.label Bans on server' - print "state.label Mumble server status" - print "version.label Mumble server version" - sys.exit(0) - - -try: - meta = Murmur.MetaPrx.checkedCast(ice.stringToProxy("Meta:tcp -h 127.0.0.1 -p %s" % (iceport))) -except Ice.ConnectionRefusedException: - if (sys.argv[1:]): - if (sys.argv[1] == "users"): - print "users.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "uptime"): - print "uptime.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "chancount"): - print "chancount.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "bancount"): - print "bancount.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "usersnotauth"): - print "usersnotauth.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "state"): - print "state.value 0" - ice.shutdown() - sys.exit(1) - elif (sys.argv[1] == "version"): - print "version.value 0" - ice.shutdown() - sys.exit(1) - - print "users.value 0" - print "uptime.value 0" - print "chancount.value 0" - print "bancount.value 0" - print "usersnotauth.value 0" - print "state.value 0" - print "version.value 0" - ice.shutdown() - sys.exit(1) - -try: - server=meta.getServer(1) -except Murmur.InvalidSecretException: - print 'Given icesecreatread password is wrong.' - ice.shutdown() - sys.exit(1) - -#count users -users=server.getUsers() - -#count the number of users to exclude -#also count not authenticated users (who are not excluded) -excludedusers=0 -usersnotauth=0 -exluded=False -for key in users.keys(): - for name_keyword in exclude_keywords: - if (name_keyword in users[key].name): - excludedusers+=1 - exluded=True - if (users[key].userid == -1 and not exluded): - usersnotauth+=1 - exluded=False - -#get the version number of the server -mumbleversion='' -dummy='' -# more argument parsing for individual stats -if (sys.argv[1:]): - if (sys.argv[1] == "users"): - print "users.value %i" % (len(users)-excludedusers) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "uptime"): - print "uptime.value %i" % (float(meta.getUptime())) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "chancount"): - print "chancount.value %i" % (len(server.getChannels())-1) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "bancount"): - print "bancount.value %i" % (len(server.getBans())) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "usersnotauth"): - print "usersnotauth.value %i" % (usersnotauth) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "state"): - print "state.value 1" - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "version"): - print "version.value %i.%i.%i" % (meta.getVersion()[0],meta.getVersion()[1],meta.getVersion()[2]) - ice.shutdown() - sys.exit(0) - elif (sys.argv[1] == "useronline" and len(sys.argv) > 2): - user_online_flag = False - for key in users.keys(): - if(sys.argv[2].lower() == users[key].name.lower()): - user_online_flag = True - if (user_online_flag): - print "useronline.value 1" - else: - print "useronline.value 0" - ice.shutdown() - sys.exit(0) - # TODO - -# if no command line argument is passed in -print "users.value %i" % (len(users)-excludedusers) -print "uptime.value %i" % (float(meta.getUptime())) -print "chancount.value %i" % (len(server.getChannels())-1) -print "bancount.value %i" % (len(server.getBans())) -print "usersnotauth.value %i" % (usersnotauth) -print "state.value 1" -print "version.value %i.%i.%i" % (meta.getVersion()[0],meta.getVersion()[1],meta.getVersion()[2]) - -ice.shutdown() |