Articles

Dans la jungle des blogs !

Image
Waouhh, il est très difficile de comprendre la logique de google, j'en étais à ma Xième tentative d'enregistrement de mon blog sur google quand j'ai commencé à sérieusement me demander si le moteur d'indexation de «Gogol» n'était pas un peu inspiré de la logique floue voire du mouvement brownien... En effet il semble parfois impossible de faire fonctionner ce maudit moteur pour qu'il indexe mon blog. Damned ! Je commence sérieusement à douter de l'engin, il faut que je me veille avant de basculer dans le côté obscur de la Force... Du coup j'ai voulu vérifier au niveau des autres blogs comment cela se passe, et dans mes pérégrinations je suis tombé sur blogwise que je trouve assez cool. L'idée d'indexer et de classer des blogs uniquement me semble être une tâche titanesque, il y a quasiment 40'000 blogs sur ce site, mais comment assuré un minimum de pertinence. Et dans le genre débile on a les plus de 6'176'200 blogs annoncés comme in...

Perl : Comment afficher des "gros" chiffres avec un séparateur de milliers ?

Hummm quand il s'agit de lire des très grand chifres à l'écran, il n'est pas très pratique de devoir compter à la main sur l'écran les groupes de milliers... Et donc un séprateur de millier prend tout son sens : 1'456'987 est plus lisible que 1456987 ! c'est ainsi que Perl devient votre petit à petit votre alié quotidien. Car à l'aide des expressions régulières et de l'opérateur de substitution il est très facile d'obtenir l'effet escompté en 3 lignes ! En éxécutant le code ci-dessous on obtient . My personal fortune is 1'234'567 US$ #!/usr/bin/perl -w use strict; my $test = "My personal fortune is 1234567 US\$"; print PrintStringWithThousandSeparator($test); sub PrintStringWithThousandSeparator { my $Newtext = $_[0]; $Newtext =~ s/(? return $Newtext; }

ReverseProxy avec Apache

Quand on veut permettre à un utilisateur lambda d'accèder sur un reseau public d'accèder à des informations sur un site web 192.168.50.120 situé dans un réseau privé, deux possibiliés s'offre à nous: On peut prendre un serveur Linux et avec deux cartes réseau : une côté publique - eth0[10.163.200.9], une côté privé - eth1[192.168.50 77]) l'utiliser comme un Firewall avec les iptables et une règle DNAT pour ouvrir un port sur l'interface publique du firewall qui redirigera les demandes sur le serveur web du réseau privé exemple: echo 1> /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.163.200.9 --dport 80 -j DNAT --to-destination 192.168.50.120 Ou on peut configurer un reverse proxy avec Apache ou Squid sur le Firewall Dans le deuxieme cas on a plus de souplesse car on peut intervenir sur chaque url par exemple avec mod_rewite mais tout d'abord la config nécess...

Du code portable Win32-Linux

Pour obtenir très rapidement du code utilisant du graphisme et fonctionnant aussi bien sous Linux que sous Microsoft, je dois dire que le couple OpenGL /GLUT reste des valeurs sures à mes yeux. Ainsi le code ci-après fonctionne et se compile pil-poil sous win32 et sous Linux: /* My First GLUT chtit bout de code pour compiler sous linux : gcc -o cgglut01 cgglut01.cpp -lglut -lX11 -lGL -lGLU */ #include void display(void) { glClear (GL_COLOR_BUFFER_BIT); // draw blue rectangle with corners at // (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) glColor3f (0.0, 0.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); // start processing buffered OpenGL routines glFlush (); } void init (void) { glClearColor (0.0, 0.0, 0.0, 0.0);// select clearing color background /* initialize viewing values */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrt...

Apache - Action : la magie de l'interception

Image
En utilisant Apache et avec des clients IE on tombe parfois sur des abérations à la MiKro$oft! Par exemple ce fichier pdf qui plantait IE alors qu'il s'ouvre parfaitement bien dans Firefox le même genre de mésaventure pouvant se produire avec des fichiers tiff, et qui n'a pas connu la joie du rennomage d'un fichier CGI sur un serveur web de Programme.pl ou Programme.cgi en Programme.txt afin que IE veuille bien ne pas tenter le download mais se contenter d'afficher le texte retourné.... Bien souvent tout cela est souvent du à la méthode pour le moins peu ortodoxe de Microsoft de traiter les headers Content-type ( voici une excelente page explique la saga IE sur ce point... ) Quand je dit traiter comprenez ignorer , ainsi sur MSDN Microsoft nous explique que : ..If the server-provided MIME type is either known or ambiguous, the buffer is scanned in an attempt to verify or obtain a MIME type from the actual content. If a positive match is found (one of the hard-co...

Gentoo sur un AMD64 Opteron

Image
Au moment de l'installation souvent la détection de matériel n'est pas effectuée aussi est-il nécessaire de faire un petit : modprobe e100 --> pour une carte réseau intel modprobe ide_disk --> pour un disque ide sata_sil et libata pour un disque SATA etc...

Installer Gentoo avec un clavier Suisse romand

