mirror of
https://github.com/nikdoof/mumblepy.git
synced 2025-12-17 11:49:23 +00:00
143 lines
3.5 KiB
Python
143 lines
3.5 KiB
Python
import time
|
|
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)
|
|
|
|
# ACLs
|
|
|
|
def get_acls(self, channel_id):
|
|
acls, groups, inherit = self.__server.getACL(channel_id)
|
|
return acls
|
|
|
|
# Groups
|
|
|
|
def get_groups(self, channel_id):
|
|
acls, groups, inherit = self.__server.getACL(channel_id)
|
|
return groups
|
|
|
|
# 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=''):
|
|
return self.__server.kickUser(session, reason)
|
|
|
|
def send_user_message(self, session_id, text):
|
|
return self.__server.sendMessage(session_id, text)
|
|
|
|
def set_user_state(self, state):
|
|
return self.__server.setState(state)
|
|
|
|
def get_registrations(self, filter=''):
|
|
return self.__server.getRegistedUsers(filter)
|
|
|
|
def get_registration(self, user_id):
|
|
return self.__server.getRegistration(user_id)
|
|
|
|
# Bans
|
|
|
|
def get_bans(self):
|
|
return self.__server.getBans()
|
|
|
|
def set_bans(self, bans):
|
|
self.__server.setBans(bans)
|
|
|
|
def add_ban(self, address, reason='', bits=128, duration=360):
|
|
from Murmur import Ban
|
|
bans = self.get_bans()
|
|
bans.append(Ban(
|
|
reason=reason,
|
|
bits=bits,
|
|
duration=duration,
|
|
start=int(time.time()),
|
|
address=address,
|
|
))
|
|
self.set_bans(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) |