Le petit coin de Nicolas

Aller au contenu | Aller au menu | Aller à la recherche

Streamer depuis une machine linux vers une borne airport express

Une des forces de mon Macbook est AirTunes qui permet de diffuser la musique d'iTunes vers n'importe quoi (une chaine hi-fi par ex) via une borne airport.

Après quelques recherches, j'ai découvert le projet AirPort Express ClientPlayer (raop) qui permet de diffuser de la musique vers une borne Airport Express. Pour aller encore plus loin, il s'avère que PulseAudio intègre le module raop, ce qui donne le paquet pulseaudio-module-raop sur des systèmes Debian/Ubuntu.

J'ai donc créé une VM avec "Ubuntu Netbook Remix 9.10" ; une fois installé, il m'a fallu installé les composants manquants :

 bash
sudo apt-get install alsa-base pulseaudio pulseaudio-module-raop

Puis éditer /etc/pulse/default.pa pour y ajouter les 2 lignes suivantes :

load-module module-raop-sink server="IP.DE.MA.BORNE"
load-module module-native-protocol-tcp auth-anonymous=1

ce qui donne :


[...]

load-module module-augment-properties

load-module module-raop-sink server="192.168.3.21"
load-module module-native-protocol-tcp auth-anonymous=1

[...]

Si PulseAudio tourne en service, relancer-le ; sinon il va peut-être falloir relancer votre session pour prise en compte du fichier.

Sous Gnome, allez ensuite dans les préférences du Son (Click droit sur le son dans la barre des tâches) > Sortie > Sélectionner RAOP.

PulseAudio est utilisable aussi bien sur un environnement Gnome que KDE (via Phonon) et surement les autres aussi ;-)

Source : Utiliser une borne airport express depuis Ubuntu

OS X et après ?

18 mois après l'acquisition de mon MacBook, je deviens songeur sur OS X et Apple de manière plus générale. J'avais décidé de quitter le monde Linux pour celui d'OS X au nom du "It just works", imovie pour du montage vidéo que je n'ai toujours pas pris le temps de faire, iphoto et surtout TextMate.

