mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-19 09:12:30 +02:00
Added jabber broadcast,
This commit is contained in:
parent
190947f18d
commit
7628941a2a
@ -17,6 +17,8 @@ Requirments:
|
|||||||
python-passlib
|
python-passlib
|
||||||
python-evelink
|
python-evelink
|
||||||
python-openfire
|
python-openfire
|
||||||
|
python-xmpp
|
||||||
|
python-dnspython
|
||||||
|
|
||||||
# Needed Apps
|
# Needed Apps
|
||||||
rabbitmq
|
rabbitmq
|
||||||
|
@ -157,10 +157,15 @@ ALLIANCE_ID = '0'
|
|||||||
ALLIANCE_NAME = 'Somealliance'
|
ALLIANCE_NAME = 'Somealliance'
|
||||||
|
|
||||||
# Jabber Prosody Info
|
# Jabber Prosody Info
|
||||||
JABBER_URL = "@someaddress.com"
|
JABBER_URL = "someaddress.com"
|
||||||
|
JABBER_PORT = 5223
|
||||||
|
JABBER_SERVER = "someadddress.com"
|
||||||
OPENFIRE_ADDRESS = "http://someaddress.com:9090/"
|
OPENFIRE_ADDRESS = "http://someaddress.com:9090/"
|
||||||
OPENFIRE_SECRET_KEY = "somekey"
|
OPENFIRE_SECRET_KEY = "somekey"
|
||||||
|
|
||||||
|
BROADCAST_USER = "broadcast@"+JABBER_URL
|
||||||
|
BROADCAST_USER_PASSWORD = "somepassword"
|
||||||
|
|
||||||
# Mumble settings
|
# Mumble settings
|
||||||
MUMBLE_SERVER_ID = 1
|
MUMBLE_SERVER_ID = 1
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ urlpatterns = patterns('',
|
|||||||
|
|
||||||
# Service Urls
|
# Service Urls
|
||||||
url(r'^services/', 'services.views.services_view', name='auth_services'),
|
url(r'^services/', 'services.views.services_view', name='auth_services'),
|
||||||
|
url(r'^serivces/jabber_broadcast/$', 'services.views.jabber_broadcast_view', name='auth_jabber_broadcast_view'),
|
||||||
|
|
||||||
# Forum Service Control
|
# Forum Service Control
|
||||||
url(r'^activate_forum/$', 'services.views.activate_forum', name='auth_activate_forum'),
|
url(r'^activate_forum/$', 'services.views.activate_forum', name='auth_activate_forum'),
|
||||||
|
11
services/forms.py
Normal file
11
services/forms.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from django import forms
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
|
||||||
|
|
||||||
|
class JabberBroadcastForm(forms.Form):
|
||||||
|
allchoices = []
|
||||||
|
allchoices.append(('all', 'all'))
|
||||||
|
for group in Group.objects.all():
|
||||||
|
allchoices.append((str(group.name), str(group.name)))
|
||||||
|
group = forms.ChoiceField(choices=allchoices, widget=forms.Select)
|
||||||
|
message = forms.CharField(widget = forms.Textarea)
|
@ -1,9 +1,15 @@
|
|||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
import xmpp
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from openfire import exception
|
from openfire import exception
|
||||||
from openfire import UserService
|
from openfire import UserService
|
||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
|
|
||||||
|
from authentication.managers import AuthServicesInfoManager
|
||||||
|
from eveonline.managers import EveManager
|
||||||
|
|
||||||
class JabberManager:
|
class JabberManager:
|
||||||
|
|
||||||
@ -77,4 +83,36 @@ class JabberManager:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def delete_user_groups(username, groups):
|
def delete_user_groups(username, groups):
|
||||||
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
|
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
|
||||||
api.delete_group(username,groups)
|
api.delete_group(username,groups)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def send_broadcast_message(group_name, message):
|
||||||
|
# create to address
|
||||||
|
client = xmpp.Client(settings.JABBER_URL)
|
||||||
|
client.connect(server=(settings.JABBER_SERVER, settings.JABBER_PORT))
|
||||||
|
client.auth(settings.BROADCAST_USER, settings.BROADCAST_USER_PASSWORD, 'broadcast')
|
||||||
|
|
||||||
|
if group_name != 'all':
|
||||||
|
group = Group.objects.get(name=group_name)
|
||||||
|
for user in group.user_set.all():
|
||||||
|
auth_info = AuthServicesInfoManager.get_auth_service_info(user)
|
||||||
|
if auth_info:
|
||||||
|
if auth_info.jabber_username != "":
|
||||||
|
to_address = auth_info.jabber_username+'@'+settings.JABBER_URL
|
||||||
|
message = xmpp.Message(to_address, message)
|
||||||
|
message.setAttr('type', 'chat')
|
||||||
|
client.send(message)
|
||||||
|
client.Process(1)
|
||||||
|
else:
|
||||||
|
for user in User.objects.all():
|
||||||
|
auth_info = AuthServicesInfoManager.get_auth_service_info(user)
|
||||||
|
if auth_info:
|
||||||
|
if auth_info.jabber_username != "":
|
||||||
|
to_address = auth_info.jabber_username+'@'+settings.JABBER_URL
|
||||||
|
message = xmpp.Message(to_address, message)
|
||||||
|
message.setAttr('type', 'chat')
|
||||||
|
client.send(message)
|
||||||
|
client.Process(1)
|
||||||
|
print to_address
|
||||||
|
|
||||||
|
client.disconnect()
|
@ -16,6 +16,24 @@ from celerytask.tasks import update_jabber_groups
|
|||||||
from celerytask.tasks import update_mumble_groups
|
from celerytask.tasks import update_mumble_groups
|
||||||
from celerytask.tasks import update_forum_groups
|
from celerytask.tasks import update_forum_groups
|
||||||
|
|
||||||
|
from forms import JabberBroadcastForm
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@permission_required('auth.jabber_broadcast')
|
||||||
|
def jabber_broadcast_view(request):
|
||||||
|
success = False
|
||||||
|
if request.method == 'POST':
|
||||||
|
form = JabberBroadcastForm(request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
JabberManager.send_broadcast_message(form.cleaned_data['group'], form.cleaned_data['message'])
|
||||||
|
success = True
|
||||||
|
else:
|
||||||
|
form = JabberBroadcastForm()
|
||||||
|
|
||||||
|
context = {'form': form, 'success': success}
|
||||||
|
return render_to_response('registered/jabberbroadcast.html', context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def services_view(request):
|
def services_view(request):
|
||||||
@ -23,6 +41,7 @@ def services_view(request):
|
|||||||
|
|
||||||
return render_to_response('registered/services.html', {'authinfo': authinfo}, context_instance=RequestContext(request))
|
return render_to_response('registered/services.html', {'authinfo': authinfo}, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@permission_required('auth.alliance_member')
|
@permission_required('auth.alliance_member')
|
||||||
def activate_forum(request):
|
def activate_forum(request):
|
||||||
|
@ -87,6 +87,12 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if perms.auth.jabber_broadcast %}
|
||||||
|
<li>
|
||||||
|
<a {% ifequal request.path "/serivces/jabber_broadcast/" %} class="active" {% endifequal %} href="{% url 'auth_jabber_broadcast_view' %}"><i class="fa fa-lock fa-bullhorn"></i> Jabber Broadcast</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.sidebar-collapse -->
|
<!-- /.sidebar-collapse -->
|
||||||
|
30
templates/registered/jabberbroadcast.html
Normal file
30
templates/registered/jabberbroadcast.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
|
||||||
|
{% block page_title %}Jabber Broadcast{% endblock page_title %}
|
||||||
|
{% block extra_css %}{% endblock extra_css %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<h1 class="page-header text-center">Jabber Broadcast</h1>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<div class="row">
|
||||||
|
{% if success %}
|
||||||
|
<div class="alert alert-success" role="alert">Broadcast Sent!!</div>
|
||||||
|
{% endif %}
|
||||||
|
<form class="form-signin" role="form" action="" method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
{{ form|bootstrap }}
|
||||||
|
<br/>
|
||||||
|
<button class="btn btn-lg btn-primary btn-block" type="submit">Broadcast</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -5,8 +5,8 @@ from django.contrib.auth.models import Permission
|
|||||||
|
|
||||||
def bootstrap_permissions():
|
def bootstrap_permissions():
|
||||||
ct = ContentType.objects.get_for_model(User)
|
ct = ContentType.objects.get_for_model(User)
|
||||||
stored_permission, created = Permission.objects.get_or_create(codename="group_management",
|
Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management")
|
||||||
content_type=ct, name="group_management")
|
Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast")
|
||||||
|
|
||||||
|
|
||||||
def add_member_permission(user, permission):
|
def add_member_permission(user, permission):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user