banneer2

Rechercher sur le blog du grouik:

#Main:

Ok, le ftp en 2015, c’est à éviter. Je suppose que vous ferez ça en local sur une DMZ uniquement. On va voir ici comment installer proftp, avec une gestion des comptes sur une base mysql.

Roadmap du document:

  • 06/10/2010: création
  • 23/11/2015: Correction erreur mysql, fichier de conf de proftp, ajout d’un exemple de création d’un utilisateur.

Bases de données:

La database se nome ftp, l’user ’proftpd’@’localhost’ y a accès. Dans le prompt mysql pour créer la base et l’user:

CREATE database ftp;
GRANT ALL ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'mot-de-passe';
QUIT

Puis pour créer les tables, télécharger le script sur ce blog.

cd ~
wget https://blog-du-grouik.tinad.fr/public/createtablesftp.sql
mysql -u root -p ftp < createtablesftp.sql

Installation

apt-get install proftpd proftpd-mod-mysql

proftpd-inetd-ou-Indep.jpg je choisis indépendant, (proftp tournera en permanence et pompera un peu plus de ressources. c’est pas bien vu mon utilisation, mais c’est plus stable et plus simple à configurer.)

addgroup proftpd

Activer le module mysql:

Dans le fichier /etc/proftpd/modules.conf dé-commenter les lignes suivantes:

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

Paramétrage proftpd:

Remplacez le fichier /etc/proftpd/proftpd.conf par celui ci dessous proposé ici:

cd /etc/proftpd
mv proftpd.conf proftpd.conf.old
wget https://blog-du-grouik.tinad.fr/public/proftpd.conf
vi proftpd.conf

Remplacez ************** par le mot de passe mysql de proftpd dans la ligne SQLConnectInfo ftp@localhost proftpd **********

Mais c’est pas bien, je le conçois, idéalement l’user ftp devrait être le propriétaire des dossiers publics (faisant partie du site) avec des droits en écriture et lecture. tandis que www-data devrait faire partie du groupe de l’user, ce dernier ayant accès en lecture uniquement (sauf dans les répertoires où le site internet a besoin d’écrire).

Une telle organisation pourrait limiter les conséquences de l’exploitation d’une faille dans un script php. mais à gérer site par site, c’est super lourd.

Redémarrer proftpd:

service proftpd restart

Créer des utilisateurs

#Créer le repertoire
mkdir -p /home/ftp/user1
chown -R ftp:ftp /home/ftp/user1

Créer l’user en dans la base de donnée. "120" correspond à l’uid unix du compte ftp.

USE ftp;
INSERT INTO ftpuser(userid,passwd,uid,gid,homedir,modified) VALUES 
('user1',ENCRYPT('mot-de-passe'),'120','120','/home/ftp/user1',NOW());

Vous pouvez ajouter des utilisateurs dans la base de données en utilisant phpmyadmin par exemple.


computerengineerbarbie-laptop.jpg

Barbie code directement en binaire. Pour les autres, voici une petite sélection de sites proposant des challenges ludiques de programmation.

Les challenges du hackerspace de Rouen Jeanne d’hack (dont je suis membre)

Les sujets et les réponses des challengers sont sur ce dépôt github. Comme tout le monde démarre au même moment le lundi soir (à une bière sans alcool près), la rapidité est un critère. Si vous n’êtes pas à proximité de Rouen [1] vous pouvez quand même participer en répondant par une pull request.

Un des sujets (le morpion) consistait à développer un bot. Les bots peuvent s’affronter dans une arène . Vous pouvez toujours créer votre propre bot de morpion, et je pense qu’on reproposera ce genre de sujet (avec affrontement des bots pour définir le gagnant du challenge)

D’ailleurs il y a un site dédié à ce genre de défis:

Tournoyons

Tournois de logiciels Le site parait être à l’abandon (charset mal réglé sur certaines pages) et pas d’activité depuis quelques années. Mais rien ne m’indique qu’il ne fonctionne plus. Si quelqu’un a la patience de s’y inscrire pour faire un retour ;)

Il propose das tournois de bots pour plusieurs jeux ludiques (échecs, bataille navalle, shifumi ...)

Code golf

Par là: Code golf le principe est généralement de réussir à faire le code le plus court possible pour répondre à un sujet. Cependant, personnellement, je trouve que la plupart des sujets sont fastidieux et peu ludiques. Mais il y a quelques exceptions.

Project Euler

