L'appartement

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

mercredi, janvier 24 2007

Un système de template ultra-minimaliste

Voici un petit bout de code php5 qui permet de créer simplement des fichiers à partir d'un modèle. Comme mon explication est loin d'être évidente ;) voici un exemple avec un fichier de zone DNS. Ici, tout ce qui est mis entre accolade doit être remplacé par sa valeur.

$TTL 3600
{domain}.               IN  SOA {ns1}.   {contactzone}. (
            {timestamp}
            10800
            3600
            604800
            3600 )

{domain}.               IN  NS      {ns1}.
{domain}.               IN  NS      {ns2}.

; Enregistrements Spf

{domain}.               IN  TXT     "v=spf1 a mx ~all"
mail.{domain}.          IN  TXT     "v=spf1 a -all"

www.{domain}.           IN  A       {ipl}
{domain}.               IN  A       {ipl}
ftp.{domain}.           IN  A       {ipl}
mail.{domain}.          IN  A       {ipl}

{domain}.               IN  MX  10  mail.{domain}.
{domain}.               IN  MX  20  mx-backup.sivit.fr.

smtp.{domain}.          IN  CNAME   mail.{domain}.
pop.{domain}.           IN  CNAME   mail.{domain}.

Voici donc la méthode en question qui s'intégrera parfaitement dans votre classe :

<?php
   /** Création de fichier de configuration
    *
    * Mini système de template pour créer des fichiers de configuration à partir d'un squelette
    * en remplaçant {pattern} par la valeur
    *
    * @access   public
    * @return    bool
    * @param    string  $orig         Fichier "template"
    * @param    string  $dest        Fichier de destination
    * @param    array   $keywords Mots à rechercher dans le template
    * @param    array   $values     Valeur de remplacement
    */

    public function setConfigFile($orig,$dest,$keywords,$values)
    {

        // contenu du fichier dans un variable
        $content = file_get_contents($orig);

        // ajout pattern
        foreach($keywords as $key=>$value) {
            $patterns[] = "/{".$value."}/imSU";
        }

        // remplacement
        $output_content = preg_replace($patterns, $values, $content);

        // variable dans un fichier ou exception
        if(!file_put_contents($dest,$output_content)) {
            throw new Exception('Erreur dans la creation du fichier');
        }

        return true;
       
    }

    // }}}
?>

Pour notre exemple, je passe sur l'instanciation de la classe, On utiliserais la méthode de la façon suivante :

<?php

// on a un objet obj

// à remplacer...
$keywords = array('domain','ns1','ns2','timestamp','contactzone');

// par :
$values = array('toto.com','ns1.toto.com','ns2.toto.com',date('Ymdi'),'technique.toto.com');

// go !
$obj->setConfigFile('zonedns.tpl','/var/cache/bind/toto.com.hosts', $keywords, $values);
?>

Ce script n'a rien de révolutionnaire mais je trouve ça pratique. Ca ressemble de très loin à un système de template minimaliste ;)

PS : pour les allergiques à l'orienté objet, vous pouvez bien entendu l'utiliser comme une simple fonction

lundi, janvier 1 2007

Ne cherchons pas l'originalité

Simplement une bonne année à toi, lecteur de ce modeste blog. Mes résolutions de l'année 2007 :

  • finir mes projets en cours
  • concurencer google
  • prendre des vacances
  • travailler plus efficacement
  • revoir la résolution de 2006

Cherchez les erreurs ;)

jeudi, novembre 30 2006

Les mots de passe des utilisateurs de Mysql 4 dans Mysql 5

Le système de hashage des mots de passe utilisateurs de Mysql a changé depuis Mysql 4.1. Il est plus sécurisé, dixit le manuel. Le souci, c'est que certains clients Mysql ne semble pas encore gérer correctement la communication avec ce nouveau type de mot de passe.

La solution - certes au détriment de la nouvelle sécurité proposée - est d'utiliser la commande OLD_PASSWORD pour attribuer un mot de passe compatible "ancien hashage" à un utilisateur.

Plus d'informations dans la documentation officielle de Mysql : Hashage de mots de passe en MySQL 4.1

Ce post après un temps de prise de tête à cause de ce changement

samedi, novembre 25 2006

Découverte du framework Symfony

Symfony Voici quelques jours, j'ai décidé de me lancer à l'assaut du framework Symfony dont j'entendais parler ici et là depuis déjà quelques temps.

Développé à la base par une société française (sous licence MIT), ce framework veut se la jouer Ruby On Rails par sa puissance pour mettre en oeuvre rapidement une application complète.

