Ce blog — désormais archivé — est en lecture seule. Pour continuer à lire mes tribulations, rendez-vous sur le blog d'Akei, ma société.

Prendre un Café

L'espace d'expression de Nicolas Perriault

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

Keyword - linux

Fil des billets

mardi 2 juin 2009

Utiliser les fonctions GeoIP de PHP sous Ubuntu

Mon Dieu, les billets techniques refleuriraient-ils au printemps ? Si vous désirez récupérer des informations géographiques à partir de l’adresse IP (ou du hostname) d’un utilisateur, vous pouvez utiliser les fonctions fournies par l’extension PECL GeoIP.

Voici la procédure d’installation sur une Ubuntu 8.04:

$ sudo -s
# apt-get install build-essential php5-dev php5-cli libgeoip-dev libgeoip1 php-pear
# pecl install geoip

Si toiut s’est bien passé :

# echo "extension=geoip.so" >> /etc/php5/cli/php.ini

Si vous utilisez Apache comme serveur :

# echo "extension=geoip.so" >> /etc/php5/apache2/php.ini

Il faut également installer la base GeoIPCity de Maxmind :

# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Vous pouvez maintenant tester l’extension avec une ligne du genre[1] :

$ echo "<?php var_dump(geoip_record_by_name('209.202.168.**'));"|php

Ça donne ici :

array(11) {  ["continent_code"]=>
  string(2) "NA"
  ["country_code"]=>
  string(2) "US"
  ["country_code3"]=>
  string(3) "USA"
  ["country_name"]=>
  string(13) "United States"
  ["region"]=>
  string(2) "NC"
  ["city"]=>
  string(4) "Cary"
  ["postal_code"]=>
  string(5) "27511"
  ["latitude"]=>
  float(35.7********)
  ["longitude"]=>
  float(-78.7*******)
  ["dma_code"]=>
  int(560)
  ["area_code"]=>
  int(919)
}

Enjoy.

Notes

[1] J’ai volontairement masqué certaines informations pour d’évidentes raisons de confidentialité.

mercredi 16 mai 2007

KeyJnote, et vos présentations ont la classe

KeyJnote est un logiciel permettant l'affichage de présentations au format PDF. Le logiciel, riche en effets OpenGL, se veut aussi spectaculaire que Keynote.

Bien que le paquet keyjnote soit disponible dans les dépôts d'Ubuntu Feisty en version 0.8.2, j'ai préféré installer la toute dernière version (0.9.4) qui s'installe relativement facilement :

$ sudo apt-get install python python-pygame python-opengl python-imaging gs pdftk
$ wget -c http://ovh.dl.sourceforge.net/sourceforge/keyjnote/KeyJnote-0.9.4.tar.gz
$ tar xvzf KeyJnote-0.9.4.tar.gz && sudo mv KeyJnote-0.9.4/keyjnote.py /usr/local/bin/

L'idée est de préparer ses slides dans un éditeur permettant de sortir du PDF (comme Impress ou KPresenter, par exemple) et de laisser la gestion de l'affichage à KeyJnote. Pour vous faire une idée plus précise des capacités du logiciel, lancez la démo en n'hésitant pas à jouer avec la souris et les raccourcis clavier disponibles :

$ keyjnote.py KeyJnote-0.9.4/demo.pdf

Voila, même sous Linux, vos présentations n'auront plus jamais la même tronche ;)

mercredi 25 avril 2007

Mettre en place un bouncer IRC avec Muh

Là, en lisant le titre, tu [1] te dis :

Ça y est, il a définitivement pété une durite, je le comprend même plus...