J'aurais tendance à dresser le bilan suivant :

  • Finder : quand on a gouté à Konqueror ben c'est bien mince
  • Spotlight : sous utilisé, uniquement en simple lanceur d'application
  • Exposé / Dashbord : jamais utlisé ; j'en reste au bon vieux alt-tab
  • Imovie : pas utilisé pour le moment
  • iphoto : autant la version 08 avec FFXporter était agréable à utiliser, autant la version '09 + FlickrExport est une cata (plantage à répétition, lourdeurs, etc). Quand je vois les dernières avancées de digikam...
  • TextMate : j'adore même si je ne l'utilise pas au niveau de son potentiel
  • Airtunes (ie pouvoir écouter Itunes où on veut via une borne aiport express) / AirFoll (même principe mais ne se limite pas à ITunes) : j'adore - dommage qu'Airtunes ne gère pas le .ogg
  • Delicious Library : pratique, surtout avec le lecteur de code barre et même si je me suis limité uniquement à mes BDs pour le moment
  • Mail : finalement, je suis en full webmail Gmail
  • Rip-it : très bon logiciel de copie de DVD
  • Tunnelblick : bon client OpenVPN
  • Alors que OS X pourrait accueillir mes dev web autour de CouchDB/Django, ils se retrouvent finalement/essentiellement dans des VMs (surtout pour CouchDB vu que j'avais des soucis avec CouchDBX et que je ne voulais pas avoir recours au macports.

Pour le reste, ce sont des applications que l'on trouve sur tous les environnements, donc je ne les mentionnerais pas.

Globalement, cela fonctionne bien. Jamais eu de problèmes particuliers ; quelques rares plantages.

Ce qui m'énerve c'est le coté faut payer (un peu) tout le temps et la politique commerciale d'Apple. Je me surprends donc à envisager le retour à une station libre de bout en bout. Se pose alors la question du retour à une plateforme GNU/Linux ou *BSD. Ben oui OS X étant un BSD-like, y a peut être une opportunité à saisir (ou pas) à rester sur du *BSD.

Si de bonnes âmes dans l'assistance ont des retours d'expérience à me faire partager sur les *BSD, je suis preneur :

  • Utilisation : surf, bureautique, multimédia (écouter de la musique, gérer mes photos, un jour faire du montage vidéo de base) et bien sur du dev web autour de Django & CouchDB pour le moment.
  • Reconnaissance matérielle ?
  • Utilisation d'un système *BSD / Linux sur un MacBook blanc ?

CouchDB 0.11 on Slackware 13

Juste pour signaler suite à la sortie de CouchDB 0.11.0, le slackbuild de CouchDB pour Slackware 13.0 est soumis depuis une petite semaine maintenant.

En attendant sa validation et publication, il est disponible ici :

http://nicolas.steinmetz.fr/slackware/13/couchdb-0.11-slackbuild.tar.gz

Suivant si vous êtes en 32 ou 64 bits, il vous faudra revoir la valeur de ARCH (que j'ai du laisser à 64 bits d'ailleurs)

L'installation de CouchDB se fait de la même façon que pour la version 0.10.1. Pour ceux ayant installé la version 0.10.1, la mise à jour via upgradepkg est normalement transparente :-)

Recherche développeur PHP - Symfony pour un annuaire d'entreprise à JCDecaux

Le développeur a été trouvé ; il ne sert plus à rien de postuler

Ci-après le descriptif de la mission :

Mission :

Conception et développement du nouvel annuaire d’entreprise Globe.

Les travaux relatifs à la mission seront :

  • Participation à la spécification détaillée du système constitué d’une base de données, d’une IHM de consultation et d’un ensemble de traitements batch
  • Conception et réalisation en PHP / Symfony (incluant les tests unitaires)
  • Elaboration des tests de qualification du système

Environnement technique :

  • PHP 5.2.x
  • Framework Symfony
  • MySQL 5.0/5.1
  • Microsoft Active Directory
  • Redhat 5.x

Compétences techniques requises :

  • Rédaction de spécifications détaillées
  • Framework Symfony et PHP
  • Modèle relationnel, requêtes SQL

Compétences techniques appréciées :

  • SQL Oracle (l'existant est stocké dans une base Oracle)
  • Javascript et jQuery
  • VBS (Visual Basic Script) (pour la réalisation de scripts - compétence non bloquante car pourra au pire être réalisée en interne)
  • Active Directory

Qualités humaines recherchées :

  • Esprit d’analyse
  • Rigueur
  • Dynamisme
  • Sens de la communication

Localisation du poste :

  • Plaisir ZI Sainte-Apolline (78)
  • Pas de télé-travail possible pour cette mission

Date de démarrage souhaitée :

  • Au plus tôt

Durée de la mission :

  • 50 jours sur 3 mois

Contact :

  • nicolas POINT steinmetz AT jcdecaux POINT fr

Extension Postgres pour PHP sous Slackware

Par défaut, la version de PHP fournie par Slackware ne comprend pas les extensions pgsql et pdo_pgsql, chose que nous allons corriger dans un instant :

Pour commencer, récupérer le slackbuild de PHP pour votre version de Slackware :

 bash
rsync -avz --del rsync://slackware.mirrors.tds.net/slackware/slackware64-13.0/patches/source/php ./
rsync -avz --del rsync://slackware.mirrors.tds.net/slackware/slackware64-13.0/source/n/alpine ./

Pour PHP, on s'appuie sur les patchs car la version par défaut dans Slackware 13.0 est PHP 5.2.10 et que par la suite il y a eu une mise à jour en PHP 5.2.12. Pour alpine, il s'agit d'une dépendance afin de pouvoir compiler l'extension imap de PHP. Il n'y a pas eu de mise à jour d'alpine depuis la sortie de Slackware 13.0 donc on le prend dans les sources originelles.

Editez ensuite php/php.Slackbuild pour y ajouter les informations relatives à Postgres dans le cadre du configure, à savoir :

 bash
--with-pgsql=shared,/usr \
--with-pdo-pgsql=shared,/usr \

Ce qui me donne au final (et avec au passage modification du BUILD pour le distinguer du paquet officiel)

 bash
BUILD=${BUILD:-1_slack13.0_with_pgsql}

[...]

  --with-mysql=shared,/usr \
  --with-mysqli=shared,/usr/bin/mysql_config \
  --enable-pdo=shared \
  --with-pdo-mysql=shared,/usr \
  --with-pdo-sqlite=shared \
  --with-pgsql=shared,/usr \
  --with-pdo-pgsql=shared,/usr \
  --with-pspell=shared,/usr \
  --with-mm=/usr \

[...]

Ensuite il faut éditer le fichier doinst.sh pour que les extensions relatives à Postgres soient chargées ; il y a surement plus propre comme méthode mais ça marche :

 bash
echo "extension=pgsql.so" >> /etc/httpd/php.ini
echo "extension=pdo_pgsql.so" >> /etc/httpd/php.ini

Ne pas oublier de re-gzipper à nouveau doinst.sh pour qu'il soit pris en compte par le slackbuild :

 bash
gzip doinst.sh

Une fois cela effectué, pour générer la création de votre package PHP, il vous suffit de faire :

 bash
./php.SlackBuild

Une fois généré, pour l'installer :

 bash
removepkg php
installpkg /tmp/php-5.2.12-x86_64-1_slack13.0_with_pgsql.txz

Pour ceux qui veulent récupérer le slackbuild ou bien le package 64 bits :

Pour ceux qui ne sont pas en 64 bits, il suffit de recompiler en précisant dans php.Slackbuild :

 bash
ARCH=${ARCH:-i486}

Et voilà...

Eviter le kernel panic en mettant à jour vers slackware current

Par curiosité, j"ai voulu voir ce que pouvait donner slackware-current (le branche "bleeding-edge" de slackware) et dans un premier temps bien mal m'en a pris vu que cela s'est terminé par un joli "Kernel Panic". Après discussion avec un collègue et un peu de recherche sur internet, il s'avère qu'à partir du noyau linux 2.6.32, Slackware a désactivé la vieille couche IDE qui faisait que les périphériques étaient vus en /dev/hd*.

Voici la manipulation à suivre pour passer d'une slackware 13.0 à slackware current :

Tout d'abord, utiliser un mirroir slackware-current en éditant /etc/slackpkg/mirrors en lieu et place du mirroir de la version stable. Mettre à jour ensuite votre distribution :

 bash
slackpkg update gpg
slackpkg update
slackpkg install-new
slackpkg upgrade-all

A ce stade, votre système est à jour et vous avez un joli noyau 2.6.33 en passe de devenir votre noyau par défaut.

Avant de redémarrer votre machine, il faut faire les manipulations suivantes :

  • Edition de /etc/lilo.conf pour remplacer les occurrences de /dev/hd* par /dev/sd*
  • Edition de /etc/fstab pour remplacer les occurences de /dev/hd* par /dev/sd*
  • Suppression de /etc/udev/rules.d/70-persistent-cd.rules ; Le fichier sera régénéré correctement au redémarrage de la machine
  • Si vous utilisez initrd au démarrage, il faut éditer /boot/initrd-tree/rootdev et regénérer votre image initrd via mkinitrd. Dans mon cas avec une installation de base de slackware, je n'en ai pas eu besoin. Par contre, j'en aurai besoin pour mon linutop.

A ce stade, si vous faites un lilo -v pour prendre en compte vos modifications, il va hurler puisqu'il ne trouve pas de périphérique /dev/sd*.

Pour cela il suffit de tricher un peu (ma partition /boot est sur /dev/hda2) :

 bash
ln -s /dev/hda /dev/sda
ln -s /dev/hda1 /dev/sda1
ln -s /dev/sda2 /dev/sda2
lilo -v
reboot

Au redémarrage, udev remplacera vos liens symboliques /dev/sd* par les bonnes entrées qui vont bien.

Vais pouvoir aller tester KDE 4.3.5 en attendant que KDE 4.4.x arrive dans slackware-current du coup... :-)

Source : Robby’s libata switchover howto

Pour ceux qui utiliseraient encore une url en unelectronlibre.info

Le domaine expire demain et ne sera pas renouvelé puisque cela fait plus d'un an que tout a migré sur http://nicolas.steinmetz.fr avec les redirections permanentes qui vont bien ;-)

Pour les 219 abonnés (tout ça ? merci à vous :-) ) qui utilisent l'url FeedBurner (http://feeds.feedburner.com/UnElect...), pas de souci, je continue à la maintenir. Rien à changer de ce côté là...

