mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-17 08:20:16 +02:00
Added jabber broadcast,
This commit is contained in:
parent
190947f18d
commit
7628941a2a
@ -17,6 +17,8 @@ Requirments:
|
||||
python-passlib
|
||||
python-evelink
|
||||
python-openfire
|
||||
python-xmpp
|
||||
python-dnspython
|
||||
|
||||
# Needed Apps
|
||||
rabbitmq
|
||||
|
@ -157,10 +157,15 @@ ALLIANCE_ID = '0'
|
||||
ALLIANCE_NAME = 'Somealliance'
|
||||
|
||||
# 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_SECRET_KEY = "somekey"
|
||||
|
||||
BROADCAST_USER = "broadcast@"+JABBER_URL
|
||||
BROADCAST_USER_PASSWORD = "somepassword"
|
||||
|
||||
# Mumble settings
|
||||
MUMBLE_SERVER_ID = 1
|
||||
|
||||
|
@ -49,6 +49,7 @@ urlpatterns = patterns('',
|
||||
|
||||
# Service Urls
|
||||
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
|
||||
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 time
|
||||
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 urlparse import urlparse
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
class JabberManager:
|
||||
|
||||
@ -77,4 +83,36 @@ class JabberManager:
|
||||
@staticmethod
|
||||
def delete_user_groups(username, groups):
|
||||
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_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
|
||||
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))
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.alliance_member')
|
||||
def activate_forum(request):
|
||||
|
@ -87,6 +87,12 @@
|
||||
</li>
|
||||
{% 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>
|
||||
</div>
|
||||
<!-- /.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():
|
||||
ct = ContentType.objects.get_for_model(User)
|
||||
stored_permission, created = Permission.objects.get_or_create(codename="group_management",
|
||||
content_type=ct, name="group_management")
|
||||
Permission.objects.get_or_create(codename="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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user