Rassure-toi, la fièvre tombe progressivement, mais je vais quand même essayer de t'expliquer de quoi il s'agit. Si tu utilises quotidiennement IRC, tu sais que chaque fois que tu rejoins un canal ou lances une commande /WHOIS, on voit ta résolution DNS inverse (par exemple jeanpierre@82-76-32-67.Rennes22.monfai.net.

Et parfois cette situation t'embête, pour x ou y raison. Là tu as 3 choix :

  • Tu renonces et acceptes ton sort sans rechigner.
  • Tu te loggues sur un serveur en SSH, tu lance un screen et utilises irssi. Valable, mais un poil overgeek pour moi qui me suit bien habitué à XChat, parfaitement intégré dans le bureau Gnome (avec les notifications des hilites dans la traybar, miam.)
  • Tu installes Muh, et continues à utiliser ton client IRC préféré tout en profitant de la résolution DNS inverse de ton serveur à toi.

Muh va faire office de proxy IRC - ou de bouncer, comme tu préfères. C'est à dire que tu vas mirrorer l'accès à tes serveurs IRC préférés sur ton serveur personnel [2]. Attention, certains hébergeurs n'aiment pas ça du tout et le précisent parfois dans les CGU du service : à vérifier.

Si une distro debian-based est installée sur le serveur, l'installation est simplissime :

$ sudo apt-get install muh
$ mkdir ~/.muh
$ cp /usr/share/doc/muh/examples/muhrc.gz ~/.muh
$ gunzip ~/.muh/muhrc.gz

Édite le fichier ~/.muh/muhrc, ça commence par ton identité sur IRC :

nickname = "NiKo";
altnickname = "NiKo`";
realname = "Nicolas Perriault";
username = "niko";

Je pense que c'est assez parlant. La configuration du port :

listenport = 9999;

Si tu utilises un firewall, attention : tu risques de te faire pincer très fort prends garde à autoriser l'écoute sur ce port.

Maintenant, définis un mot de passe de connexion :

password = "monbeaupassword";

Ce mot de passe est nécessaire pour te connecter à ton instance de Muh. Enfin, la liste des serveurs que tu désires bouncer :

servers {
  "irc.freenode.net",
  "irc.mozilla.org",
};

Enregistre le fichier et lance Muh :

$ muh

Voila, il ne te reste plus qu'à te connecter à ton serveur comme à n'importe quel autre via ton client IRC habituel.

Notes

[1] Oui, je te tutoies, c'est hype.

[2] Bien sûr, il faut disposer d'un serveur dédié ou équivalent.

jeudi 12 avril 2007

Feisty+1 sera Gutsy Gibbon

Le Gibbon Déterminé succèdera donc au Faon Téméraire, ainsi en a décidé SABDFL.

Cette future version du système d'exploitation Ubuntu sera déclinée en une version supplémentaire ne comportant plus aucun logiciel ou driver propriétaire, closed-source ou incompatible avec la définition de Logiciel Libre, en collaboration avec l'équipe de développement de gNewSense.

Gutsy aura de fortes chances d'embarquer Compiz ou le futur hybride Compiz/Beryl par défaut, même si sur le sujet personne n'ose plus vraiment prédire quoique ce soit.

D'ici là, le petit Faon sera ravi d'équiper vos machines dès le 19 avril de cette année. Les plus accros au support CD physique (croisés des moins impatients) seront ravis d'apprendre que ShipIt leur livrera leurs CD de Feisty sous 4 à 6 semaines.

Edit : Et Bill Gates aura beau rien faire qu'à copier Mark Shuttleworth, ça ne nous gâchera pas les feistyvités. Na.

lundi 9 avril 2007

Debian Etch est de sortie

Après 21 mois de développement, la version 4.0 de la distribution GNU/Linux Debian, nommée Etch est sortie hier.

Debian est une distribution mature et très bien maintenue (Ubuntu est d'ailleurs basée dessus, c'est vous dire), je vous enjoins à l'essayer si vous ne l'avez pas déjà fait, et pourquoi pas à l'adopter, tant pour votre serveur que sur votre laptop perso ;-)

Bravo aux équipes de développement pour le chouette boulot accompli.

jeudi 29 mars 2007

Chez HP, installer Linux fait perdre la garantie matérielle

News hallucinante trouvée sur The Inquirer : il semblerait qu'installer GNU/Linux sur un ordinateur Hewlett-Packard fait perdre de fait la garantie matérielle. En gros si votre clavier, votre écran ou votre alimentation lâche, vous pouvez vous la mettre sur l'oreille si un OS libre (voire non-Microsoft) est présent sur le disque dur.

Tout allait bien jusqu'au jour où son clavier a commencé à faire des siennes. Certaines touches restaient enfoncées et la barre d'espace ne fonctionnait pas toujours. Ce ne semblait pas être un problème logiciel, mais HP lui a annoncé que "la garantie ne fonctionnait pas sous Linux". Le seul moyen pour qu'HP accepte de prendre en charge le portable était de supprimer Linux et de réinstaller Windows.

Messieurs de chez HP, vous ne semblez pas réaliser à quel point prendre les gens pour des abrutis risque à terme de se retourner contre vous et vos zoulies courbes de vente.

Du côté de chez Dell en revanche on semble commencer à entrevoir sérieusement la lumière. On croise les doigts.

mercredi 14 mars 2007

Aidez à populariser Linux !

Dell lance un sondage pour recueillir les préférences de ses clients potentiels d'un système équipé de GNU/Linux. N'hésitez pas à y répondre et à faire tourner ce lien !

jeudi 18 janvier 2007

Synchro distante automatique via un daemon rsync sur Ubuntu

Et non ! Rsync n'est pas une voiture des années 90 mais bien un outil de synchronisation de fichiers à distance très puissant. Il peut notamment tourner en daemon afin d'autoriser les appels distants automatiques, via Cron par exemple.

Si par un hasard hallucinant vous ne disposiez pas de rsync sur votre Ubuntu, voici la démarche à suivre pour l'installer en ligne de commande :

$ sudo apt-get install rsync

Bien. Nous disposons de deux machines, la machine A - disposant d'un utilisateur jeanpierre - et la machine B - habitée par edmond. Nous devons automatiser la synchro d'un répertoire présent sur la machine A vers la machine B. On va donc installer un daemon rsync sur la machine A et le configurer en créant le fichier /etc/rsyncd.conf :

uid             = jeanpierre 
gid             = jeanpierre
use chroot      = no    
max connections = 4
syslog facility = local5
pid file        = /var/run/rsyncd.pid

[mon_partage]
  comment = Mon partage
  path = /home/jeanpierre/monpartage
  read only = yes
  list = yes
  hosts allow = *
  auth users = edmond, gerard
  secrets file = /etc/rsyncd.secrets

Je vous renvoie à cette page sur la syntaxe du fichier rsync.conf pour plus de renseignements.

On crée un fichier process vide :

jeanpierre@machineA:~$ sudo touch /var/run/rsyncd.pid

Les comptes utilisateurs se définissent dans le fichier /etc/rsyncd.secrets sous la traditionnelle forme login:motdepasse comme ci-dessous :

edmond:3dm0nd
gerard:g3r4rd

Par souci de sécurité et de confidentialité, ces fichiers ne devront pas être lisibles par un autre utilisateur que le root, donc :

jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.conf
jeanpierre@machineA:~$ sudo chmod 640 /etc/rsyncd.secrets

Lancer rsync en daemon sur la machine A (machinea.domain.tld) :

jeanpierre@machineA:~$ sudo rsync --daemon

Et depuis la machine B (machineb.domain.tld) :

edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible

La saisie du password de l'utilisateur edmond défini précedemment lancera la synchronisation effective des fichiers. Pour éviter la saisie manuelle du password, il faut envisager d'utiliser l'option --password-file=FILE. Pour se faire, il faut créer un fichier contenant juste le mot de passe en clair, par exemple dans /home/edmond/.rsync_passwd comme ceci :

3dm0nd

Ce fichier devra n'être accessible que par l'utilisateur système utilisant la commande rsync. Dans le cas de l'utilisateur connecté à la machine B :

edmond@machineB:~$ chmod 640 /home/edmond/.rsync_passwd

On peut alors lancer une synchro de cette façon :

edmond@machineB:~$ rsync -avz edmond@machinea.domain.tld::mon_partage ~/mon/repertoire/cible --password-file=/home/edmond/.rsync_passwd

L'avantage de cette ligne de commande est qu'elle peut être appellée depuis un Cron et donc ne pas nécessiter de saisie du mot de passe manuellement.

Enfin, sachez que les éventuelles erreurs d'authentification seront logguées dans le fichier /var/log/syslog.

- page 1 de 8