Par là: Project Euler. L’avantage de ce site est qu’il propose des problèmes dans un ordre de difficulté légèrement croissante. Les premiers problèmes m’ont pris maxi 15 minutes chacun. Et là, je sens que la difficulté augmente. Mais au passage, j’ai révisé les factorielles et les combinaisons en maths ;) Pour le moment aucun des problèmes justifie de dépasser une centaine de lignes de codes.

Les sujets sont orientés mathématiques. Développeurs amateurs fans de Micmaths, Go!!!!

Conclusion

Il doit en exister d’autres. faites un tour surtout sur les défis de Jeanned’hack. l’avantage d’utiliser github est qu’on peut commenter, discuter (troller) etc...

Allez, Tchouss! je retourne écrire ma fonction pour faire des permutations dans l’ordre lexicographique (probleme euler 24)

Note

[1] Il existe un monde en dehors de la Normandie?



IMG_20151005_003242.jpg

Comme je l’expliquais dans la dernière brève, J’ai mis une cam sur le raspberry qui controle mon imprimante... Fail, quand il fait noir, je n’ai plus d’image.

On va voir comment piloter une ampoule 12V depuis le Raspberry PI, puis comment intégrer ça à Octoprint. Certes dixit @trankilloman, avec une caméra infrarouge ce serait plus simple. Oui, mais je vais faire avec les moyens du bord, qui sont dans mon cas:

  • Une ampoule 12V (Philips)
  • Mon dernier transistor NPN TIP122
  • des résistances

1: Circuit électronique

Capture_d_ecran_de_2015-10-07_15_40_59.png

  • L’alimentation 12V est l’alimentation fournie par l’alim ATX. Il me restait un cable jaune non utilisé.
  • La pin GND du raspberry est mise en commun avec le GND de l’alim (Perso, c’était déjà le cas vu que j’allimente le pi via les pins GPI0 cf : ce billet sur le branchement )
  • La valeur de la résistance entre la Pin GpiO et le transistor.... idéalement 220 ohms mais entre 100 et 300 ça marchera.
  • Le transistor, TIP 120, 121 ou 122. même combat ;)

Attention quand j’évoque la pin gpio1, il s’agit de la pin qui aura le numéro 1 dans les commandes bash. et pas de la pin à l’emplacement physique 1

Donc la pin droite de la 6ème rangée en partant du haut:

p1header.png Image provenant de Google images lediouris.net

Tests sur la plaque d’essais:

IMG_20151003_222917.jpg

Après quelques soudures, puis des déssoudures sans pompe à dessouder car je m’étais trompé dans le sens du transistor:

IMG_20151004_235729.png

Le verso (j’ai un peu honte de mes soudures crados là, mais je n’avais pas de pompe à dessouder suite à mon erreur)

IMG_20151004_235749_1_.jpg

Le trou de 3mm de diamètre sert à la fixation du circuit sur une entretoise, elle même fixée au raspberry PI.

Une fois mon circuit fixé et branché au PI:

IMG_20151005_003213.jpg

2: Commander la lampe depuis le raspberry Pi

2.1: Installer WiringPi

Pour plus d’infos, n’hésitez pas à consulter la page du développeur http://wiringpi.com/

#git
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
#To obtain WiringPi using GIT:
git clone git://git.drogon.net/wiringPi
#Sscript qui compile et installe:
cd wiringPi
./build

2.2: Tester

#Mettre la gpio 1 en mode écriture
gpio mode 1 out
#allumer la lampe
gpio write 1 1
#éteindre la lampe
gpio write 1 0

3: Ajout les fonctions éclairage dans Octopi

Pour qu’Octopi mette la pin en écriture à son démarrage, ajoutez:

gpio mode 1 out

dans le script /etc/init.d/octoprint juste après RETVAL="$?"

comme ceci: Capture_d_ecran_de_2015-10-07_17_11_54.png

Pour ajouter les commandes sur l’interface d’Octopi, éditez le fichier /home/pi/.octoprint/config.yaml et ajoutez

  - action: light ON
    command: gpio write 1 1
    name: light ON
  - action: light OFF
    command: gpio write 1 0
    name: light OFF

dans le bloc system.

Redémarrez le Raspberry Pi Les commandes devraient apparaître: octoplight.png

4: To do

Il me reste à dessiner et imprimer un support pour la cam et l’ampoule afin que je puisse récupérer ma troisième main de soudeur.


Dans ce billet, on va détailler comment utiliser au mieux la fonctionnalité STAND BY d’une alimentation ATX servant à alimenter une reprap (électronique RAMPS + arduino), contrôlée par un Raspberry pi contenant Octoprint. Et donc pouvoir mettre off l’imprimante depuis n’importe quel endroit connecté au net.

