You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Maël Kervella 67b492b17d Pip requirements for dev are in a separate file 6 years ago
api Fix testing of cotisations.Cotisation objects 6 years ago
cotisations Revert "Fix les erreurs d'affichage lors du paiement" 6 years ago
docs_utils Graph re2o sources dia (archi) 7 years ago
freeradius_utils Fix freeradius compatibility. 6 years ago
install_utils Add token authentication with expiration of tokens 6 years ago
logs Factorisation des décorateurs ACL dans les vues. Fix #121 6 years ago
machines Add DNS info per zone endpoint 6 years ago
preferences Revert "Fix du AESEncryptedField" 6 years ago
re2o API: Add tests 6 years ago
search Take locale datetime formats into account in help text 6 years ago
static Gere mieux l'affichage du menu dropdown sur les petits ecrans 6 years ago
templates Add CTRL+K and CTRL+L shortcuts 6 years ago
test_utils Add tests for details of instances of every models 6 years ago
topologie Merge branch 'graph_topo' into 'master' 6 years ago
users Fix ldap testing 6 years ago
.gitignore Stockage en BDD des identifiants comnpay. 6 years ago
.gitlab-ci.yml Update .gitlab-ci.yml 6 years ago
CHANGELOG.md Fix ldap testing 6 years ago
LICENSE Add license file (GPLv2) 7 years ago
README.md Update changelog and readme 6 years ago
apt_requirements.txt Fix #127 and remove duplicate migration 6 years ago
install_re2o.sh Utilise des fichiers de requirements 6 years ago
manage.py initial comit 8 years ago
pip_dev_requirements.txt Pip requirements for dev are in a separate file 6 years ago
pip_requirements.txt Pip requirements for dev are in a separate file 6 years ago

README.md

Re2o

Gnu public license v2.0

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.

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

Un tutoriel pour installer le projet est disponible sur le wiki.

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 re2o.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.

Fonctionnement avec les services

Les services dhcp.py, dns.py etc accèdent aux données via des vues rest. Celles-ci se trouvent dans machines/views.py. Elles sont générées via machines/serializers.py qui génère les vues. IL s'agit de vues en json utilisées par re2o-tools pour récupérer les données. Il est nécessaire de créer un user dans re2o avec le droit serveur qui permet d'accéder à ces vues, utilisé par re2o-tools.

Requète en base de donnée

Pour avoir un shell, il suffit de lancer '''python3 manage.py shell''' Pour charger des objets, example avec User, faire : ''' from users.models import User''' Pour charger les objets django, il suffit de faire User.objects.all() pour tous les users par exemple. Il est ensuite aisé de faire des requètes, par exemple User.objects.filter(pseudo='test') Des exemples et la documentation complète sur les requètes django sont disponible sur le site officiel.