Planet Asrall

December 04, 2017

Luc Didry

Merci à mes tipeurs :-)

Le 14 juillet 2016, j’ai lancé mes pages Tipeee et Libe­ra­pay.

La récom­pense de base est l’ap­pa­ri­tion sur une page mensuelle de remer­cie­ments… voici celle de novembre !

Merci à :

Voici mon bilan de novembre :

  • Quelques modi­fi­ca­tions sur WemaWema : j’ai ajouté quelques polices, amenant le n° de version à 24.4
  • J’ai ajouté une barre de progres­sion sur mon graphe chro­no­lo­gique de la toile de confiance Duni­ter
  • Un peu de boulot sur Lufi : les cookies sont main­te­nant plus propres et on peut défi­nir un domaine fixe pour les URLs des fichiers (ce qui veut dire qu’on peut envoyer des fichiers sur https://example.org et avoir des liens en https://bidule.org — après c’est à l’ad­min de l’ins­tance de se débrouiller pour que l’ins­tance réponde bien sur le domaine fixe)

Ça a été assez calme, mais il faut voir que j’ai repris les cours et que j’ai été faire une confé­rence aux JRES, confé­rence que vous pouvez retrou­vez sur l’ins­tance de test de PeerTube (PeerTube, un logi­ciel qu’il est bien et qui devrait permettre à tout à chacun de gérer sa plate­forme de vidéos sans les soucis de bande passante habi­tuels, soute­nez-le !) : https://peer­tube.cpy.re/videos/watch/b1e5­ba7e-2a8a-44d4–8151-aa8f5f6eafd9.

En ce qui concerne les commits dédiés :

Et vous pouvez toujours me soute­nir via Duni­ter !

Je remets ici mon expli­ca­tion du mois d’août.

Disclai­mer : je vais peut-être dire des sottises parce que j’ai pas tout compris mais je m’en fous, j’aime bien l’idée

Duni­ter est un projet de crypto-monnaie mais contrai­re­ment au bitcoin où c’est la course à la puis­sance de calcul pour géné­rer la monnaie et deve­nir riche, le but est de créer une monnaie libre (le Ğ1, prononcé comme june en anglais), basée sur une toile de confiance (il faut rece­voir 5 certi­fi­ca­tions pour être membre) et où chacun des membres reçoit tous les jours un divi­dende univer­sel. Je dois dire que je suis assez curieux de ce qu’on peut faire avec un système ressem­blant forte­ment au salaire à vie 🙂

C’est pourquoi j’ai créé mon compte et ait fait ce qu’il fallait pour rece­voir mes certi­fi­ca­tions (rencon­trer des gens, tous­sa…). Ma clé publique est :

 2t6NP6Fvvuok2iRWA188C6pGokWAB5Kpf1S1iGtkN9tg

Et comme un projet n’est utile que si on s’en sert, je vous propose de me soute­nir en Ğ1 tout en béné­fi­ciant des mêmes récom­penses que celles présentes sur ma page Tipeee (j’ai arbi­trai­re­ment choisi une parité euro/Ğ1 car je n’ai pas vrai­ment trouvé de page expliquant comment évaluer le cours du Ğ1 en euros, et au final, est-ce vrai­ment néces­saire ? À nous de choi­sir quelle valeur a cette nouvelle monnaie 🙂. Et puis ça me simpli­fie la vie).

Voici donc les diffé­rentes contre­par­ties et leur prix (chaque contre­par­tie comprend celles de tarif infé­rieur) :

  • 1 Ğ1 : vous appa­raî­trez sur la page mensuelle des remer­cie­ments
  • 2 Ğ1 : vous rece­vrez une photo dédi­ca­cée de mon chat
  • 3 Ğ1 : vous rece­vrez 3 stickers repre­nant les logos de Lstu, Lutim et Lufi. De quoi déco­rer son ordi et se la péter en société 😁
  • 5 Ğ1 : un commit vous sera dédié chaque mois (si je déve­loppe suffi­sam­ment pour le nombre de personnes à ce niveau)
  • 15 Ğ1 : vous pouvez me deman­der de bosser en prio­rité sur un bug ou une demande de fonc­tion­na­lité d’un de mes logi­ciels (dans la mesure du faisable, hein).
  • 100 Ğ1 : quand j’au­rais un nouveau projet, vous pour­rez en choi­sir le nom et le logo

Pour en savoir plus sur Duni­ter et Ğ1, je vous propose d’al­ler voir cet article de cgeek : https://blog.cgeek.fr/de-linte­ret-dune-monnaie-libre.html ainsi que la théo­rie rela­tive de la monnaie pour les enfants.

PS : j’ai aussi une adresse bitcoin si vous souhai­tez me soute­nir par ce biais

Parta­ger

by Luc at December 04, 2017 07:11 PM

Encore un bug Ganeti

Petite blagou­nette de Ganeti, à cause de la version d’OpenSSH de Debian Stretch.

Adonc, la situa­tion : j’ai récem­ment voulu ajou­ter un nouveau serveur au clus­ter Ganeti de Frama­soft. Et pas moyen pour ganeti de contac­ter le nouveau nœud une fois qu’il y a ajouté sa clé SSH (les commu­ni­ca­tions entre les nœuds passent par SSH).

Tous les serveurs du clus­ter avaient été récem­ment mis à jour vers Debian Stretch, vu que je n’aime pas me traî­ner de vieilles versions des systèmes que je gère, et qu’on profite géné­ra­le­ment de nouvelles règles de sécu­rité.

Et en effet, la version d’OpenSSH de Stretch, la version 7, désac­tive par défaut l’uti­li­sa­tion de clés DSA.

Pour notre malheur, Ganeti utilise des clés DSA pour la commu­ni­ca­tion entre les nœuds du clus­ter. Impos­sible du coup pour Ganeti de se connec­ter au nouveau nœud avec sa clé DSA.

En atten­dant la sortie de Ganeti 2.16 qui devrait permettre de choi­sir le type de clés à employer, on va, pour contour­ner le souci, modi­fier les fichiers /etc/ssh/ssh_config et /etc/ssh/sshd_config pour y ajou­ter :

PubkeyAcceptedKeyTypes=+ssh-dss

Ne me jugez pas, je sais que c’est très sale, mais c’est le seul moyen que j’ai trouvé pour pouvoir conti­nuer à opérer mon clus­ter Ganeti.

EDIT (10 décembre 2017) : La version de Ganeti de Debian 9.3 permet de chan­ger le type des clés SSH de Ganeti ! Vous pouvez, après avoir passé tous les nœuds de votre clus­ter en Debian 9.3, modi­fier le type de clé utilisé avec la commande

gnt-cluster renew-crypto --new-ssh-keys --ssh-key-type=rsa --ssh-key-bits=2048

Allez voir la page de manuel de gnt-cluster, à la section INIT pour voir les options. Vous pouvez utili­ser des clés DSA, RSA et ECDSA.

Crédit : Photo de Santosh Maharjan sur Unsplash

Parta­ger

by Luc at December 04, 2017 06:28 PM

December 03, 2017

Alexandre Bailly

Changer l'extension de plusieurs fichiers en une simple manipulation

Contrairement à MS-DOS, il n'y a pas de méthode simple pour changer juste l'extension sur un grand nombre de fichiers.

Il existe des solutions avec une interface graphique, ou un ensemble de commandes à taper.

J'ai fini par m'écrire un script qui évite de retaper toutes les commandes. Et pour le retrouver facilement, je l'ai appelé mass-rename, et l'ai enregistré sous /usr/local/bin

#!/bin/bash
cd "$1"
for f in *.$2; do 
mv -- "$f" "${f%.$2}.$3"
done

Utilisation :

mass-rename   

Exemple :

mass-rename ~/bureau/webcomics zip cbz

Attention : ce script ne fait absolument aucune vérification. À utiliser à vos risques et périls.

by nah at December 03, 2017 06:14 PM

November 12, 2017

Luc Didry

Merci à mes tipeurs :-)

Le 14 juillet 2016, j’ai lancé mes pages Tipeee et Libe­ra­pay.

La récom­pense de base est l’ap­pa­ri­tion sur une page mensuelle de remer­cie­ments… voici celle d’oc­tobre ! Je crois que je vais arrê­ter de m’ex­cu­ser pour mes retards, vous savez que j’ai du mal à faire la page de remer­cie­ments en temps et en heure 😛

Merci à :

Voici mon bilan d’oc­tobre :

  • Beau­coup, beau­coup de modi­fi­ca­tions sur WemaWema : on était à la version 14 le 9 octobre, la dernière version d’oc­tobre est la 24.2 ! (et depuis, on en est à la 24.4)
  • J’ai beau détes­ter Docker quand on parle de produc­tion, cela n’en reste pas moins un bon outil pour l’in­té­gra­tion conti­nue. J’ai donc publié mes Docker­file qui me servent pour faire des conte­neurs d’in­té­gra­tion conti­nue
  • J’ai revu le template de mes cours pour permettre de télé­char­ger les PDFs direc­te­ment depuis la page du cours en ques­tion
  • Mojo­li­cious::Plugin::StaticCache est passé en version 0.02
  • Lstu a eu un petit bugfix est est passé en version 0.09–2
  • Last est passé en 0.4.0 : on peut main­te­nant choi­sir la time­zone

En ce qui concerne les commits dédiés :

Et vous pouvez toujours me soute­nir via Duni­ter !

Je remets ici mon expli­ca­tion du mois d’août.

Disclai­mer : je vais peut-être dire des sottises parce que j’ai pas tout compris mais je m’en fous, j’aime bien l’idée

Duni­ter est un projet de crypto-monnaie mais contrai­re­ment au bitcoin où c’est la course à la puis­sance de calcul pour géné­rer la monnaie et deve­nir riche, le but est de créer une monnaie libre (le Ğ1, prononcé comme june en anglais), basée sur une toile de confiance (il faut rece­voir 5 certi­fi­ca­tions pour être membre) et où chacun des membres reçoit tous les jours un divi­dende univer­sel. Je dois dire que je suis assez curieux de ce qu’on peut faire avec un système ressem­blant forte­ment au salaire à vie 🙂