Certains lecteurs voudraient-ils recevoir le flux RSS par email ? C'est maintenant possible...

Un modem peut en cacher un autre

Ci-après ma contribution à Polar Geek, initiative pour le moins ingénieuse de Bruno Bord.

Mon téléphone s'agita, le message fut bref :
- "Rendez-vous au Bar de la Taupe à 15 heures"
J'eus à peine le temps d'assimiler le message que l'appel était fini. Sortant de ma torpeur, je notais rapidement le message sur un bout de papier tant qu'il résonnait encore en ma mémoire. Je ne connaissais qu'une personne en mesure de me passer ce type d'appel et cela faisait bien des années que je n'avais pas entendu cette voix. Me réveillant doucement en sirotant mon café, je songeais à ce message et surtout à son émetteur. Les souvenirs remontaient au fur et à mesure et ma mémoire commençait à rassembler des bribes de visage dans mon esprit. Rigolo, il se rappelait que j'évitais de travailler en début d'après-midi pour cause de digestion et de sa sieste associée. Il ne prenait aucun risque quant à ma disponibilité de me fixer un rendez-vous à 15h dans ce lieu... Il était donc toujours de la partie ? J'aurais pensé qu'il aurait fini par renoncer... L'après-midi s'annonçait intéressant et pour le moins intrigant...