Image
Quand on se lance dans une installation d'une Gentoo (en stage1 bien entendu...) il faut utiliser un petit loadkeys fr_CH pour pouvoir utiliser pleinement les claviers de nos contrées

Un reverse proxy pour que ton web soit plus sur !

Avec un reverse proxy ton serveur web peut répondre plus vite en cachant les réponses, en plus il peut rediriger sur un ou plusieurs serveurs différents des requêtes web. Typiquement on peut utiliser Apache avec le mod_proxy Mais il faut aussi des projets tels que pound Ou encore mod_security Il y à même squid qui a été utilisé comme reverse proxy

Apache Virtual host

On désire parfois créer sur le même serveur web plusieurs sites différents. En utilisant dns on modifie notre config comme suit : cat /etc/bind/db.labo.org $TTL 1H @ IN SOA ns1.labo.org. root.labo.org. ( 2004071801 ; Serial 1H ; Refresh 1H ; Retry 1H ; Expire 1D ) ; Negative Cache TTL ; @ IN NS ns1.labo.org. @ IN NS ns2.labo.org. @ IN MX 10 ns1.labo.org. ns1 IN A 10.0.0.4 box3 IN A 10.0.0.3 fw1 IN A 10.0.0.1 ns2 IN A 10.0.0.2 box4 IN A 10.0.0.19 fw2 IN CNAME ns2 red IN CNAME box3 blue IN CNAME box4 ceci va nous permettre d'avoir des alias qui pointent sur notre serveur, maintenant il faut pouvoir les détecter dan...

messagerie traitement avec procmail

Avec procmail on peut faire des traitements automatiques, ainis en ajoutant dans le home directory un fichier .forward qui va juste "pointer" sur procmail cat /home/cgil/.forward "|IFS=' '&&exec /usr/bin/procmail -f-||exit 75 cgil" et en créant ensuite un fichier .procmailrc qui peut lui, comme ici archiver des mail et faire une réponse automatique cat /home/cgil/.procmailrc :0c: $HOME/mail.backup :0 * !^X-Loop: cgil@labo.org | (formail -rk -A "X-Loop: cgil@labo.org" -A "Precedence: auto"; echo "Hello Thank you for your mail"; echo "I will answer as soon as possible"; ) | $SENDMAIL -t -oi

La Messagerie, POP3 sous Linux

Tout comme pour SMTP il y a une quantité impressionante de variantes de serveurs POP3 et IMAP a disposition pour Linux. Il faut prendre garde au fait que POP3 transmet le user et le mot de passe en clair (dsnif et ngrep sont de redoutables ennemis à ce niveau...) Citons les serveurs et outils tel que cyrus, teapot, fetchmail etc.. Le sujet de la messagerie sous Linux est manifestement un vaste sujet.

La messagerie SMTP sous Linux

Il existe plusieurs variantes de programmes de messagerie, du plus ancien et plus compliqué comme sendmail au plus "simple" comme exim en passant par postfix et qmail. Avec mutt on a un cllient en mode console pour les messages. En fait il faut installer et configurer un de ces programmes dans mon cas j'utilise postfix sous debian. Il faut que dns soit configuré et opérationnel ! Il faut typiquement ajouter l'entrée MX : cat /etc/bind/db.labo.org $TTL 1H @ IN SOA ns1.labo.org. root.labo.org. ( 2004071504 ; Serial 1H ; Refresh 1H ; Retry 1H ; Expire 1D ) ; Negative Cache TTL ; @ IN NS ns1.labo.org. @ IN NS ns2.labo.org. @ IN MX 10 ns1.labo.org. ns1 IN A 10.0.0.4 box3 IN A 10.0.0.3 fw...

DHCP une adresse IP automatique

Pour que les machines de notre petit réseau obtiennent une adr ip automatiquement on va utiliser du dhcp donc on installe dhcpd3 serveur et on configure dans le fichier /etc/dhcp3/dhcpd.conf # # Sample configuration file for ISC dhcpd for Debian # # $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $ # # option definitions common to all supported networks... option domain-name "labo.org"; option domain-name-servers ns1.labo.org, ns2.labo.org; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. # This is a very basic subnet declaration. subnet...

DNS - exemples de fichiers de config réseau local

l'idée c'est qu'on veut configurer un chtit caching name server sur un réseau local. Donc on commence par installer bind9,puis en avant la configuration Dans le fichier named.conf include "/etc/bind/named.conf.options"; // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; zone "com" { type delegation-only; }; zone "net" { type...

Des animations flash sous Linux

Yeahhh ! Flash 7 est disponible sous Linux Pour l'installer il faut essentiellement copier les 2 fichiers contenus dans l'archive de Macromedia dans le répertoires des plugins de votre navigateur: tar xfvz install_flash_player_7_linux.tar.gz cd install_flash_player_7_linux/ cp flashplayer.xpt /usr/lib/mozilla-firefox/plugins/ cp libflashplayer.so /usr/lib/mozilla-firefox/plugins/ Pour connaitre le répertoire des plugins j'ai fait au préalable : dpkg -L mozilla-firefox |grep plugins Finalement pour tester si tout est okay il faut absolument passer sur le site de yeti pour tester online vos aptitudes au lancement de tux

