mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-07 15:46:20 +01:00
Added IPBoard support
This commit is contained in:
125
services/managers/ipboard_manager.py
Executable file
125
services/managers/ipboard_manager.py
Executable file
@@ -0,0 +1,125 @@
|
||||
import os
|
||||
import xmlrpclib
|
||||
from hashlib import md5
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
class IPBoardManager:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def __santatize_username(username):
|
||||
sanatized = username.replace(" ", "_")
|
||||
sanatized = sanatized.replace("'", "")
|
||||
return sanatized.lower()
|
||||
|
||||
@staticmethod
|
||||
def __generate_random_pass():
|
||||
return os.urandom(8).encode('hex')
|
||||
|
||||
@staticmethod
|
||||
def exec_xmlrpc(func, **kwargs):
|
||||
""" Send a XMLRPC request """
|
||||
|
||||
server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False)
|
||||
params = {}
|
||||
for i in kwargs:
|
||||
params[i] = kwargs[i]
|
||||
params['api_key'] = settings.IPBOARD_APIKEY
|
||||
params['api_module'] = settings.IPBOARD_APIMODULE
|
||||
print params
|
||||
return getattr(server, func)(params)
|
||||
|
||||
@staticmethod
|
||||
def add_user(username, email):
|
||||
""" Add user to service """
|
||||
sanatized = str(IPBoardManager.__santatize_username(username))
|
||||
plain_password = IPBoardManager.__generate_random_pass()
|
||||
password = md5(plain_password).hexdigest()
|
||||
ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized, md5_passwordHash=password)
|
||||
return sanatized, plain_password
|
||||
|
||||
@staticmethod
|
||||
def delete_user(username):
|
||||
""" Delete user """
|
||||
ret = IPBoardManager.exec_xmlrpc('deleteUser', username=username)
|
||||
return username
|
||||
|
||||
@staticmethod
|
||||
def disable_user(username):
|
||||
""" Disable user """
|
||||
ret = IPBoardManager.exec_xmlrpc('disableUser', username=username)
|
||||
return username
|
||||
|
||||
@staticmethod
|
||||
def update_user(username, email, password):
|
||||
""" Add user to service """
|
||||
password = md5(password).hexdigest()
|
||||
ret = IPBoardManager.exec_xmlrpc('updateUser', username=username, email=email, md5_passwordHash=password)
|
||||
return username
|
||||
|
||||
@staticmethod
|
||||
def get_all_groups():
|
||||
groups = []
|
||||
ret = IPBoardManager.exec_xmlrpc('getAllGroups')
|
||||
for group in ret:
|
||||
groups.append(group["g_title"])
|
||||
return groups
|
||||
|
||||
@staticmethod
|
||||
def get_user_groups(username):
|
||||
groups = []
|
||||
ret = IPBoardManager.exec_xmlrpc('getUserGroups', username=username)
|
||||
for group in ret:
|
||||
groups.append(group["g_title"])
|
||||
return groups
|
||||
|
||||
@staticmethod
|
||||
def add_group(group):
|
||||
ret = IPBoardManager.exec_xmlrpc('addGroup', group=group)
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def add_user_to_group(username, group):
|
||||
ret = IPBoardManager.exec_xmlrpc('addUserToGroup', username=username, group=group)
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def remove_user_from_group(username, group):
|
||||
ret = IPBoardManager.exec_xmlrpc('removeUserFromGroup', username=username, group=group)
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def help_me():
|
||||
"Random help me"
|
||||
ret = IPBoardManager.exec_xmlrpc('helpMe')
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def update_groups(username, groups):
|
||||
|
||||
forum_groups = IPBoardManager.get_all_groups()
|
||||
user_groups = set(IPBoardManager.get_user_groups(username))
|
||||
act_groups = set([g.replace(' ', '-') for g in groups])
|
||||
addgroups = act_groups - user_groups
|
||||
remgroups = user_groups - act_groups
|
||||
|
||||
print addgroups
|
||||
print remgroups
|
||||
for g in addgroups:
|
||||
if not g in forum_groups:
|
||||
IPBoardManager.add_group(g)
|
||||
print username
|
||||
print g
|
||||
IPBoardManager.add_user_to_group(username, g)
|
||||
|
||||
for g in remgroups:
|
||||
IPBoardManager.remove_user_from_group(username, g)
|
||||
|
||||
@staticmethod
|
||||
def update_user_password(username, email):
|
||||
plain_password = IPBoardManager.__generate_random_pass()
|
||||
IPBoardManager.update_user(username, email, plain_password)
|
||||
return plain_password
|
||||
8
services/managers/jabber_manager.py → services/managers/openfire_manager.py
Normal file → Executable file
8
services/managers/jabber_manager.py → services/managers/openfire_manager.py
Normal file → Executable file
@@ -11,7 +11,7 @@ from openfire import UserService
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
|
||||
|
||||
class JabberManager:
|
||||
class OpenfireManager:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@@ -35,8 +35,8 @@ class JabberManager:
|
||||
def add_user(username):
|
||||
|
||||
try:
|
||||
sanatized_username = JabberManager.__santatize_username(username)
|
||||
password = JabberManager.__generate_random_pass()
|
||||
sanatized_username = OpenfireManager.__santatize_username(username)
|
||||
password = OpenfireManager.__generate_random_pass()
|
||||
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
|
||||
api.add_user(sanatized_username, password)
|
||||
|
||||
@@ -68,7 +68,7 @@ class JabberManager:
|
||||
@staticmethod
|
||||
def update_user_pass(username):
|
||||
try:
|
||||
password = JabberManager.__generate_random_pass()
|
||||
password = OpenfireManager.__generate_random_pass()
|
||||
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
|
||||
api.update_user(username, password)
|
||||
return password
|
||||
74
services/managers/forum_manager.py → services/managers/phpbb3_manager.py
Normal file → Executable file
74
services/managers/forum_manager.py → services/managers/phpbb3_manager.py
Normal file → Executable file
@@ -6,7 +6,7 @@ from passlib.apps import phpbb3_context
|
||||
from django.db import connections
|
||||
|
||||
|
||||
class ForumManager:
|
||||
class Phpbb3Manager:
|
||||
SQL_ADD_USER = r"INSERT INTO phpbb_users (username, username_clean, " \
|
||||
r"user_password, user_email, group_id, user_regdate, user_permissions, " \
|
||||
r"user_sig, user_occ, user_interests) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
@@ -52,7 +52,7 @@ class ForumManager:
|
||||
@staticmethod
|
||||
def __get_group_id(groupname):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_GET_GROUP_ID, [groupname])
|
||||
cursor.execute(Phpbb3Manager.SQL_GET_GROUP_ID, [groupname])
|
||||
row = cursor.fetchone()
|
||||
|
||||
return row[0]
|
||||
@@ -60,14 +60,14 @@ class ForumManager:
|
||||
@staticmethod
|
||||
def __get_user_id(username):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_USER_ID_FROM_USERNAME, [username])
|
||||
cursor.execute(Phpbb3Manager.SQL_USER_ID_FROM_USERNAME, [username])
|
||||
row = cursor.fetchone()
|
||||
return row[0]
|
||||
|
||||
@staticmethod
|
||||
def __get_all_groups():
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_GET_ALL_GROUPS)
|
||||
cursor.execute(Phpbb3Manager.SQL_GET_ALL_GROUPS)
|
||||
rows = cursor.fetchall()
|
||||
out = {}
|
||||
for row in rows:
|
||||
@@ -78,7 +78,7 @@ class ForumManager:
|
||||
@staticmethod
|
||||
def __get_user_groups(userid):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_GET_USER_GROUPS, [userid])
|
||||
cursor.execute(Phpbb3Manager.SQL_GET_USER_GROUPS, [userid])
|
||||
return [row[0] for row in cursor.fetchall()]
|
||||
|
||||
@staticmethod
|
||||
@@ -90,37 +90,37 @@ class ForumManager:
|
||||
@staticmethod
|
||||
def __create_group(groupname):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_ADD_GROUP, [groupname, groupname])
|
||||
return ForumManager.__get_group_id(groupname)
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_GROUP, [groupname, groupname])
|
||||
return Phpbb3Manager.__get_group_id(groupname)
|
||||
|
||||
@staticmethod
|
||||
def __add_user_to_group(userid, groupid):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
|
||||
|
||||
@staticmethod
|
||||
def __remove_user_from_group(userid, groupid):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
cursor.execute(ForumManager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
|
||||
@staticmethod
|
||||
def add_user(username, email, groups):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
|
||||
username_clean = ForumManager.__santatize_username(username)
|
||||
password = ForumManager.__generate_random_pass()
|
||||
pwhash = ForumManager.__gen_hash(password)
|
||||
username_clean = Phpbb3Manager.__santatize_username(username)
|
||||
password = Phpbb3Manager.__generate_random_pass()
|
||||
pwhash = Phpbb3Manager.__gen_hash(password)
|
||||
|
||||
# check if the username was simply revoked
|
||||
if ForumManager.check_user(username_clean):
|
||||
ForumManager.__update_user_info(username_clean, email, pwhash)
|
||||
if Phpbb3Manager.check_user(username_clean):
|
||||
Phpbb3Manager.__update_user_info(username_clean, email, pwhash)
|
||||
else:
|
||||
try:
|
||||
|
||||
cursor.execute(ForumManager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
|
||||
email, 2, ForumManager.__get_current_utc_date(),
|
||||
cursor.execute(Phpbb3Manager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
|
||||
email, 2, Phpbb3Manager.__get_current_utc_date(),
|
||||
"", "", "", ""])
|
||||
ForumManager.update_groups(username_clean, groups)
|
||||
Phpbb3Manager.update_groups(username_clean, groups)
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -130,11 +130,11 @@ class ForumManager:
|
||||
def disable_user(username):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
|
||||
password = ForumManager.__gen_hash(ForumManager.__generate_random_pass())
|
||||
password = Phpbb3Manager.__gen_hash(Phpbb3Manager.__generate_random_pass())
|
||||
revoke_email = "revoked@the99eve.com"
|
||||
try:
|
||||
pwhash = ForumManager.__gen_hash(password)
|
||||
cursor.execute(ForumManager.SQL_DIS_USER, [revoke_email, pwhash, username])
|
||||
pwhash = Phpbb3Manager.__gen_hash(password)
|
||||
cursor.execute(Phpbb3Manager.SQL_DIS_USER, [revoke_email, pwhash, username])
|
||||
return True
|
||||
except TypeError as e:
|
||||
print e
|
||||
@@ -144,16 +144,16 @@ class ForumManager:
|
||||
def delete_user(username):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
|
||||
if ForumManager.check_user(username):
|
||||
cursor.execute(ForumManager.SQL_DEL_USER, [username])
|
||||
if Phpbb3Manager.check_user(username):
|
||||
cursor.execute(Phpbb3Manager.SQL_DEL_USER, [username])
|
||||
return True
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def update_groups(username, groups):
|
||||
userid = ForumManager.__get_user_id(username)
|
||||
forum_groups = ForumManager.__get_all_groups()
|
||||
user_groups = set(ForumManager.__get_user_groups(userid))
|
||||
userid = Phpbb3Manager.__get_user_id(username)
|
||||
forum_groups = Phpbb3Manager.__get_all_groups()
|
||||
user_groups = set(Phpbb3Manager.__get_user_groups(userid))
|
||||
act_groups = set([g.replace(' ', '-') for g in groups])
|
||||
addgroups = act_groups - user_groups
|
||||
remgroups = user_groups - act_groups
|
||||
@@ -162,28 +162,28 @@ class ForumManager:
|
||||
print remgroups
|
||||
for g in addgroups:
|
||||
if not g in forum_groups:
|
||||
forum_groups[g] = ForumManager.__create_group(g)
|
||||
ForumManager.__add_user_to_group(userid, forum_groups[g])
|
||||
forum_groups[g] = Phpbb3Manager.__create_group(g)
|
||||
Phpbb3Manager.__add_user_to_group(userid, forum_groups[g])
|
||||
|
||||
for g in remgroups:
|
||||
ForumManager.__remove_user_from_group(userid, forum_groups[g])
|
||||
Phpbb3Manager.__remove_user_from_group(userid, forum_groups[g])
|
||||
|
||||
@staticmethod
|
||||
def remove_group(username, group):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
userid = ForumManager.__get_user_id(username)
|
||||
groupid = ForumManager.__get_group_id(group)
|
||||
userid = Phpbb3Manager.__get_user_id(username)
|
||||
groupid = Phpbb3Manager.__get_group_id(group)
|
||||
|
||||
if userid:
|
||||
if groupid:
|
||||
cursor.execute(ForumManager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
|
||||
|
||||
|
||||
@staticmethod
|
||||
def check_user(username):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
""" Check if the username exists """
|
||||
cursor.execute(ForumManager.SQL_USER_ID_FROM_USERNAME, [ForumManager.__santatize_username(username)])
|
||||
cursor.execute(Phpbb3Manager.SQL_USER_ID_FROM_USERNAME, [Phpbb3Manager.__santatize_username(username)])
|
||||
row = cursor.fetchone()
|
||||
if row:
|
||||
return True
|
||||
@@ -192,10 +192,10 @@ class ForumManager:
|
||||
@staticmethod
|
||||
def update_user_password(username):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
password = ForumManager.__generate_random_pass()
|
||||
if ForumManager.check_user(username):
|
||||
pwhash = ForumManager.__gen_hash(password)
|
||||
cursor.execute(ForumManager.SQL_UPDATE_USER_PASSWORD, [pwhash, username])
|
||||
password = Phpbb3Manager.__generate_random_pass()
|
||||
if Phpbb3Manager.check_user(username):
|
||||
pwhash = Phpbb3Manager.__gen_hash(password)
|
||||
cursor.execute(Phpbb3Manager.SQL_UPDATE_USER_PASSWORD, [pwhash, username])
|
||||
return password
|
||||
|
||||
return ""
|
||||
@@ -204,6 +204,6 @@ class ForumManager:
|
||||
def __update_user_info(username, email, password):
|
||||
cursor = connections['phpbb3'].cursor()
|
||||
try:
|
||||
cursor.execute(ForumManager.SQL_DIS_USER, [email, password, username])
|
||||
cursor.execute(Phpbb3Manager.SQL_DIS_USER, [email, password, username])
|
||||
except:
|
||||
pass
|
||||
Reference in New Issue
Block a user