SUNLAB - Enregistrement, Authentification & Accès électronique : Différence entre versions

De HATLAB
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 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.
  
  * Le "common", le code sert de base fonctionnelle aux trois autres.
+
'''Afin d'accélérer le développement, le code est basé sur plusieurs tierces parties:'''
  * La partie "door", comprenant le code spécifique pour la porte.
+
* PHPMailer pour l'envoi des email.
  * La partie "nfc", pour le nfc.
+
* Bootstrap pour le CSS/HTML.
  * La partie "register" pour l'enregistrement de présence.
+
* 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]] ).
 
 
__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=<code>
+
|Step_Content='''Installation des paquets debian pour squeeze/Debian 8'''
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
+
'''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:
+
'''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:
+
'''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:
+
'''Configuration MYSQL:'''
# Se connecter à mysql, créer une base avec un utilisateur associé:
+
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
+
Le schéma de la base est disponible dans SUNLAB/DOC/DATABASE.sql
</code>
 
  
 
'''Restaurer la base à partir de fichiers physiques :'''
 
'''Restaurer la base à partir de fichiers physiques :'''

Version du 11 avril 2018 à 16:23

Une Technique de avatarThomas dans les catégories Électronique. Dernière modification le 15/10/2019 par Baudouard.

SUNLAB - Enregistrement Authentification Acc s lectronique sunlab door.png

Mise en place d'ouverture de porte par accès portail web.

Licence : GNU Free Hardware Designs

SUNLAB - Enregistrement Authentification Acc s lectronique sunlab door.png

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 :

Notes et références