C’est pourquoi j’ai créé mon compte et ait fait ce qu’il fallait pour rece­voir mes certi­fi­ca­tions (rencon­trer des gens, tous­sa…). Ma clé publique est :

 2t6NP6Fvvuok2iRWA188C6pGokWAB5Kpf1S1iGtkN9tg

Et comme un projet n’est utile que si on s’en sert, je vous propose de me soute­nir en Ğ1 tout en béné­fi­ciant des mêmes récom­penses que celles présentes sur ma page Tipeee (j’ai arbi­trai­re­ment choisi une parité euro/Ğ1 car je n’ai pas vrai­ment trouvé de page expliquant comment évaluer le cours du Ğ1 en euros, et au final, est-ce vrai­ment néces­saire ? À nous de choi­sir quelle valeur a cette nouvelle monnaie 🙂. Et puis ça me simpli­fie la vie).

Voici donc les diffé­rentes contre­par­ties et leur prix (chaque contre­par­tie comprend celles de tarif infé­rieur) :

  • 1 Ğ1 : vous appa­raî­trez sur la page mensuelle des remer­cie­ments
  • 2 Ğ1 : vous rece­vrez une photo dédi­ca­cée de mon chat
  • 3 Ğ1 : vous rece­vrez 3 stickers repre­nant les logos de Lstu, Lutim et Lufi. De quoi déco­rer son ordi et se la péter en société 😁
  • 5 Ğ1 : un commit vous sera dédié chaque mois (si je déve­loppe suffi­sam­ment pour le nombre de personnes à ce niveau)
  • 15 Ğ1 : vous pouvez me deman­der de bosser en prio­rité sur un bug ou une demande de fonc­tion­na­lité d’un de mes logi­ciels (dans la mesure du faisable, hein).
  • 100 Ğ1 : quand j’au­rais un nouveau projet, vous pour­rez en choi­sir le nom et le logo

Pour en savoir plus sur Duni­ter et Ğ1, je vous propose d’al­ler voir cet article de cgeek : https://blog.cgeek.fr/de-linte­ret-dune-monnaie-libre.html ainsi que la théo­rie rela­tive de la monnaie pour les enfants.

PS : j’ai aussi une adresse bitcoin si vous souhai­tez me soute­nir par ce biais

Parta­ger

by Luc at November 12, 2017 06:21 PM

November 04, 2017

Florent Peterschmitt

In the cloud

Ayé, mes mails sont repartis dans le cloud. Après quelques années d’hébergement de ce service, entre autres, sur un serveur OVH, retour arrière.

J’entends déjà les férus d’auto-hébergement avec leur baie à la maison crier au scandale, et pourtant…

Au début

  • Apprendre à configurer un serveur mail
  • Le tester
  • Le tester dans la vraie vie
  • Faire une bourde et se retrouver un relais ouvert
  • Paniquer un peu parce que tout a été monté à l’arrache et qu’on a perdu la conf-ki-marche
  • …du temps passe…
  • Automatiser la configuration avec Puppet
  • Automatiser la configuration avec Ansible parce que Puppet c’est chiant
  • Mettre tout le monde dans des conteneurs LXC
  • Changer de serveurs
  • Rajouter quelques entrées DNS pour SPF
  • En avoir ras le bol du spam et mettre un antispam… et en chier
  • Se rendre compte que ça marche mal parce que T’ES TOUT SEUL sur ton serveur
  • rspamd est sorti, remplacer son antispam
  • Changer de serveur, encore
  • Faire la réputation de son IP auprès de Microsoft, se rendre compte que ça marche pas beaucoup mieux
  • …du temps passe…
  • Mettre de la sauvegarde en place
  • …du temps passe…
  • Mettre en place un webmail
  • Être content de tout ça parce que ça marche quand même bien.

Vers la fin

  • Rajouter un serveur tampon au cas où un truc casse.
  • …du temps passe…
  • Avoir des pépins avec son serveur (corruptions de fichiers bonjour !).
  • Vouloir bosser sa partition de piano.
  • Réfléchir deux secondes… (1… 2…) et se dire que tout compte fait, ça vaut pas le coup.

Ou que en tout cas, ça n’en vaut plus la peine.

Faire son propre serveur mail c’est sympa au début ouais, quand on apprend, mais en fin de compte ça sert pas à grand chose selon moi sinon pouvoir bidouiller ses paramètres et se faire plaisir sur quelques trucs “sympas”, comme les filtres sieve ou alors mettre son webmail favoris avec des leds RGB dessus =D

Pour la vie privée c’est bien aussi.

Après il y a toujours la méthode « utiliser un conteneur Docker/LXC/sketuveux fait par quelqu’un d’autre » mais à ce compte là je préfère carrément me tourner vers des fournisseurs qui me règleront d’autres problèmes, comme la réputation par exemple.

Du coup, mes mails sont partis chez Gandi. Et c’est super simple à faire :

On coupe les services, parce que balek du temps d’indispo, il n’y a que moi que ça va embêter et les serveurs mail réessayent suffisemment longtemps pour pas avoir à y penser ou à devoir faire du relay :

systemctl stop postfix
systemctl disable postfix

Un peu de conf BIND :

@ IN MX 10 spool.mail.gandi.net.
@ IN MX 50 fb.mail.gandi.net.

@ IN TXT "v=spf1 include:_mailcust.gandi.net ?all"
@ IN SPF "v=spf1 include:_mailcust.gandi.net ?all"

Un petit coup d’imapsync :

imapsync --host1 imap.peterschmitt.fr --user1 tusauraspa\@peterschmitt.fr --password1 encoremoins \
         --host2 mail.gandi.net --user2 tusauraspa\@peterschmitt.fr --password2 encoremoins

Et paf ! https://webmail.gandi.net et c’est torché.

Et ta vie privay ?

J’ai pas été trop regardant mais il me semble que Gandi ne fait pas partie des enfoirés style Google ou autres.

ProtonMail semble être une excellente alternative, vu que les mails sont chiffrés, mail il faut payer ~5€/mois pour y brancher son domaine perso. Pas cher mais pour ce que je fais du mail maintenant, franchement bof…

Enfin, mon domaine est déjà enregistré chez Gandi, activer le mail chez eux n’a pris que cinq minutes à tout casser. Ça c’est l’argument de la flemme.

Et si je veux pas t’envoyer de mail parce que t’es plus auto-hébergé ?

Par pigeon voyageur boudiou !

XMPP avec la même adresse mail ;-) Ce service est moins contraignant que le mail à maintenir, n’offre pas les mêmes services, certes, mais du coup il ne fera pas partie de la liste des trucs à me décharger.

Des bisous.

PS : les commentaires sont de retour ;-)

by Florent Peterschmitt at November 04, 2017 05:30 PM

October 19, 2017

Luc Didry

Lut.im : une tragé­die des communs évitée

Savez-vous ce qu’est la tragé­die des communs ? C’est quand une ressource commune est surex­ploi­tée et au final, tout le monde est perdant.

C’est un peu ce qui se passe en ce moment sur l’ins­tance offi­cielle de mon logi­ciel Lutim : https://lut.im.

En effet, depuis déjà quelques jours, ce site est inac­ces­sible en soirée. Trop d’uti­li­sa­teurs qui veulent voir trop d’images en même temps. Lut.im victime de son succès ?

Oui et non : oui car le site commence à être plutôt connu (surtout en Russie, allez savoir pourquoi) ; non car c’est un problème d’abus de la ressource commune qu’est lut.im : en effet, le problème vient de l’uti­li­sa­tion qui est en faite par quelques personnes.

Pour comprendre ce qui se passait, j’ai activé les logs d’ac­cès au service — en prenant soin de ne pas affi­cher les adresses des images deman­dées (voir plus bas) — et j’ai noté quelques adresses de refe­rer suspectes ainsi qu’un nombre incroyable de requêtes deman­dées par des user-agent Kodi et quelques XBMC.

J’ai été voir sur un des refe­rer suspects : un site de strea­ming de chaîne télé… et certains des logos des chaînes étaient héber­gés sur https://lut.im ! Ça m’a mis la puce à l’oreille quant aux user-agent Kodi. Un peu de recherche genre kodi tv channel "https://lut.im" et je tombe sur un truc comme http://www.listaiptv­bra­sil.com.br/paste.php?id=3 (oui, je savais qu’il y avait moyen de voir des chaînes de télé sur Kodi, j’en ai un et j’avais regardé si je pouvais voir des chaînes de télé mais j’avais au final laissé tomber, vu la qualité de ce qu’on peut voir à la télé (pis bon, la pub…)).

J’ai donc bloqué, pour éviter l’in­dis­po­ni­bi­lité fréquente de https://lut.im, les refe­rer de ce genre que j’ai trouvé ainsi que les user-agent Kodi et XBMC :

if ($http_referer ~ (site1|site2) {
    return 429;
}
if ($http_user_agent ~* (Kodi|XBMC)) {
    return 429;
}

Le statut 429 que je renvoie corres­pond à « Too Many Requests ». Disons que c’est le statut que j’ai trouvé le plus proche de la situa­tion. Certes, ce n’est pas le client qui fait trop de requêtes, mais bon.

La soirée d’hier s’est passée sans alerte de la part de la super­vi­sion et chaque fois que j’ai été voir le site, celui-ci était acces­sible ! Mes actions ont donc évité la surex­ploi­ta­tion de la ressource commune 🙂

Et voilà comment j’ai modi­fié le format de mon log d’ac­cès pour ne pas loguer les IPs de mes visi­teurs ni les URLs des images deman­dées :

log_format lutim '$remote_user [$time_local] $status $body_bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
    …
    access_log /var/log/nginx/lutim.access.log lutim;
    …
}