Vous retrouverez la plupart des infos que j’explique ici sur le github d’Octopi, sauf que je le fais en français, à la sauce Gnieark, et que j’ajoute la configuration du trancheur[1].

On va faire en sorte:

  • Que l’alimentation alimente la reprap et le raspberri pi (économie d’une prise secteur)
  • qu’Octoprint soit capable d’allumer et de "STAND BY" l’alimentation (tout en restant lui même alimenté).

Branchement de base, alimenter l’imprimante.

Après avoir coupé les connecteurs ATX, molex, alim SATA..., on prend 6 câbles jaunes (12 V) et 6 noirs.

  • On les dénude,
  • on les regroupe par 3 afin d’être sur que la section de câble supportera l’intensité demandée par l’imprimante.
  • On étame un peu,
  • On les habille avec un petit bout de gaine thermorétractable.
  • On les visse au bornier
  • On chauffe la gaine avec un briquet pour venir isoler au plus près du bornier

IMG_20150926_120038.jpg

Voila l’imprimante est alimentée., ça c’est l’étape que tout le monde qui possède une reprap a fait.

2: Alimenter le Raspberry pi

On va alimenter le Raspberry pi avec la sortie +5VSB (le câble violet).

CN2Wy7-U8AEKRiF.jpg

Il y a deux possibilités pour alimenter un raspberry pi: Le câble micro USB, et utiliser les pins sur la carte.

/!\ L’alimentation USB du Pi est protégée contre des fluctuations légères du voltage. Ce n’est pas le cas lorsqu’on alimente le PI via les pins GPIO. Je considère (peut être à tort) que le 5V généré par une alim ATX est fiable [2].

IMG_20150924_122738.jpg

j’ai utilisé un câble avec connecteurs Dupont déja fait.

  • Le câble noir est relié à un câble noir du boitier ATX (GND)
  • Le câble jaune est relié à rien du tout (j’avais pas envie de l’enlever même s’il ne sert à rien)
  • le câble rouge est relié avec le câble violet de l’alim ATX (+5V)

N’hésitez pas à vérifier avant de brancher avec un voltmètre. Normalement votre Pi devrait s’allumer lorsque vous mettez sous tension votre alimentation.

3: Contrôler le On/off via le raspberry.

Pour allumer (hors fil violet toujours alimenté) à la main votre alim, il faut court-circuiter le fil vert et une masse. Un arduino ou un Raspberry est capable de gérer ça. voici d’ailleurs la méthode

FVRK2BSI6NIDBRE.MEDIUM.jpg

Sauf que la carte ramps 1.4 contient déja ce circuit, là:

RAMPS1.4-fuse_layout.png

Voila mon branchement IMG_20150924_122848.jpg

  • le câble vert correspond au cable vert de l’alim
  • le rouge correspond au rouge

-_- [3]

Précision: ce circuit sur la carte RAMPS fait partie des secteurs alimentés via la prise USB, il fonctionnera même quand l’imprimante sera en stand by.

Si vous avez tout suivi, votre installation est de manière ultra simplifiée la suivante:

IMG_20150926_163731.jpg

4: Tests

Dans octoprint, onglet "Terminal", Saisissez M80 pour allumer l’alimentation et M81 pour l’éteindre. (Tout de suite, je ne le fais pas car une impression est en cours) Capture_du_2015-09-26_16_04_05.png

5: Intégrer les instructions ON OFF dans le trancheur

5.1: ON

On va configurer le trancheur pour qu’avant de commencer quoi que ce soit, il envoie le code M80 (ON) à l’imprimante, puis une fois l’impression terminée et la température assez descendue, qu’il envoie M81(Stand By)

Bon j’avoue, j’utilise Repetier-Host avec Curaengine pour trancher mes STL.

Dans la configuration de Curaengine, j’ajoute la commande M80 au tout début du "Start G-Code" Capture_du_2015-09-26_17_09_44.png

5.2: OFF

J’utilise un extrudeur E3D métallique qui est ventilé. Si j’arrête de le ventiler dès la fin de l’impression, il va monter suffisamment en température pour que le PLA fonde dans la partie froide et bouche ma tête. On va attendre que la température de la tête d’impression ait baissé avent d’envoyer le M81 (qui coupe aussi le ventilateur)

J’ai remplacé tout le "end-gcode" par celui ci

