SUNLAB - Enregistrement, Authentification & Accès électronique : Différence entre versions
Ligne 42 : | Ligne 42 : | ||
Lien du git: [[https://github.com/ThomasGsp/sunlab|https://github.com/ThomasGsp/sunlab]] | Lien du git: [[https://github.com/ThomasGsp/sunlab|https://github.com/ThomasGsp/sunlab]] | ||
− | + | '''Le code est divisé en quatre grande parties:''' | |
+ | * Le "common", le code sert de base fonctionnelle aux trois autres. | ||
+ | * La partie "door", comprenant le code spécifique pour la porte. | ||
+ | * La partie "nfc", pour le nfc. | ||
+ | * La partie "register" pour l'enregistrement de présence. | ||
− | + | '''Afin d'accélérer le développement, le code est basé sur plusieurs tierces parties:''' | |
− | + | * PHPMailer pour l'envoi des email. | |
− | + | * Bootstrap pour le CSS/HTML. | |
− | + | * PHP-Login pour la base php/js/mysql ( [[https://github.com/fethica/PHP-Login/tree/master/login|https://github.com/fethica/PHP-Login/tree/master/login]] ). | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}} | }} | ||
{{Tuto Step | {{Tuto Step | ||
Ligne 68 : | Ligne 66 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Stack web: apache2, php, mysql | |Step_Title=Stack web: apache2, php, mysql | ||
− | |Step_Content= | + | |Step_Content='''Installation des paquets debian pour squeeze/Debian 8''' |
− | + | apt-get install apache2 mysql-server php5 libapache2-mod-php5 php-curl php5-ldap php5-mysql | |
− | apt-get install apache2 mysql-server php5 libapache2-mod-php5 php-curl php5-ldap php5-mysql | ||
− | + | '''Installation des paquets debian pour stretch/Debian 9.1''' | |
− | apt install mariadb-server apache2 php libapache2-mod-php php-ldap php-mysql | + | apt install mariadb-server apache2 php libapache2-mod-php php-ldap php-mysql |
− | + | '''Configuration sécurité apache:''' | |
vi /etc/apache2/conf-enabled/security.conf | vi /etc/apache2/conf-enabled/security.conf | ||
− | ServerTokens Prod | + | ServerTokens Prod |
− | ServerSignature Off | + | ServerSignature Off |
− | + | '''VHOST apache:''' | |
vi /etc/apache2/sites-available/sunlab.conf | vi /etc/apache2/sites-available/sunlab.conf | ||
− | <VirtualHost *:80> | + | <VirtualHost *:80> |
ServerName porte.sunlab.org | ServerName porte.sunlab.org | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 92 : | Ligne 89 : | ||
ErrorLog ${APACHE_LOG_DIR}/porte_error.log | ErrorLog ${APACHE_LOG_DIR}/porte_error.log | ||
CustomLog ${APACHE_LOG_DIR}/porte_access.log combined | CustomLog ${APACHE_LOG_DIR}/porte_access.log combined | ||
− | </VirtualHost> | + | </VirtualHost> |
− | <VirtualHost *:80> | + | <VirtualHost *:80> |
ServerName presence.sunlab.org | ServerName presence.sunlab.org | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 103 : | Ligne 100 : | ||
ErrorLog ${APACHE_LOG_DIR}/presence_error.log | ErrorLog ${APACHE_LOG_DIR}/presence_error.log | ||
CustomLog ${APACHE_LOG_DIR}/presence_access.log combined | CustomLog ${APACHE_LOG_DIR}/presence_access.log combined | ||
− | </VirtualHost> | + | </VirtualHost> |
− | <VirtualHost *:80> | + | <VirtualHost *:80> |
ServerName nfc.sunlab.org | ServerName nfc.sunlab.org | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
Ligne 114 : | Ligne 111 : | ||
ErrorLog ${APACHE_LOG_DIR}/nfc_error.log | ErrorLog ${APACHE_LOG_DIR}/nfc_error.log | ||
CustomLog ${APACHE_LOG_DIR}/nfc_access.log combined | CustomLog ${APACHE_LOG_DIR}/nfc_access.log combined | ||
− | </VirtualHost> | + | </VirtualHost> |
− | + | '''Configuration MYSQL:''' | |
− | + | Se connecter à mysql, créer une base avec un utilisateur associé: | |
− | CREATE DATABASE sunlab; | + | CREATE DATABASE sunlab; |
− | CREATE USER 'sunlab'@'localhost' IDENTIFIED BY 'definir_ici_un_mot_de_passe'; | + | CREATE USER 'sunlab'@'localhost' IDENTIFIED BY 'definir_ici_un_mot_de_passe'; |
− | GRANT ALL PRIVILEGES ON sunlab.* TO 'sunlab'@'localhost'; | + | GRANT ALL PRIVILEGES ON sunlab.* TO 'sunlab'@'localhost'; |
− | FLUSH PRIVILEGES; | + | FLUSH PRIVILEGES; |
− | + | Le schéma de la base est disponible dans SUNLAB/DOC/DATABASE.sql | |
− | |||
'''Restaurer la base à partir de fichiers physiques :''' | '''Restaurer la base à partir de fichiers physiques :''' |
Version du 11 avril 2018 à 16:23
Une Technique de dans les catégories Électronique. Dernière modification le 15/10/2019 par Baudouard.
Mise en place d'ouverture de porte par accès portail web.
Introduction
Dans ce tutoriel nous allons voir deux sujets : - Service d'authentification de la porte du Sunlab. - Service d'enregistrement de présence au Sunlab.
Afin de suivre correctement ce tutoriel, il est nécessaire d'avoir des connaissances au moins basiques dans les domaines suivants: Linux, Programmation & électronique. Je ne vais pas rentrer dans les détails de certaines parties.
La majorité des opérations doivent être réalisés sur votre Raspberry-pi. Notamment la partie compilation des codes et programmes C qui ne fonctionneront pas s'ils sont compilés sous une architecture x68/x64 et déplacés sur ARM… Une partie des codes sources sont déjà disponibles compilés pour ARM dans le dépôt git.
Liste des matériaux
- Electro-aimants (de porte)
- Boitier plastique
- Connecteurs
- Fils electrique
- Raspberry (équipé)
- Relais 2A (5/12v commande)
Liste des outils
Liste des technologies
- Dév web: PHP / CSS / HTML / Javascript
- Dév système: C
- Hardware: Raspberry py, NFC reader
- Base de données: MYSQL / LDAP
- Système : Linux (debian), Apache2
- Gestion du code: Git
Etape n°1 - Fonctionnement et architecture du code
L'intégralité du code est géré sous GIT, vous pouvez contribuer directement en effectuant des demandes de merge.
Lien du git: [[1]]
Le code est divisé en quatre grande parties:
- Le "common", le code sert de base fonctionnelle aux trois autres.
- La partie "door", comprenant le code spécifique pour la porte.
- La partie "nfc", pour le nfc.
- La partie "register" pour l'enregistrement de présence.
Afin d'accélérer le développement, le code est basé sur plusieurs tierces parties:
- PHPMailer pour l'envoi des email.
- Bootstrap pour le CSS/HTML.
- PHP-Login pour la base php/js/mysql ( [[2]] ).
Etape n°2 - Hardware
- Un raspberry pi équipé (alimentation, carte SD, boitier).
- Un lecteur NFC compatible (type: [[3]]
- Tablette tactile (optionnel)
Etape n°3 - Installation et configuration
- Préparer une installation propre de Raspbian sur un Raspberry
- Installer les suites de logiciels suivants avec les configurations associés
Etape n°4 - Stack web: apache2, php, mysql
Installation des paquets debian pour squeeze/Debian 8
apt-get install apache2 mysql-server php5 libapache2-mod-php5 php-curl php5-ldap php5-mysql
Installation des paquets debian pour stretch/Debian 9.1
apt install mariadb-server apache2 php libapache2-mod-php php-ldap php-mysql
Configuration sécurité apache: vi /etc/apache2/conf-enabled/security.conf
ServerTokens Prod ServerSignature Off
VHOST apache: vi /etc/apache2/sites-available/sunlab.conf
<VirtualHost *:80> ServerName porte.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/door <Directory /var/www/sunlab/door> Options -Indexes </Directory> ErrorLog ${APACHE_LOG_DIR}/porte_error.log CustomLog ${APACHE_LOG_DIR}/porte_access.log combined </VirtualHost>
<VirtualHost *:80> ServerName presence.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/register <Directory /var/www/sunlab/register> Options -Indexes </Directory> ErrorLog ${APACHE_LOG_DIR}/presence_error.log CustomLog ${APACHE_LOG_DIR}/presence_access.log combined </VirtualHost>
<VirtualHost *:80> ServerName nfc.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/nfc <Directory /var/www/sunlab/nfc> Options -Indexes </Directory> ErrorLog ${APACHE_LOG_DIR}/nfc_error.log CustomLog ${APACHE_LOG_DIR}/nfc_access.log combined </VirtualHost>
Configuration MYSQL: Se connecter à mysql, créer une base avec un utilisateur associé:
CREATE DATABASE sunlab; CREATE USER 'sunlab'@'localhost' IDENTIFIED BY 'definir_ici_un_mot_de_passe'; GRANT ALL PRIVILEGES ON sunlab.* TO 'sunlab'@'localhost'; FLUSH PRIVILEGES;
Le schéma de la base est disponible dans SUNLAB/DOC/DATABASE.sql
Restaurer la base à partir de fichiers physiques :