J’ai après cela remis la confi­gu­ra­tion à access_log off; et supprimé les jour­naux d’ac­cès.

Crédit : Photo de Brad Helmink sur Unsplash

Parta­ger

by Luc at October 19, 2017 06:54 AM

October 17, 2017

Luc Didry

Un bug à l’ex­port de VMs dans Ganeti

Encore un article sur un bug dans Ganeti.

Situa­tion : Debian Jessie, avec Ganeti 2.15.2–1~b­po8+1 prove­nant des back­ports Jessie.

Problème : ça foire quand on veut faire une sauve­garde d’une VM avec gnt-backup export ma_vm. Avec ce genre de message :

Fri Aug 11 12:08:36 2017  - WARNING: import 'import-disk0-2017-08-11_12_08_27-igVAWh' on mynode.mydomain failed: Exited with status 1
Fri Aug 11 12:08:36 2017 snapshot/0 failed to receive data: Exited with status 1 (recent output: socat: E openssl-method="TLSv1": method unknown or not provided by library)

Le bug est déjà connu de Debian et corri­gé… dans la version Stretch ! Pas la version Jessie-back­ports 🙁

Bon, c’est rien de bien méchant. Il suffit d’édi­ter le fichier /etc/ganeti/share/ganeti/impexpd/__init__.py et chan­ger les lignes

SOCAT_OPENSSL_OPTS = ["verify=1", "method=TLSv1",
                      "cipher=%s" % constants.OPENSSL_CIPHERS]

en

SOCAT_OPENSSL_OPTS = ["verify=0", "method=TLS1",
                      "cipher=%s" % constants.OPENSSL_CIPHERS]

Notez la modi­fi­ca­tion de verify et de method.

Et c’est tout bon !

Bien sûr, il vaut mieux passer son serveur en Stretch, mais avec les 70 machines de Frama­soft, j’ai du établir un plan­ning pour tenter de mini­mi­ser le nombre de services à tomber en même temps, du coup je n’y vais à un rythme que de une ou deux machines par jour (ça va, j’en suis à peu près à deux tiers de machines sous Stretch, un tiers sous Jessie et quelques unes encore sous Wheezy (diffi­cile de les upgra­der sans péter les logi­ciels qui sont dessus)).

Parta­ger

by Luc at October 17, 2017 01:26 PM

October 09, 2017

Luc Didry

Monter et démon­ter un partage Samba selon le réseau

J’ai un partage Samba dans mon réseau local afin de pouvoir écou­ter ma musique tranquille­ment depuis mon ordi­na­teur dans le bureau alors que les fichiers sont sur mon serveur dans le salon.

Je peux accé­der à mes fichiers sur le partage avec mon navi­ga­teur de fichier mais cela me pose un problème avec VLC (que j’uti­lise comme lecteur de musique) : il n’ar­rive pas à jouer les fichiers s’ils sont dans un sous-réper­toire du réper­toire que j’ai glissé depuis Dolphin. Si j’ai bien compris, c’est la faute à KIO, la biblio­thèque qui permet à Dolphin d’ac­cé­der au partage Samba. En clair, VLC est capable de lire les fichiers direc­te­ment conte­nus dans Album/, mais pas d’al­ler lire ce qu’il y a dans Artiste/Album/ si je lui glisse le dossier Artiste.

OSEF, faisons un montage à l’an­cienne, en ligne de commande !

sudo mount -t cifs //XXX/anonymous/ /media/XXX -o guest

Oui, ça fonc­tion­ne… sauf quand je ne suis plus sur le réseau (coupure du réseau, j’em­barque mon pc pour aller donner un cours, etc). Et là, c’est le drame : plus moyen d’en­le­ver ce montage. Ça bloque.

Il suffit donc de démon­ter le partage samba avant. Mais je ne peux anti­ci­per les coupures réseau, et je sais que je ne pense­rais pas toujours à ça en débran­chant mon pc.

Je vais donc, en bon adminSys fainéant que je suis, auto­ma­ti­ser tout ça.

Pré-requis : utili­ser NetworkMa­na­ger.

Il faut créer des scripts qui vont monter et démon­ter le partage après la connexion au réseau et avant sa décon­nexion.

Mettez ceci dans /etc/NetworkManager/dispatcher.d/99-mount-samba :

#!/bin/sh
IFACE=$1
ACTION=$2

case $CONNECTION_ID in
    Votre_reseau)
        case ${ACTION} in
            up)
                mount -t cifs //XXX/anonymous/ /media/XXX -o guest
                ;;
        esac
        ;;
esac

Votre_reseau est évidem­ment à modi­fier selon le nom que vous avez donné à votre connexion dans NetworkMa­na­ger. Si vous voulez utili­ser ça pour plusieurs réseaux (comme par exemple votre connexion filaire et votre connexion Wifi, vous pouvez mettre Votre_reseau1|Votre_reseau2).

Mettez ceci dans /etc/NetworkManager/dispatcher.d/pre-down.d/99-umount-samba :

#!/bin/sh
IFACE=$1
ACTION=$2

case $CONNECTION_ID in
    Votre_reseau)
        case ${ACTION} in
            pre-down)
                #lsof -t /media/XXX | xargs kill
                umount -l /media/XXX
                ;;
        esac
        ;;
esac

Vous note­rez le lsof -t /media/XXX | xargs kill avant l’ap­pel d’umount. En effet, vous ne pour­rez pas démon­ter le partage s’il est utilisé.

Faites donc atten­tion ! Autant ce n’est pas grave si mon script coupe VLC (ça empêche même VLC de s’em­bal­ler en crachant un nombre infini d’er­reurs), autant si vous travaillez sur votre partage samba avec, disons, LibreOf­fice, cela risque­rait de vous faire perdre votre travail. Ce n’est donc pas pour tous les usages.

EDIT : plus besoin du lsof -t /media/XXX | xargs kill, Olivier M. vient de porter à ma connais­sance, en commen­taire, l’op­tion -l d’umount :

-l, --lazy
    Démontage  paresseux.  Détacher  maintenant le système de fichiers de la hiérarchie de fichiers et effacer toutes les références vers ce système de fichiers dès qu'il n'estplus occupé (nécessite un noyau 2.4.11 ou ultérieur).

N’ou­blions pas de rendre exécu­table ces scripts :

chmod +x /etc/NetworkManager/dispatcher.d/99-mount-samba \
  /etc/NetworkManager/dispatcher.d/pre-down.d/99-umount-samba

Et voilà ! Un petit systemctl restart NetworkManager et ça devrait tour­ner comme une horloge.

Crédits : Photo par Thomas Kvis­tholt sur Unsplash

Parta­ger

by Luc at October 09, 2017 04:44 PM

Merci à mes tipeurs :-)

Le 14 juillet 2016, j’ai lancé mes pages Tipeee et Libe­ra­pay.

La récom­pense de base est l’ap­pa­ri­tion sur une page mensuelle de remer­cie­ments… voici celle de septembre ! En retard, encore et toujours. Sans excuse cette fois-ci. Juste la flem­me… et un nouveau logi­ciel 😉

Merci à :

Voici mon bilan de septembre :

En ce qui concerne les commits dédiés :

Et vous pouvez toujours me soute­nir via Duni­ter !

Je remets ici mon expli­ca­tion du mois d’août.

Disclai­mer : je vais peut-être dire des sottises parce que j’ai pas tout compris mais je m’en fous, j’aime bien l’idée

Duni­ter est un projet de crypto-monnaie mais contrai­re­ment au bitcoin où c’est la course à la puis­sance de calcul pour géné­rer la monnaie et deve­nir riche, le but est de créer une monnaie libre (le Ğ1, prononcé comme june en anglais), basée sur une toile de confiance (il faut rece­voir 5 certi­fi­ca­tions pour être membre) et où chacun des membres reçoit tous les jours un divi­dende univer­sel. Je dois dire que je suis assez curieux de ce qu’on peut faire avec un système ressem­blant forte­ment au salaire à vie 🙂

C’est pourquoi j’ai créé mon compte et ait fait ce qu’il fallait pour rece­voir mes certi­fi­ca­tions (rencon­trer des gens, tous­sa…). Ma clé publique est :

 2t6NP6Fvvuok2iRWA188C6pGokWAB5Kpf1S1iGtkN9tg

Et comme un projet n’est utile que si on s’en sert, je vous propose de me soute­nir en Ğ1 tout en béné­fi­ciant des mêmes récom­penses que celles présentes sur ma page Tipeee (j’ai arbi­trai­re­ment choisi une parité euro/Ğ1 car je n’ai pas vrai­ment trouvé de page expliquant comment évaluer le cours du Ğ1 en euros, et au final, est-ce vrai­ment néces­saire ? À nous de choi­sir quelle valeur a cette nouvelle monnaie 🙂. Et puis ça me simpli­fie la vie).

Voici donc les diffé­rentes contre­par­ties et leur prix (chaque contre­par­tie comprend celles de tarif infé­rieur) :

  • 1 Ğ1 : vous appa­raî­trez sur la page mensuelle des remer­cie­ments
  • 2 Ğ1 : vous rece­vrez une photo dédi­ca­cée de mon chat
  • 3 Ğ1 : vous rece­vrez 3 stickers repre­nant les logos de Lstu, Lutim et Lufi. De quoi déco­rer son ordi et se la péter en société 😁
  • 5 Ğ1 : un commit vous sera dédié chaque mois (si je déve­loppe suffi­sam­ment pour le nombre de personnes à ce niveau)
  • 15 Ğ1 : vous pouvez me deman­der de bosser en prio­rité sur un bug ou une demande de fonc­tion­na­lité d’un de mes logi­ciels (dans la mesure du faisable, hein).
  • 100 Ğ1 : quand j’au­rais un nouveau projet, vous pour­rez en choi­sir le nom et le logo