Il a récemment connu une publicité inespérée. Yahoo! a en effet annoncé sont utilisation pour la réalisation de sa nouvelle plateforme "social networking" de gestion de bookmark.

Un "Admin Generator" puissant, des outils complet en ligne de commande, des fichiers de descriptions d'interfaces simplifiés en XML ou en YAML... Bref, tout ce qu'il faut pour construire une application fonctionnelle sans aucune ligne de PHP (j'exagère un peu quand même).

Symfony utilise à fond les possibilités objet de PHP5 et repose notamment sur le pattern ORM (Object-relational mapping) via propel pour vous générer en quelques secondes et sans effort vos modèles de base d'accès aux données (le fameux CRUD : Create, Read, Update and Delete).

Courez donc vite sur le site de Symfony pour y découvrir quelques vidéos et exemples qui vous donnerons sans doute envie d'aller plus loin.

Si vous êtes convaincu et que vous cherchez à débuter en français, voici deux liens :

Ensuite, en anglais, pour l'instant un howto en 21 épisodes pour construire de A à Z une application :

Vivement plus de documentation francophone sur le sujet ;)

vendredi, novembre 3 2006

Ubuntu Edgy Eft, Beryl Xgl et tout le reste

UbuntuCelà fait maintenant plus de 2 ans que ma station de travail principale fonctionne sous Linux. Hier, je suis passé à la dernière version de la distribution que j'affectionne pour le moment, j'ai nommé Ubuntu Edgy Eft.

Une fois n'est pas coutume, j'ai lancé dist-upgrade via le gestionnaire graphique de mises à jour fourni par Ubuntu. J'ai été bluffé par les améliorations apportées et l'efficacité générale de l'outil (sans langue de bois : ça a fonctionné pile-poil).

Cette nouvelle mouture va toujours dans le sens d'une évolution positive tant au niveau de l'ergonomie que des fonctionnalités, qui font de Ubuntu Linux un système pratique à utiliser au quotidien.

En vrai geek, j'ai bien entendu essayé Beryl (alias XGL) dans la foulée. Enfin ! La véritable transparence des fenêtres et la fluidité des effets est géniale. Le bureau Mac OSX n'a qu'a bien se tenir !

Petit reproche au projet beryl cependant : les réglages par défaut transforme la machine en montagnes russes et j'ai passé quelques temps à trouver quelques choses de moins "folklorique". On a un peu l'impression que c'est uniquement pour démontrer (à juste titre, certes) la puissance des effets disponibles.

jeudi, octobre 26 2006

Un plugin pour SPIP

SPIP[auto-promo] J'ai déposé un petit plugin sur Spip-contrib. C'est tout simple mais ça peut servir ;)

Importer des auteurs On a parfois besoin d’ajouter un grand nombre de rédacteurs. Ce plugin le permet simplement depuis un fichier de type csv (Comat Separated Value) placé dans ecrire/data.

vendredi, octobre 20 2006

Une gestion simplifiée des réseaux wifi sous Linux

gnome Laissez tomber les Wifi-Radar et autres wpa_gui. Ne lisez plus non plus mes "howto" expliquant le wpa sous linux en 5 minutes (encore que ça peux servir pour des stations non graphique).

Voici NetworkManager, un projet gnome qui vise à obtenir une gestion graphique simple de vos multiples réseaux sans fil (ou filaire DHCP) et d'assurer corectement le roaming... Je dirais, de manière un peu provoquante, comme sous Windows Mac OSX.

Il est vrai que la gestion des réseaux en mode graphique est le truc qui, à mon avis, doit encore évoluer sous Linux.

