Merge pull request #145 from Adarnof/ofrestapi

Openfire REST API
This commit is contained in:
Adarnof 2015-12-23 17:26:25 -05:00
commit bc8ec93f2b
3 changed files with 30 additions and 21 deletions

View File

@ -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")

View File

@ -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

View File

@ -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):