Pour en savoir plus sur Duni­ter et Ğ1, je vous propose d’al­ler voir cet article de cgeek : https://blog.cgeek.fr/de-linte­ret-dune-monnaie-libre.html ainsi que la théo­rie rela­tive de la monnaie pour les enfants.

PS : j’ai aussi une adresse bitcoin si vous souhai­tez me soute­nir par ce biais

Parta­ger

by Luc at October 09, 2017 04:00 PM

Un nouveau logi­ciel : WemaWema !

Il est des logi­ciels qui partent d’une idée à la con, et qui gran­dissent, gran­dis­sent… WemaWema est de ceux-ci.

L’idée à la con

Tout à commencé par une demande de Genma dans un pouet du 26 septembre :

Y a un « We make » gene­ra­tor en ligne ou pas encore ?

Un peu d’his­toire

Les stickers « We make » sont un mème du Teta­lab, un hackers­pace toulou­sain (même s’ils disent « choco­la­tine », c’est quand même des gens biens 😛) et dont voici l’origine :

L’ar­gu­ment prin­ci­pal utilisé pour la mise en place d’un système de filtrage sur Inter­net est toujours la porno­gra­phie et la pedo-porno­gra­phie.
Mais quand ce systèmes est en place on se rend vite compte que c’est rare­ment le ‘porn’ qui est filtrée.
‘We Make Porn’ rappelle a tout le monde que ses idées, son site inter­net ou son blog peuvent être filtrés.

Depuis, « We make porn » a été décliné de toutes les façons possibles et imagi­nables (voire l’ini­ma­gi­nable « We make Hummus » de Bram).

Bref.

WemaWema

TL;DR: allez jouez avec WemaWema sur https://luc.frama.io/wema­wema.

Le pouet de Genma date du 26 septembre à 15h42. À 19h56, la v1 de WemaWema était publiée ! Et depuis ce jour, ce ne sont pas moins de 14 versions qui sont sorties !

Alors oui, j’au­rais pu faire comme avec mes logi­ciels habi­tuels : commen­cer à la version 0.01 et monter tout douce­ment les versions. Mais là, c’était pour du pur fun, donc OSEF ! Une fonc­tion­na­lité = une nouvelle version ! Et tant pis si je sors plusieurs versions le même jour 😁

La fonc­tion­na­lité de départ est simple : deux lignes de textes, modi­fiables, et ça sort une image avec un fond jaune, les deux lignes de texte et un liséré noir inté­rieur.

Depuis cette première fonc­tion, il est possible :

  • choix de la taille, du posi­tion­ne­ment et de la couleur des textes
  • choix de la couleur du liséré
  • choix du fond : couleur unie, dégradé, direc­tion du dégradé (voire dégradé radiant), drapeau arc-en-ciel en dégradé, image de fond parmi les choix propo­sés, utili­sa­tion d’une image de fond que vous envoyez de votre ordi­na­teur
  • possi­bi­lité d’ajout d’un calque avec des « paillettes »
  • export SVG

Tout est fait côté client avec un canvas et du javas­cript tout tapé avec mes grosses pattes, sauf pour le SVG pour lequel j’uti­lise la biblio­thèque Canvas 2 Svg.

Il y a aussi un service en ligne qui génère auto­ma­tique­ment les images, utili­sable donc comme source d’une balise <img>. Ce service est aussi utili­sable dans les slash commands de Matter­most.

Prenons https://wema.fiat-tux.fr, l’en­droit où j’hé­berge ce service. Créez une slash command poin­tant vers cette URL avec, disons, /wemake comme appel. Quand vous écri­rez /wemake POUETS, le service vous renverra l’adresse de l’image « WE MAKE POUETS » du même service.

Le futur

Au moins deux chan­tiers sont à entre­prendre :

  • une refonte graphique : les para­mètres sont entre­po­sés pêle­mêle et on a déjà comparé ceux-ci au tableau de bord d’un Boeing 747
  • la possi­bi­lité de choi­sir la police des textes

Je pense aussi à ajou­ter la possi­bi­lité de redi­men­sion­ner l’ima­ge… bref, ça risque de deve­nir un géné­ra­teur de mèmes géné­rique 🙂

La license

C’est du AGPLv3.

Parta­ger

by Luc at October 09, 2017 03:30 PM

October 03, 2017

Luc Didry

Mettre à jour un serveur umap vers Debian Stretch

Ayant bien galéré, voici un petit guide pour mettre à jour un serveur Debian Jessie héber­geant umap vers Debian Stretch.

Commen­cez à mettre à jour votre Debian de façon clas­sique et redé­mar­rez. C’est après que tout est cassé.

Mise à jour du virtua­lenv

Vous aviez créé votre virtua­lenv avec virtua­lenv­wrap­per en choi­sis­sant python3, mais malheu­reu­se­ment, c’était la version 3.4 et main­te­nant c’est la 3.5 qui est instal­lée dans Debian. Bah, rien de plus simple : relan­cez la commande de créa­tion de votre virtua­lenv.

mkvirtualenv umap --python=`which python3`

Par contre, umap n’est toujours pas installé pour python 3.5. Hop, on le réins­talle (à exécu­ter dans le virtua­lenv) :

pip install umap-project

C’est tout pour la partie python. Par contre uwsgi plante lamen­ta­ble­ment à coup de

could not access file "$libdir/postgis-2.1": No such file or directory

C’est la faute à la version de l’ex­ten­sion post­gis de Post­greSQL : la mise à jour a provoqué l’ins­tal­la­tion de Post­greSQL 9.6, ce qui a provoqué la mise à jour du paquet postgresql-9.4-postgis-2.1 en postgresql-9.6-postgis-2.3.

Réins­tal­la­tion de post­gis pour Post­greSQL 9.4

Malheu­reu­se­ment, il n’y a pas de paquet postgresql-9.4-postgis-2.3 et vous ne pouvez pas réins­tal­ler postgresql-9.4-postgis-2.1.

La solu­tion est de passer par les paquets four­nis par les dépôts de Post­greSQL :

echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" \
  | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \
  | sudo apt-key add -
sudo apt update

À ce moment-là, j’ai voulu instal­ler postgresql-9.4-postgis-2.3, mais je me suis retrouvé avec postgresql-9.4-postgis-2.4, donc autant y aller gaie­ment en mettant à jour post­gis pour Post­greSQL 9.6 :

sudo apt install postgresql-9.4-postgis-2.4 postgresql-9.6-postgis-2.4

Connec­tez-vous à votre base de données Post­greSQL :

su postgres
psql umapdb

Véri­fiez la version de post­gis que vous indique Post­greSQL :

umapdb=# SELECT name, default_version, installed_version FROM pg_available_extensions WHERE name = 'postgis';
  name   | default_version | installed_version 
---------+-----------------+-------------------
 postgis | 2.4.0           | 2.4.0
(1 row)

Et mettez à jour l’ex­ten­sion :

umapdb=# ALTER EXTENSION postgis UPDATE TO "2.4.0";

Avec ça, ça devrait rouler. MAIS ! (bah oui, y a un « mais »)

Mais vous savez que vous avez main­te­nant deux versions de Post­greSQL sur votre serveur et qu’il vaudrait mieux passer sur la 9.6. J’y ai d’ailleurs consa­cré un article derniè­re­ment.

EDIT : atten­tion, le problème ci-dessous n’ar­ri­vera que si vous avez ajouté l’in­dex search_idx en suivant la recom­man­da­tion pour une grosse base. Ne modi­fiez pas les fonc­tions unaccent et to_tsvector sur votre nouveau clus­ter si vous n’aviez pas précé­dem­ment créé l’in­dex, cela risque­rait d’avoir des effets de bords indé­si­rables si jamais vous avez d’autres bases de données que celle d’umap sur votre Post­greSQL.

Problème : un index sur la table leaflet_storage_map empêche la migra­tion, et vous vous retrou­ve­rez avec le message

ERROR: functions in index expression must be marked IMMUTABLE

Réso­lu­tion du problème de l’in­dex

Ce n’est pas compliqué : on va suppri­mer l’in­dex sur le clus­ter 9.4 et le recréer une fois la migra­tion vers 9.6 effec­tuée.

umapdb=# DROP INDEX search_idx;

Hop, on fait la migra­tion en suivant mon tuto (ne suppri­mez pas tout de suite le clus­ter 9.4, faut d’abord véri­fier que tout fonc­tionne norma­le­ment).

Recon­nec­tons-nous sur la base d’umap, mais cette fois, ce sera sur le clus­ter 9.6 et tant qu’à faire, véri­fions que nous sommes bien connec­tés sur le bon clus­ter).

umapdb=# SELECT version();

Il est temps de recréer l’in­dex. Mais un bête

umapdb=# CREATE INDEX search_idx ON leaflet_storage_map USING gin(to_tsvector(unaccent(name)), share_status);

échouera avec le même problème que tout à l’heure. Il faut faire :

umapdb=# ALTER FUNCTION unaccent(text) IMMUTABLE;
umapdb=# ALTER FUNCTION to_tsvector(text) IMMUTABLE;
umapdb=# CREATE INDEX search_idx ON leaflet_storage_map USING gin(to_tsvector(unaccent(name)), share_status);

Et là on est bon ! Redé­mar­rez peut-être uwsgi pour qu’il prenne en compte le chan­ge­ment de clus­ter, mais je ne suis pas sûr que ce soit néces­saire.

Testez votre umap et si tout est bon, vous pour­rez virer votre clus­ter 9.4 et les paquets asso­ciés 🙂

Crédits : image d’illus­tra­tion by Himesh Kumar Behera on Unsplash

Parta­ger

by Luc at October 03, 2017 09:28 PM

September 16, 2017

Luc Didry

Cas d’usage de Last

Last est un logi­ciel que j’ai codé il y a peu. Il veut dire « Let’s Aggre­gate Superb Toots » et permet de créer un site à partir d’une liste de pouets (toots en anglais, c’est le terme dési­gnant les mini-articles du réseau social libre et décen­tra­lisé Masto­don).

