diff --git a/app/api/handlers/v1.py b/app/api/handlers/v1.py index f401719..0676058 100644 --- a/app/api/handlers/v1.py +++ b/app/api/handlers/v1.py @@ -264,7 +264,9 @@ class AnnounceHandler(BaseHandler): def read(self, request): 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) subject = request.GET.get('subject', None) @@ -275,6 +277,6 @@ class AnnounceHandler(BaseHandler): return {'result': 'invalid'} 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'} diff --git a/app/sso/services/jabber/__init__.py b/app/sso/services/jabber/__init__.py index f957b1a..be473a8 100644 --- a/app/sso/services/jabber/__init__.py +++ b/app/sso/services/jabber/__init__.py @@ -162,23 +162,24 @@ class JabberService(BaseService): 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 = ['%s/announce/online' % server for server in self.settings['jabber_announce_servers']] - else: - dest = [] + dest = [] + if len(severs): + if 'all' in servers: + dest = ['%s/announce/all-hosts/online' % self.settings['jabber_server']] + else: + dest = ['%s/announce/online' % server for server in servers] - if len(users): - for u in set(users): - dest.append(u) + if len(users): + for u in set(users): + dest.append(u) - elif len(groups): - for g in groups: - dest.extend([x for x in self.get_group_members(server, g)]) - - dest = set(dest) + if len(groups): + for g in groups: + dest.extend([x for x in self.get_group_members(server, g)]) + dest = set(dest) if len(dest): return self.send_message(dest, message, subject) return False