La matinée passa machinalement avec son lot de paperasses et ses coups de téléphone. Les quelques affaires en cours n'avaient pas grand intérêt mais me permettaient de payer mon toit, mon manger et les croquettes du chat. Pour ne pas rater mon rendez-vous, je mangeai léger et me rendis en marchant jusqu'au Bar de la Taupe. A défaut de dormir, ce sera une marche digestive...

Le Bar de la Taupe a pour intérêt d'y accueillir une grande diversité de personnes. Des jeunes lycéens crapoteurs aux cadres tirés à quatre épingles, il se transformait en "salon de thé" tous les jeudi après-midi pour y accueillir un groupe de mamies terribles, plus portées sur le panaché que le thé et plus sur leurs parties de poker que leur tricot. Je m'assis donc en terrasse, afin de profiter des quelques rayons de soleil et commandai mon café. A peine eus-je le temps de poser ma veste qu'il arriva. Il n'avait pas changé malgré toutes ces années. Toujours habillé de son vieux costume pastel et de son noeud-papillon, il était maigre comme un clou. De prime abord, il ne ressemblait à rien, beaucoup de personnes s'y étaient laissés prendre et avaient fini par perdre leur dossier contre lui. Denis Zot, alias Papy, s'assit et commanda un café avec son nuage de lait.
" Toujours avocat ?", lançai-je
" Bien évidemment, le petit peuple a besoin qu'on le représente !"
Ainsi, il n'avait vraiment pas changé. Idéaliste jusqu'au bout des ongles, il était le chevalier servant de la justice dans un monde qui grouillait de requins à la solde de gros intérêts privés. Personne n'avait donc eu raison de lui jusqu'à présent ; ça laissait présager de bonnes choses.
"J'ai un dossier pour toi", me dit-il, "c'est urgent et tu es le seul qui peut m'aider"
Perplexe, je le laissais continuer :
"Tes derniers dossiers ne t'ayant pas tenu au fait de l'actualité informatico-légale, il se trouve que depuis plusieurs mois, j'ai mis à mal bon nombre de majors et des membres de nos gouvernements dans leurs tentatives de poursuite d'internautes pour des histoires de copyrights. Au début, cela était assez simple, il suffisait de trouver le vide de procédure pour faire tomber le château de cartes. Même si la presse a peu relayer l'information, j'ai quand même réussi à évincer A. Dopi de toute velléité électorale..."
Ah oui songeais-je. Je m'en souviens maintenant, c'était l'une des dernières informations qu'avait remonté un vieux script en analysant des flux RSS que je pensais périmés. Depuis l'avénement des "Etats Majors" en lieu et place des "Etats Nations" au début du 21ème siècle, la presse était sous contrôle et il était de plus en plus complexe d'échapper à la propagande d'Etat. Le modèle Chinois s'était imposé de part le monde, toute l'information était contrôlée par l'une des cinq Majors et les bribes de gouvernement qui restait ne faisait que leur obéir aveuglément. Arrestations sommaires et mise sur écoute se faisaient à tour de bras. Papy, en face de moi, faisait donc la résistance et jouait le rôle de Chevalier Blanc du petit peuple. Il devait être considéré comme l'ennemi public n°1 ou presque. Il ne devait pas non plus lui rester beaucoup de soutien. Dans quoi allait-il m'embarquer ???
"... mais bon revenons-en à notre affaire" me dit-il. "Mon client, qui comme moi, milite pour le retour aux libertés fondamentales, après moult menaces (comprendre des courriers envoyés par le ministère de la culture pour des activités soit-disant illégales) vient d'être arrêté. S'il ne signe pas un faux aveu, il sera expédié dans son pays natal avec sa femme et ses deux enfants. S'ils repartent en Birmanie, ce sont les pompes funèbres qui vont les accueillir à l'aéroport..."
"Qu'attends-tu de moi ?"
"Trouve la preuve du complot ; seul toi peut la trouver et je n'ai confiance qu'en toi."
"Et j'y gagne quoi ? Hormis de passer sur une liste noire ?"
"Financièrement, donne-moi ton prix et tu l'auras. La question n'est pas là. Comme tu le sais peut-être, la contestation gronde et nous avons besoin d'un coup d'éclat pour faire prendre conscience au reste du peuple que la solution est là. On peut mettre fin au joug des Majors. Ce que je t'offre, c'est la liberté !" Le bougre, il savait que j'étais sensible à ces mots et que je ne supporterais pas que l'on puisse faire du mal à des enfants. Et puis financièrement, je n'avais pas trop le choix, je commençais à prendre les raviolis en grippe...
"Ok, j'accepte ; qu'as tu pour moi ?"
"La clé de sa maison, la milice du Ministère de la Culture ne s'y est pas encore rendue. Ils iront demain d'après un de mes informateurs. C'est ton unique chance de trouver les preuves de son innocence avant qu'ils ne déposent les fausses. C'est tout ce que j'ai pour toi..."
"Bien, j'y vais de ce pas..."
"Fais attention à toi et surveille bien tes échanges" me dit-il. Alors qu'il se levait pour partir il me dit "Tu en auras besoin aussi : Pomme Noisette" et il disparut.