Ce petit logiciel, qui apparaît sous la forme d'un "gnome applet", permet d'enregistrer ses réseaux préférés, les clés WPA qui y sont associées (communication directe avec wpa_supplicant), de donner des priorités de connexion et même de gérer les connexions VPN (je n'ai encore pas testé)

Si vous êtes un heureux utilisateur de Ubuntu Dapper Drake, il vous suffira d'installer le paquet suivant (ici pour gnome) :

apt-get install network-manager-gnome

Ensuite, dans votre fichier /etc/network/interfaces, ne laissez que l'interface locale (avant ça, une copie du fichier interfaces est toujours une bonne chose)

auto lo
iface lo inet loopback

Relancez gnome et le réseau, ça devrait rouler.

Le gros gros défaut de ce système (oui, ce n'est pas le logiciel miracle), est qu'il semble impossible de stocker des configurations statiques. C'est donc vraiment le côté mobilité qui est ici privilégié. Ceci étant, il me semble que cett gestion est aussi prévue à l'avenir...

Un projet à suivre avec attention et qui vous permettra encore de convaincre d'éventuels switchers que "Linux c'est bien" ;)

jeudi, octobre 5 2006

Une nouveauté pas web 2.0 de Google

Un truc sympa du maxi Google - à première vue. il faut voir à l'usage - : le moteur de recherche sur du code source. C'est Google Codesearch. Ca change des trucs web 20.0 ;)

D'après ce qu'on peux lire ici ou là, il n'y aurait pas de liens sponsorisés sur ce moteur... Pour combien de temps ? Quand on voit la foultitude de sites de "développeurs" sans aucun contenu réel et qui ne font que pomper des listes de diffusions (voir carrément des articles d'autres sites)... Tout ça, bien entendu, entouré d'un maximum de publicité, on peux se poser la question...

C'est quand même à tester !

mercredi, août 30 2006

Diverses choses du web

  • Laurent Jouanneau parle des préconisations pour l'amélioration des formulaires HTML avec des nouvelles spécifications (encore à l'état de brouillon). Reste quand même l'implémentation dans les navigateurs (et combien de siècle pour l'intégrer dans IE ?!)
  • Frederic de Villamil explique les microformats. Va falloir sérieusement si intéresser. C'est l'avenir j'vous dis mon bon mossieur !
  • Jean-Marie Le Ray analyse l'évolution des noms de domaines. Combien le kilo de domaine ? Réponse de Verisign : de 14Euros à 100000$. Encore un coup de Verisign qui avait déjà testé SiteFinder (heureusement abandonné). Vivement la gestion des domaines à l'ONU (encore que...)
  • Chez Free, on active le magnétoscope lundi et on parle de la fibre juste chez moi mardi (j'y crois moyen)
  • Chez Zdnet, on trolle sur l'état de Usenet

Moi aussi je fais des billets en vrac ;)

mercredi, août 23 2006

Petite cure de jouvence

Début des travaux : quelques modifications graphiques sur le blog qui n'avait pas changé depuis 2003 ;)

lundi, août 7 2006

Le WPA en 5 minutes sous Ubuntu Dapper

Wifi Suite à mes billets sur le WPA sur Ubuntu Breezy ou Debian, voici comment j'ai configurer l'accès Wifi avec le cryptage WPA sur Ubuntu Dapper. C'est une configuration simple avec, en théorie car je n'ai pas encore testé, le roaming !

Pré-requis :

Pour informations, ceci est testé avec l'équipement suivant :

Tout d'abord, une bonne nouvelle, la configuration des réseaux sans-fil sécurisés est beaucoup plus simple maintenant puisque la gestion du WPA est tout simplement intégrée dans la version Dapper de Ubuntu. Il n'est donc plus la peine d'installer WPA Supplicant.

Il y a même plusieurs façon de configurer les réseaux WiFi cryptés en WPA en WEP ou pas du tout, je vous en proposerais deux :

Une très simple mais qui nécessite la modification du fichier /etc/network/interfaces pour chaque réseaux WiFi et qui a donc peu d'intérêt (mais peut-être utile à certains). Une à peine plus complexe qui permet de vous connecter automatiquement à vos réseaux préférés au boot de la machine ou avec les habituelles commandes ifup/ifdown

Comme je l'ai précisé, le roaming semble être effectif puisque le daemon wpa_supplicant est lancé (la commande ps aux vous le confirmera). Mais je n'ai pas encore eu le temps de le tester. Je n'en dirais donc pas plus plour l'instant ;)

Pour les deux méthodes, vous trouverez toutes les options de configuration correspondant aux spécificités de votre réseau sans-fil dans le fichier commenté comme il se doit : /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz

Attention : il est important d'utiliser le driver wext et non pas le ipw pour les chipset IPW2100 !

La méthode basique

La méthode simple, consiste à ne pas utiliser de fichier /etc/wpa_supplicant.conf et à simplement éditer le fichier /etc/network/interfaces de la façon suivante :

auto eth1
iface eth1 inet dhcp
    wpa-driver wext
    wpa-ssid nom_du_rezo
    wpa-key-mgmt WPA-PSK
    wpa-psk "ici_passphrase_en_clair"

La méthode avancée

La deuxième méthode, bien plus pratique, consiste à saisir tous les paramètres des différents réseaux Wifi que vous utilisez dans le fichier /etc/wpa_supplicant.conf

