mumble/scripts/testcallback.py
2009-07-12 15:51:47 +02:00

94 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8
import Ice, sys
Ice.loadSlice('Murmur.ice')
import Murmur
class MetaCallbackI(Murmur.MetaCallback):
def started(self, s, current=None):
print "started"
serverR=Murmur.ServerCallbackPrx.uncheckedCast(adapter.addWithUUID(ServerCallbackI(server, current.adapter)))
s.addCallback(serverR)
def stopped(self, s, current=None):
print "stopped"
class ServerCallbackI(Murmur.ServerCallback):
def __init__(self, server, adapter):
self.server = server
self.contextR=Murmur.ServerContextCallbackPrx.uncheckedCast(adapter.addWithUUID(ServerContextCallbackI(server)))
def userConnected(self, p, current=None):
print "connected"
print p
self.server.addContextCallback(p.session, "flubber", "Power up the T", self.contextR, Murmur.ContextChannel | Murmur.ContextUser)
if (self.server.hasPermission(p.session, 0, Murmur.PermissionWrite)):
print "Is a global admin"
def userDisconnected(self, p, current=None):
print "disconnected"
print p
def userStateChanged(self, p, current=None):
print "stateChanged"
print self.server
print p
def channelCreated(self, c, current=None):
print "created"
print c
def channelRemoved(self, c, current=None):
print "removed"
print c
def channelStateChanged(self, c, current=None):
print "stateChanged"
print c
class ServerContextCallbackI(Murmur.ServerContextCallback):
def __init__(self, server):
self.server = server
def contextAction(self, action, p, session, chanid, current=None):
print "aaand ACTION"
print action
print p
print session
print chanid
if (session != 0):
server.sendMessage(session, "Bouncy")
elif (chanid >= 0):
server.sendMessageChannel(chanid, 0, "Channel Bouncy")
if __name__ == "__main__":
global contextR
print "Creating callbacks...",
ice = Ice.initialize(sys.argv)
meta = Murmur.MetaPrx.checkedCast(ice.stringToProxy('Meta:tcp -h 127.0.0.1 -p 6502'))
adapter = ice.createObjectAdapterWithEndpoints("Callback.Client", "tcp -h 127.0.0.1")
metaR=Murmur.MetaCallbackPrx.uncheckedCast(adapter.addWithUUID(MetaCallbackI()))
adapter.activate()
meta.addCallback(metaR)
for server in meta.getBootedServers():
serverR=Murmur.ServerCallbackPrx.uncheckedCast(adapter.addWithUUID(ServerCallbackI(server, adapter)))
server.addCallback(serverR)
print "Done"
print 'Script running (press CTRL-C to abort)';
try:
ice.waitForShutdown()
except KeyboardInterrupt:
print 'CTRL-C caught, aborting'
meta.removeCallback(metaR)
ice.shutdown()
print "Goodbye"