SUNLAB - Enregistrement, Authentification & Accès électronique

De HATLAB

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

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

  1. Installation des paquets debian pour squeeze/Debian 8

apt-get install apache2 mysql-server php5 libapache2-mod-php5 php-curl php5-ldap php5-mysql

  1. Installation des paquets debian pour stretch/Debian 9.1

apt install mariadb-server apache2 php libapache2-mod-php php-ldap php-mysql

  1. Configuration sécurité apache:

vi /etc/apache2/conf-enabled/security.conf ServerTokens Prod ServerSignature Off

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

  1. Configuration MYSQL:
  2. 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;

  1. Le schéma de la base est disponible dans SUNLAB/DOC/DATABASE.sql

Restaurer la base à partir de fichiers physiques :

 * https://stackoverflow.com/questions/484750/restoring-mysql-database-from-physical-files
 * https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

Notes et références