IPTABLES - modifs d'un script firewall de base pour distcc

si on veut utiliser la puissance de calcul d'un firewall pour compiler avec distcc on peut modifier comme suit notre petit script : #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward DMZ=10.0.0.0/24 IPT='/sbin/iptables' $IPT -F $IPT -F -t nat $IPT -P INPUT DROP $IPT -P FORWARD DROP # accept localhost internal trafic $IPT -A INPUT -i lo -s localhost -j ACCEPT #$IPT -P INPUT ACCEPT #$IPT -P FORWARD ACCEPT # accept ssh from dmz $IPT -A INPUT -s $DMZ -i eth1 -p tcp --dport 22 -j ACCEPT $IPT -A FORWARD -s $DMZ -i eth1 -p udp --dport 53 -j ACCEPT $IPT -A FORWARD -d $DMZ -i eth0 -p udp --sport 53 -j ACCEPT $IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 80 -j ACCEPT $IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 80 -j ACCEPT $IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 9999 -j ACCEPT $IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 9999 -j ACCEPT #allow all trafic for our network to go the internet $IPT -t nat -A POSTROUTING -s $DMZ -j MAS...

Compilation en parallèle avec distcc

Grâce à distcc on peut méchamment augmenter la vitesse de compilation en utilisant des serveurs faisant le travail de compilation pour nous. On a des infos de configs sur debian sur le site de myrddin . il faut bien sur installer distcc apt-get install distcc apt-get install distccmon-gnome Il faut veiller à installer la même version du gcc sur toutes les bécannes. On peut sur le client utiliser des subterfuges pour forcer l'usage de distcc avec un path bidouillé mkdir -p /usr/local/distcc/bin cd /usr/local/distcc/bin ln -s /usr/bin/distcc c++ ln -s /usr/bin/distcc cc ln -s /usr/bin/distcc g++ ln -s /usr/bin/distcc gcc et quelques variables d'environnment modifiée dans un .bashrc CONCURRENCY_LEVEL=40 DISTCC_HOSTS="localhost tokra sokar alkesh osiris" PATH="/usr/local/distcc/bin:${PATH}" export CONCURRENCY_LEVEL DISTCC_HOSTS PATH

IPTABLES - un exemple de script firewall de base

ce bout de script iptables, permet de faire un SNAT, et laisse sortir du trafic http (port 80) et dns (53) en sortie vers internet et en entrée Les deux dernières règles permettent de voir ce qui ne va pas en allant voir le syslog avec tail -f /var/log/syslog #!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward DMZ=10.0.0.0/24 IPT='/sbin/iptables' $IPT -F $IPT -F -t nat $IPT -P INPUT DROP $IPT -P FORWARD DROP # accept localhost internal trafic $IPT -A INPUT -i lo -s localhost -j ACCEPT #$IPT -P INPUT ACCEPT #$IPT -P FORWARD ACCEPT # accept ssh from dmz $IPT -A INPUT -s $DMZ -i eth1 -p tcp --dport 22 -j ACCEPT $IPT -A FORWARD -s $DMZ -i eth1 -p udp --dport 53 -j ACCEPT $IPT -A FORWARD -d $DMZ -i eth0 -p udp --sport 53 -j ACCEPT $IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 80 -j ACCEPT $IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 80 -j ACCEPT #allow all trafic for our network to go the internet $IPT -t nat -A POSTROUTING -s $DMZ ...

IPTABLES - On veut laisser sortir les adresses internes sur internet

Deux cas de figures, soit on connait notre adr ip publique de façon sure et définitive, par exemple si on a un réseau de type classe C interne 10.0.0.0/24 et qu'on veut sur la machine qui a deux pates balancer (INTERNAL NETWORK) ----->[FIREWALL LINUX BOX]------->(THE INTERNET) ___10.0.0.2/24________[10.0.0.1______192.168.7.101]____All Internet IP iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.7.101 sinon on peut aussi utiliser du masquerading iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

Créer un lien VPN avec PPP sur SSH

En utilisant du ppp à travers du ssh on arrive a relier deux réseaux ! En fait il faut au préalable autoriser le login automatique avec ssh donc si on a une box1 avec un acces root via ssh sur un box2 ailleurs qui est lui même sur un réseau 10.qqqchose on aura Box1_______________________==SSH==>__________________Box2(192.168.7.101) PPP SERVER____________________________________________PPP CLIENT 10.0.0.1 ____________________________________________ 10.0.0.2 root du box1 doit pouvoir ssh sur box2 sans rentrer mot de passe il faut modifier /etc/ppp/pap-secrets sur serveur #user host password IP toto * "pw123" * et sur client #user host password toto * pw123 ensuite on peut ajouter toto dans le fichier /etc/ppp/options ... name toto ... depuis box1 en tant que root on fait un ssh-keygen -t dsa pour générer la clé privées et publique de root sur box1. On copie cette clé sur la machine destination box2 scp /root/.ssh/id_dsa.pub 192.168.7....