mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-22 14:19:28 +00:00
Various work on services api and models
This commit is contained in:
@@ -1,4 +1,16 @@
|
||||
|
||||
def get_api(api):
|
||||
try:
|
||||
mod = __import__(self.service.api)
|
||||
except ImportError:
|
||||
raise DoesNotExist('Error creating service')
|
||||
|
||||
for i in self.service.api.spit(".")[1:]:
|
||||
mod = getattr(mod, i)
|
||||
|
||||
return getattr(mod, mod.ServiceClass)()
|
||||
|
||||
|
||||
class BaseService():
|
||||
"""
|
||||
Base Service class, all service classes should inherit from this
|
||||
|
||||
37
sso/services/jabber/__init__.py
Normal file
37
sso/services/jabber/__init__.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from sso.services import BaseService
|
||||
from sso.services.jabber.ejabberdctl import eJabberdCtl
|
||||
import settings
|
||||
|
||||
class JabberService(BaseService):
|
||||
|
||||
def __init__(self):
|
||||
self.ejctl = eJabberdCtl(sudo=settings.JABBER_SUDO)
|
||||
|
||||
def add_user(username, password):
|
||||
""" Add user to service """
|
||||
return self.ejctl.register(username, settings.JABBER_SERVER, password)
|
||||
|
||||
def set_corp(self, username):
|
||||
""" User is in corp, enable extra privs """
|
||||
return self.ejctl.srg_user_add(username, settings.JABBER_SERVER, settings.JABBER_GROUP)
|
||||
|
||||
def delete_user(self, username):
|
||||
""" Delete a user """
|
||||
return self.ejctl.unregister(username, settings.JABBER_SERVER)
|
||||
|
||||
def disable_user(self, username):
|
||||
""" Disable a user """
|
||||
return self.ejctl.ban_user(settings.JABBER_SERVER, username)
|
||||
|
||||
def enable_user(self, username):
|
||||
""" Enable a user """
|
||||
|
||||
|
||||
def check_user(self, username):
|
||||
""" Check if the username exists """
|
||||
if username not in self.ejctl.get_users(settings.JABBER_SERVER):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
ServiceClass = 'JabberService'
|
||||
@@ -12,21 +12,27 @@ class CommandError():
|
||||
class eJabberdCtl():
|
||||
""" Python abstraction of ejabberdctl """
|
||||
|
||||
def __init__(self, ejctl='/usr/sbin/ejabberdctl'):
|
||||
self.ejctl = ejctl
|
||||
def __init__(self, sudo=False, ejctl='/usr/sbin/ejabberdctl'):
|
||||
if sudo:
|
||||
self.ejctl = ['sudo',ejctl]
|
||||
else:
|
||||
self.ejctl = [ejctl]
|
||||
|
||||
def _execute(self, commandline):
|
||||
""" Execute a ejabberd command """
|
||||
|
||||
args = [self.ejctl]
|
||||
args = []
|
||||
args.extend(self.ejctl)
|
||||
args.extend(shlex.split(commandline))
|
||||
|
||||
print args
|
||||
|
||||
try:
|
||||
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
|
||||
proc.wait()
|
||||
out = proc.communicate()
|
||||
ret = proc.returncode
|
||||
print "%d: %s" % (ret, out)
|
||||
#print "%d: %s" % (ret, out)
|
||||
except OSError, e:
|
||||
raise CommandError('Error encountered during execution: %s' % e)
|
||||
if ret > 0:
|
||||
@@ -184,11 +190,10 @@ class eJabberdCtl():
|
||||
""" Gets a list of users for a specific vhost """
|
||||
|
||||
cmd = "vhost %s registered-users" % server
|
||||
|
||||
try:
|
||||
out = self._execute(cmd)
|
||||
except CommandError, e:
|
||||
return 0
|
||||
return []
|
||||
else:
|
||||
return out[:-1].split('\n')
|
||||
|
||||
@@ -218,7 +223,7 @@ class eJabberdCtl():
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
b = eJabberdCtl()
|
||||
b = eJabberdCtl(sudo=True)
|
||||
|
||||
print b.register('test88','dredd.it','bleh')
|
||||
print b.is_online('matalok', 'dredd.it')
|
||||
Reference in New Issue
Block a user