mirror of
				https://gitlab.crans.org/mediatek/med.git
				synced 2025-11-04 15:22:27 +01:00 
			
		
		
		
	Readme et supression des fichiers inutiles
This commit is contained in:
		
							
								
								
									
										64
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								README.md
									
									
									
									
									
								
							@@ -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'''
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,2 +0,0 @@
 | 
				
			|||||||
django-bootstrap3
 | 
					 | 
				
			||||||
python-dateutil
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user