Merge pull request #71 from Kaezon/master

TS3 Manager Rewrite
This commit is contained in:
Adarnof 2015-11-05 23:18:06 -05:00
commit 740ebb3ad2
8 changed files with 113 additions and 45 deletions

2
.gitignore vendored
View File

@ -55,3 +55,5 @@ target/
.vagrant/
alliance_auth/settings.py
*Thumbs.db
nginx_config.txt

View File

@ -9,6 +9,8 @@ from services.managers.mumble_manager import MumbleManager
from services.managers.phpbb3_manager import Phpbb3Manager
from services.managers.ipboard_manager import IPBoardManager
from services.managers.teamspeak3_manager import Teamspeak3Manager
from services.models import AuthTS
from services.models import TSgroup
from authentication.models import AuthServicesInfo
from eveonline.managers import EveManager
from services.managers.eve_api_manager import EveApiManager
@ -48,8 +50,6 @@ def update_jabber_groups(user):
if len(groups) == 0:
groups.append('empty')
print groups
OpenfireManager.update_user_groups(authserviceinfo.jabber_username, authserviceinfo.jabber_password, groups)
@ -93,14 +93,15 @@ def update_ipboard_groups(user):
def update_teamspeak3_groups(user):
syncgroups = SyncGroupCache.objects.filter(user=user)
usergroups = user.groups.all()
authserviceinfo = AuthServicesInfo.objects.get(user=user)
groups = []
for syncgroup in syncgroups:
groups.append(str(syncgroup.groupname))
if len(groups) == 0:
groups.append('empty')
groups = {}
for usergroup in usergroups:
filtered_groups = AuthTS.objects.filter(auth_group=usergroup)
if filtered_groups:
for filtered_group in filtered_groups:
for ts_group in filtered_group.ts_group.all():
groups[ts_group.ts_group_name] = ts_group.ts_group_id
Teamspeak3Manager.update_groups(authserviceinfo.teamspeak3_uid, groups)
@ -129,9 +130,11 @@ def add_to_databases(user, groups, syncgroups):
if authserviceinfo:
authserviceinfo = AuthServicesInfo.objects.get(user=user)
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
update_teamspeak3_groups(user)
for group in groups:
if authserviceinfo.jabber_username and authserviceinfo.jabber_username != "":
if syncgroups.filter(groupname=group.name).filter(servicename="openfire").exists() is not True:
create_syncgroup_for_user(user, group.name, "openfire")
@ -148,10 +151,6 @@ def add_to_databases(user, groups, syncgroups):
if syncgroups.filter(groupname=group.name).filter(servicename="ipboard").exists() is not True:
create_syncgroup_for_user(user, group.name, "ipboard")
update_ipboard_groups(user)
if authserviceinfo.teamspeak3_uid and authserviceinfo.teamspeak3_uid != "":
if syncgroups.filter(groupname=group.name).filter(servicename="teamspeak3").exists() is not True:
create_syncgroup_for_user(user, group.name, "teamspeak3")
update_teamspeak3_groups(user)
def remove_from_databases(user, groups, syncgroups):
@ -190,6 +189,7 @@ def run_databaseUpdate():
for user in users:
groups = user.groups.all()
syncgroups = SyncGroupCache.objects.filter(user=user)
Teamspeak3Manager._sync_ts_group_db()
add_to_databases(user, groups, syncgroups)
remove_from_databases(user, groups, syncgroups)

View File

@ -7,7 +7,7 @@ xmpppy==0.5.0rc1
python-openfire==0.2.3-beta
# Django Stuff #
django==1.6.1
django==1.6.5
django-evolution
django-bootstrap-form
django-celery

View File

@ -1 +1,18 @@
# Register your models here.
from django.contrib import admin
from .models import AuthTS
from .models import TSgroup
from .models import UserTSgroup
class AuthTSgroupAdmin(admin.ModelAdmin):
fields = ['auth_group','ts_group']
filter_horizontal = ('ts_group',)
class TSgroupAdmin(admin.ModelAdmin):
fields = ['ts_group_name']
class UserTSgroupAdmin(admin.ModelAdmin):
fields = ['user','ts_group']
filter_horizontal = ('ts_group',)
admin.site.register(AuthTS, AuthTSgroupAdmin)
admin.site.register(TSgroup, TSgroupAdmin)

View File