Je finis d'un trait mon café, payai l'addition. Je repartis au bureau mais plutôt que de monter à l'étage, je pris le chemin de la cave. Il me fallait du matériel spécifique et qu'on ne remonte pas jusqu'à moi si je me faisais prendre. Je ne faisais aucunement confiance au matériel dernier cri qui était sur mon bureau. Pour mes affaires courantes, cela allait bien mais pas pour des situations comme celles-ci. Je ressortis mon petit netbook sous Slackware en disant "Hello Citrouille, j'ai du boulot pour toi". Au moins avec Slackware, on sait que l'on installe les sources officielles. Pas de risque de rootkit ou autre tripatouillage exotique. Le temps de vérifier le bon état des batteries et de son bon fonctionnement et je prenais la direction de la maison du client de Papy.

La maison était située en banlieue Ouest de Paris. Elle était au milieu d'une résidence calme et agréable. Un bon coin pour une vie de famille songeais-je. Un jour peut-être... Après avoir fait un petit tour de la maison pour vérifier de la véracité des propos de l'informateur de Papy, je m'y introduisis sans problème. Pas de voisine curieuse pour casser mon approche, vraiment chouette ce quartier. L'intérieur était propre et bien rangé. Quelques jouets dispersés témoignaient de la présence d'enfants.
Je m'attelais au travail et cherchais les ordinateurs. Une fois le premier trouvé, je remarquai que le réseau était filaire. Chose étrange de nos jours mais trahissant le coté paranoïaque du client. En effet, le Wifi s'était imposé comme mode d'accès par défaut mais sa médiocre sécurité permettaient une écoute des plus aisées par nos milices étatiques ou la multitudes de sociétés privées dont les résultats étaient basées sur la délation d'internautes. Au moins avec un réseau filaire, il est aisé de trouver les différents ordinateurs. Je dénombrais 2 portables et deux tours, ainsi qu'une sorte de client léger collé sous le bureau, au même niveau que les prises électriques. Avant d'entrer plus loin dans mon investigations, je branchais Citrouille pour vérifier quelques informations supplémentaires : pas de réseau wifi à proximité, donc j'ai bien tous mes PCs.
Je commençais mon analyse par les deux tours situés dans les chambres des enfants. Je les débranchais du réseau et y introduisis ma clé USB magique contenant un OS minimaliste et surtout des outils d'analyse rapide. Ces derniers ne m'apprirent pas grand chose des deux tours. Les logiciels étaient tous en règles et à jour et les données étaient celles d'un ordinateurs d'enfant : des photos, des jeux vidéos, quelques listes aux Père Noel et quelques menues bricoles. La seule chose repérée fut la présence d'un proxy. Tiens, le père de famille semble vouloir protéger ses enfants. Cela doit correspondre au client léger repéré sous le bureau. Passons à autre chose...

Je décidais alors de brancher Citrouille sur le réseau en utilisant le câble réseau d'une des tours pour voir s'il y avait des activités suspectes. J'activais le mode furtif et en lecture seule pour éviter toute intrusion désobligeante. Le temps que Citrouille s'initialise, je poursuivais l'analyse des deux portables. Pour l'un des deux, ce fut facile, il était complètement HS et vue la dose de poussière sur la machine, cela ne datait pas d'hier. Pour le second, il était en veille et tout de suite un mot de passe me fut demandé. J'avais deux solutions pour cet ordinateur : soit le redémarrer sur ma clé usb magique et analyser son contenu au risque de perdre les données actuellement en cours ; soit le sortir de sa veille et l'analyser en direct live, sans trop savoir ce qu'il contenait tant d'un point de vue données que de celui du mouchard. Il me fallait bien sur trouver le mot de passe... Un mouvement de lumière attira mon attention. Je retins mon souffle avant de constater que c'était seulement lié au soleil qui se couchait et dont la lumière se reflétait dans la porte du four. Et là, le déclic : Pomme Noisette pardi ! Le mot de passe en ma possession, cela ne m'aidait pas pour autant sur l'attitude à suivre vis à vis de ce portable.

