- It contains all dependencies
- The X.org setup lives in ``xorg_sentry/``
+Dependencies
+------------
+
+Dependencies are listed in the ``requirements.txt`` file.
+Install them with::
+
+ pip install -r requirements.txt
+
+Under Debian, you should use the following packages:
+- python-dev
+
.. _Sentry: http://sentry.readthedocs.org/
--- /dev/null
+#!/usr/bin/env python
+
+import os.path
+import site
+import sys
+
+root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
+config = os.path.join(root, 'xorg_sentry', 'conf.py')
+
+site.addsitedir(os.path.join(root, 'venv', 'lib', 'python2.6', 'site-packages'))
+sys.path.insert(0, root)
+
+from sentry.utils import runner
+
+sys.argv.insert(1, "--config=%s" % config)
+
+runner.main()
+
--- /dev/null
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: xorg-sentry
+# Required-Start: $local_fs $remote_fs $network $syslog
+# Required-Stop: $local_fs $remote_fs $network $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: starts the xorg-sentry server
+# Description: starts xorg-sentry using start-stop-daemon
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/home/web/sentry/bin/xorg-sentry
+NAME=xorg-sentry
+DESC=xorg-sentry
+USER=web
+
+# Include xorg-sentry defaults if available
+if [ -f /etc/default/xorg-sentry ]; then
+ . /etc/default/xorg-sentry
+fi
+
+test -x $DAEMON || exit 0
+
+set -e
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --chuid $USER --quiet --pidfile /var/run/$NAME.pid \
+ --background --exec $DAEMON -- start $DAEMON_OPTS || true
+ echo "$NAME."
+ ;;
+
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON || true
+ echo "$NAME."
+ ;;
+
+ restart|force-reload)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON || true
+ sleep 1
+ start-stop-daemon --start --chuid $USER --quiet --pidfile \
+ /var/run/$NAME.pid --background --exec $DAEMON -- $DAEMON_OPTS || true
+ echo "$NAME."
+ ;;
+
+ status)
+ status_of_proc -p /var/run/$NAME.pid "$DAEMON" xorg-sentry && exit 0 || exit $?
+ ;;
+ *)
+ echo "Usage: $NAME {start|stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
sentry
+django_authgroupex
EXCLUDED_APPS = ('djcelery', 'kombu.transport.django', 'social_auth', 'django_social_auth_trello')
INSTALLED_APPS = tuple(app for app in INSTALLED_APPS if app not in EXCLUDED_APPS)
-AUTHENTICATION_BACKENDS = (
- 'sentry.utils.auth.EmailAuthBackend',
-)
-
TEMPLATE_CONTEXT_PROCESSORS = tuple(
tcp for tcp in TEMPLATE_CONTEXT_PROCESSORS if 'social_auth' not in tcp)
def get_password(filename):
with open(os.path.join(CONF_ROOT, 'private', filename)) as f:
- return f.readline()
+ return f.readline().strip()
# Actual configuration
# ====================
+AUTHENTICATION_BACKENDS = (
+ #'sentry.utils.auth.EmailAuthBackend',
+ 'django_authgroupex.auth.AuthGroupeXBackend',
+)
+
DATABASES = {
'default': {
# You can swap out the engine for MySQL easily by changing this value
}
}
+INSTALLED_APPS = (
+ 'django_authgroupex',
+ 'xorg_sentry',
+) + INSTALLED_APPS
+
+ROOT_URLCONF = 'xorg_sentry.urls'
+
SENTRY_KEY = get_password('secret_key')
# Set this to false to require authentication
EMAIL_PORT = 25
EMAIL_USE_TLS = False
+
+AUTHGROUPEX_KEY = get_password('authgroupex_key')
+AUTHGROUPEX_SUPERADMIN_PERMS = ('admin',)
+AUTHGROUPEX_STAFF_PERMS = ('admin',)
+AUTHGROUPEX_RETURN_URL = 'https://errors.polytechnique.org/xorgauth/'
+AUTHGROUPEX_FIELDS = ('username', 'firstname', 'lastname', 'perms')
--- /dev/null
+{% extends "sentry/layout.html" %}
+{% load i18n %}
+{% load url from future %}
+{% block title %}{% trans "Login" %} | {{ block.super }}{% endblock %}
+
+{% block main %}
+ <section class="body">
+ {% if next %}
+ <p class="alert alert-info">{% trans "Please login to continue." %}</p>
+ {% endif %}
+
+ <div class="row">
+ <div class="span6">
+ <a class="btn btn-primary" href="{% url 'authgroupex:login' %}">Connexion via X.org</a>
+ </div>
+ </div>
+ </section>
+{% endblock %}
--- /dev/null
+from django.conf.urls.defaults import patterns, url, include
+from sentry.conf.urls import handler404, handler500
+from sentry.conf.urls import urlpatterns as sentry_urlpatterns
+
+
+urlpatterns = patterns('',
+ url(r'^xorgauth/', include('django_authgroupex.urls', namespace='authgroupex')),
+ url(r'^login/', 'xorg_sentry.views.login', name='xlogin'),
+) + sentry_urlpatterns
--- /dev/null
+
+from django.shortcuts import render
+from django.views.decorators.cache import never_cache
+from sentry.web.helpers import render_to_response
+
+@never_cache
+def login(request):
+ return render(request, 'xorg_sentry/login.html')