SUNLAB - Enregistrement, Authentification & Accès électronique Step Content
De HATLAB
- ''' Installation des paquets debian'''
a … ''' Installation des paquets debian''' apt-get install git ''' Cloner le projet dans votre home utilisateur''' git clone https://github.com/ThomasGsp/sunlab.git ''' Copier le projet dans votre répertoire web''' cp -R sunlab /var/www/ chown -R www-data: /var/www/sunlab/www/ chown -R www-data: /var/www/sunlab
- '''Ce module permet de gérer les entrés/sorties GPIO du raspberry (en C) ''' git clone git://git.drogon.net/wiringPi cd wiringPi ./build
- '''Installation des paquets debian pour sq … '''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.confcorrespondre à votre configuration (notamment modifier la variable $mod_ldap à false si vous n'utilisez pas LDAP).
ServerName porte.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/door Options -Indexes ErrorLog ${APACHE_LOG_DIR}/porte_error.log CustomLog ${APACHE_LOG_DIR}/porte_access.log combinedServerName presence.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/register Options -Indexes ErrorLog ${APACHE_LOG_DIR}/presence_error.log CustomLog ${APACHE_LOG_DIR}/presence_access.log combinedServerName nfc.sunlab.org ServerAdmin webmaster@localhost DocumentRoot /var/www/sunlab/nfc '''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''' Dans le répertoire /var/www/common : copier le fichier dbconf.php.dist en dbconf.php et l'éditer pour correspondre à votre utilisateur et le password choisi ci-dessus. Procéder de même dans le répertoire /var/www/sunlab/common : copier le fichier config.php.dist en config.php et l'éditer pour correspondre à votre configuration (notamment modifier la variable $mod_ldap à false si vous n'utilisez pas LDAP).Options -Indexes ErrorLog ${APACHE_LOG_DIR}/nfc_error.log CustomLog ${APACHE_LOG_DIR}/nfc_access.log combined - '''Le système est composé de trois parties … '''Le système est composé de trois parties:'' * Les électro-aimants au situés au niveau de la porte * La puissance électronique, le petit boîtier blanc * La commande électroniques, le raspberry '''Les électro-aimants:''' Afin de limiter l'intensité au niveau du circuit électronique, ils ont été réglés sur 12v. Ils sont montés en dérivation et contrôlés par le boitier de puissance électronique. L'alimentation 12v est assuré par un bloc dédié, un relais est mis en coupure permettant d'ouvrir ou fermer le circuit. '''La puissance électronique:''' Ce boîtier blanc permet de faire l'interconnexion entre les éléments d'actions (interrupteurs, électro-aimants) et le raspberry-pi. Il possède plusieurs connecteurs externes: * Connecteur series, pour l'interconnexion avec le raspberry * Connecteur alimentation (entrée), qui permet de connecter le bloc d'alimentation * Connecteur alimentation (sortie), qui permet la servitude des electro-aimants * Connecteur jack, pour l'entrée de la commande des boutons de force d'ouverturecommande des boutons de force d'ouverture
- * Préparer une installation propre de Raspbian sur un Raspberry * Installer les suites de logiciels suivants avec les configurations associés
-
* Un raspberry pi équipé (alimentation, c … * Un raspberry pi équipé (alimentation, carte SD, boitier). * Un lecteur NFC compatible (type: [[https://www.amazon.fr/Lecteur-Proximit%C3%A9-125KHz-Contr%C3%B4le-S%C3%A9curit%C3%A9/dp/B00HSDOTTU/ref=sr_1_5?ie=UTF8&qid=1480970036&sr=8-5&keywords=nfc+reader|https://www.amazon.fr/Lecteur-Proximit%C3%A9-125KHz-Contr%C3%B4le-S%C3%A9curit%C3%A9/dp/B00HSDOTTU/ref=sr_1_5?ie=UTF8&qid=1480970036&sr=8-5&keywords=nfc+reader]] * Tablette tactile (optionnel)amp;sr=8-5&keywords=nfc+reader]] * Tablette tactile (optionnel)
- Cette opération n'est nécessaire que lors … Cette opération n'est nécessaire que lors de la récupération de fichiers existants (à la première installation, ce n'est pas nécessaire et vous pouvez sauter cette étape) : * 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/ service mariadb stop cd /var/lib/mysql for i in ib* ; do mv $i ${i}.prev ; done mv sunlab sunlab_prev tar zxvf /home/pi/download /var_lib_mysql_sunlab20180207.tar.gz chown -R mysql: ib* sunlab service mariadb startmysql: ib* sunlab service mariadb start
- L'intégralité du code est géré sous GIT, v … L'intégralité du code est géré sous GIT, vous pouvez contribuer directement en effectuant des demandes de merge. 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]] ).m/fethica/PHP-Login/tree/master/login]] ).
- L'utilisation des commandes NFC et PIN GPI … L'utilisation des commandes NFC et PIN GPIO du Raspberry-pi nécessitent des droits utilisateur élevés (root). Pour des raisons de sécurité, apache n'a pas des droits suffisamment élevés pour réaliser les opérations. Il existe plusieurs possibilités pour contourner le problème: Mettre en place un SUDO sur certaines commandes ou réaliser un Wrapper en C avec des droits associés corrects. C'est cette seconde possibilité qui est mise en place. Trois programmes sont concernés:ent au démarrage du raspberry via une ligne ajouté au fichier “/etc/rc.local”.
/SUNLAB/nfc/bin/getid.c /SUNLAB/door/bin/waitforce.c /SUNLAB/door/bin/opendoor.c '''Configuration opendoor.c:''' ''' Compiler le code source:''' gcc -Wall -o opendoor opendoor.c -lwiringPi ''' L'attribuer avec le bon user:''' chown root: opendoor ''' Lui donner les droits spécifique:''' chmod ug+s opendoor '''Configuration waitforce.c:'''
'''Compiler le code source:''' gcc -Wall -o waitforce waitforce.c -lwiringPi ''' L'attribuer avec le bon user:''' chown root: waitforce ''' Lui donner les droits spécifique:''' chmod ug+s waitforce '''Configuration getid.c:'''
'''Compiler le code source:''' gcc -Wall -o getid getid.c '''L'attribuer avec le bon user: ''' chown root: getid ''' Lui donner les droits spécifique: ''' chmod ug+s getid Les programmes sont maintenant habilités à s'exécuter en root avec un utilisateur classique. Le programme waitforce.c permettant l'ouverture forcé de la porte par le bouton est lancé automatiquement au démarrage du raspberry via une ligne ajouté au fichier “/etc/rc.local”.
- Pour utiliser le module nfc usb, il est né … Pour utiliser le module nfc usb, il est nécessaire d'installer la librairie libnfc. '''Installation des paquets debian''' apt-get install dh-autoreconf doxygen libusb-dev libpcsclite-dev make pcscd apt install libnfc5 libnfc-bin # en stretch / Debian 9.3 ''' Installation de la libnfc (utiliser la version 1.5 pour des raisons de compatibilités !)''' git clone https://github.com/nfc-tools/libnfc.git cd libnfc/ git checkout libnfc-1.7.1 autoreconf -vis ./configure --enable-doc make make install ''' Blacklist du module originel''' vi /etc/modprobe.d/blacklist-libnfc.conf blacklist pn533 blacklist nfc ''' Désactivation à chaud ''' modprobe -r pn533 nfc ''' restart du process''' service pcscd restart lsusb # doit afficher une ligne similaire à : Bus 001 Device 005: ID 072f:2200 Advanced Card Systems, Ltd ACR122U nfc-list # en plaçant une carte reconnue par le nfc (navigo, carte bleue...) doit afficher quelque chose comme : nfc-list uses libnfc 1.7.1 NFC device: ACS / ACR122U PICC Interface opened 1 ISO14443B-2 ST SRx passive target(s) found: ISO/IEC 14443-2B ST SRx (106 kbps) target: UID: 86 25 06 18 86 19 02 d0UID: 86 25 06 18 86 19 02 d0