diff --git a/alliance_auth/settings.py.example b/alliance_auth/settings.py.example index dda3f3bc..67535b05 100755 --- a/alliance_auth/settings.py.example +++ b/alliance_auth/settings.py.example @@ -304,7 +304,7 @@ IPBOARD_APIMODULE = 'aa' JABBER_URL = os.environ.get('AA_JABBER_URL', "yourdomain.com") JABBER_PORT = int(os.environ.get('AA_JABBER_PORT', '5223')) JABBER_SERVER = os.environ.get('AA_JABBER_SERVER', "yourdomain.com") -OPENFIRE_ADDRESS = os.environ.get('AA_OPENFIRE_ADDRESS', "http://yourdomain.com:9090/") +OPENFIRE_ADDRESS = os.environ.get('AA_OPENFIRE_ADDRESS', "http://yourdomain.com:9090") OPENFIRE_SECRET_KEY = os.environ.get('AA_OPENFIRE_SECRET_KEY', "somekey") BROADCAST_USER = os.environ.get('AA_BROADCAST_USER', "broadcast@") + JABBER_URL BROADCAST_USER_PASSWORD = os.environ.get('AA_BROADCAST_USER_PASSWORD', "somepassword") diff --git a/requirements.txt b/requirements.txt index c8b8ddcd..f3a24ba3 100755 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,6 @@ evelink dnspython passlib xmpppy==0.5.0rc1 -python-openfire==0.2.3-beta requests # Django Stuff # @@ -15,3 +14,4 @@ django-bootstrap-form django-celery git+git://github.com/nikdoof/python-ts3.git +git+git://github.com/seamus-45/openfire-restapi.git diff --git a/services/managers/openfire_manager.py b/services/managers/openfire_manager.py index 29d4fa73..aea8bdf2 100755 --- a/services/managers/openfire_manager.py +++ b/services/managers/openfire_manager.py @@ -5,12 +5,9 @@ import xmpp from django.contrib.auth.models import User from django.contrib.auth.models import Group from django.conf import settings -from openfire import exception -from openfire import UserService - -from authentication.managers import AuthServicesInfoManager - import threading +from ofrestapi.users import Users as ofUsers +from ofrestapi import exception class OpenfireManager: @@ -44,7 +41,7 @@ class OpenfireManager: try: sanatized_username = OpenfireManager.__santatize_username(username) password = OpenfireManager.__generate_random_pass() - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) api.add_user(sanatized_username, password) except exception.UserAlreadyExistsException: @@ -56,7 +53,7 @@ class OpenfireManager: @staticmethod def delete_user(username): try: - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) api.delete_user(username) return True except exception.UserNotFoundException: @@ -64,37 +61,49 @@ class OpenfireManager: @staticmethod def lock_user(username): - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) api.lock_user(username) @staticmethod def unlock_user(username): - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) api.unlock_user(username) @staticmethod def update_user_pass(username): try: password = OpenfireManager.__generate_random_pass() - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) - api.update_user(username, password) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api.update_user(username, password=password) return password except exception.UserNotFoundException: return "" @staticmethod def update_user_groups(username, password, groups): - try: - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) - api.update_user(username, password, "", "", groups) - except exception.HTTPException as e: - print e - + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + response = api.get_user_groups(username) + remote_groups = [] + if response: + remote_groups = response['groupname'] + add_groups = [] + del_groups = [] + for g in groups: + if not g in remote_groups: + add_groups.append(g) + for g in remote_groups: + if not g in groups: + del_groups.append(g) + if add_groups: + api.add_user_groups(username, add_groups) + if del_groups: + api.delete_user_groups(username, del_groups) + @staticmethod def delete_user_groups(username, groups): - api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) - api.delete_group(username, groups) + api = ofUsers(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY) + api.delete_user_groups(username, groups) @staticmethod def send_broadcast_message(group_name, broadcast_message):