Mon attention se déporta alors sur le client léger placé sous le bureau. Je connaissais ce genre de modèle, une configuration minimaliste qui ne prend pas de place et qui permet de rendre des services. Une invite me demanda un mot de passe et Pomme Noisette fut le sésame. Mes soupçons étaient justes, la machine faisait bien office de proxy particulièrement agressif. Des tunnels VPN étaient en outre établis et obéissaient à des règles de routage bien particulières. Tout était fait pour protéger les internautes de la maison et anonymiser au maximum certaines pratiques. Le client de Papy est pour le moins paranoïaque et la réalité ne pouvait que lui donner raison. Toutefois, il s'était fait prendre. Il me restait à trouver comment...

Tout d'un coup, Citrouille se mit à biper dans tous les sens. Elle m'indiqua que le réseau contenait une activité anormale de programmes cherchant à récupérer des informations de tout ce qui circulait sur le réseau et/ou à s'introduire sur les machines présentes sur le réseau. A priori, elle ne s'était pas fait prendre mais il allait falloir la jouer finement pour en apprendre un maximum sans se faire prendre ou montrer que quelqu'un cherche à innocenter le client de Papy...
Il me fallait maintenant accéder au contenu du portable à tout prix sans éveiller les soupçons. Du client légér, je récupérais toutes les informations réseau sur le profil du portable (Adresse MAC, etc). Ceci s'ajoutant aux informations produit écrites sur le portable, j'étais en mesure de créer un profil factice sur Citrouille pour se faire passer pour le portable afin de pouvoir l'analyser tranquillement. Alors que je notais les informations sur un bout de papier, je notais la présence d'un bon de livraison émis par le FAI pour le remplacement du modem/routeur. En y regardant de plus près, cela datait de la semaine précédente... tiens donc. Le courrier stipulait que l'équipe du FAI en charge de la surveillance du matériel avait noté des incidents sur le modem. Par conséquent, un modem de rechange était envoyé de façon préventive et moyennant l'envoi du modem originel pour réparation. Mon radar vit rouge tout de suite, se pourrait-il que le modem soit le responsable de l'histoire ?

Rejoignant Citrouille, je peaufinais mon plan d'attaque. Citrouille allait se faire passer pour le portable et me permettrait d'analyser le modem à son insu en lui donnant des données bidon à manger en masse. Ces données était constituées d'un savant mix de consultations de sites honnêtes, téléchargement de binaires et d'images de femmes plus ou moins dénudées, histoire de faire tilter tout algo de surveillance comme il se doit. Citrouille était prête, il ne me restait plus qu'à taper sur "Entrée". Une pression de touche plus tard et simulant une micro-coupure réseau, Citrouille avait pris la place du portable. J'ouvris alors la session et lança le gestionnaire des tâches ; aucune activité suspecte pour le moment. Il cherchait à se reconnecter sur le réseau mais je ne craignais rien, Citrouille l'empêcherait de revenir en ligne. Je fis une passe rapide sur l'ordinateur. Rapidement je découvris un dossier "Téléchargement" contenant quelques oeuvres piratées à des dates variées. Cela était vraiment trop gros comme pièce à conviction mais à l'heure des Etats Majors, cela suffisait amplement pour vous mettre à l'ombre et vider votre compte en banque. Surtout, cela ne collait pas avec ce que j'avais pu voir précédemment sur le client de Papy. Un Dialer dont le nom contenait celui du FAI chercha alors à s'exécuter ; louche me dis-je et tuait alors le processus. Pour éviter tout autre problème, j'arrêtai l'ordinateur pour une analyse ultérieure. Mon regard revint sur le modem, qui de ses diodes me narguait, je le savais...

Citrouille me donna la solution. De nombreuses connexions avaient cherché à se connecter sur le portable pour récupérer moult informations et surtout y placer les mêmes fichiers que ceux que j'avais vu dans le dossier "Téléchargement". Je le tenais mon coupable et il devenait aisé de reconstituer l'histoire. En recevant son nouveau modem, le client de Papy bien qu'habituellement derrière son proxy, dut pour une fois se connecter en direct au modem. A ceci s'ajoutant le CD d'installation dont venait surement le Dialer (et surement d'autres exécutables peu catholiques), le portable avait été compromis à ce moment là. Les autorités n'avaient alors plus qu'à attendre que le modem fasse son travail et de saisir l'individu quand bon leur semblait. L'énigme était résolue, je remis les choses en ordre et quittais discrètement la maison du client de Papy.

