Readme et supression des fichiers inutiles

This commit is contained in:
Gabriel Detraz 2017-06-12 02:03:44 +02:00
parent 44f7e5060f
commit 9fab89145e
4 changed files with 18 additions and 54 deletions

View File

@ -1,20 +1,18 @@
# Re2o # Portail captif
Gnu public license v2.0 Gnu public license v2.0
## Avant propos ## Avant propos
Re2o est un logiciel d'administration développé initiallement au rezometz. Il se veut agnostique au réseau considéré, de manière à être installable en quelques clics. Ce projet est forké à partir de re2o (https://gitlab.rezometz.org/rezo/re2o).
Ce portail minimaliste permet aux utilisateurs de s'identifier. Leurs mac sont capturées, et injectée dans une ipset qui leur donne accès à internet.
Il utilise le framework django avec python3. Il permet de gérer les adhérents, les machines, les factures, les droits d'accès, les switchs et la topologie du réseau.
De cette manière, il est possible de pluguer très facilement des services dessus, qui accèdent à la base de donnée en passant par django (ex : dhcp), en chargeant la liste de toutes les mac-ip, ou la liste des mac-ip autorisées sur le réseau (adhérent à jour de cotisation).
#Installation #Installation
## Installation des dépendances ## Installation des dépendances
L'installation comporte 3 partie : le serveur web où se trouve le depot portail_captif ainsi que toutes ses dépendances, le serveur bdd (mysql ou pgsql) et le serveur ldap. Ces 3 serveurs peuvent en réalité être la même machine, ou séparés (recommandé en production). L'installation comporte 2 parties : le serveur web où se trouve le depot portail_captif ainsi que toutes ses dépendances, et le serveur bdd (mysql ou pgsql). Ces 2 serveurs peuvent en réalité être la même machine, ou séparés (recommandé en production).
Le serveur web sera nommé serveur A, le serveur bdd serveur B et le serveur ldap serveur C. Le serveur web sera nommé serveur A, le serveur bdd serveur B .
### Prérequis sur le serveur A ### Prérequis sur le serveur A
@ -29,6 +27,10 @@ Paquets obligatoires:
* python3-django-reversion (stretch) * python3-django-reversion (stretch)
* python3-pip (jessie) * python3-pip (jessie)
Avec pip3 :
* django-bootstrap3
* django-macaddress
Paquet recommandés: Paquet recommandés:
* python3-django-extensions (jessie) * python3-django-extensions (jessie)
@ -37,15 +39,14 @@ Pour mysql, il faut installer :
* python3-mysqldb (jessie-backports) * python3-mysqldb (jessie-backports)
* mysql-client * mysql-client
Postgresql :
* psycopg2
### Prérequis sur le serveur B ### Prérequis sur le serveur B
Sur le serveur B, installer mysql ou postgresql, dans la version jessie ou stretch. Sur le serveur B, installer mysql ou postgresql, dans la version jessie ou stretch.
* mysql-server (jessie/stretch) ou postgresql (jessie-stretch) * mysql-server (jessie/stretch) ou postgresql (jessie-stretch)
### Prérequis sur le serveur C
Sur le serveur C (ldap), avec apt :
* slapd (jessie/stretch)
### Installation sur le serveur principal A ### Installation sur le serveur principal A
Cloner le dépot portail_captif à partir du gitlab, par exemple dans /var/www/portail_captif. Cloner le dépot portail_captif à partir du gitlab, par exemple dans /var/www/portail_captif.
@ -66,22 +67,6 @@ Voici les étapes à éxecuter pour mysql :
Si les serveurs A et B ne sont pas la même machine, il est nécessaire de remplacer localhost par l'ip avec laquelle A contacte B dans les commandes du dessus. Si les serveurs A et B ne sont pas la même machine, il est nécessaire de remplacer localhost par l'ip avec laquelle A contacte B dans les commandes du dessus.
Une fois ces commandes effectuées, ne pas oublier de vérifier que newuser et password sont présents dans settings_local.py Une fois ces commandes effectuées, ne pas oublier de vérifier que newuser et password sont présents dans settings_local.py
### Installation du serveur ldap sur le serveur C
Ceci se fait en plusieurs étapes :
* générer un login/mdp administrateur (par example mkpasswd sous debian)
* Copier depuis portail_captif/install_utils (dans le dépot portail_captif) les fichiers db.ldiff et schema.ldiff (normalement sur le serveur A) sur le serveur C (par ex dans /tmp)
* Hasher le mot de passe généré en utilisant la commande slappasswd (installée par slapd)
* Remplacer toutes les sections FILL_IN par le hash dans schema.ldiff et db.ldiff
* Remplacer dans schema.ldiff et db.ldiff 'dc=example,dc=org' par le suffixe de l'organisation
* Arréter slapd
* Supprimer les données existantes : '''rm -rf /etc/ldap/slapd.d/*''' et '''rm -rf /var/lib/ldap/*'''
* Injecter le nouveau schéma : '''slapadd -n 0 -l schema.ldiff -F /etc/ldap/slapd.d/''' et '''slapadd -n 1 -l db.ldiff'''
* Réparer les permissions (chown -R openldap:openldap /etc/ldap/slapd.d et chown -R openldap:openldap /var/lib/ldap) puis relancer slapd
Normalement le serveur ldap démare et est fonctionnel. Par défaut tls n'est pas activé, il faut pour cela modifier le schéma pour indiquer l'emplacement du certificat.
Pour visualiser et éditer le ldap, l'utilisation de shelldap est fortement recommandée, en utilisant en binddn cn=admin,dc=ldap,dc=example,dc=org et binddpw le mot de passe admin.
## Configuration initiale ## Configuration initiale
Normalement à cette étape, le ldap et la bdd sql sont configurées correctement. Normalement à cette étape, le ldap et la bdd sql sont configurées correctement.
@ -96,9 +81,14 @@ Pour apache2 :
* apt install apache2 * apt install apache2
* apt install libapache2-mod-wsgi-py3 (pour le module wsgi) * apt install libapache2-mod-wsgi-py3 (pour le module wsgi)
Un example de site apache2 se trouve dans install_utils ( portail_captif.conf)
portail_captif/wsgi.py permet de fonctionner avec apache2 en production portail_captif/wsgi.py permet de fonctionner avec apache2 en production
Pour nginx :
* apt install nginx
* apt install gunicorn3
Utilisez alors un site nginx qui proxifie vers une socket gunicorn. Ensuite, utilisez les fichier portail_captif.service et portail_captif.socket avec systemd pour lancer le sous process gunicorn, présents dans portail_captif/ .
## Configuration avancée ## Configuration avancée
Une fois démaré, le site web devrait être accessible. Une fois démaré, le site web devrait être accessible.
@ -106,24 +96,6 @@ Pour créer un premier user, faire '''python3 manage.py createsuperuser''' qui v
Il est conseillé de créer alors les droits cableur, bureau, trésorier et infra, qui n'existent pas par défaut dans le menu adhérents. Il est conseillé de créer alors les droits cableur, bureau, trésorier et infra, qui n'existent pas par défaut dans le menu adhérents.
Il est également conseillé de créer un user portant le nom de l'association/organisation, qui possedera l'ensemble des machines. Il est également conseillé de créer un user portant le nom de l'association/organisation, qui possedera l'ensemble des machines.
## Installations Optionnelles
### Générer le schéma des dépendances
Pour cela :
* apt install python3-django-extensions
* python3 manage.py graph_models -a -g -o portail_captif.png
# Fonctionnement interne
## Fonctionnement général
Re2o est séparé entre les models, qui sont visible sur le schéma des dépendances. Il s'agit en réalité des tables sql, et les fields etant les colonnes.
Ceci dit il n'est jamais nécessaire de toucher directement au sql, django procédant automatiquement à tout cela.
On crée donc différents models (user, right pour les droits des users, interfaces, IpList pour l'ensemble des adresses ip, etc)
Du coté des forms, il s'agit des formulaire d'édition des models. Il s'agit de ModelForms django, qui héritent des models très simplement, voir la documentation django models forms.
Enfin les views, générent les pages web à partir des forms et des templates.
# Requète en base de donnée # Requète en base de donnée
Pour avoir un shell, il suffit de lancer '''python3 manage.py shell''' Pour avoir un shell, il suffit de lancer '''python3 manage.py shell'''

1
ipset
View File

@ -1 +0,0 @@
add allowed_guests 01:89:98:99:89:99 -q restore

View File

@ -148,8 +148,3 @@ PAGINATION_NUMBER = 25
PAGINATION_LARGE_NUMBER = 8 PAGINATION_LARGE_NUMBER = 8
GENERIC_IPSET_COMMAND = "/sbin/ipset -q " GENERIC_IPSET_COMMAND = "/sbin/ipset -q "
GRAPH_MODELS = {
'all_applications': True,
'group_models': True,
}

View File

@ -1,2 +0,0 @@
django-bootstrap3
python-dateutil