;END GCODE
M107 ; Turn off fan
G91 ; Relative positioning
G1 Z10.0000 F200 ; move the head up
G1 E-1 ; Reduce filament pressure
M140 S0 ; Disable heated bed
M109 T0 S50 ; temp target have to down before next STEP
M104 T0 S0; turn off extrudeur
M84 ; Turn steppers off
M81; Turn off printer

Note: Les essais avec la commande M109 Bxxxx et M109 Rxxx n’ont pas fonctionné avec mon Marlin

En attendant que mon imprimante redescende en dessous de 50° et s’arrête. (ce qui signifiera que je peux publier ce billet), voici quelques indications pour configurer Octoprint

6: Configurer des boutons on off dans Octoprint

Il est possible de configurer des boutons ON OFF dans Octoprint, La méthode est expliquée là, mais j’ai perdu la clef ssh du raspberry pi pour pouvoir faire la manip [4]. Et comme M80 et M81, ce n’est pas trop dur à taper, je n’ai pas jugé ça super utile.

Notes

[1] J’ai bouché la tête de mon imprimante en testant le GCODE pour rédiger ce billet. Correction OK.

[2] Je ne prétends pas avoir la science infuse, vous êtes avertis qu’il y aurait un petit risque d’endommager votre carte raspberry. Vous êtes libre de couper un câble USB et de faire avec si vous préférez.

[3] Le code couleur tu respecteras. Le code couleur tu respecteras. Le code couleur tu respecteras

[4] la flegme de le brancher sur une télé, et clavier pour récupérer les accès


gnutlslogo.png Lors d’un passage de Debian 7 Wheezy à Debian 8 Jessie, libapache2-mod-gnutls (qui est une alternative à mod-ssl pour gérer les certificats https) se fait désinstaller et Apache ne marchera donc pas après l’upgrade du serveur. Ce paquet n’est pas porté dans débian 8

Deux solutions:

  • utiliser mod-ssl (et réadapter les fichiers de conf des vhosts, remettre les fichiers contenant les clefs et les certificats au propre etc...)
  • A l’ancienne, compiler le mod_gntls

Au travail, j’ai choisi la première solution et sur mon serveur perso, je prends la deuxième. Lors du ./configure, il ne prévient pas de toutes les dépendances manquantes, il faut deviner en fonction de la sortie en erreur lors du "make".

Je suppose qu’apache2 est déjà installé et mod-ssl désactivé et mod_gnutls activé mais ne voulant pas fonctionner parceque :

/usr/lib/apache2/modules/mod_gnutls.so est manquant.

Voici le petit mémo:

#installer les prérequis
apt-get install apache2-dev gnutls-dev libapr-memcache0 libapr-memcached-dev
cd ~
#dl la source
git clone https://mod.gnutls.org/git/mod_gnutls
cd mod_gnutls
#compile puis make
./configure --with-apxs=/usr/bin/apxs2
make
#On ne fait pas l'install, on va juste pousser le module
cp src/.libs/libmod_gnutls.so /usr/lib/apache2/modules/mod_gnutls.so

Voila, plus qu’à faire un reload d’apache


- page 1 de 93

#enBref:

Let's Encrypt

letsencrypt-logo-horizontal.svg

Juste un petit mot pour dire que comme beaucoup, j’ai testé Lets’Encrypt. Je ne ferai probablement pas de tutoriel là dessus car la documentation se trouve partout, et que la flegme.

Plusieurs VHOSTS sur ce serveur ont des certificats lets’Encrypt. Je compte tester quelques renouvellements de certificats (La validité d’un certificat Let’s Encrypt est de 90 jours), avant de généraliser l’utilisation de ce service à tous mes VHOSTS.

Parce que:

C’est gratuit (le prix de départ d’un certificat c’est 15€) et faut compter 200 euros pour une wildcard.

La wildcard n’est pas possible, mais il est possible de renseigner plusieurs noms DNS. Du coup j’image bien renseigner sur un certificat tous les vhosts de ma dédibox, et éventuellement trouver comment retirer la gestion du SNI [1] sur le serveur Web. Ça devrait faire gagner au moins 4 instructions processeur par chargement de page web ;) .

Ne plus me faire ch... avec des certificats qui expirent à des dates différentes. Trois commandes unix suffisent à renouveler tous les certificats d’un coup:

#Il faut stopper l'éventuel service qui écoute sur le port 80:
service apache stop
./letsencrypt
service apache start

Note

[1] J’adore sourcer vers un article Wikipedia dont je suis l’auteur.



Timelapse fail.... coucher de soleil

IMG_20151001_222114.jpg