La fin de l'affaire fut explosive. Après avoir fait part de mes découvertes à Papy, celui-ci contacta différents collectifs et associations en faveur de la liberté pour créer un effet presse hors du commun. Lorsque la communication fut lancée, les autorités ne purent la retenir et elle déferla sur l'espace public. Le quidam moyen s'empara du sujet et des manifestations spontanées eurent lieu aux quatre coins du pays. L'opposition bien qu'affaiblie tira son épingle du jeu en faisant part de son expérience à ce mouvement citoyen qui grossissait de façon exponentielle. Le gouvernement chercha à faire sauter quelques fusibles en la présence de Monsieur Lop Psi et d'A. Cta mais cela ne suffit pas. Après un mois de manifestation, il fut contraint à la démission et de désapprouver les Majors. Un nouveau gouvernement fut élu et il s'empressa de rétablir bon nombre de libertés fondamentales bafouées depuis tant d'années, ainsi que la neutralité du net. Quelques FAI jugés trop proches des Majors firent faillite et il fut décider de confier les accès à internet à des associations citoyennes.

Personnellement, je savourais cette victoire même si je regrettais de ne pas avoir demandé une rémunération supérieure pour ce que j'avais fait. Je me consolais néanmoins en me disant que de toutes façons, la liberté n'a pas de prix...

Note de l'auteur : au départ, j'étais parti sur tout à fait autre chose. Le revirement s'est fait suite à la lecture du billet "La Quadrature jette l'éponge". Il semblerait que nous prenions une route où mon histoire pourrait devenir possible (tout au moins le début, pour la fin j'en doute). Après DADVSI et HADOPI, il y maintenant LOPPSI et ACTA... Pour soutenir la Quadrature du Net, il vous est possible de faire un don si vous n'avez pas la possibilité de les aider autrement...

Créer votre première application CouchDB (Partie 4)

Pour ceux qui utiliserait le code mis dans les exemples, sachez qu'à partir de la version 0.10, le contenu du fichier lists/all.js qui s'écrivait :

 javascript
function(head, row, req, info) {
  // !json templates.all
  // !code vendor/couchapp/path.js
  // !code vendor/couchapp/template.js
 
  return respondWith(req, {
    html : function() {
      if (head) {
        return template(templates.all.head, {
          assets : assetPath(),
        });
      } else if (row) {
        return template(templates.all.row, {
          fav: row.value,
        });
      } else {
        return template(templates.all.tail, {
            assets : assetPath(),
        });
      }
    },
  })
};

s'écrit désormais :

 javascript
function(head, req) {
  // !json templates.all
  // !code vendor/couchapp/path.js
  // !code vendor/couchapp/date.js
  // !code vendor/couchapp/template.js
  // !json myfav

  provides("html", function() {
      
      send(template(templates.all.head, {
          assets : assetPath(),
          title : myfav.title,
       }));
      
      var row, key;
      while (row = getRow()) {
        key = row.key;
        var fav = row.value;
        send(template(templates.all.row, {
            url: fav.url,
            title: fav.title,
            description: fav.description,                      
        }));
      }
      
      return template(templates.all.tail, {
            assets : assetPath(),
      });
  });
};

et bien sur templates/all/row.html devient :

<dt><a href="<%= url %>"><%= title %></a></dt>
<dd><%= description %></dd>

Au passage, il m'a fallu récupérer la nouvelle version de vendor/couchapp/path.js.

Pour ceux que ça intéresse, le code est disponible ici : http://bitbucket.org/nsteinmetz/mycouchfav/.

Pour ceux qui veulent voir le rendu :

Voilà, c'était histoire de me remotiver dans cette prise en main de CouchDB/CouchApp - peut-être que la prochaine fois, on verra un formulaire de soumission de favoris... ;-)

CouchDB 0.10.1 on Slackware 13.0

Dépendances de CouchDB

Dans un premier temps, il vous faut récupérer les slackbuilds suivants :

Les autres dépendances sont normalement satisfaites :

  • curl : à vérifier en utilisant un curl-config --version
  • make & gcc