En plus ce ça, il vous faudra la configuration suivante dans /etc/network/interfaces :

auto eth1
iface eth1 inet dhcp
    wpa-conf /etc/wpa_supplicant.conf
    wpa-driver wext

Le fichier /etc/wpa_supplicant.conf quand à lui ressemble donc à ça :

# Configuration des réseaux WiFi

# Chemin du pid
ctrl_interface=/var/run/wpa_supplicant

# Groupe pouvant activer la connection
ctrl_interface_group=0

# Configuration commune
eapol_version=1
ap_scan=1
fast_reauth=1

# A la maison
network={
    ssid="nom_mon_essid"
    scan_ssid=1
    proto=WPA
    key_mgmt=WPA-PSK
    psk="ma_passphrase_en_clair"
}

# Au travail
network={
    ssid="nom_essid_travail"
    scan_ssid=1
    proto=WPA
    key_mgmt=WPA-PSK
    psk="passphrase_en_clair"
}

# Acces point ouvert (pas encore testé !)
network={
    ssid=""
    key_mgmt=NONE
}

# Avec cryptage WEP (pas encore testé !)
network={
        ssid="essid_crypte_avec_wep"
        key_mgmt=NONE
        wep_key0="abcde"
        wep_key1=0102030405
        wep_tx_keyidx=0
}

Notez que j'ai eu quelques soucis de compatibilité lorsque j'ai effectué la mise à jour de Hoary vers Dapper. C'était peut-être du à mes nombreuses bidouilles dans les fichiers de configuration du réseau ;)

En complément, je prépare dès que possible un billet sur la configuration des réseaux sans fil en mode graphique avec Wifi-radar ou wpa_gui.

dimanche, juillet 2 2006

SPIP 1.9 dans les bacs

SPIPL'un des seul CMS traduit en esperanto et en créole réunionais vient de sortir dans une version 1.9 qui apporte un bon lot de nouveautés et une évolution majeure. On notera la possibilité d'utiliser directement la syntaxe de SPIP pour interroger n'importe quelle table. Exemple :

<BOUCLE_maboucle(MATABLE)>
#CHAMP_DE_MA_TABLE>
</BOUCLE>

Bien pour les non codeurs ;)

Mais aussi un nouveau système de plugins, la possibilité de "surcharger" toutes les fonctions et pages, l'abandon (enfin) des .php3, une couche d'abstraction plus mieux etc... Plus d'informations sur cette nouvelle version 1.9 de SPIP.

vendredi, juin 23 2006

Changement de shell : de bash à zsh

Je trouve zsh tellement sympa que je l'ai collé partout :)

TerminalPour le mode d'emploi vers zsh c'est encore Alexis Delattre qui s'y colle. Tout cela vous produira une complétion intelligente sur la plupart des choses : liste des paquets Debian, scp, ssh (si les hôtes sont dans votre fichier hosts), paramètres de commande ect... La complétion est également intelligente puisqu'elle effectue le distingo entre un fichier et un répertoire. Exemple : la commande cd suivi de tab/tab ne vous proposera que les répertoires. En prime, des zolies couleurs !

Merci Qwix ;)

mercredi, juin 21 2006

Friboite HD at home

Friboite V5 J'ai recu la nouvelle Freebox HD hier. Hormis le fait que j'ai eu du mal à trouver le relais Kiala où elle était en dépot, l'installation s'est déroulé parfaitement et, satisfaction, je n'ai pas eu à contacter le support pour l'enregistrement de l'adresse MAC de cette dernière comme s'était souvent la cas avant !

Avec le passage en ADSL 2+, et même si ma ligne ne s'est pas améliorée comme par magie, le débit est à peine plus élevé ! Concernant la télé, j'espère avoir un jour le temps de la tester. En tout cas la télécommande est remplie de bouton ;)

Enfin la tranquilité avec Spamtimeout, Spamplemousse et Captcha ?!

SpamSpamplemousse ne suffisait plus. J'ai installé Captcha (accesible d'Olivier Meunier) et Spamtimeout. Je pensais dire adieu au spam sur les trackbacks rétroliens et les commentaires... Malheureusement il semble qu'il y ai encore du chemin pour une efficacité proche de 100%.

Enfin c'est quand même beaucoup plus tranquille :)

Liens vers les indispensables :

vendredi, juin 16 2006

Naissance

Il va falloir que j'en rajoute un sur la photo qui illustre ce blog :)

Clément, né à 21 heures hier soir. 3,880 Kilo et 53 cm. Toute la famille va bien !

vendredi, juin 9 2006

