mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-15 07:12:16 +00:00
Jabber Service module now adds people to group rosters when added
This commit is contained in:
@@ -27,13 +27,20 @@ class JabberService(BaseService):
|
|||||||
if 'character' in kwargs:
|
if 'character' in kwargs:
|
||||||
self.exec_xmlrpc('set_nickname', user=username, host=self.settings['jabber_server'], nickname=kwargs['character'].name)
|
self.exec_xmlrpc('set_nickname', user=username, host=self.settings['jabber_server'], nickname=kwargs['character'].name)
|
||||||
self.exec_xmlrpc('set_vcard2', user=username, host=self.settings['jabber_server'], name='ORG', subname='ORGNAME', content=kwargs['character'].corporation.name)
|
self.exec_xmlrpc('set_vcard2', user=username, host=self.settings['jabber_server'], name='ORG', subname='ORGNAME', content=kwargs['character'].corporation.name)
|
||||||
return "%s@%s" % (username, self.settings['jabber_server'])
|
uid = "%s@%s" % (username, self.settings['jabber_server'])
|
||||||
|
if 'user' in kwargs:
|
||||||
|
self.update_groups(uid, kwargs['user'].groups.all())
|
||||||
|
return uid
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def delete_user(self, uid):
|
def delete_user(self, uid):
|
||||||
""" Delete a user """
|
""" Delete a user """
|
||||||
username, server = uid.split("@")
|
username, server = uid.split("@")
|
||||||
|
|
||||||
|
for group in self.get_group_list(uid):
|
||||||
|
self.exec_xmlrpc('srg_user_del', user=username, host=server, group=group, grouphost=server)
|
||||||
|
|
||||||
res = self.exec_xmlrpc('unregister', user=username, host=server)
|
res = self.exec_xmlrpc('unregister', user=username, host=server)
|
||||||
if res['res'] == 0:
|
if res['res'] == 0:
|
||||||
return True
|
return True
|
||||||
@@ -70,4 +77,31 @@ class JabberService(BaseService):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def get_group_list(self, uid):
|
||||||
|
grouplist = []
|
||||||
|
username, server = uid.split("@")
|
||||||
|
srvgrp = self.exec_xmlrpc('srg_list', host=server)
|
||||||
|
for grp in srvgrp['groups']:
|
||||||
|
members = self.exec_xmlrpc('srg_list', group=grp['id'], host=server)
|
||||||
|
members = map(lambda x: x['member'], members['members'])
|
||||||
|
if uid in members:
|
||||||
|
grouplist.append(grp['id'])
|
||||||
|
|
||||||
|
return grouplist
|
||||||
|
|
||||||
|
def update_groups(self, uid, groups):
|
||||||
|
username, server = uid.split("@")
|
||||||
|
|
||||||
|
current_groups = self.get_group_list(uid)
|
||||||
|
valid_groups = []
|
||||||
|
|
||||||
|
for group in groups:
|
||||||
|
groupname = group.name.lower().replace(' ', '-')
|
||||||
|
self.exec_xmlrpc('srg_create', group=groupname, host=server, name=group.name, description='', display='all')
|
||||||
|
self.exec_xmlrpc('srg_user_add', user=username, host=server, group=groupname, grouphost=server)
|
||||||
|
valid_groups.append(groupname)
|
||||||
|
|
||||||
|
for group in (set(current_groups) - set(valid_groups)):
|
||||||
|
self.exec_xmlrpc('srg_user_del', user=username, host=server, group=groupname, grouphost=server)
|
||||||
|
|
||||||
ServiceClass = 'JabberService'
|
ServiceClass = 'JabberService'
|
||||||
|
|||||||
Reference in New Issue
Block a user