How to interface a Velux Solar powered roller shutter and ZWave Domotic box...

I have ZWaved allmost all my home. Some of my roller shutter are not connected to my Fibaro HC2, and I really like that my Velux can be commanded by my ZWave stuff. Unfortunatly Velux system are based on closed IO Domcomtrol that cannot be interfaced to all ZWave boxes. This is hardware "hack" to allow such roller shutter to be controled by... a ZWave system.

Lire la suite...

Migration Proxmox vers VMWare ESX(i)

Etats des lieux

J'avais "un peu" testé proxmox, mais dans le milieu du travail avec des OS autres que Linux (vous savez ceux qui ont des numéro d'années dedans avec des couleurs chamarrées), c'est loin d'être la panacée :

  • Drivers Virtio qui fonctionnent comme ils ont envies
  • BSOD (oui... !)
  • Lenteur IO (même sous Linux)
  • Des OOM Killer qui tue tout quand "par hasard" il y a trop de mémoire alloué (enfin quand il reste moins de 2Go)
  • Performance réseau de merde...

Bref, au prix d'un ESX Essential à 600Euros, on peux considérer que des heures perdues pour une solution pas encore aboutie, n'est pas économiquement viable.

Migration vers ESXi

Il y a le VMWare Converter, mais des fois il se prends des pains quand il n'as pas prévu des choses... Principalement KVM (Promox) -> ESXi.

Il se viande sur les drivers virtio (oula /dev/vda pas bien.... il faut /dev/sda).

Donc il faut créer sa procédure pour migrer de la solution libre à la solution proprio, qui elle marche...

Préparation

Ce qui est étonnant, c'est que les Windows, n'ont pas besoin de préparation... Juste arrêter la VM.

Pour les Linux il y a pour l'instant (je completerais au fur et a mesure) des choses a préparer.

Ubuntu

Si le noyau generic a été installé, et que /boot/inird-generic existe, vous avez de la chance, il ne restera que a vérifier que vous avez laissé les UUID au boot OU que vous avez fait un label a la partition root (utile plus tard).

Vous pouvez aussi ajouter les modules VMWare : https://help.ubuntu.com/community/VMware/Tools, http://packages.vmware.com/tools/esx/5.0latest/index.html

Debian

Debian c'est bien mais ils customizent l'initramfs... avec seulement les drivers utilisés... Bref l'OS est donc très intimement lié au hardware : #FAIL.

Il faut donc corriger la chose, en root dans /etc/initramfs-tools/modules, ajouter

piix
ata_piix
mptspi
e1000

Puis recréer les initramfs :

update-initramfs -k all -u

Rebooter, normalement la machine doit marcher. Après vous pouvez ajouter les modules VMWare comme sur ubuntu (les versions opensource).

Backuper en utilisant l'interface de proxmox la VM soit en TGZ. soi en .lzo

Sur la machine proxmox en root

Trouver de la place, et partager en NFS cette place (pour le monter en NFS client sur le ESXi).

Puis :

cd /mnt/space
mkdir tmp 
cd tmp
tar xvf ../dump/vzdump-qemu-<idvm>-<date>...tar

Si vous avez utilisé lzo :

cd /mnt/space/tmp/
lzop -d < ../dump/vzdump-qemu-<idvm>-<date>...tar.lzo | tar xvf -

Convertion en vmdk

Dans le répertoire précédent :

qemu-img convert -p -o compat6 -f raw vm-disk-virtio0.raw -O vmdk nom-vm.vmdk

Attendre que les 100% soient arrivés... (ça peux être loooong).

Sur l'ESXi

Aller en root via SSH dessus :

cd /vmfs/volumes/datatstore1/
mkdir nom-vm
cd nom-vm
vmkfstools -i /vmfs/volumes/promox-nfs/tmp/nom-vm.vmdk -d thin vm.vmdk

Attendre les 100%, comme tout à l'heure...

Modifier le type de disques.

Pour avoir un peu plus de performance, passer le controleur du .vmdk en scsi :

 
vi vm.vmdk 

et changer :

ddb.adapterType = "ide"

en

ddb.adapterType = "lsilogic"

Sur l'interface "lourde" vCenter

Créer une nouvelle VM avec paramètre personnalisé, ayant les mêmes caractéristiques (cpu / nm de socket / os / mémoire), en précisant que le (ou les disks) existent déjà sur le "datastore1" en sélectionnant les .vmdk en question.

Booter

Windows

Ajouter via la menu console, les outils Windows VMWare... et configurer correctement la carte réseau

Linux

Booter, si tout vas bien, un coup d'update-grub en root, permet de finaliser l'installation. Autrement utiliser la commande "e" du grub pour lui faire booter le root sur le bon device (exemple root=/dev/sda1 au lieu de root=/dev/vda1, on peux aussi utiliser les labels : root=LABEL=ROOT).

Une fois arrivé au système, updater le grub :

update-grub

Ou si vous êtes sous Debian :

update-grub
update-initramfs -k all -u

Migration finie

Votre machine est donc migré, vous pouvez tuer celle qui est sur promox et reprendre une activité normale.

Des petites remarques :)

(Ajout du 31 Mai 2013)

Si vous migrez des VM Windows 2003, 2008, Win 7, ou XP, vous pouvez avoir un BSOD lors du boot. En effet, notre ami de chez Bilou, ne charge pas tous les drivers au boot et donc a part prier, vous ne pouvez rien faire.

Dans ce cas, bootez avec le Fameux Hiren's Boot CD qui vous permet de lancer un mini Windows XP avec l'utilitaire 'fix_hdr' qui permet de charger les bon drivers dans le Windows.

Il est aussi possible que certains Windows 2003 aient du mal en LSI Logic ou BusLogic afin d'éviter de perdre du temps : restez en IDE. Lent mais efficace.

MCV Vera et les décimales

La domotique c'est bien mais il faut en faire un bon usage.

J'ai acheté il y a environ 1 ans un Vera3 de Micasaverde (voir les billets précédents) je l'ai pas mal bidouillé (c'est un OpenWRT, donc "facile" on vas dire). Mais il y avais un bug feature : les températures sont en mode "entier".

Donc en gros, s'il fait 19,6°C dans une pièce, l'affichage est 20°C, mais aussi les variables internes. Pas trop grave pour une sonde, mais quand on veux utiliser cette mesure pour effectuer un contrôle fin du chauffage (électrique), là c'est le drame... On a froid... ou chaud :(

Bref, pour rendre les choses compatible, je me suis lancé sur le RFXrtx usb qui permet de contrôler des sondes orégon scientific (et bien d'autre machins en 433MHz : Blyss, D.IO, ... même ceux des voisins...).

Mais le problème c'est qu'il n'y a pas de retour d'info : est-ce que la sonde est toujours vivante? Oui ? non ?

Donc... Comme Micasaverde a dit : non on ne corrigera pas ce bugfeature... Je vais voir ailleurs.

URL du status officiel de MCV (a copier et coller, car les liens ne marchent plus?) : http://www.touteladomotique.com/forum/viewtopic.php?f=48&t=10116

Donc ... Bientôt un petit papier sur la Fibaro HC2... que j'ai sur mon bureau :)

Fibaro HC2

Domotique, est-ce que le nouvel eldorado des vendeurs?

Constat

Depuis que j'ai commencé a domotiser ma maison j'ai dépensé un peu... (beaucoup ?) d'argent :

  • Micasaverde Vera 3 : 260€ (environ)
  • Des modules divers à 60 euros pièce en moyenne (il y en as facilement plus de 20, faites le calcul)

La goutte d'eau...

J'ai comme projet de mettre au ZWave, le fil pilote pour certains chauffages (typiquement le salon, et la chambre) pour que lorsque nous sommes absent, le chauffage baisse de quelques degrés et une heure avant de rentrer il se mette à la bonne température. Dans le projet aussi est de mettre le chauffage a off si on ouvre la fenêtre... (ou qu'elle reste ouverte par horreurerreur).

Pourquoi rendre "ZWave" le système alors qu'il y a déjà un truc qui existe :

  1. Parce que le système existant est aussi ergonomique qu'une brique
  2. Parce que on peux aller en week-end et revenir plus tôt et donc...
  3. Pour le Fun.

Evidement en ZWave il n'existe pas encore de chose pour le fil pilote, donc on doit tout faire avec juste 2 diodes 1N4007, ce qui rends les choses assez simple on vas dire :

Schémas 4 ordres

Il faut un module, type Fibaro FGS211 et 2 pauvres diodes 1N4007 (prix sur Radio Spares : 10 @ 0,059€ HT pour info).

Conclusion

Qui est d'accord avec moi ?

Une boite, CGE a eu l'idée de mettres dans un package type demi pont diode avec des fils sortants... Ce qui rends les choses simples et ça donne :

Module diodes CGE

Avec le module Fibaro FCG211, ça donne :

Fil Pilote avec Fibaro

Donc simple et efficace.

Je me dis donc que je vais l'acheter ... Je cherche dans le fameux site en question et je vois le prix à plus de 11€ pièce !!! C'est franchement la goutte d'eau qui fais déborder le vase. C'est pas de la marge, mais limite de l'extortion de fonds. Le prix de reviens du 1/2 pont diode reviens facilement à 1€ pièce (et encore je suis large, si je le demande en Chine je suis sûr d'avoir le prix aux alentours de 0,5€ sans négociation). Soit facilement un prix multiplié par 11 !!!