Un script simple de "mass mailing" en PHP

Mass

Mise à jour !

IMPORTANT : Une nouvelle version qui corrige un bug avec Zend_mail est disponible.

Depuis le temps qu'il fallait que j'abandonne ce misérable logiciel de gestion de newsletter sous Winchose pas pratique du tout j'ai nommé groupmail dont je tairais le nom et qui expédie depuis la (petite) ligne ADSL Wanadoo...

J'ai enfin suivi le conseil : do it your self ! Après avoir regardé avec plus ou moins d'intérêt du côté des solutions de gestion de maling list sous Linux (sympa, mailman, emzl ect...) ou des scripts de gestion de newsletter en différents languages (java, php, perl...), j'ai finalement opté pour l'utilisation de PHP en ligne de commande, CLI - Command Line Interface - pour les intimes, pour réaliser mon propre script de mass mailing.

Préface : la situation

  • un script d'abonnement à la newsletter "fait maison" composé de nombreux champs : nom, prénom, adresse, téléphone, mail, profession ect... Déclaré à la CNIL, ne m'envoyez pas la police ;)
  • une table Mysql pour stocker tout ça bien entendu
  • un serveur dédié sous Debian avec PHP5, PEAR, Zend Framework (version subersion car quelques bug sur le Zend_Mail component actuel), Postfix et une bonne bande passante
  • un message tout en html (avec quand même un texte alternatif disponible pour les fanatiques de mutt).
  • et enfin, tout de même 25000 abonnés à cette liste

Introduction : comment ça marche ?

  • On exécute le script en ligne de commande (dans un screen ou en tache de fond pour le laisser tourner ensuite)
  • Le script (interactif) demande quel fichier html il doit utiliser pour le message. Par défaut, il propose le dernier fichier trouvé dans le répertoire $dir_html
  • Les messages sont envoyés un par un par paquets de 100 (nombre de messages par paquet configurable)
  • Une pause de 15 secondes est effectuée entre chaque paquets. On en profite pour réinitailiser la connection avec le serveur SMTP ( le temps de la pause est également configurable).
  • A chaque envoi réussi (la validation de l'envoi est à revoir), un champ booleen "envoye" est mis à jour dans la table des abonnés. En cas de plantage, il suffit donc de relancer le script pour reprendre l'expédition.
  • Avant de relancer le script pour une nouvelle lettre d'informations, une option permet de remettre le flag "envoye" à zéro.

Chapitres suite et fin ;)

Lire la suite...

mardi, mai 23 2006

Des tips dans le placard

Etre prévénu des mises à jour à faire sous Debian!!

Sur un serveur en stable, apticron vous envoi un mail quand des mises à jour sont à faire.

apt-get install apticron

Un chkrootkit sympa!!

Normalement votre machine est un vrai bunker mais voici quand même une autre petite sécurité. rkhunter, s'installe facilement, se mets à jour tout seul. A mettre dans un cron pour recevoir le rapport tout les matins.

Le site officiel de rkhunter

Se connecter sur une machine qui utilise un autre charset!!

Cas de figure classique : ma machine de bureau est en UTF-8 et mon serveur en iso-8859-1. On s'amuse bien avec les accents !?

apt-get install luit

et ensuite

lui ssh monserver

A la connexion vous aurez le message suivant : Warning: couldn't find charset data for locale fr_FR.UTF-8; using ISO 8859-1.

C'est bon vous êtes connecté en iso-8859-1 (TODO : passer tous serveur en utf-8 pour rendre ce tips inutile).

Commande exposé sur gnome!!

Pour faire "à la Mac OSX", il y a déjà ça dans Firefox avec Foxpose et bien ça existe aussi pour les fenêtres du bureau Gnome !

apt-get install skippy

Merci Bruno ;)

mardi, mai 16 2006

Bientôt la machine à café Ajax ?!

AjaxLa nouveauté web 15.0 du jour : le système d'exploitation en Ajax. Si si ! Je vous jure ! Ca s'appelle AjaxOS. Dans la série question à 2 cents d'euros : est-ce que HTML et javascript sont le meilleur langage pour développer un système d'exploitation ? hum hum !

vendredi, mai 12 2006

Une erreur PHP "intéressante"

Question à 2 cents d'Euros : Quels fichiers sur les 5000 fichiers du site produit cette erreur ?

[12-May-2006 16:18:12] PHP Warning:  Cannot modify header information - headers already sent in Unknown on line 0

Reste plus qu'à compiler Xdebug sur la machine en production ?!

- page 2 de 8 -