Le prin­cipe est simple : on clone le projet, on modi­fie le fichier de confi­gu­ra­tion selon ses goûts, on y ajoute les pouets à récu­pé­rer, on committe, on push sur un serveur Gitlab avec les Gitlab pages acti­vées et hop ! Ça fait des choca­pic^W un site repre­nant tous les pouets. La marche à suivre complète est expliquée sur https://luc.frama.io/last­man/fr.html.

Je trouve Last de plus en plus inté­res­sant comme outil. Je m’en sers pour faire un recueil de mes mercre­dis fictions, ainsi que pour regrou­per des pouets-feuille­tons comme BackUp et Dans la vallée (avec l’ai­mable auto­ri­sa­tion de leurs aut·­ric·e·ur).

Mais en plus ça permet de faire des sites par rapport à une théma­tique, un évène­ment, un voya­ge… J’ai un pote qui est en vacances en Indo­né­sie. Il poste pas mal sur Masto­don, avec de superbes photos et annonce sur son blog qu’il va y reprendre ses pouets, parce que ce sont de belles photos.

C’est un cas parfait pour Last ! Pourquoi ? Parce qu’au lieu de reprendre le texte (copier/coller, mettre la date et l’heure) et les photos (clic droit, enre­gis­trer sous) pour écrire un article, il n’y a qu’à copier/coller les adresses des pouets dans last.conf, et hop ! Sachant qu’on peut éditer last.conf direc­te­ment depuis l’in­ter­face de Gitlab, on n’a même pas besoin d’avoir git ! Et ça donne plutôt bien : https://petit.frama.io/indo­ne­sie 🙂

Je trouve que ça permet de retrou­ver le côté « blog » du micro-blogage. En effet, Masto­don, Twit­ter et consorts sont des plate­formes de micro-blog­ging, mais va essayer de relire tous les pouets ou tous les tweets d’une personne, même les plus impor­tants ! Avec Last, l’au­teur (ou tout autre personne) peut sauve­gar­der les articles qu’il souhaite pour les retrou­ver plus faci­le­ment, les mettre en valeur… On retrouve un temps long, contrai­re­ment aux plate­formes en ques­tion où le flux d’ar­ticles ne s’ar­rête jamais.

Last but not least (😛), Last crée un flux RSS pour le site généré et un epub, vous permet­tant de tout lire de façon décon­necté, bien tranquille­ment sur votre liseuse 😉

Bref, je suis plutôt content de mon petit outil 😀

Photo d’illus­tra­tion : Alexandre Cham­bon

Parta­ger

by Luc at September 16, 2017 12:53 PM

September 10, 2017

Luc Didry

Merci à mes tipeurs :-)

Le 14 juillet 2016, j’ai lancé mes pages Tipeee et Libe­ra­pay.

La récom­pense de base est l’ap­pa­ri­tion sur une page mensuelle de remer­cie­ments… voici celle d’août ! En retard, encore et toujours. La rentrée au collège du gamin, les levers plus tôt (parce qu’il part plus tôt), la reprise inten­sive du travail… Je suis naze et je commence à peine à m’adap­ter à ce nouveau rythme.

Merci à :

J’avais annoncé le mois dernier :

le mois d’août risque d’être beau­coup plus calme : je suis rentré de vacances le 7 août et je reprends des vacances pour deux semaines (mais avec le PC cette fois) le 13.

Et c’est bien malheu­reu­se­ment ce qui s’est passé. Je n’ai rien fait 🙁 Peu de temps à cause des vacances, la rentrée du gamin à prépa­rer… Enfin je n’ai presque rien fait : j’ai publié mes micro-fictions du #Mercre­diFic­tion de Masto­don avec un epub spécial Ray’s day… et c’est du libre (licence CC-0). Et ça, grâce à mon logi­ciel Last, qui m’avait prémâ­ché le travail grâce à l’epub généré auto­ma­tique­ment 🙂

Mais promis, je vais me remettre au code !

Et vous pouvez toujours me soute­nir via Duni­ter !

Je remets ici mon expli­ca­tion du mois dernier.

Disclai­mer : je vais peut-être dire des sottises parce que j’ai pas tout compris mais je m’en fous, j’aime bien l’idée

Duni­ter est un projet de crypto-monnaie mais contrai­re­ment au bitcoin où c’est la course à la puis­sance de calcul pour géné­rer la monnaie et deve­nir riche, le but est de créer une monnaie libre (le Ğ1, prononcé comme june en anglais), basée sur une toile de confiance (il faut rece­voir 5 certi­fi­ca­tions pour être membre) et où chacun des membres reçoit tous les jours un divi­dende univer­sel. Je dois dire que je suis assez curieux de ce qu’on peut faire avec un système ressem­blant forte­ment au salaire à vie 🙂

C’est pourquoi j’ai créé mon compte et ait fait ce qu’il fallait pour rece­voir mes certi­fi­ca­tions (rencon­trer des gens, tous­sa…). Ma clé publique est :

 2t6NP6Fvvuok2iRWA188C6pGokWAB5Kpf1S1iGtkN9tg

Et comme un projet n’est utile que si on s’en sert, je vous propose de me soute­nir en Ğ1 tout en béné­fi­ciant des mêmes récom­penses que celles présentes sur ma page Tipeee (j’ai arbi­trai­re­ment choisi une parité euro/Ğ1 car je n’ai pas vrai­ment trouvé de page expliquant comment évaluer le cours du Ğ1 en euros, et au final, est-ce vrai­ment néces­saire ? À nous de choi­sir quelle valeur a cette nouvelle monnaie 🙂. Et puis ça me simpli­fie la vie).

Voici donc les diffé­rentes contre­par­ties et leur prix (chaque contre­par­tie comprend celles de tarif infé­rieur) :

  • 1 Ğ1 : vous appa­raî­trez sur la page mensuelle des remer­cie­ments
  • 2 Ğ1 : vous rece­vrez une photo dédi­ca­cée de mon chat
  • 3 Ğ1 : vous rece­vrez 3 stickers repre­nant les logos de Lstu, Lutim et Lufi. De quoi déco­rer son ordi et se la péter en société 😁
  • 5 Ğ1 : un commit vous sera dédié chaque mois (si je déve­loppe suffi­sam­ment pour le nombre de personnes à ce niveau)
  • 15 Ğ1 : vous pouvez me deman­der de bosser en prio­rité sur un bug ou une demande de fonc­tion­na­lité d’un de mes logi­ciels (dans la mesure du faisable, hein).
  • 100 Ğ1 : quand j’au­rais un nouveau projet, vous pour­rez en choi­sir le nom et le logo

Pour en savoir plus sur Duni­ter et Ğ1, je vous propose d’al­ler voir cet article de cgeek : https://blog.cgeek.fr/de-linte­ret-dune-monnaie-libre.html ainsi que la théo­rie rela­tive de la monnaie pour les enfants.

PS : j’ai aussi une adresse bitcoin si vous souhai­tez me soute­nir par ce biais

Parta­ger

by Luc at September 10, 2017 02:43 PM

September 06, 2017

Romain Dessort

Convert SSH keys from a format to another

An SSH key can be stored in multiple format. ssh-keygen from OpenSSH generates keys in its own format, but other SSH implementations can use other formats. PuTTY for example generates keys in RFC4716 format, which looks like this:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgK349HFUE929fXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcIFEO929JFNEJONBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----

You can't simply copy-paste this in an authorized_keys file. Hopefully you can easily convert the public key from a format to another. This is done by I-do-about-anything-and-everything command, aka ssh-keygen:

$ ssh-keygen -i -m <format> -f input_key.pub > output_key.pub

