Files
mumblepy/mumble/server.py

106 lines
2.5 KiB
Python

from .user import User
from .channel import Channel
class Server(object):
def __init__(self, meta, server):
self.id = server.id()
self.__meta = meta
self.__server = server
def __len__(self):
return
@property
def running(self):
return bool(self.__server.isRunning())
def start(self):
if not self.running:
return self.__server.start()
def stop(self):
if self.running:
return self.__server.stop()
def delete(self):
self.stop()
return self.__server.delete()
# Conf
def get_all_conf(self):
conf = self.__meta.get_default_conf()
conf.update(self.__server.getAllConf())
return conf
def get_conf(self, key):
return self.__server.getConf(key)
def set_conf(self, key, value):
return self.__server.setConf(key, value)
# Channels
def get_channels(self):
return [Channel(self, channel) for channel in self.__server.getChannels().values()]
def get_channel(self, channel_id):
channel = self.__server.getChannelState(channel_id)
if channel is None:
return None
return Channel(self, channel)
def get_channel_by_name(self, channel_name):
for channel in self.get_channels():
if channel.name == channel_name:
return channel
def set_channel_state(self, channel):
self.__server.setChannelState(channel)
def add_channel(self, name, parent=0):
channel_id = self.__server.addChannel(name, parent)
return self.get_channel(channel_id)
def remove_channel(self, channel_id):
self.__server.removeChannel(channel_id)
def send_channel_message(self, channel_id, text, tree=False):
self.__server.sendMessageChannel(channel_id, tree, text)
return True
# Users
def get_users(self):
return [User(self, user) for user in self.__server.getUsers().values()]
def get_user(self, session):
user = self.__server.getState(session)
if user is None:
return None
return User(self, user)
def kick_user(self, session, reason=''):
self.__server.kickUser(session, reason)
# Bans
def get_bans(self):
return self.__server.getBans()
def set_bans(self, bans):
self.__server.setBans(bans)
# Hooks
def add_hook(self, cls):
self.__meta.add_hook_to(self.__server, cls, self.id)
def remove_hook(self, cls, hook):
self.__meta.remove_hook_from(self.__server, cls, hook)