@ -1,6 +1,7 @@
from django.conf import settings
from services.managers.util.ts3 import TS3Server
from services.models import TSgroup
class Teamspeak3Manager:
@ -93,30 +94,40 @@ class Teamspeak3Manager:
return outlist
@staticmethod
def _add_user_to_group(uid, groupname):
groupname = groupname[:30]
def _add_user_to_group(uid, groupid):
server = Teamspeak3Manager.__get_created_server()
server_groups = Teamspeak3Manager._group_list()
user_groups = Teamspeak3Manager._user_group_list(uid)
if not groupname in server_groups:
Teamspeak3Manager._create_group(groupname)
if not groupname in user_groups:
if not groupid in user_groups.values():
server.send_command('servergroupaddclient',
{'sgid': Teamspeak3Manager._group_id_by_name(groupname), 'cldbid': uid})
{'sgid': str(groupid), 'cldbid': uid})
@staticmethod
def _remove_user_from_group(uid, groupname):
groupname = groupname[:30]
def _remove_user_from_group(uid, groupid):
server = Teamspeak3Manager.__get_created_server()
server_groups = Teamspeak3Manager._group_list()
user_groups = Teamspeak3Manager._user_group_list(uid)
if groupname in server_groups:
Teamspeak3Manager._create_group(groupname)
if groupname in user_groups:
if str(groupid) in user_groups.values():
server.send_command('servergroupdelclient',
{'sgid': Teamspeak3Manager._group_id_by_name(groupname), 'cldbid': uid})
{'sgid': str(groupid), 'cldbid': uid})
@staticmethod
def _sync_ts_group_db():
remote_groups = Teamspeak3Manager._group_list()
local_groups = TSgroup.objects.all()
for key in remote_groups:
remote_groups[key] = int(remote_groups[key])
for group in local_groups:
if group.ts_group_id not in remote_groups.values():
TSgroup.objects.filter(ts_group_id=group.ts_group_id).delete()
for key in remote_groups:
g = TSgroup(ts_group_id=remote_groups[key],ts_group_name=key)
q = TSgroup.objects.filter(ts_group_id=g.ts_group_id)
if not q:
g.save()
@staticmethod
def add_user(username, corp_ticker):
@ -206,28 +217,26 @@ class Teamspeak3Manager:
return Teamspeak3Manager.add_blue_user(username, corpticker)
@staticmethod
def update_groups(uid, l_groups):
print uid
print l_groups
def update_groups(uid, ts_groups):
userid = Teamspeak3Manager._get_userid(uid)
addgroups = []
remgroups = []
if userid is not None:
server_groups = Teamspeak3Manager._group_list()
user_groups = set(Teamspeak3Manager._user_group_list(userid))
groups = []
for l_group in l_groups:
groups.append(l_group[:30])
act_groups = set([g.replace(' ', '-') for g in groups])
addgroups = act_groups - user_groups
remgroups = user_groups - act_groups
user_ts_groups = Teamspeak3Manager._user_group_list(userid)
for key in user_ts_groups:
user_ts_groups[key] = int(user_ts_groups[key])
for ts_group_key in ts_groups:
if ts_groups[ts_group_key] not in user_ts_groups.values():
addgroups.append(ts_groups[ts_group_key])
for user_ts_group_key in user_ts_groups:
if user_ts_groups[user_ts_group_key] not in ts_groups.values():
remgroups.append(user_ts_groups[user_ts_group_key])
print userid
print addgroups
print remgroups
for g in addgroups:
if not g in server_groups.keys():
Teamspeak3Manager._create_group(g)
Teamspeak3Manager._add_user_to_group(userid, g)
for g in remgroups:

View File

@ -1 +1,32 @@
# Create your models here.
from django.db import models
from django.contrib.auth.models import Group
class TSgroup(models.Model):
ts_group_id = models.IntegerField(primary_key=True)
ts_group_name = models.CharField(max_length=30)
class Meta:
verbose_name='TS Group'
def __str__(self):
return self.ts_group_name
class AuthTS(models.Model):
auth_group = models.ForeignKey('auth.Group')
ts_group = models.ManyToManyField(TSgroup)
class Meta:
verbose_name='Auth / TS Group'
def __str__(self):
return self.auth_group.name
class UserTSgroup(models.Model):
user = models.ForeignKey('auth.User')
ts_group = models.ManyToManyField(TSgroup)
class Meta:
verbose_name='User TS Group'
def __str__(self):
return self.user.name

Binary file not shown.

View File

@ -12,6 +12,15 @@ sudo apt-get -y install python-dev libyaml-dev libffi-dev
sudo apt-get -y install python-pip
sudo apt-get -y install mysql-server mysql-client
#Python 3 stuff
sudo apt-get -y install python-software-properties
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get -y update
sudo apt-get -y install python3.3
#virtualenv stuff
sudo apt-get -y install python-virtualenv
cd /vagrant/
sudo pip install --upgrade pip