-m specify the input key format among RFC4716 (the format used by PuTTY, this is the default if -m isn't specified), PKCS8 and PEM.

September 06, 2017 09:46 PM

Get a list of opened Firefox tabs

Since I usually work with 2 Firefox on 2 different computers (a personal one and a professional one), I often need to get back some of my opened tabs from the Firefox instance running on my second computer.

Firefox store all opened tabs and windows and their history in the sessionstore-backups/recovery.js in your profile's directory. So as long as this file is synchronized in some way to a remotely accessible machine (backups), you can parse the file and get the list of all your opened tabs and windows. I wrote a simple Python script to print tab's title and URL of each tabs from the recovery.js file:

#!/usr/bin/env python3

# Print title and URL for each tab of each window of the specified
# Firefox profile.

import json

with open("<path to your Firefox profile's directory>/sessionstore-backups/recovery.js", "r") as f:
    jdata = json.load(f)
    for w in jdata['windows']:
        for t in w['tabs']:
            i = t['index'] - 1
            print("%s (%s)" % (
                t['entries'][i]['title'],
                t['entries'][i]['url']
                ))

You will get a list like this:

$ show-ff-tabs.py
[‌]
GitHub - devimust/easy-bookmark-manager: Easy and simple self-hosted bookmark / snippet management tool. (https://github.com/devimust/easy-bookmark-manager)
GitHub - Kickball/awesome-selfhosted: This is a list of Free Software network services and web applications which can be hosted locally. Selfhosting is the process of locally hosting and managing applications instead of renting from SaaS providers. (https://github.com/Kickball/awesome-selfhosted#personal-dashboards)
GitHub - cdevroe/unmark: An open source to do app for bookmarks. (https://github.com/cdevroe/unmark)

(you can see that I currently looking for a simple self-hosted bookmark manager :-) )

More information for the structure of recovery.js file on the Mozilla wiki.

September 06, 2017 09:20 PM

August 22, 2017

Luc Didry

Ray’s Day 2017

Le Ray’s day, c’est la fête de la lecture, quelle qu’elle soit, quel que soit le support. Ce qui compte, ce sont les histoires, leurs auteurs et les lecteurs. Le Ray’s day a lieu le 22 août, jour de l’an­ni­ver­saire de Ray Brad­bury grand amou­reux des livres disparu en 2012 et qui a inspiré Neil Jomunsi pour créer cette jour­née spéciale :-)

Je vous propose cette année un epub repre­nant mes parti­ci­pa­tions au #Mercre­diFic­tion sur Masto­don : https://rays­day.net/b/titles/51

Enjoy :-)

Parta­ger

by Luc at August 22, 2017 04:23 PM

January 15, 2011

Gatien Gaspard

Accès à un lecteur réseau depuis Apache

Nos données étant de plus en plus souvent stockées sur des supports distants, il peut être nécessaire de donner accès à un lecteur réseau à notre serveur Apache.

Cette opération se révèle extrêmement facile sur un système Gnu/Linux puisqu’il suffit de créer un point de montage sur le système et d’autoriser son accès via la configuration d’Apache:

Monter le lecteur réseau automatiquement via fstab (y ajouter la ligne suivante):

//192.168.0.10/apache /mnt/netdrive smbfs rw,user,uid=1000,gid=1000,credentials=/etc/samba/pub.cred 0 0

user = n’importe quel utilisateur peut monter et démonter le partage
uid,gid = à qui appartient le partage (par défaut root.root avec les droits 755 donc un utilisateur ne peut écrire par défaut dans le partage)
credentials = on met pas l’utilisateur et le mot de passe en clair dans fstab mais dans un fichier /etc/samba/pub.cred (protégé en lecture lui)

le fichier pub.cred contient:
username=Domain\Apache
password=motdepasseassocie

source: Monter un partage Samba avec fstab de Jérome Hanoteau

Configurer les droits d’accès depuis Apache (/etc/apache2/sites-available/default ou autre), il faut ajouter les lignes suivantes (à adapter) entre les balises VirtualHost souhaitées:

1
2
3
4
5
6
7
Alias /netdrive/ "/mnt/netdrive/"
<Directory "/mnt/netdrive/">
    Options -Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

En revanche sous Windows, impossible d’accéder à un lecteur réseau depuis Apache avec une configuration par défaut. Et pour cause, par défaut le serveur Apache est lancé en tant que service par l’utilisateur « System », or cet utilisateur ne peut accéder aux partages réseaux.

La solution apparait donc simplement, il suffit de modifier le compte avec lequel le serveur Apache est lancé. Il faut remplacer l’utilisateur « System » par un utilisateur du domaine ayant les droits nécessaires sur les répertoires concernés. Pour la suite nous utiliserons donc l’utilisateur « domain\Apache ».

Les étapes:

  • Win+R
  • Services.msc
  • Clic droit sur « Apache »
  • Onglet « Log on »
  • Modifier le compte comme sur l’image ci-contre
  • Valider
  • Ajouter les droits sur les répertoires nécessaires au fonctionnement d’Apache pour cet utilisateur:
    • C:\Program Files\Apache Software Foundation\Apache2.2
    • C:\Windows\temp

Pour ajouter les droits sur un répertoire, il faut effectuer un clic droit sur celui-ci puis « Propriétés » puis dans l’onglet « Security », ajouter l’utilisateur souhaité et lui donner les droits souhaités (lecture, écriture pour les répertoires locaux nécessaires à Apache, lecture et/ou écriture pour les lecteurs réseaux en fonction des besoins).

Il faut également effectuer cette opération sur les répertoires réseaux que l’on souhaite lui rendre accessible.

/!\ !!! Nous touchons ici à la gestion des droits d’accès, veillez à ne pas fournir trop de droits à cet utilisateur afin de limiter l’impact en cas d’erreur dans la configuration (utiliser un utilisateur de base de votre domaine et ne lui donner accès qu’aux répertoires nécessaires). !!! /!\

N’oublions pas de relancer le service Apache une fois ces modifications effectuées afin de valider le fonctionnement du serveur avec ce nouvel utilisateur.

Nous passons ensuite à la configuration d’Apache à proprement parler, comment rendre accessible ce fameux lecteur réseaux ?

Contrairement à ce que l’on pourrait penser, il est impossible de dire à Apache d’utiliser un lecteur réseau identifié par une lettre. De même, la gestion des droits à ce répertoire doit se faire au niveau Windows et non dans la configuration d’Apache.

Ainsi au niveau de la configuration d’Apache lui-même, rien de spécial. Il est possible d’ajouter un alias pour faciliter les choses mais ce n’est pas obligatoire.

Alias /netdrive/ « //192.169.0.10/apache/ »

Il suffit ensuite d’utiliser soit le chemin réel, soit l’alias dans notre code PHP ou autre afin d’accéder à ces données.

Exemple:

Download test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Affiche le contenu d'un fichier sur le réseau et déplace celui-ci
$rep = "//192.169.0.10/apache/";
$annee = date("Y");
$dest_rep = "//192.169.0.10/apache/$annee";
$dir = opendir($rep);
while ($f = readdir($dir))
{
   if(is_file($rep.$f))
   {
     echo $f;
     rename($rep.$f, $dest_rep.$f);
   }
}
?>

by Gatien at January 15, 2011 01:17 PM

November 20, 2014

Luc Didry

OpenWRT : les hôtes du lan ne peuvent pas se connecter les uns aux autres

Quand la neufbox comme box pour mon ADSL chez LDN a commencé à rendre l’âme, j’ai acheté un modem-routeur Buffalo (AirStation Nfiniti WBMR-HP-G300H) histoire d’avoir un truc hackable sur lequel je pourrais mettre OpenWRT et faire plus que juste modem-routeur.

Ça marchait très bien jusque là. Le passage à OpenWRT s’est fait relativement facilement et j’ai pu le transformer en plus en serveur DLNA, ce qui m’a bien servi jusqu’à ce que je m’installe un Kodi (ex-XBMC).

J’ai voulu tester ce soir un Raspberry Pi dans l’optique d’en faire un serveur de backup. Problème : il n’arrivait pas à contacter un autre ordinateur du réseau, alors même qu’ils étaient tous les deux connectés en filaire sur le routeur ! Alors que depuis mon pc en wifi, je pouvais contacter n’importe quel ordinateur dans le LAN et que le routeur contactait bien les deux ordinateurs.

La raison est finalement simple : OpenWRT isole chaque port physique. Pour résoudre ça, j’ai bien trouvé une astuce, à savoir mettre ceci :

config switch 'eth0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'eth0'
    option vlan '1'
    option ports '0 1 2 3 4 5'

dans le /etc/config/network et rebooter le Buffalo. Bah oui, mais ça ne marchait pas !

J’ai par contre trouvé ces commandes à taper dans le terminal :

swconfig dev eth0 vlan 1 set ports "0 1 2 3 4 5"
swconfig dev eth0 set apply

Et là ça fonctionne tout de suite ! Et pour que cela soit exécuté à chaque redémarrage, j’ai posé ces commandes dans /etc/rc.local (oui, c’est sale, mais je n’avais pas envie d’avoir à découvrir les subtilités d’OpenWRT plus que ça).

Bref : ça marche !

Partager

Flattr this!

by Luc at November 20, 2014 10:54 PM

February 16, 2014

Luc Didry

Lut.im, un service d’hébergement d’images gratuit, libre et anonyme

Que celui qui n’a jamais voulu partager simplement une capture d’écran lève le doigt. Personne ?

Logo de LUTIm

Le partage d’images nous confronte souvent à divers problèmes :

  • un email prend du temps (retrouver l’adresse du destinataire, l’envoi, etc.) ;
  • un email prend de la place. Ce n’est pas grand chose, mais pour une image jetable, c’est de l’espace disque perdu, que ce soit dans le dossier « Envoyé » de l’expéditeur ou celui du destinataire. Oui, on peut supprimer le mail, mais c’est encore une action à effectuer.
  • une solution commme imgur nous ramène au sempiternel problème des Conditions Générales d’Utilisation imbitables, pas traduites et qu’on ne lit de toute façon jamais en entier. Pour ce genre de service, on risque de fournir certains droits à l’hébergeur… et ça c’est pas cool !
  • un owncloud (ou équivalent) fera bien le travail, au prix d’une certaine complexité de partage et de liens à la longueur ahurissante.

Pour répondre à cette problèmatique, j’ai codé LUTIm (prononcez comme lutin). Écrit en Perl avec le framework Mojolicious, utilisant le Twitter Bootstrap, un sous ensemble de Font Awesome et un plugin jQuery légèrement modifié pour la gestion du glisser/déposer, LUTIm est un logiciel libre (licence AGPL) de partage d’image anonyme et gratuit.

Capture d'écran de l'interface de LUTIm

Le principe est simple : on glisse/dépose des images (ou via le sélecteur de fichier classique) et on récupère 3 liens :

  • un lien vers l’image (utilisable dans une balise img par exemple) ;
  • un lien de téléchargement de l’image (pour éviter le Clic droit > Enregistrer sous) ;
  • un lien vers une page qui affiche l’image et qui est utilisable sur Twitter (l’image apparaîtra dans le tweet).

Des options du formulaire d’envoi permettent de supprimer automatiquement les images après la première consultation ou après 24h.

Bien évidemment, pour des questions légales, il n’est pas possible d’avoir un service totalement anonyme : les IPs des envoyeurs d’image et celles des consulteurs sont enregistrées dans les logs, mais c’est quelque chose de tout à fait habituel sur tout site web. Les IPs des envoyeurs ainsi que celle du dernier consulteur sont enregistrées dans la base SQLite pour accélerer la recherche d’informations en cas de requète judiciaire (je sais comme il peut être fastidieux et long de chercher dans des logs).

Lors de la suppression automatique d’une image, le fichier est bel et bien supprimé, mais son entrée en base de données persiste et contient l’empreinte SHA512 du fichier.

De par sa nature libre, vous pouvez bien évidemment installer et utiliser très facilement LUTIm sur votre propre serveur, mais vous pouvez aussi vous contenter d’utiliser l’instance officielle : http://lut.im

LUTIm est disponible en français et en anglais, la langue étant choisie selon les préférences du navigateur. Toutes les bonnes volontés sont les bienvenues pour proposer d’autres langues !

Enfin, LUTIm propose un plugin pour Shutter, logiciel de capture d’écran, pour permettre à celui-ci d’envoyer les capture sur http://lut.im directement (plugin à installer soi-même, le site du projet ayant l’air cassé, je n’ai pu leur remonter le plugin).

Flattr this!

by Luc at February 16, 2014 12:34 AM

July 18, 2014

Florent Peterschmitt

OpenSSL facile avec genssl

Ça ne doit pas être la première collection de scripts permettant de faire cela, mais quand on veut apprendre à se servir un peu d’un outil, on est toujours tenté de ré-inventer la roue afin de comprendre plus facilement.

J’ai eu besoin, comme beaucoup de monde, de créer des certificats SSL “serveurs” et “clients”, signés par une CA.

Pif paf poum :

https://git.beastie.eu/Leryan/genssl

C’est tout expliqué dans le README comment l’utiliser, et les exemples de scripts sont là pour aider à démarrer.

Tout cela mériterait d’être amélioré avec la gestion des CRL et une meilleure gestion des variables d’environnement et du fichier openssl.cnf.

by Florent Peterschmitt at July 18, 2014 10:30 AM

January 05, 2011

Gatien Gaspard

Squid, Proxy et Reverse-Proxy sur un même serveur

Un petit mémo sur Squid pour ouvrir cette nouvelle année pour laquelle je souhaite mes Meilleurs Voeux à chacun de vous, fidèles lecteurs ou lecteurs d’un jour, vous êtes de plus en plus nombreux à suivre ce blog et je vous en remercie, continuons sur cette lancée pour 2011.

Squid peut être configuré en tant que « Proxy » (comportement par défaut), il permet dans ce cas à ses utilisateurs d’accéder à tout ou partie d’internet ou de divers Intranet. Il peut également servir de « Reverse-Proxy » , il permet alors de rendre disponible certaines ressources internes (provenant d’un ou plusieurs serveurs) tout en proposant une mise en cache, ce qui va alléger la charge des serveurs situés derrière lui.

Schéma du principe de fonctionnement du Reverse-Proxy:

Par défaut, une seule instance de squid peut être lancée à la fois. Si l’on souhaite mettre en oeuvre un Proxy et un Reverse-Proxy sur un même serveur, il va falloir procéder à quelques modification dans la configuration de squid.

Nous n’allons pas nous occuper ici de la configuration de Squid en mode Proxy puisque la configuration par défaut permet déjà ce fonctionnement. Nous allons donc permettre le lancement de multiples instances et configurer le Reverse-Proxy.

Nous allons donc avoir 2 fichiers de configurations différents:

/etc/squid/squid.conf
/etc/squid/squid-reverse.conf

Voyons un exemple de ce que peut donner la configuration du fichier squid-reverse.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# nom du reverse-proxy et port d'écoute
visible_hostname test
http_port 80 defaultsite=192.168.0.5
#
# le site proposé par défaut par le reverse-proxy se trouve sur 192.168.0.5:
cache_peer 192.168.0.5 parent 80 0 no-query no-digest originserver name=test
acl webserver dst 192.168.0.5
http_access allow webserver
#
# autoriser l'utilisation du reverse-proxy sur le port 80 pour tout le monde:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
acl web port 80
http_access allow web
#
# configuration du cache:
cache_dir ufs /var/spool/squid3 2048 16 256
coredump_dir /var/spool/squid3
cache_effective_group proxy
cache_mem 50 MB
minimum_object_size 0 KB
maximum_object_size 64096 KB
#
# Emplacement du PID et des fichiers de logs:
pid_filename /var/run/squid-reverse.pid
access_log /var/log/squid/access-reverse.log squid
cache_log /var/log/squid/cache-reverse.log
#
forwarded_for on

Nous devrons ensuite générer le cache correspondant à ces 2 configurations:

/usr/sbin/squid -z

/usr/sbin/squid -z -f /etc/squid/squid-reverse.conf

Puis modifier le script de lancement de squid, ou en ajouter un pour les gérer indépendamment, nous allons ajouter un fichier:

/etc/init.d/squid-reverse

Pour faire simple et tester, il suffit d’y placer la commande de lancement suivante:

/usr/sbin/squid -f /etc/squid/squid-reverse.conf

Libre à vous ensuite de créer un véritable script de lancement en vous basant sur le script de lancement de Squid ou sur le template disponible (« /etc/init.d/skeleton« ).

Lancer ces scripts automatiquement au démarrage pour démarrer le Proxy et le Reverse-Proxy:

update-rc.d -f squid defaults

update-rc.d -f squid-reverse defaults

Nos 2 services ne devant pas être utilisés par les mêmes personnes, le proxy sera utilisé depuis le réseau interne tandis que le reverse-proxy sera utilisé par les internautes souhaitant accéder à notre site, nous penserons également à configurer un parefeu à l’aide d’iptables afin de sécuriser ce serveur proxy, un exemple suivra dans le prochain article.

Sources et ressources relatives:

by Gatien at January 05, 2011 04:41 AM

September 22, 2015

Luc Didry

Erco : Exabgp Routes Control­ler

Pour les besoins du réseau Lothaire (aka « mon boulot »), j’ai écrit un service web permet­tant de pilo­ter Exabgp (logi­ciel permet­tant de faire des annonces de routes en BGP. C’est du Soft­ware-Defi­ned Networ­king) afin de lui ajou­ter ou de lui reti­rer des routes de façon simple, afin de faire du RTBH (Remo­tely Trig­ge­red Black Hole).

Ce logi­ciel (libre, bien sûr, comment pour­rait-il en être autre­ment ?), s’ap­pelle Erco (Exabgp ROutes COntrol­ler). Le site de présen­ta­tion est https://erco.xyz, et une démo est dispo­nible sur https://erco.xyz/demo/.
Soyez indul­gents sur le temps de char­ge­ment du site, c’est hébergé chez moi, derrière de l’ADSL.

Le service expose une API REST, ce qui permet à Erco d’être piloté par des programmes.

Pour les besoins du service, j’ai écrit un programme pour expo­ser l’API d’Exabgp, et inci­dem­ment, j’ai écrit un client en ligne de commande pour cette API.

Les sources d’Erco sont sur https://git.frama­soft.org/luc/erco.

Pour les curieux de tech­nique, le logi­ciel est écrit en Perl avec le frame­work Mojo­li­cious (bien sûr, comment pour­rait-il en être autre­ment ? 1).

1 : c’est pas parce qu’on n’est pas vendredi qu’on n’a pas le droit de trol­ler un peu :-P

Parta­ger

Flattr this!

by Luc at September 22, 2015 06:45 AM

April 30, 2015

Luc Didry

Le sculpteur

Couverture de la BD « Le sculpteur »

Couverture de la BD « Le sculpteur »

Scott McCloud est un auteur de bande dessinée qui m’est cher. Pas pour ses BDs, non, mais pour son essai sur la BD, L’art invisible où il explique l’objet analysé grâce à celui-ci. C’est une BD sur la BD. Jamais pédant, l’auteur se met en scène pour nous entraîner derrière les case, pour nous apprendre pourquoi nous aimons autant la BD, ce qui en fait un médium si particulier.

Bref, quand j’ai vu qu’un nouvel ouvrage de Scott McCloud était sorti, j’ai hésité. Parce qu’il restait pour moi celui qui m’a fait comprendre l’infinie richesse qui se cache derrière les coups de crayons. Voir ce qu’il en faisait n’allait-il pas me décevoir ? Comment sortir quelque chose d’aussi brillant que l’art invisible ?

J’ai eu l’occasion de lire quelques pages du sculpteur chez une personne qui m’a hébergée à Bruxelles.

Quelques pages ont suffit à conquérir mon cœur.

Le dessin est à mille lieues de l’art invisible et m’a fait terriblement penser au trait d’un autre auteur américain, Craig Thompson, qui m’a vraiment remué avec Blankets, manteau de neige.

Dans le sculpteur, Scott McCloud revisite le pacte faustien avec un sculpteur new-yorkais, David Smith, non sans talent mais sans succès. Il passe alors un pacte qui lui permet de modeler n’importe quel matériau de ses mains nues contre une échéance : il mourra au bout de 200 jours.

David est torturé, paumé et même son nouveau talent ne l’aide pas… jusqu’à ce qu’il retrouve Meg, une artiste rencontrée quelques heures à peine après avoir passé son marché.

Au-delà de l’histoire que je ne vous dévoilerai pas plus1, le dessin en noir, blanc et nuances de bleu est magnifique et la narration nous emporte. Il est dur, très dur de lâcher ce pavé2, même après l’avoir fini. Il fait partie de ces quelques ouvrages qui vous laissent une sensation au fond du cœur après l’avoir refermé.

À lire. Vraiment.


  1. ça serait dommage d’en dire plus 

  2. près de 500 pages quand même 

Partager

Flattr this!

by Luc at April 30, 2015 11:44 PM

August 25, 2013

Luc Didry

Cacher les moteurs de recherche par défaut sur Firefox pour Android

La nouvelle nightly de Firefox pour Android amène plusieurs changements. Certains au niveau de la page d’accueil, d’autres au niveau des moteurs de recherche et sans doute d’autres trucs sous le capot que je n’ai pas vu (mais j’ai l’impression qu’il est plus rapide qu’avant).

Au niveau des moteurs de recherche, il y a un truc génial : un appui long sur le champ de recherche d’un site permet de l’ajouter à la liste de ses moteurs. C’est franchement pratique et j’ai hâte d’avoir ça sur la version desktop.

Par contre, on ne peut plus désactiver les moteurs de recherche intégrés dans le navigateur, et ça c’est dommage.

Pour les cacher, il suffit d’aller à l’adresse about:config, de rechercher browser.search.loadFromJars et de le passer à false.
Simple, mais efficace.

Flattr this!

by Luc at August 25, 2013 04:12 PM

August 07, 2014

Florent Peterschmitt

Puppet - Gestion des dépendances entre classes

Problème

Nous souhaitons faire en sorte que l’exécution de classes Puppet se fasse dans un ordre bien choisi et sans avoir à gérer les dépendences à la main de cette façon :

Ressource B require -> Ressource A

En effet, si on doit s’assurer que tous les éléments présents dans une classe s’exécutent avant la ressource (ici une autre classe) A, alors il faudra utiliser le mécanisme de containment.

Ce qui m’a amené à trouver la solution provient du ticket 8040.

Solutions

Il existe une solution moche et une propre, la moche étant un workaround pour les version inférieures à 3.4.0 de Puppet.

Solution Puppet < 3.4.0

class init {
    anchor {'init::begin':} ->
    class {'init::install':} ->
    class {'init::config':} ->
    anchor {'init::end':}
}

Solution Puppet >= 3.4.0

class init {
    contain init::install
    contain init::config

    Class['init::install'] ->
    Class['init::config']
}

Mise en œuvre

Pour ma configuration, voici ce qui a été réalisé :

by Florent Peterschmitt at August 07, 2014 05:30 PM

May 04, 2013

Florent Peterschmitt

ZFS - FreeBSD 9.1-RELEASE et 9-STABLE

Bon, cette fois plutôt que de tout expliquer parce que c’est déjà fait, je vous propose un script adaptable très facilement en fonction de vos besoins.

Je vous conseil de vous faire un « mirroir » pour l’installation. Téléchargez le script, les archives que vous voulez, mettez ça sur quelconque serveur web/FTP, modifiez le script selon vos besoins et zou !

Ajoutez aussi quelques fichiers de conf dont vous pouvez avoir besoin pour votre machine. Par exemple, un serveur qui une fois démarré n’est plus accessible que par le réseau… a besoin d’avoir le réseau configuré au démarrage. Captain obvious !

Démarrez en mode LiveCD (ou en rescue-pro chez OVH ça marche aussi)

kbdmap # pour le clavier

Configurez le réseau : dhclient, ifconfig…

dhclient <interface>
# Ou alors
ifconfig <interface> <ip>
cd /tmp
fetch http://<source>/zfs.sh
chmod +x zfs.sh
./zfs.sh

Vous être chrootés dans le nouveau système, bricolez, rebootez, savourez !

by Florent Peterschmitt at May 04, 2013 01:15 PM

June 08, 2011

Simon Florentin

[1 an en Suède]: Världsrekord i vattenkrig

Comme annoncé précédemment, la plus grosse bataille d'eau du monde à eu lieu à Linköping hier après-midi, le record était jusqu'à présent de 3000 personnes il me semble. Selon les organisateurs, 1h après le lancement de l’évènement, 3500 personnes étaient déjà en train de combattre.

by Simon at June 08, 2011 10:29 AM

June 03, 2015

Luc Didry

Mise à jour d’OpenWRT sur Buffalo WBMR-HP-G300H

EDIT :

WARNING : il y a un sale bug dans l’IPv6 de Barrier Brea­ker ! Je perds l’IPv6 une fois par jour : https://dev.open­wrt.org/ticket/12888

Ne mettez pas à jour, sauf si vous vous foutez d’IPv6 (et vous ne devriez pas !).

Comme je suis abonné à un vrai FAI qui four­nit du vrai Inter­net bio, sans filtre ni surveillance, fait à la main et roulé sous les aisselles, je n’ai pas de box four­nie par celui-ci (enfin, si, on en prête, des neuf­box ancienne géné­ra­tion mais c’est pas top, ça fait pas d’IPv6).

Du coup, je m’étais payé un modem/routeur Buffalo WBMR-HP-G300H qui a l’im­mense avan­tage d’être compa­tible OpenWRT. OpenWRT est un firm­ware de modem/routeur libre, ce qui veut dire que flasher son routeur avec OpenWRT, c’est aussi jouis­sif que de libé­rer un ordi en mettant une distri­bu­tion GNU/Linux sur un ordi fourni avec Windows. :D

Je ne vais pas détailler l’ins­tal­la­tion d’OpenWRT, mais sa mise à jour, de la version 12.09 (Atti­tude Adjust­ment) vers la dernière version en date, la 14.07 (Barrier Brea­ker).

Mise à jour

Tout d’abord, on va récu­pé­rer l’image kiva­bien et l’en­voyer sur le routeur (partons du prin­cipe que le routeur est acces­sible à l’IP 192.168.1.1) :

wget https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/openwrt-lantiq-xway-WBMR-squashfs.image
scp root@192.168.1.1:/tmp

(voir ici pour libé­rer de la place s’il n’y en a pas assez dans /tmp)

On va aussi récu­pé­rer un fichier néces­saire pour la suite et on se le garde au chaud sur son ordi :

wget https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/packages/base/kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk

On met à jour :

ssh root@192.168.1.1
cd /tmp
sysupgrade openwrt-lantiq-xway-WBMR-squashfs.image

Un petit reboot s’il ne le fait pas tout seul.

Et là, c’est le drame !

Plus d’ADSL !

C’est simple : l’ADSL sur ligne télé­pho­nique clas­sique néces­site l’an­nexe a alors que l’image vient avec l’an­nexe b (ne me deman­dez pas la diffé­rence entre ces deux trucs ni ce que c’est).

On envoie alors le paquet télé­chargé tout à l’heure :

scp kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk root@192.168.1.1:/tmp

On supprime l’an­nexe b et on installe l’an­nexe a :

ssh root@192.168.1.1
cd /tmp
opkg remove kmod-ltq-dsl-firmware-b-ar9
opkg install kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk

Ensuite on met à jour /etc/config/network, dans la section config adsl :

config adsl 'dsl'
    option annex 'a'
    option firmware '/lib/firmware/adsl.bin'

On reboot (oui, je suis une feignasse qui ne souvient plus quel service il a redé­marré pour faire fonc­tion­ner le brol). Et là, norma­le­ment, ça fonc­tionne.

M’en­fin ? Où est passé mon IPv6 ?

Barrier Brea­ker simpli­fie la gestion de l’IPv6 en inté­grant tout ce qu’il faut pour que ça fonc­tionne, sans paquet supplé­men­taire. Mais comme ce n’était pas le cas avant, on a une confi­gu­ra­tion qui ne va pas :-(

On commence par virer radvd :

opkg remove radvd

Ou alors, vous pouvez juste l’ar­rê­ter et le désac­ti­ver :

/etc/init.d/radvd stop
/etc/init.d/radvd disable

Ensuite on met à jour /etc/config/network (atten­tion, je ne fais qu’ajou­ter de la config dans les diffé­rentes section, ne suppri­mez pas ce que vous avez déjà) :

config interface 'lan'
    option ip6assign '64'
    option ip6hint '42'

Expli­ca­tion : ip6assign '64' indique que vous assi­gnez un réseau /64 à votre réseau local et ip6hint '42' sera conca­téné à votre bloc d’IPv6.

C’est pas clair, donc voici un exemple : mettons que votre FAI vous four­nisse le bloc 2001:DB8:1337::/48. Avec les options ci-dessus, les machines de votre réseau local piochera dans le bloc 2001:DB8:1337:42::/64.

Ça, norma­le­ment, vous l’avez déjà si vous aviez déjà confi­guré de l’IPv6 avant la mise à jour :

config interface 'wan'
    option ipv6 '1'

Et on ajoute une nouvelle section :

config interface wan6
    option ifname   '@wan'
    option proto    dhcpv6

Main­te­nant on modi­fie /etc/config/dhcp (toujours en ajout dans les sections exis­tantes) :

config dhcp 'lan'
    option interface 'lan'
    option ra 'server'
    option dhcpv6 'server'
    option ra_management '2'

Véri­fiez que cette section a bien été ajou­tée lors de la mise à jour d’OpenWRT :

config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'

On s’as­sure que /etc/sysctl.conf contienne bien ces deux lignes :

net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

Et on reboote.

Voilà, norma­le­ment ça devrait rouler tout seul :-)

Et pour finir, une jolie nimage de la nouvelle inter­face web d’OpenWRT qui vient avec Barrier Brea­ker :

Capture d'écran de l'interface web de Barrier Breaker

Sources :

Parta­ger

Flattr this!

by Luc at June 03, 2015 06:00 AM

September 26, 2014

Florent Peterschmitt

Marre des trolls systemd sur les mailing lists ?

Quand y’en a marre…

Déjà que c’est très pénible d’écouter les reproches consternantes au sujet de systemd et de tous les défauts de la Terre qu’il soit-disant embarque avec lui, mais si en plus on se les tape dans les ML, rien ne va plus.

Donc :

if header :contains ["List-Post"] "user@lists.debian.org" {
 if header :matches "Subject" ["*systemd*"] {
   fileinto "Trash";
 } else {
  fileinto "Debian.Users";
 }
}

On pourrait même pousser le vice plus loin en filtrant aussi sur "*init*".

Faites’tous’chier.

by Florent Peterschmitt at September 26, 2014 05:00 PM

August 13, 2013

Florent Peterschmitt

Utiliser gpg-agent pour ssh

gpg-agent

Lancez l’agent GPG dans votre console, ou votre session X.org (via le fichier .xsession pour ceux qui l’utilisent), pour ça on pourra faire indifféremment du type de session :

eval $(gpg-agent --daemon --enable-ssh-support)

On pourra ajouter l’option suivante pour avoir une zolie interface fort pratique pour nous demander la passphrase, qu’on souhaite mémoriser, de la clef GPG ou SSH voulue :

--pinentry-program USRBINDIR/pinentry(-gtk|-qt4|-ncurses)

Pour SSH, petite manip’

Le manuel de gpg-agent stipule qu’il faudra exécuter un premier ssh-add pour que le support des clefs SSH soit effectif.

Enjoy

by Florent Peterschmitt at August 13, 2013 04:30 PM