Non là c'est trop limite, je pense que je vais me lancer ma propre boutique de vente de matériel domotique...

Economies d'énergies avec de la domotique et ZWave

A l'époque où on nous dit que l'énergie coûte cher et que les appareils en veille consomment une centrale nucléaire (ancienne génération hein !) avec l'énergie que ces équipements consomment, je me suis dit, et si je me mettais en place un système pour éteindre tous les équipements qui restent en veille pour une utilisation quotidienne peu longue.

Dans ces équipements on donc :

  • La TV
  • Le FreeBox player (vous pouvez mettre ça avec n'importe quelle box TV)
  • Le lecteur Blue Ray / Enregistreur TV TNT avec disque dur
  • L'ampli HiFi convi

Donc chez moi ces truc consomment en tout environ 35W. Ca fait quand même pas mal.

Pour effectuer ce genre de chose il vous faut :

  • Un Micasaverde Vera (j'ai une Vera 3 sous UI5)
  • Un prise Everspring AN158-6 qui mesure la consommation en temps réel (attention certains modules effectuent une mesure moyenne donc inutile pour ce genre de besoins).

Vous allez aussi avoir besoin d'un certain nombre d'application du "market" de Micasaverde :

  • Countdown Timer
  • Combination Switch (2 utilisations)

Donc vous avez : Prise Meuble TV

Nous allons créer un module "Délais avant coupure meuble TV" avec 10 Minutes avant coupure (600 secondes).

Délais avant coupure TV Délais avant coupure TV détails

Il faut créer 2 modules de Combinaison.

Le module "Extinction auto TV" :

Extinction TV 1 Extinction TV 2

Le module "Empêchement extinction TV", pour laisser le temps que le capteur de puissance remonte l'information vers la Vera (sinon quand on l'allume, ça coupe tout de suite.. D'où les 10 minutes de délais).

Empêchement extinction TV 1 Empêchement Extinction TV 2

Maintenant qu'il y a les 3 modules, il ne reste plus que les scénarios a faire.

L'idée :

  1. Si la consommation est entre 0W et 40W ET que le TV est éteinte ET que le meuble TV est ON -> Déclenchement du délais de 600 secondes
  2. Lorsque le délais de 600 secondes est passé -> couper le Meuble TV
  3. Si la consommation est > 41W ET que le Meuble TV est allumé -> Annuler le délais de 600 secondes

Scénario 1

Il suffit de cliquer sur "Start" du module "Délais avant coupure", et sélectionner comme déclencheur (Trigger) Extinction auto TV -> Switch turn on

Scénario 2

Il suffit de cliquer sur le module "Power Off" du module "Meuble TV", et sélectionner comme déclencheur Delais avant coupure Meuble TV: -> Timer completes while not muted

Scénario 3

Il suffit de cliquer sur "Cancel" du module "Délais avant coupure", et sélectionner comme déclencheur Empêchement extinction auto TV -> Switch turn on

Et c'est tout.

Y a prendre et a laisser dans le ZWave... Un exemple.

Normalement le protocole ZWave et ses implémentations permettent un truc facile à mettre en place sans soucis. Comme d'habitude, ceci est la théorie, mais la pratique permet de vérifier que Murphy est toujours à l'attente derrière pour frapper encore.

Düwi 2000Par exemple Düwi, constructeur Allemand, fait quelques modules et systèmes ZWave. Je vais prendre par exemple, le Düwi 2000 que j'ai acheté en 3 exemplaires.

Les avantages de ce module :

  • Trés fin, on peux le coller (ou le visser) sur le mur à coté d'un interrupteur normal.
  • Fonctionne avec 2 piles AAA
  • Pas trop moche
  • ZWave, donc "normalement" on devrais pas avoir de problèmes.

Donc ça, c'est la théorie, en pratique c'est autre chose.

Dans le ZWave, on a des contrôleurs de scènes, de récepteurs, et aussi plein d'autres choses.

Düwi dans sa fonction a décidé que ceci n'est pas un contrôleur de scènes. Donc on a deux possibilités :

  1. Contrôler directement le récepteur avec module
  2. Laisser tomber.... :/

Après avoir fighté, j'ai réussi sur les 3 interrupteurs a contrôler des prises télécommandées AN158-6 de chez Everspring, mais ce fut un coup de chance, et sur le dernier Düwi 2000 j'ai pas réussi à le faire contrôler correctement ma prise.

Bref, c'est la mort...

A noter qu'il existe le même module avec le firmware modifié pour supporter les Vera, mais bien évidement je n'ai aucune idée comment changer le firmware :/ Voir

Bon pour éviter les emmerdes : INSERT INTO blacklist VALUES (contructors = 'Düwi');

Ca c'est fait, c'est plus à faire.

Micaserde Vera 3

MCV Vera Etant passé heureux propriétaire d'une petite maison en banlieue Ouest, j'ai donc commencé à faire de la Domotique...

Dans tout le bazar de domotique, il y a pas mal de protocole, X10, zigbee, Zwave, DI-O, X2D (et aussi X3D), home_control (Velux et Somfy par exemple), etc...

Je me suis plutôt mis dans le coté de Z-Wave only car ce proto qui trainne autours des 800Mhz à la capacité d'être dans un réseau mesh, c'est a dire que chaque capteur est capable de répéter le signal et l'ordre qui doit atteindre le capteur / actionneur distant (tiens... ça me fait penser à OSPF, ou un truc comme ça).

Donc, après avoir cherché, je me suis penché sur les Micasaverde Vera qui ont l'avantage de ne pas devoir passer au racket tous les mois pour avoir toutes les fonctionnalités de l'objet (comprendre : pas d'abonnement à payer au fabriquant)... Et être basé sur OpenWRT... qui reste ouvert (oui y a une méthode pour rentrer en SSH... biennnnn !).

Donc j'ai acheté une Vera3...

D'autre articles suivrons... selon le temps que j'ai ...

De choses comme :

  • Comment contrôler vos volets roulants électrique selon l'heure du coucher du soleil ET l'état de la porte fenêtre (en gros que le volet du la porte fenêtre ne se ferme pas tout seul lorsqu'elle est ouverte et que je suis dans le jardin tout seul sans les clefs... fail !)
  • Comment grapher des trucs qu'on peux grapher depuis un routers2.cgi / mrtg ou autres idée farfelue
  • Comment récuperer a distance la téléinformation
  • Comment haxorier le OpenWRT pour réutiliser le switch 10/100 qu'il y a au cul de la machine :p
  • Comment faire un réveil matin sympa sans se défoncer les yeux le matin :p
  • Comment adapter le EZMotion 3in1 pour y coller une alimentation externe.... (pas facile)

Et plein d'autres idées a la noix.

Lexmark "Pro" 905 ou la stratégie de l'échec

Lexmark Pro 905Il y a environ 1 an ou deux j'ai décidé de jeter mon vieux scan à plat pour acheter une imprimante qui fait a peut prêt tout...

Après avoir cherché et voulant garder ma Laserjet 4050, je me suis dit qu'une machine type tout en un : Fax / Scan / Photocopieur / Imprimante serait assez cool et ... un bon compromis.

J'ai donc acheté sur groupon une imprimante Lexmark Pro 905.

Les avantages nombreux sont :

  • Pas trop grosse
  • Cartouches d'impression n'ayant pas de puce (hein HP et Espon)
  • Assez rapide à imprimer (enfin on vas en parler plus tard)
  • Scan a plat avec chargeur
  • Fax (emission et réception en analogique)
  • Réseau RJ45 100Mbps et Wifi (N il parais mais bon j'aime pas me faire chier avec du Wifi, j'ai assez d'emmerdes comme ça).
  • Prix (bon... 200€ avec la réduction groupon)

Après avoir attendu 1 mois et demi (ça m'apprendra à utiliser ce genre de centrale pour avoir cette imprimante), elle arrive... enfin.

Elle marche nickel et puis... bah saloperie de truc en plastique... Ca commence à merder ... Evidement.

Depuis environ 6 mois, cette merde en plastique sous Linux s'amuse a rebooter tout seul sans qu'on lui demande... Evidement, au 40 eme reboot elle arrive être assez stable pour scanner, mais quand on est pressé et qu'on a envie de pouvoir scanner 4 pauvres pages en PDF, on est assez énervé.

Sur la KB de Lexmark, y a évidement rien, le modèle est bien évidement obsolète. Comme c'est acheté par groupon, y a pas vraiment de facture, et bien évidement la garantie 5ans est valable si et seulement si on a pris le temps de s'enregistrer sur le site web de Lexmark avec son adresse, email, emprunte ADN, etc...

Bref... J'avais une référence HP et uniquement en Laser, je croyais que Lexmark s'étais amélioré depuis mon école d'igné - époque où j'avais clairement classé ce fabriquant dans la catégorie : a éviter absolument - mais rien a changé.

Donc, les cartouches d'encre sont pas terminées, que cette machine vas se trouver à la benne, merci les produits mal foutus... Merci Lexmark.

En GROS pour que google fasse sont travail : Lexmark ça été et ça reste du matériel a éviter, ne JAMAIS en acheter.

Swap et Mac OS X

Je pense que pas mal d'entre vous l'ont remarqué mais OS X a une gestion de la mémoire étrange... Peut-être que cela vient des méandres de OS 9 ou autres... Mais même avec 4Go au bout de 15 jours d'utilisation on arrive a avoir 10Go de SWAP...

Il est bien possible que le swapper colle sur le disk toutes pages inutilisée depuis longtemps et vu que HFS+ a tendance a fragmenter comme un malade... On se retrouve avec une becanne inutilisable et ça me rends dingue.

Donc, il suffit donc de mettre le swap, sur une partition (ou un disque) dédié(e).

Je laisse faire cette partie, car elle est simple, sur mon iMac24" j'ai pris un disk externe sur le port firewire, car il sert pas a grand chose. La partition est en format Mac OS X, sensible à la casse, non journalisée.

Il reste a faire comprendre au dynamic_pager qu'on veux le faire swapper ailleurs. Cette manip est a faire juste après un reboot, car si vous avez plein de swap, je ne sais pas comment OS X vas réagir.

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Ce qui désactive le swap. Après vous pouvez allègrement faire un :

$ sudo rm /private/var/vm/swapfile*

Pour supprimer tout les fichiers de swap inutilisés.

Pour reconfigurer le dynamic_pager, il faut lui dire que le swap directory n'est plus dans /private/var/vm/swapfile mais dans /Volumes/Swap/swapfile/swapfile :

$ cd /System/Library/LaunchDaemons/
$ sudo  plutil -convert xml1 com.apple.dynamic_pager.plist

Et editer le fichier XML qui doit ressembler a ça :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>HopefullyExitsLast</key>
<true/>
<key>Label</key>
<string>com.apple.dynamic_pager</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>
</array>
</dict>
</plist>

Il reste plus qu'as remplacer la ligne :

<string>/private/var/vm/swapfile</string>

Par

<string>/Volumes/Swap/swapfile/swapfile</string>

Et reconvertir en binaire le XML :

$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist

Et relancer le dynamic_pager:

$ sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Et voila :)

AOL, Wanadoo savent pas configurer leur serveurs de mail...

Ah bravo, on est des petits et on doit faire patte blanche pour des boulets de FAI qui sont revenus a l'époque de la préhistoire de l'informatique.

Je reçois un mail disant que "les gens de AOL et Wanadoo n'arrivent plus a me joindre"... avec un beau bounce (les emails ont été rendues anonyme... afin de ne pas aider les spammers qui fetchent ce blog a ajouter des belles addresses !).

This is the mail system at host mwinf2022.orange.fr.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                  The mail system

<xxxx@exxx.fr>: host mx1.oav.net[193.43.215.5] said: 550 5.7.1
   <xxxx@exxx.fr>: Recipient address rejected: Mail appeared to be
   SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX
   settings or to get removed from DNSBLs; please relay via your ISP
   (wanadoo.fr) (in reply to RCPT TO command)
Reporting-MTA: dns; orange.fr
X-SMTP-Server-Queue-ID: 4A9FC2002CC0
X-SMTP-Server-Sender: rfc822; xxxx@wanadoo.fr
Arrival-Date: Wed,  8 Sep 2010 17:53:46 +0200 (CEST)

Bien c'est policyd-weight qui jette le mail... Regardons le log de la plateforme

Sep  8 17:53:48 mail02 postfix/policyd-weight[65470]: weighted check:  NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 DSBL_ORG=SKIP(0) IN_IX_MANITU=4.35 CL_IP_EQ_HELO_IP=-2 (check from: .wanadoo. - helo: .smtp20.orange. - helo-domain: .orange.)  FROM/MX_MATCHES_NOT_HELO(DOMAIN)=2.087 CLIENT_NOT_MX/A_FROM_DOMAIN=4.85; <client=193.252.22.31> <helo=smtp20.orange.fr> <from=xxxx@wanadoo.fr> <to=xxxx@exxx.fr>; rate: 4.787 
Sep  8 17:53:48 mail02 postfix/policyd-weight[65470]: decided action=550 Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to get removed from DNSBLs; please relay via your ISP (wanadoo.fr); <client=193.252.22.31> <helo=smtp20.orange.fr> <from=xxxx@wanadoo.fr> <to=xxxx@exxx.fr>; delay: 0s 
Sep  8 17:53:48 mail02 postfix/smtpd[88645]: NOQUEUE: reject: RCPT from smtp20.orange.fr[193.252.22.31]: 550 5.7.1 <xxxx@exxx.fr>: Recipient address rejected: Mail appeared to be SPAM or forged. Ask your Mail/DNS-Administrator to correct HELO and DNS MX settings or to get removed from DNSBLs; please relay via your ISP (wanadoo.fr); from=<xxxx@wanadoo.fr> to=<xxxx@exxx.fr> proto=ESMTP helo=<smtp20.orange.fr>

Bien c'est quoi le problème ?

$ host smtp20.orange.fr
smtp20.orange.fr has address 80.12.242.26
smtp20.orange.fr has address 80.12.242.27
smtp20.orange.fr has address 193.252.22.31
$ host 193.252.22.31
31.22.252.193.in-addr.arpa domain name pointer smtp20.orange.fr.
s host -t mx wanadoo.fr
wanadoo.fr mail is handled by 10 smtp.wanadoo.fr.
$ host smtp.wanadoo.fr
smtp.wanadoo.fr has address 80.12.242.9
smtp.wanadoo.fr has address 80.12.242.15
smtp.wanadoo.fr has address 80.12.242.53
smtp.wanadoo.fr has address 80.12.242.62
smtp.wanadoo.fr has address 80.12.242.82
smtp.wanadoo.fr has address 80.12.242.142
smtp.wanadoo.fr has address 80.12.242.148
smtp.wanadoo.fr has address 193.252.22.65
smtp.wanadoo.fr has address 193.252.22.92
smtp.wanadoo.fr has address 193.252.23.67

Bah c'est simple : le MX ne corresponds pas au serveur de mail émetteur...

Ok c'est quand même un poil limite... Car rien n'interdit les émetteurs différents des MX...

Peut-être que policyd-weigtht est un poil trop rigoureux... ? La faute a qui ? aux spammeurs qui font pareil...

Pour l'instant pas de solutions viables pour ce genre de chose... policyd-weight est donc désactivé...

Debian / Grub2 et UUID encore des choix judicieux !

Il était une fois, Debian qui se basait sur grub pour booter.

C'étais assez génial car on pouvais facilement, spécifier :

  • Des valeur par défaut de kernel, comme "elevator=deadline"
  • Utiliser root=LABEL=ROOT

Bref le bonheur.

La avec les derniers kernels (2.6.32, sur les backports de la Lenny), on a un joli message : "bla, bla on passe sur des UUID parce cay mieux toussa".

Très sympa... Mais c'est une immense connerie car, imaginons la chose suivante :

[root@xen-3 vm]# cp master xen-test-2.img 
[root@xen-3 vm]# xm create /etc/xen/xen-test-2.cfg 
Using config file "/etc/xen/xen-test-2.cfg".
Started domain xen-test-2 (id=10)

Le truc très peu utilisé hein ?

Bon comme vous le savez les UUID sont UNIQUE par machine (disques, contrôleurs, etc...) bref le truc super pratique dans la virtualisation....

Donc en gros... Si vous faites du cloud, les UUID = DTC car vos belles images ne servent a rien.

Aller encore un truc pour la route... Grub2 ne gère pas les LABELs, enfin en tous cas sur... Debian/Squeeze...

Linux, on vas vous faire aimer l'Opensource...

Mauvais jour pour l'OpenSource

Aujourd'hui est un mauvais jour pour l'OpenSource. Depuis que Oracle a racheté Sun Microsystems, on avais des soupçons que OpenSolaris allais en pâtir sévère...

Là c'est un coup sérieux dans l'innovation : OpenSolaris Canceled , to be replaced with Solaris 11 Express.

Bref.... On peux plus avoir accès aux sources (enfin pas en direct comme avant, donc s'il y a des bugs corrigés, et bien on attends), il n'y a plus de distribution OpenSolaris, et bref, faut prendre la version "développeur" de Solaris pour jouer... Et en plus faut attendre au moins 4 mois pour l'avoir....

Bref... OpenSolaris RIP... C'est très dommage pour Oracle / Solaris car le nombre de développeurs OpenSource qui tournaient autours de ce projet devaient être nombreux...

Encore une belle illustration de la façon dont Oracle traite les projets OpenSources....

Maintenant je "fear" pour MySQL qui vas surement se terminer de la même façon....

Ubuntu Eucalyptus Cloud -> Fail !

Alors j'ai essayé pour voir si ce que je faisais dans ma boite (So Privé Cloud Compting) étais absurde ou pas si Ubuntu Private Cloud 9.10.

Le coffret qu'on m'as filé, est joli, a priori ça a dût coûter plutôt cher.

Le CD permet d'installer vite les nodes et/ou l'ordonnancer...

Une fois installé, la doc très succinte ne dit rien, l'installateur non plus...

Bref a coup de ssh on voit https://<ip>:8443/ (pourquoi 8443 comme port ? encore une raison inconnue ?).

Une fois fighté avec les proxy et naviagateur, j'essaye sur Safari -> le login 'admin'/'admin' qui bien évidement n'est pas écris sur la jolie plaquette en papier glacé permet de rentrer... Sauf sur Safari (pas essayé sur d'autres navigateurs, mais je pense que si c'est pas firefox, pas de chance).

Un fois connecté on télécharge quelques vagues images... et on se demande "comment je fais pour lancer une vm?" en gros la question super simple ?

Réponse : UEC Install.

There are multiple ways to instantiate an image in UEC: Use the command line, Use one of the UEC compatible management tools such as Landscape or Use the ElasticFox extension to Firefox

Pour la partie Landscape, aucune idée comment l'utiliser. Il y a t'il une interface web ?

Donc essayons ElasticFox.... Problèmes :

  • Il n'est pas dans le site de gestion des extensions FireFox...
  • Faut le télécharger mais bon il s'ouvre pas et ne s'installe pas tout seul, faut préciser a FF qu'il faut l'ouvrir...

ElasticFox, se lance puis on configure le bignou... Et evidement ca marche pas... pas moyen d'avoir la liste des images rien.

Conclusion :

En général un produit sans ou presque sans mode d'emploi est un produit qui est instinctif, dans ce cas UEC est tout sauf simple, il est mal achevé, c'est un ensemble de logiciels opensources tiers qui essayent plus ou moins bien de communiquer ensemble mais n'y arrivent pas ou son simplement incohérent. Pour une fois que j'avais laissé de coté mon "rant" contre les Linux et Debian (et dérivés en général), sur ce soft, je suis déçu. Incomplet, complexe et mal foutus...

Comment faire un filer chatoyant pour la maison avec Nexenta Core Platform ?

Disques durs...

Introduction (car il en faut des fois)

Comme ma timecapsule a lâchement cramé récemment à cause de la chaleur, en fait ça fait la seconde fois que l'alim crame, celle que j'avais mise marchais mais n'as pas supportée les 35°C dans l'appart donc.... je récupère le disque de 1To que j'avais mis dans la timecapsule et je vais l'utiliser pour autre chose (et après analyse post mortem, c'est pas l'alim qui a cramé, mais .. la carte mère de la timecapsule.... il me reste donc le disk de 1To, déjà changé, et la carte wifi nimo.... qui peux marcher sur OpenWRT en passant, a condition d'être zen aussi !).

Donc un filer c'est quoi ?

  1. de l'espace disque
  2. de la sécurité (bon on peux faire sans sécu aussi)
  3. de la performance

Dans mon cas j'ai besoin aussi des protocoles suivants :

  • NFS
  • AFP (Apple)
  • DAAP (iTunes pour mes zolis MP3 de mes CD)
  • Bonjour aka MDNS

J'aimerais aussi éviter d'avoir 3000 fois la même donnée sur les disques alors on vas utiliser le ZFS dedup. Donc il me reste plus que OpenSolaris. Le ZFS dedup n'étant dispo que sur les version de Dev ultra experimentales de FreeBSD on va éviter de tout perdre...

Open Solaris ou encore merci Oracle

La distribution OpenSolaris avec du dedup étant encore "un developper preview" et vu qu'elle prends trop de place a mon goût (pas besoin de Gnome ou autre pour avoir un serveur de fichier), et vu que nos amis "Oracle" a décidé que OpenSolaris deviendrai ClosedSolaris, donc il ne reste plus que Nexenta Core Platform 3.0. A télécharger sur : http://www.nexenta.org/

Le hardware

DOM Alors j'ai récupéré une vielle carte mère AMD64, collé 3Go de DDR1 (sisi ca existe) et un DOM de 4Go pour l'OS... (voir photo la à gauche !)

Une carte LSI JBOD type AOC-USAS-L8i, qui peux accessoirement faire du RAID, mais là on s'en fout car la carte passe en mode propriétaire et deviens incompatible avec Solaris (open ou pas). On peux la trouver sur ebay en fouillant :p

Un "Mobile Rack CSE-M35T-1" de supermicro, sur lequel j'ai mis un régul de vitesse pour éviter l'effet "avion" dans le salon.

Deux cables : CBL-0118L-02 (supermicro !!!) pour connecter les disk SAS vers le Mobile Rack.

Je passe sur le montage, c'est pas le but.

Installation de Nexenta Core Platform 3.0

Bon l'install étant en mode texte, suffit juste d'installer le minimum et après effectuer des détails de base afin de ne pas se faire casser les pieds avec des trucs qui ne servent pas à nos besoins.

Ip en statique

Configuration de l'IP en static. Contrairement a OpenSolaris ou on est obligé de virer "nwam", sur NCP on est resté dans les bonnes anciennes méthodes :

echo "192.168.1.1/24" > /etc/hostname.nge0 
echo "192.168.1.254" > /etc/defaultrouter
rm /etc/dhcp.nge0

Evidement il faut remplacer "nge0" par le nom de l'interface que vous avez sur cette machine.

Ne pas oublier de modifer /etc/resolv.conf après le reboot pour y ajouter les serveurs DNS car, lors du passage DHCP vers IP Fixe, le dns installé via DHCP est supprimé de ce fichier.

Normalement /etc/nsswitch.conf a bien aussi les lignes suivantes :

hosts:     files dns mdns
ipnodes:   files dns mdns

Un bon reboot et on a un truc propre a l'emploi.

Désactivation des services inutiles

NCP installe pas mal de services inutiles... On les désactive

svcadm disable svc:/network/iscsi/initiator:default
svcadm disable svc:/system/fcoe_initiator:default

Création du pool de disks..

Laissé comme un exercice... Hein ? Faut pas déconner non plus ?

NFS

Bah pareil... Sauf qu'il ne faut pas oublier de mettre les bon attributs a sharenfs :)

filer/smb  sharenfs              root=@192.168.0.0/23,sec=none,rw=@192.168.0.0/23,root_mapping=0

AFP, ou Netatalk.

Sur Nexenta Core Platform il y a un port de netatalk, il ne fonctionne pas alors c'est pas la peine de le charger, il vas surtout tomber dans dépendances foireuses... Donc nous allons donc compiler le port et le coller dans /usr/local, car au moins il risque pas de foutre la zone dans le système.

Il faut installer les dépendances suivantes sur NCP :

apt-get install sunwopenssl-include sunwopenssl-libraries libdb-dev

Un fois installé "y a plus qu'à" compiler le bidule :

./configure --prefix=/usr/local --with-pam=/usr/lib/security
make
make install

Les fichiers de conf sont dans /usr/local/etc/netatalk.

C'est par la que se situe les points délicats

netatalk.conf

Configuration de netatalk, on utilise que le partage de fichiers, tout le reste est inutile :

# Netatalk configuration
# Change this to increase the maximum number of clients that can connect:
AFPD_MAX_CLIENTS=20

# Change this to set the machine's atalk name and zone.
# NOTE: if your zone has spaces in it, you're better off specifying
#       it in afpd.conf
#ATALK_ZONE=@zone
ATALK_NAME=`echo ${HOSTNAME}|cut -d. -f1`

# specify the Mac and unix charsets to be used
ATALK_MAC_CHARSET='MAC_ROMAN'
ATALK_UNIX_CHARSET='LOCALE'

# specify the UAMs to enable
# available options: uams_guest.so, uams_clrtxt.so, uams_randnum.so, 
#                            uams_dhx.so, uams_dhx2.so
# AFPD_UAMLIST="-U uams_dhx.so,uams_dhx2.so"
# Change this to set the id of the guest user
AFPD_GUEST=nobody

# Set which daemons to run.
# If you need legacy AppleTalk, run atalkd.
# papd, timelord and a2boot are dependent upon atalkd.
# If you use "AFP over TCP" server only, run only cnid_metad and afpd.
ATALKD_RUN=no
PAPD_RUN=no
TIMELORD_RUN=no
A2BOOT_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes

# Control whether the daemons are started in the background.
# If it is dissatisfied that atalkd starts slowly, set "yes".
ATALK_BGROUND=no

# export the charsets, read form ENV by apps
export ATALK_MAC_CHARSET
export ATALK_UNIX_CHARSET

# config for cnid_metad. Default log config:
# CNID_CONFIG="-l log_note"

afpd.conf

- -tcp -noddp -uamlist uams_cleartxt.so,uams_dhx.so,uams_dhx2.so -nosavepassword
#- -transall -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword

Ceci permet d'utiliser les MDP de Solaris sur Netatalk, donc ne pas oublier de créer un user ayant le même user que celui de votre mac pour qu'on puisse s'identifier. Si vous mettez un gecos, le serveur netalk fera la correspondance correcte...

AppleVolumes.default

Les volumes a exporter en AFP

# [...]
/stuff/smb "Fichiers" allow:@staff cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/tmp "Temporaire" allow:@staff cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/sav "Sauvegardes" allow:kiwi cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/archives "Archives" allow:kiwi cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/miaomiao "Miaomiao" allow:miaomiao cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/timemachine/mina "TimeMachine Mina" allow:kiwi cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/timemachine/taya "TimeMachine Taya" allow:kiwi cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770
/filer/timemachine/miaomiao "TimeMachine Miaomiao" allow:miaomiao cnidscheme:dbd options:usedots,invisibledots,upriv perm:0770

Ce qui fait les volumes suivants :

  • Fichiers
  • Temporaire
  • Sauvegardes
  • Archives
  • Miaomiao
  • TimeMachine Mina
  • TimeMachine Taya
  • TimeMachine Miaomiao

Exporter avec mdns les volumes...

Créez un fichier /var/svc/manifest/site/dnssd-afp.xml avec le contenu :

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="manifest" name="dnssd-afp">
  <service
     name="site/dnssd-afp"
     type="service"
     version="1">

    <single_instance/>

    <dependency
       name="filesystem-local"
       grouping="require_all"
       restart_on="none"
       type="service">
      <service_fmri value="svc:/system/filesystem/local:default"/>
    </dependency>

   <dependency
       name="dns-multicast"
       grouping="require_all"
       restart_on="none"
       type="service">
      <service_fmri value="svc:/network/dns/multicast:default"/>
    </dependency>

    <exec_method
       type="method"
       name="start"
       exec="/lib/svc/method/dnssd-afp"
       timeout_seconds="60">
      <method_context>
        <method_credential user="root" group="root"/>
      </method_context>
    </exec_method>

    <exec_method
       type="method"
       name="stop"
       exec=":kill"
       timeout_seconds="60">
    </exec_method>

    <instance name="default" enabled="false" />

    <stability value="Unstable" />

    <template>
      <common_name>
        <loctext xml:lang="C">
          dns-sd registration of afp daemon
        </loctext>
      </common_name>
      <documentation>
        <manpage title="dns-sd" section="1M" manpath="/usr/man"/>
      </documentation>
    </template>
  </service>
</service_bundle>

Puis dans le fichier /lib/svc/method/, créez le fichier dnssd-afp :

#!/sbin/sh
#
# Registers the AFP daemon with dns-sd.
#
/usr/bin/dns-sd -R filer _afpovertcp._tcp local 548 &
/usr/bin/dns-sd -R filer _device-info._tcp. local 548 model=Xserve &
# Sleep to ensure service has enough time to start up,
# otherwise SMF will timeout waiting for it to be ready.
sleep 5

Ne pas oublier de chmod 755 dnssd-afp; chown root:root dnssd-afp.

Importer le service :

pfexec svccfg -v import /var/svc/manifest/site/dnssd-afp.xml

Executer le service :

pfexec svcadm enable dnssd-afp

Et vous pouvez voir si le service tourne :

 svcs dnssd-afp
STATE          STIME    FMRI
online         Aug_22   svc:/site/dnssd-afp:default

Normalement votre serveur de fichier doit donc apparaitre assez rapidement sur la barre à gauche de votre finder.

MT-DAAPT ou le partage iTunes.

Bon... Normalement on prenant la version SVN de mt-daapd on arrivais à faire des choses. Vu que Apple a changé la version du protocole avec la version 10 de iTunes, on vas donc ... pas aborder cette section pour l'instant. On verra plus tard quand un fix ou un autre fork de mt-daapd/firefly existeras.

Et time machine ?

Et bien vous avez vu dans les partage j'ai prévu des exports time machine...

On peux faire accepter a OS X de prendre un partage AFP non Timecapsule de la façon suivante, sur un shell sur le Mac :

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Monter le volume sur votre finder, puis jouer avec Panneau de configuration et choisir le volume Timemachine.

Et *hop* :)

Conclusion.

Un bon début, il me reste a ajouter :

  • CIFS car sur Solaris le serveur NFS (qui n'est PAS samba) est un peu tricky
  • L'ajout de napp-it

3D Secure ... ?

CB... Comme les cartes de crédits deviennent de plus en plus sécure, les banques ont inventé l'option (sic) qui s'appelle 3D Secure...

Déjà qu'il deviens de plus en plus pénible d'avoir des organismes tel que Fia-Net qui vous demande presque une analyse ADN ou un extrait de casier judiciaire pour pouvoir payer une somme pas trop élevée (j'ai eu le coup avec eux pour 300€ !) sur un site marchant... 3D Secure deviens de pire en pire.

Car pour commander avec ça il faut :

  1. Une carte bleue ou master card (bon tant qu'ils font pas chier avec l'Amex... on a encore la paix)
  2. Connaitre son numéro de compte bancaire
  3. Ne pas être bourré et connaître sa date de naissance
  4. Avoir son mot de passe 3D Secure en stock
  5. Avoir un téléphone portable ou fixe a coté de toi (très bien quand on est dans un cybercafé a l'étranger et qu'on a pas de portable...)
  6. Etre patient...

Voir le site du LCL qui donne ces informations...

Ce qui est étonnant c'est que ... Certains de ces paramètres sont semi public...

  1. Numéro de compte bancaire : en général pas trop mais avec RIB et autres, il est souvent trouvable...
  2. Date de naissance : bon... joker, quand on a son CV en ligne, CQFD
  3. Numéro de tél portable : idem

Bref des trucs plutôt léger comme méthode de sécu...

Il faut aussi prier bien fort, car si on a téléphone portable à l'étranger le truc de la banque arrive a envoyer des SMS en moins de 3 jours... sinon les sessions web -> DTC....

Bref... On va revenir aux chèques si ça continue comme ça :)

Dommage, les CB c'étais un bon plan pour éviter de se casser les mains a faire des pages d'écriture... Mais le système est tellement faillible... que on mets de cadenas (pleins !) sur une porte en carton pour éviter de rentrer (merci Gaël pour cette jolie analogie...)

Ebay et la connerie...

Bon, alors il y a loooooongtemps (genre en 1999), j'ai ouvert un compte ebay pour acheter et accessoirement vendre des trucs....

J'ai même vendu, il y a peu pas mal de machins... Et la lorsque je voulais coller a vendre un CPU a la con pour enchère de départ : 0,09€ (une misère quoi), ebay m'affiche le jolie message que vous avez vu.

La j'essaye de vérifier pourquoi ces idiots ajoutent ce genre de message stupide, et je vois que ces cons veulent que :

  • Je pose mon RIB sur Paypal (m'en fou, l'argent que je gagne sur le paypal je m'en sert pour acheter d'autres trucs sur ebay et ailleurs).
  • Que j'attende la latence du LCL pour avoir un code de vérification, à la con, pour dire "oui" c'est bien moi.

Bon ils ont gagné :

  • des message d'insulte au support
  • que je colle mon annonce sur le le bon coin...

Voila... A faire les cons ils perdent des gens qui veulent de temps en temps vendre des machins... BOULETS !

Ebay ducon

Une forge sous FreeBSD

Introduction

Comme bapt, j'ai pour mes besoins personnels de mettre en place une forge sur mon OS préféré afin de dégager mon vieux truc sur une jail et quelques wrappers...

Redmine est donc une bonne alternative a tout ce qui trainne et en plus c'est en ruby (balle avec des branches dedans !).

Pas mal de composants sont sur les ports donc nous allons utiliser :

  • redmine : /usr/ports/www/redmine
  • mysql (ou pgsql... a vous de choisir)
  • ruby-mysql : /usr/ports/databases/ruby-mysql
  • thin : le serveur web du coma pour ruby : /usr/ports/www/rubygem-thin
  • le binding image magic : ruby-rmagick : /usr/ports/graphics/ruby-rmagick
  • subversion : /usr/ports/devel/subversion (git me gonflant par manque de doc et le bordel général de ce soft...)
  • apache2.2 : /usr/ports/www/apache22
  • lighttpd : /usr/ports/www/lighttpd
  • mod_perl : /usr/ports/www/mod_perl2 (pour svn pawah)

Pour l'installation des ports, c'est assez simple et je passe donc cette étape.

Après compilation de tous ces packages, il vous reste a configurer redmine, la base mysql, thin et le serveur SVN :p

Configuration de redmine

Il s'agit de prendre en gros ce qu'il y a dans le manuel d'install de redmine.

Créer la base SQL :

En ligne de commande ou via phpmyadmin :p

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';

Configurer redmine

Dans /usr/local/www/redmine

cd config
cp database.yml.example database.yml
cp email.yml.example email.yml

Editer les 2 fichiers pour que la configuration soit correspondante a vos paramètres.

Configuration de base de redmine

Session store secret :

RAILS_ENV=production rake config/initializers/session_store.rb

Initialisation de la DB :

RAILS_ENV=production rake db:migrate

Insertion des valeurs par défaut :

RAILS_ENV=production rake redmine:load_default_data

Initialisation des plugins locaux

RAILS_ENV=production rake db:migrate_plugins

1er lancement

ruby script/server webrick -e production

Se connecter sur http://127.0.0.1:3000/ avec comme login admin et password admin. Vérifier que tout est ok puis arreter le server webrick a coup de Ctrl+C.

Configuration du serveur thin.

Thin permet d'avoir un serveur web rapide.

Droits d'accès

Dans notre forge, les accès web seront fait en tant www:www. Comme dans notre test, nous avons accédés a pas mal de pages en tant que root. Il faut changer les droits pour le serveur web thin se pete pas la tete :

cd /usr/local/www && chown -R www:www redmine

Fichier de démarrage

Il reprends le fichier de démarrage de bapt avec les modification FreeBSD :

[kiwi@dev2 /usr/local/etc/rc.d]$ cat thin 
#!/bin/sh
#
# PROVIDE: thin
# REQUIRE: DAEMON
#
# thin_enable="YES"
#

thin_enable=${thin_enable-"NO"}

. /etc/rc.subr

name=thin
rcvar=`set_rcvar`

command=/usr/local/bin/${name}
stop_cmd="/usr/local/bin/thin -c /usr/local/www/redmine -e production stop"
command_args="-c /usr/local/www/redmine -e production -d -u www -g www start"

load_rc_config ${name}
run_rc_command "$1"

Pour l'activer :

# chmod 755 /usr/local/etc/rc.d/thin
# echo "thin_enable=YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/thin start

Le serveur web tourne alors sur le port 3000, vous pouvez donc vous connecter dessus sans soucis. En cas d'un internal error, il faut jeter un coup d'oeil dans /usr/local/www/redmine/log/* afin de voir où est l'erreur... (en général c'est des problèmes de droits...).

Lighttpd

Afin de rendre la chose propre et éviter que thin soit direct sur le net, un coup de lighttpd sera a installer.

La compilation est simple, soit laisser les options par défaut, soit les modifier :)

Fichier de conf (sans les commentaires, histoire de garder de la place) :

server.modules              = (
                                "mod_redirect",
                                "mod_access",
                                "mod_proxy",
                                "mod_accesslog" )

# [...] configuration du reste selon vos envies

server.document-root        = "/usr/local/www/data/"

$SERVER["socket"] == "0.0.0.0:443" {
##### SSL engine
ssl.engine                 = "enable"
ssl.pemfile                = "/usr/local/etc/CA/xxx.pem"
ssl.ca-file                = "/usr/local/etc/CA/ca-bundle.pem"
}
$SERVER["socket"] == ":80" {
  $HTTP["host"] =~ "redmine.oav.net$" {
    url.redirect = ( "^/(.*)" => "https://redmine.oav.net/$1" )
    server.name                 = "redmine.oav.net"
  }
}

$HTTP["host"] == "redmine.oav.net" {
        proxy.server = ( "" =>
                        (
                         ( "host" => "127.0.0.1",
                           "port" => 3000
                         )
                        )
                       )
}

Evidement le reste de la conf de lighttpd est a compléter selon vos envies.

SVN et ses amis...

Introduction

Dans le cas de redmine, on peux couple SVN avec la base d'authentification de redmine afin de n'avoir qu'un seul point d'accès.

Dans mon exemple j'ai voulu avoir accès au module SVN, _que_ via SSL. Subversion aimant apache 2.0 par defaut, il faut donc compiler apache avant SVN

Compilation de apache 2.2

Dans /usr/ports/www/apache22, compiler apache avec les options suivantes :

_OPTIONS_READ=apache-2.2.14_5
WITHOUT_APR_FROM_PORTS=true
WITH_THREADS=true
WITH_MYSQL=true
WITHOUT_PGSQL=true
WITH_SQLITE=true
WITH_IPV6=true
WITH_BDB=true
WITH_AUTH_BASIC=true
WITH_AUTH_DIGEST=true
WITH_AUTHN_FILE=true
WITH_AUTHN_DBD=true
WITH_AUTHN_DBM=true
WITH_AUTHN_ANON=true
WITH_AUTHN_DEFAULT=true
WITH_AUTHN_ALIAS=true
WITH_AUTHZ_HOST=true
WITH_AUTHZ_GROUPFILE=true
WITH_AUTHZ_USER=true
WITH_AUTHZ_DBM=true
WITH_AUTHZ_OWNER=true
WITH_AUTHZ_DEFAULT=true
WITH_CACHE=true
WITH_DISK_CACHE=true
WITH_FILE_CACHE=true
WITHOUT_MEM_CACHE=true
WITH_DAV=true
WITH_DAV_FS=true
WITHOUT_BUCKETEER=true
WITHOUT_CASE_FILTER=true
WITHOUT_CASE_FILTER_IN=true
WITHOUT_EXT_FILTER=true
WITHOUT_LOG_FORENSIC=true
WITHOUT_OPTIONAL_HOOK_EXPORT=true
WITHOUT_OPTIONAL_HOOK_IMPORT=true
WITHOUT_OPTIONAL_FN_IMPORT=true
WITHOUT_OPTIONAL_FN_EXPORT=true
WITHOUT_LDAP=true
WITHOUT_AUTHNZ_LDAP=true
WITH_ACTIONS=true
WITH_ALIAS=true
WITH_ASIS=true
WITH_AUTOINDEX=true
WITH_CERN_META=true
WITH_CGI=true
WITH_CHARSET_LITE=true
WITH_DBD=true
WITHOUT_DEFLATE=true
WITH_DIR=true
WITH_DUMPIO=true
WITH_ENV=true
WITH_EXPIRES=true
WITH_HEADERS=true
WITH_IMAGEMAP=true
WITH_INCLUDE=true
WITH_INFO=true
WITH_LOG_CONFIG=true
WITH_LOGIO=true
WITH_MIME=true
WITH_MIME_MAGIC=true
WITH_NEGOTIATION=true
WITH_REWRITE=true
WITH_SETENVIF=true
WITH_SPELING=true
WITH_STATUS=true
WITH_UNIQUE_ID=true
WITH_USERDIR=true
WITH_USERTRACK=true
WITH_VHOST_ALIAS=true
WITH_FILTER=true
WITH_VERSION=true
WITHOUT_PROXY=true
WITHOUT_PROXY_CONNECT=true
WITHOUT_PATCH_PROXY_CONNECT=true
WITHOUT_PROXY_FTP=true
WITHOUT_PROXY_HTTP=true
WITHOUT_PROXY_AJP=true
WITHOUT_PROXY_BALANCER=true
WITHOUT_PROXY_SCGI=true
WITH_SSL=true
WITHOUT_SUEXEC=true
WITHOUT_CGID=true

Compilation de mod_perl2

Dans ''/usr/ports/www/mod_perl2", compiler avec les options par defaut

Compilation de SVN

Dans /usr/ports/devel, compiler avec les options :

_OPTIONS_READ=subversion-1.6.6_1
WITH_MOD_DAV_SVN=true
WITH_APACHE2_APR=true
WITH_MOD_DONTDOTHAT=true
WITH_NEON=true
WITHOUT_SERF=true
WITHOUT_SASL=true
WITH_BDB=true
WITHOUT_ASVN=true
WITHOUT_MAINTAINER_DEBUG=true
WITHOUT_SVNSERVE_WRAPPER=true
WITHOUT_STATIC=true
WITHOUT_BOOK=true

Quelques modules perl a ajouter

  • p5-DBD-mysql : /usr/ports/database/p5-DBD-mysql
  • p5-Digest-SHA1 : /usr/ports/security/p5-Digest-SHA1

Configuration de redmine pour qu'il accepte l'autocreation des repository SVN

Par rapport a la doc de redmine, il faut donc autoriser ''Enable WS for repository management", qui se trouve dans le compte admin de Redmine dans :

Administration -> Settings -> Repository -> Enable WS for repository management

C'est la seconde case a cocher... j'ai un poil jamais vu cette case... peut-être que mes yeux auto-filtrent(tm)(r)(c) les trucs dont j'ai besoin :)

Créer le répertoire père pour svn et configurer l'autocreate de respository.

mkdir /svn
chown www:www /svn
cd /usr/local/www/redmine && /usr/local/bin/ruby extra/svn/reposman.rb --redmine 127.0.0.1:3000 --svn-dir /svn --owner www --url file:///svn --verbose

Vous pouvez mettre la dernière ligne en crontab ou dans un script shell, type /etc/daily.local par exemple. Normalement lors de l'exécution de la dernière ligne les repository sont automatiquement crées *et* ajouté dans les "dépôts" sur l'interface web...

Il ne reste plus qu'à mettre à dispo les repository en http.

Configuration du Sioux

Remarque

Je voulais mettre Apache derrière un lighttpd, mais il me semble que lighttpd 1.4.x manque quelques fonctions importantes pour le webdav ou sont un poil incomplètes en mod_proxy. Si vous avez des infos et/ou des modifications faites le moi parvenir.

Fichier ''httpd.conf'

Ne garder que les modules suivants et dans l'ordre (il y a peut être quelques modules superflux... merci de me l'indiquer !) :

ServerRoot "/usr/local"
Listen 8080 # port a la con pas utilisé !
#
LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so
LoadModule authn_dbd_module libexec/apache22/mod_authn_dbd.so
LoadModule authn_default_module libexec/apache22/mod_authn_default.so
LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so
LoadModule authz_host_module libexec/apache22/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache22/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache22/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so
LoadModule authz_default_module libexec/apache22/mod_authz_default.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so
LoadModule log_config_module libexec/apache22/mod_log_config.so
LoadModule logio_module libexec/apache22/mod_logio.so
LoadModule env_module libexec/apache22/mod_env.so
LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so
LoadModule headers_module libexec/apache22/mod_headers.so
LoadModule usertrack_module libexec/apache22/mod_usertrack.so
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
LoadModule setenvif_module libexec/apache22/mod_setenvif.so
LoadModule ssl_module libexec/apache22/mod_ssl.so
LoadModule mime_module libexec/apache22/mod_mime.so
LoadModule asis_module libexec/apache22/mod_asis.so
LoadModule info_module libexec/apache22/mod_info.so
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
LoadModule perl_module        libexec/apache22/mod_perl.so
LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so

plus loin dans le fichier :

# Server-pool management (MPM specific)
Include etc/apache22/extra/httpd-mpm.conf

#...
# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf

dans le répertoire ''/usr/local/etc/apache22/extra :

cp httpd-mpm.conf httpd-mpm.conf.orig
cp httpd-ssl.con httpd-ssl.conf.orig

fichier httpd-mpm.conf

<IfModule mpm_prefork_module>
    StartServers          1
    MinSpareServers       1
    MaxSpareServers      10
    MaxClients          15
    MaxRequestsPerChild   10
</IfModule>

fichier httpd-ssl.conf

 more httpd-ssl.conf
Listen 1443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/var/run/ssl_mutex"

Créer le fichier /usr/local/etc/apache22/Include/svn.conf

C'est ce fichier qui faire la magie webdav / svn / redmine

PerlRequire /usr/local/etc/apache22/perl/startup.pl
<VirtualHost *:1443>
DocumentRoot "/var/empty"
ServerName svn.oav.net:443
ServerAdmin kiwi@oav.net
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/etc/CA/domain.crt"
SSLCertificateKeyFile "/usr/local/etc/CA/domain.key"
SSLCACertificateFile "/usr/local/etc/CA/ca-bundle.pem"
BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
PerlLoadModule Apache::Authn::Redmine
        <Location />
            DAV svn
            SVNParentPath /svn

            Order deny,allow
            Deny from all
            Satisfy any
            PerlAccessHandler Apache::Authn::Redmine::access_handler
            PerlAuthenHandler Apache::Authn::Redmine::authen_handler

            AuthType Basic
            Authname "SVN repository"
            Require valid-user
            RedmineDSN "DBI:mysql:database=redmine;host=sql-srv"
            RedmineDbUser "redmine-user"
            RedmineDbPass "redmine-pass"
            # Read only access
            <Limit GET PROPFIND OPTIONS REPORT>
              Require valid-user
              Allow from 111.222.222.333
              # Allow from ip...
              Allow from 127.0.0.1
              Satisfy any
            </Limit>
            # Write Access
            <LimitExcept GET PROPFIND OPTIONS REPORT>
              Require valid-user
            </LimitExcept>
        </Location>
</VirtualHost>

Creer la magie nécessaire a mod_perl

cd /usr/local/etc/apache22
mkdir -p perl/Apache/Authn
cd perl
cp /usr/local/www/redmine/extra/Redmine.pm Apache/Authn

Dans le fichier startup.pl :

use lib qw(/usr/local/etc/apache22/perl);

1;

Démarrez apache2.2 et vous avez votre repository.

TODO

  • Mail on commit
  • Quoi d'autres?

Roselyne, on vous a bien dit que la pandémie était ... finie ?

Ah Bon ? Ah Bon ?

Non ? Bah il faut s'informer et ne plus envoyer les bons de vaccination hein ?

Tiens le mien est arrivé hier... (imprimé le 12/01/2010) et celui de ma femme ce matin (imprimé le 14/01/2010).

Bravo ! pour la gestion exemplaire de cette soit disant pandémie... avec... un coût sur nos impôts extra ordinaire !

Et après on s'étonne ? Si l'OpenSource est la ramasse pour l'IPv6, alors je parle pas du reste...

Introduction

Alors, tout content d'avoir eu mon /48 pour Kazar, j'essaye depuis facilement début janvier 2010 de trouver une solution qui peux router de l'IPv6 en natif....

Si il y a de la solution en terme d'OS clients, en terme de routage on a rien...

Panorama des solutions OpenSource

Linux

Bon la, je verrais, plus tard, je suis BSD et je truste pas le pinguin en terme de routage coeur...

OpenBSD

La c'est mon favoris, un deamon BGPd qui roxe, des choses propres, flashrd qui permet de faire tourner ça impeccablement, un deamon ospfd qui fait assez bien le travail... Mais ospf6d qui n'existe qu'en 4.6-current (là ça commence mal) et qui marche pas.

-> suivant !

FreeBSD

Bah ... NanoBSD c'est bien... donc allons y...

Après avoir galléré avec FreeBSD 8.0 pour faire du NanoBSD qui marche pas.... passons en 7.2 + quagga....

Et la.... dans le beau zebra

!
interface lo0
 description Loopback core-4
 ip address 193.43.214.3/32
 ipv6 address 2001:67c:ec::4/128
!

En pratique ça donne :

# ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
        inet 193.43.214.3 netmask 0xffffffff 

Bah ? quoi ? il manque quelque chose ? Ouiiiii les addresses IPv6.... !!!

Et la oh miracle : bug 408 ouvert depuis 2007...

La je dis BRAVO le soit disant logiciel opensource en carton...

Conclusion..

On peux dire du mal du proprio, mais la c'est trop -> Juniper... Reste a trouver du cash.... ça c'est une autre chose...

Il est beau mon poisson !

Et bien l'association Kazar a enfin un prefixe IPv6... Jusqu'a la tout vas bien, le temps est beau et le soleil brille...

Un jour je fait

find / -name "ospf6d" -print

et rien ...

Bref nada...

Et voila : Bref => passage en OpenBSD 4.6-current...

Donc danger...

Après "backport" manuel, bref :

Jan  6 18:06:12 core-2 ospf6d[24456]: nbr_adj_timer: failed to form adjacency with 193.43.214.3
Jan  6 18:06:13 core-2 ospf6d[7804]: lsa_intra_a_pref_check: invalid LSA intra area prefix packet

Donc soit : - quagga - bird...

Plonk :(