More flexable broadcasting, broken by server/group/user on the api level

This commit is contained in:
2011-11-15 23:15:55 +00:00
parent 5c954394bb
commit 23421d561b
2 changed files with 18 additions and 15 deletions

View File

@@ -264,7 +264,9 @@ class AnnounceHandler(BaseHandler):
def read(self, request): def read(self, request):
sid = request.GET.get('sid', None) sid = request.GET.get('sid', None)
to = request.GET.getlist('to') users = request.GET.getlist('users')
groups = request.GET.getlist('groups')
servers = request.GET.getlist('servers')
message = request.GET.get('message', None) message = request.GET.get('message', None)
subject = request.GET.get('subject', None) subject = request.GET.get('subject', None)
@@ -275,6 +277,6 @@ class AnnounceHandler(BaseHandler):
return {'result': 'invalid'} return {'result': 'invalid'}
api = srv.api_class api = srv.api_class
return {'result': api.announce(api.settings['jabber_server'], message, subject, groups=to)} return {'result': api.announce(api.settings['jabber_server'], message, subject, users=users, groups=groups, servers=servers) }
return {'result': 'invalid'} return {'result': 'invalid'}

View File

@@ -162,23 +162,24 @@ class JabberService(BaseService):
return resp.read().strip()[:2] == 'OK' return resp.read().strip()[:2] == 'OK'
def announce(self, server, message, subject=None, users=[], groups=[]): def announce(self, server, message, subject=None, users=[], groups=[], servers=[]):
if 'all' in groups: dest = []
dest = ['%s/announce/online' % server for server in self.settings['jabber_announce_servers']] if len(severs):
else: if 'all' in servers:
dest = [] dest = ['%s/announce/all-hosts/online' % self.settings['jabber_server']]
else:
dest = ['%s/announce/online' % server for server in servers]
if len(users): if len(users):
for u in set(users): for u in set(users):
dest.append(u) dest.append(u)
elif len(groups): if len(groups):
for g in groups: for g in groups:
dest.extend([x for x in self.get_group_members(server, g)]) dest.extend([x for x in self.get_group_members(server, g)])
dest = set(dest)
dest = set(dest)
if len(dest): if len(dest):
return self.send_message(dest, message, subject) return self.send_message(dest, message, subject)
return False return False