Créer les packages des slackbuids (les slackbuils sont prévus pour i486 ; si vous êtes en 64 bits, éditer le fichier <package>.Slackbuild pour modifier la valeur de ARCH.

Pour que le SlackBuild fonctionne, il vous faut mettre l'archive des sources du package à créer dans le répertoire créé en décompressant le fichier slackbuild.

 bash
tar xzf js.tar.gz
cd js
./js.SlackBuild
=> Slackware package /tmp/js-1.8.0_rc1-x86_64-1_SBo.tgz created.

tar xzf icu4c.tar.gz
cd ../icu4c
./icu4c.SlackBuild
=> Slackware package /tmp/icu4c-4.2.1-x86_64-1_SBo.tgz created

tar xzf erlang-otp.tar.gz
cd erlang-otp
./erlang-otp.SlackBuild
=> Slackware package /tmp/erlang-otp-13B03-x86_64-1_SBo.tgz created.

Installer ensuite les packages créés :

 bash
nicolas@cassis:/tmp$ sudo installpkg icu4c-4.2.1-x86_64-1_SBo.tgz 
Verifying package icu4c-4.2.1-x86_64-1_SBo.tgz.                   
Installing package icu4c-4.2.1-x86_64-1_SBo.tgz:                  
PACKAGE DESCRIPTION:                                              
# icu4c (International Components for Unicode)                    
#                                                                 
# The International Components for Unicode (ICU) libraries provide
# robust and full-featured Unicode services on a wide variety of  
# platforms.                                                      
#                                                                 
# Homepage: http://www.icu-project.org/                           
#                                                                 
Executing install script for icu4c-4.2.1-x86_64-1_SBo.tgz.        
Package icu4c-4.2.1-x86_64-1_SBo.tgz installed.                   

nicolas@cassis:/tmp$ sudo installpkg js-1.8.0_rc1-x86_64-1_SBo.tgz
Verifying package js-1.8.0_rc1-x86_64-1_SBo.tgz.
Installing package js-1.8.0_rc1-x86_64-1_SBo.tgz:
PACKAGE DESCRIPTION:
# SpiderMonkey (Mozilla's JavaScript Engine)
#
# SpiderMonkey is the code-name for the Mozilla's C implementation of
# JavaScript. It can be used by applications such as elinks and others.
#
# This is the standalone version of the engine used by Firefox and other
# Mozilla applications.
#
# Homepage: http://www.mozilla.org/js/spidermonkey
#
Package js-1.8.0_rc1-x86_64-1_SBo.tgz installed.

nicolas@cassis:/tmp$ sudo installpkg erlang-otp-13B03-x86_64-1_SBo.tgz
Verifying package erlang-otp-13B03-x86_64-1_SBo.tgz.
Installing package erlang-otp-13B03-x86_64-1_SBo.tgz:
PACKAGE DESCRIPTION:
# Erlang (programming language)
#
# Erlang is a general-purpose concurrent programming language and
# runtime system.
# The sequential subset of Erlang is a functional language,
# with strict evaluation, single assignment, and dynamic typing.
# It was designed by Ericsson to support distributed,
# fault-tolerant, soft-real-time, non-stop applications.
#
# http://www.erlang.org/
#
Executing install script for erlang-otp-13B03-x86_64-1_SBo.tgz.
Package erlang-otp-13B03-x86_64-1_SBo.tgz installed.

Installation de CouchDB

Il vous faut au préalable créer un utilisateur et un groupe couchdb :

 bash
groupadd -g 231 couchdb
useradd -u 231 -g couchdb -d /var/lib/couchdb -s /bin/sh couchdb

Récupérer le slackbuild de CouchDB

il vous faut alors procéder de la façon suivante :

 bash
tar xzf couchdb.tar.gz
cd couchdb
# récupérer les sources de couchdb 0.10.1 et metter les dans votre répertoire couchdb
# éditer si besoin le SlackBuild
# créer votre package :
./couchdb.Slackbuild
=> Slackware package /tmp/SBo/couchdb-0.10.1-x86_64-1_SBo.tgz created.

Il ne reste plus qu'à installer le paquet :

 bash
installpkg /tmp/SBo/couchdb-0.10.1-x86_64-1_SBo.tgz

Démarrage / Arrêt automatique de CouchDB

Editer /etc/rc.d/rc.local pour y ajouter :

 bash
if [ -x /etc/rc.d/rc.couchdb ]; then
	. /etc/rc.d/rc.couchdb start
fi

et dans /etc/rc.d/rc.local_shutdown :

 bash
if [ -x /etc/rc.d/rc.couchdb ]; then
	. /etc/rc.d/rc.couchdb stop
fi

Ouvrez http://localhost:5984/_utils/

Et voilà... il est maintenant temps de vous relaxer ;-)

Edit 1 : Mise à jour suite à l'approbation & correction de mon slackbuild sur Slackbuilds.org

- page 2 de 21 -

Bienvenue

Ce blog en actuellement en cours de travaux :-)

Pour les liens en tous genre, voir en haut & pied de page