Suite à mes bidouillages pour pouvoir superviser la reprap à distance, J’ai jeté la webcam qui datait du début de l’époque MSN, pour une cam spéciale Raspberry pi.

On a franchi cette étape: mon imprimante est assez mature pour que je la laisse plusieurs heures sans surveillance directe. Snif, quelle émotion. Aujourd’hui, j’ai lancé une impression (de 7 heures) et suis parti. Je regardais quand même sur mon smartphone, toutes les 1 heures ou deux les images de la cam. Ce qui m’aurait permis de stopper la machine en cas de bouillie de plastique (ou d’incendie -_-).

Le fail, c’est qu’à partir de 20 heures, n’ayant pas laissé de lumière allumée, la cam ne me montrait que du noir. (l’impression est réussie quand même)

Le timelapse est par là (la flegme d’intégrer la vidéo dans ce billet)

Bref, objectif: ajouter une lumière (12 ou 5 V à la reprap) et pouvoir l’allumer et l’éteindre depuis octoprint. Quelques pistes:

Si je prends le temps de le faire dans les semaines qui viennent, je publierai évidemment ma solution sur ce blog.


MAJ

Je viens de faire une petite mise à jour du tuto sur horde 5. Une histoire de ’realm’ qui a été modifiée sur la configuration d’IMP


Passage en debian 8 Jessie

Debian_8_.pngC’est fait, direct sur la prod #evilmode.

Les quelques points sur lesquels j’ai lutté après la mise à jour:

GNUTLS

qui a déconné, du coup j’ai reconfiguré mes quelques vhosts en https avec modSSL

Apache

J’ai remis les apache.conf et php.ini recommandés. du coup, j’ai du modifier plus de 10 000 de code PHP à grand coups de sed. genre:

find /var/www/vhost -exec sed -i "s/mysql_set_charset(/mysqli_set_charset(\$GLOBALS["linkMysql"],/g" {} \;

afin de ne plus me prendre les WARN "deprecated"

su

La commande "su user" ne fonctionne plus pour les users qui n’ont pas de shell du coup il faut le préciser le paramètre:

su -s /bin/bash www-data

(je m’en sers pour gérerer des crontab avec les droits de www-data ou un autre compte)

rsyncd

Mon serveur est boudé par le serveur de sauvegarde. je suis encore en train de regarder pourquoi.

systemctl

Pas de problème, juste qu’il prend une place plus importante sous debian 8. Il faut s’habituer à l’utiliser.


Oups

f9b26427bda2d1e6a8c82ebf25bbb1d0.jpg

Je viens de m’apercevoir que j’avais oublié de retirer le mappage des ports 80 et 22 vers mon raspberry Pi. Sauf que dernièrement (depuis 2 semaines quand même), j’avais remis le pi au cul de ma freebox pour octopi:

  • En lui laissant le mot de passe par défaut pi/raspberry
  • En branchant la webcam (consultable en http sans s’authentifier dans octopi). Sauf que le câble de la cam étant trop court, elle ne filme pas la reprap, mais mon salon.

Je pense m’en être aperçu avant d’avoir mérité le "Numéric Darwin Awards"

PS: Octoprint a ce robots.txt de base:

User-agent: *
Disallow: /

Pas de possibilité d’utiliser un Google dork pour faire joujou avec plein de reprap dans le monde :p

Photo by mofetos/Flickr (CC BY 2.0)


Réduction du bruit de ma reprap

dalle-verte-2.jpg Passage chez Toys R Us pour chercher un cadeau, je me suis offert une dalle amortissante d’extérieur.... Pour la mettre sous ma Reprap.

Aaaaarg! pourquoi je ne l’avais pas fait avant!? La nuisance sonore est réduite par 10, le meuble ikéa sur lequel est installée la bête ne résonne plus à chaque mouvement. Je peux enfin allier impression 3D et matage d’une série à la TV.

PS: Pour trouver une image de la dalle, j’ai cherché sur le site de Toys R Us, elle ne semble malheureusement pas être vendue en ligne.


Fermons les magasins de bricolage le dimanche (#troll)

20150221_201510.jpg

A cause des moteurs qu’on a pris pour la reprap géante, il nous faut 12 boulons de diamètre 3mm, de longeur supérieure à 40mm

J’ai fait

  • Leroy Merlin,
  • Leclerc Bricolage

Trankilloman a fait

  • Castorama

Sans succès. Bref, commandés sur Amazon. Fermons les magasins de bricolage le dimanche, de toutes façons ils ne servent à rien.


Propulsé par Dotclear