[1] fosco@blog:~$

To content | To menu | To search

Tuesday, March 13 2007

ejabberd_ircd

Je suis tombe sur ca ce matin: http://www.dtek.chalmers.se/~henoch/text/ejabberd-ircd.html et autant dire que c'est velu.

Oui toi qui voit des GENS passer d'IRC a MUC parce que c'est fashion hype xml, toi qui aime ton irssi cheri, ceci est pour toi: un module ircd pour ejabberd.
Comment faire mon bon monsieur? c'est bien simple:
# apt-get install ejabberd
# svn co https://svn.process-one.net/ejabberd-modules
# cd ejabberd-modules/ircd/trunk
# ./build.sh
# cp ebin/*.beam /usr/lib/erlang/lib/ejabberd-1.1.2/ebin/
Alors c'est pas la peine de copier le .beam d'une machine a l'autre hein, ca marche pas, c'est erlang, c'est beau, si si j'vous jure.

On Rajoute dans /etc/ejabberd/ejabberd.cfg (hostname == le hostname du serveur jabberd, definit via debconf, ou a la main dans la conf):
- Dans la section 'listen'
  {6667, ejabberd_ircd,    [{access, c2s},
                            {host, "hostname"},
                            {muc_host, "conference.hostname"},
                            {encoding, "utf-8"},
                            {mappings,
                            [{"#ejabberd", "ejabberd@conference.jabber.ru"}]}]},
Attention a la section 'mappings', ou tu pourras definir autant de relations #channame -> chan MUC que tu veux, ici #ejabberd renvoit vers ejabberd@conference.jabber.ru

- Dans la section 'modules'
  {mod_ircd,       [{access}]},
Il faut ensuite se creer un compte, via un client jabber "classique", soit via 'ejabberdctl' s'il daigne fonctionner, puis pour se connecter:
/connect ip port password login
exemple: /connect 127.0.0.1 6667 notmypass fosco
Et hop, ca marche \o/

NB: il est possible de specifier le pass en dur dans la conf, dans la section 'servers' via une ligne 'password'

Et comme ca tu pourras toi aussi utiliser MUC sans tromper ton irssi, elle est pas belle la vie?

Friday, July 28 2006

DADVSI

#include
typedef unsigned int uint;
char ctb[512]="33733b2663236b763e7e362b6e2e667bd393db0643034b96de9ed60b4e0e4\
69b57175f82c787cf125a1a528fca8ac21fd999d10049094190d898d001480840913d7d35246\
d2d65743c7c34256c2c6475dd9dd5044d0d4594dc9cd4054c0c449559195180c989c11058185\
081c888c011d797df0247074f92da9ad20f4a0a429f53135b86c383cb165e1e568bce8ec61bb\
3f3bba6e3a3ebf6befeb6abeeaee6fb37773f2267276f723a7a322f6a2a627fb9f9b1a0e9a9e\
1f0b8f8b0a1e8a8e0f15d1d5584cd8dc5145c1c5485cc8cc415bdfdb5a4edade5f4bcfcb4a5e\
cace4f539793120692961703878302168286071b7f7bfa2e7a7eff2bafab2afeaaae2ff";
typedef unsigned char uchar;uint tb0[11]={5,0,1,2,3,4,0,1,2,3,4};uchar* F=NULL;
uint lf0,lf1,out;void ReadKey(uchar* key){int i;char hst[3]; hst[2]=0;if(F==\
NULL){F=malloc(256);for(i=0;i<256;i++){hst[0]=ctb[2*i];hst[1]=ctb[2*i+1];F[i]=\
strtol(hst,NULL,16);}}out=0;lf0=(key[1]<<9)|key[0]|0x100;lf1=(key[4]<<16)|(key\
[3]<<8)|key[2];lf1=((lf1&0xfffff8)<<1)|(lf1&0x7)|0x8;}uchar Cipher(int sw1,\
int sw2){int i,a,b,x=0,y=0;for(i=0;i<8;i++){a=((lf0>>2)^(lf0>>16))&1;b=((lf1\
>>12)^(lf1>>20)^(lf1>>21)^(lf1>>24))&1;lf0=(lf0<<1)|a;lf1=(lf1<<1)|b;x=(x>>1)\
|(a<<7);y=(y>>1)|(b<<7);}x^=sw1;y^=sw2;return out=(out>>8)+x+y;} void \
CSSdescramble(uchar *sec,uchar *key){uint i;uchar *end=sec+0x800;uchar KEY[5];
for(i=0;i<5;i++)KEY[i]=key[i]^sec[0x54+i];ReadKey(KEY);sec+=0x80;while(sec!=\
end)*sec++=F[*sec]^Cipher(255,0);}void CSStitlekey1(uchar *key,uchar *im)
{uchar k[5];int i; ReadKey(im);for(i=0;i<5;i++)k[i]=Cipher(0,0);for(i=9;i>=0;\
i--)key[tb0[i+1]]=k[tb0[i+1]]^F[key[tb0[i+1]]]^key[tb0[i]];}void CSStitlekey2\
(uchar *key,uchar *im){uchar k[5];int i;ReadKey(im);for(i=0;i<5;i++)k[i]=\
Cipher(0,255);for(i=9;i>=0;i--)key[tb0[i+1]]=k[tb0[i+1]]^F[key[tb0[i+1]]]^key\
[tb0[i]];}void CSSdecrypttitlekey(uchar *tkey,uchar *dkey){int i;uchar im1[6];
uchar im2[6]={0x51,0x67,0x67,0xc5,0xe0,0x00};for(i=0;i<6;i++)im1[i]=dkey[i];
CSStitlekey1(im1,im2);CSStitlekey2(tkey,im1);}

http://decss.zoy.org/
http://www.cs.cmu.edu/~dst/DeCSS/Gallery/

Rien d'autre a dire...

Friday, July 14 2006

C (ou whatever) en cgi setuid avec SuPHP

suphp (http://www.suphp.org/) ne sert pas qu'a executer du code php setuid (avec eventuellement sa propre conf, son chroot, etc...), il peux faire la meme chose avec a peu pres n'importe quoi, genre du C grace a tcc (http://fabrice.bellard.free.fr/tcc/):

Dans /etc/suphp/suphp.conf, par defaut on a:
;Handler for CGI-scripts
x-suphp-cgi=execute:!self

On va juste rajouter dans /etc/apache2/mods-available/suphp.conf (debian):
AddHandler x-suphp-cgi .c
suPHP_AddHandler x-suphp-cgi

Et hop, ca marche:
#!/usr/bin/tcc -run

#include 

int main () {
        printf("X-Powered-By: tcc version 0.9.23
Content-type: text/plain

");
        printf("%d:%d
", getuid(), getgid());
        return 0;
}

Friday, April 21 2006

migration du blog

Je viens de passer ce blog sur une jolie alpha EV56 a 500Mhz avec 773464kB de RAM.

Une comme ca:

Voila, ca change rien, mais c'est cool.

Wednesday, February 22 2006

controlleur raid... mort

nfs.mail-cpu-day.png
nfs.mail-vmstat-day.png
Je crois que cela resume relativement bien ce que ce controlleur raid m'a fait ce midi...
Evidement aucun disque en erreur, juste une jolie couille comme on les aime, histoire de bien tuer la box quand personne n'est la pour la rebooter.
Autant en rire alors....

Sunday, January 29 2006

gopher

J'ai (re?)decouvert gopher ces derniers jours :)
Un petit serveur est disponible gopher://mknod.devnullteam.org/

Ca sert a rien, donc c'est indispensable.

Sunday, January 22 2006

penguinator

Pour ceux qui ne connaissent pas le celebre depenguinator: http://www.daemonology.net/depenguinator/

Je propose ici une approche inverse, permettant de booter un GNU/Linux a partir d'un FreeBSD.
Contrairement au depenguinator, aucune action destructrice n'est effectuee, en effet, le script consiste a installer un GRUB comme boot loader, et de lui faire charger a partir de la partition UFS un kernel et son initrd, qui configurent une interface ethernet et lancent un serveur ssh.
Il conviens apres de creer les bonnes partitions, systemes de fichier, et de detarrer une image d'une distribution de son choix :)

Penguinator: tarball

Usage: penguinator.sh ad0 hd0,0,a eth0 10.2.1.10 255.255.255.0 10.2.1.1 10.2.1.1

le code du script:
#!/bin/sh

# penguinator 0.1.0
# License: GPL v2

echo "-- penguinator 0.1.0"
echo "-- usage/modification/redistribution is free under the terms of the GNU GPL v2"
echo "The script will install the GRUB boot loader on your boot disk, and configure"
echo "it to boot a Linux kernel and it's initrd."
echo "You will be able to ssh the machine after the boot, and install your favourite"
echo "GNU/Linux distro"
echo "This script as absolutlely no destructive action, as GRUB loads Linux and the"
echo "initrd image directly from your UFS partition"

echo ""
echo "The installed kernel is somewhat generic, however you can always replace it"
echo "by copying your Linux image as /boot/grub/linux"

echo ""
echo "If you need to pass other parameters to the kernel, always add them _AFTER_"
echo "the IPCONFIG= declaration, as it is considered to be in first position by the"
echo "network configuration script" 

echo ""
echo '/!\ The root password to use after the reboot is "password" /!\'
echo ""

if [ "$7" = "" ]
then
        echo "Usage:"
        echo "penguinator.sh [bootdev] [grub bootdev] [net if] [ip] [netmask] [gateway] [DNS]"
        echo "ex: penguinator.sh ad0 hd0,0,a eth0 10.2.1.10 255.255.255.0 10.2.1.1 10.2.1.1"
        exit 1
fi

boot=$1
grubdev=$2
iface=$3
ip=$4
mask=$5
gw=$6
dns=$7

echo "- Removing boot disk write protection"
sysctl -w kern.geom.debugflags=16

echo "- Installing GRUB"
set PACKAGESITE=ftp://ftp.fr.debian.org
pkg_add -r grub

echo "- Installing GRUB as boot loader"
grub-install /dev/$boot

echo "- Configuring boot loader"
echo "default 0" > /boot/grub/menu.lst
echo "timeout 5" >> /boot/grub/menu.lst
echo "" >> /boot/grub/menu.lst
echo "#Linux" >> /boot/grub/menu.lst
echo "title linux" >> /boot/grub/menu.lst
echo "root ($grubdev)" >> /boot/grub/menu.lst
echo "kernel /boot/linux IPCONFIG=$iface:$ip:$mask:$gw:$dns" >> /boot/grub/menu.lst
echo "initrd /boot/initrd.img" >> /boot/grub/menu.lst
echo "" >> /boot/grub/menu.lst
echo "#FreeBSD" >> /boot/grub/menu.lst
echo "title FreeBSD" >> /boot/grub/menu.lst
echo "root($grubdev)" >> /boot/grub/menu.lst
echo "kernel /boot/loader" >> /boot/grub/menu.lst

echo "- Copying Linux and initrd image"
cp linux /boot/linux
cp initrd.img /boot/initrd.img

echo "- System is ready to boot GNU/Linux, will reboot in 10 seconds"
echo "  If you want to install another Linux kernel, or for some other reason"
echo "  PRESS CTRL+C NOW TO CANCEL!"
sleep 10
reboot

Sunday, January 8 2006

Installation de Debian GNU/Linux sur un PIX 506

Ce n'est surement pas un scoop, mais les firewall PIX de chez Cisco sont bases sur une architecture i386.
Dans les PIX 506, ce n'est rien d'autre qu'un petit P200MMX avec 32MB de SD-RAM

La carte mere est équipee de deux bios differents, initialises l'un apres l'autre. Apres l'initialisation du bios 'PC'. celui gerant le flash est charge, et boot directement sur les deux puces flash installees sur la carte mere.
Si le bios 'flash' est supprime, la machine se comporte comme un PC standard, et continue son initialisation.
La premiere etape est donc d'enlever cette puce.
pixbios

Cependant, le BIOS n'est pas configure pour booter sur un eventuel disque dur. Comme il est impossible de modifier les parametres de celui-ci, il est necessaire de le reinitialiser aux valeurs d'usine.
Il suffit donc d'enlever la pile du BIOS, d'attendre quelques secondes, puis de la remettre: pixbattery

Et voila, nous somme maintenant en face d'un PC quasi standard, a la difference pres qu'il n'as ni ecran, ni clavier.
Il est possible de brancher une carte VGA sur un port PCI, mais pour l'installation, il conviendra d'utiliser un terminal serie connecte sur le port console. En effet, celui-ci n'est rien d'autre qu'une interface RS232, disponible en tant que COM1 (ttyS0).
Les deux interfaces reseau internes (e100) ne supportent pas le boot PXE, mais il est tout a fait possible d'utiliser une carte suplementaire pour cela.
Il est necessaire de disposer d'une serveur d'installation fonctionnel, autrement dis, une machine avec un serveur dhcp, un serveur tftp, et une archive debian pour l'installation via reseau:
# apt-get install atftpd
# apt-get install dhcp3-server
# nano /etc/dhcp3/dhcpd.conf # le fichier example fournis un certain nombre de configuration utilisables
# /etc/init.d/dhcp3-server start
# mkdir /tftpboot
# cd /tftpboot
# wget http://ftp.debian.org/debian/dists/sarge/main/installer-i386/current/images/netboot/netboot.tar.gz
# tar zxf netboot.tar.gz
Si tout se passe bien, vous pouvez booter via PXE:
pixboot

Ensuite, tout se passe comme une installation standard, cependant il conviendra de verifier a la fin que le prochain boot se fera sans probleme, c'est a dire, que /etc/inittab utilise bien ttyS0 pour la console principale, et que /etc/lilo.conf indique bien ttyS0 comme console, et a bien une directive 'serial' definie.
Exemple de configurations
/etc/lilo.conf:
lba32

map=/boot/map
boot=/dev/hda
root=/dev/hda3

install=text

serial=0,9600

prompt
delay=50
timeout=50

image=/vmlinuz
	label="Linux"
	initrd=/initrd.img
	append="console=ttyS0"
	read-only
/etc/inittab: ajouter la ligne suivante si aucune console n'est definie sur ttyS0
T0:2345:respawn:/sbin/getty -f /etc/issue.linuxlogo -L ttyS0 9600 vt100
Le premier boot devrait se passer sans trop de problemes, sinon, rebooter sur le reseau et debugger :)
pixbiosinit
pixlilo

Apres quoi, il ne reste plus qu'a faire le base-config, et a configurer la bete.
Pour reference, voici la configuration de mon kernel (2.6.15).

Voila, le PIX est sous Debian GNU/Linux ;)
pixlogin

Sunday, December 11 2005

afnic

C'est vraiment des couillons a l'afnic.

Non seulement ils ne connaissent pas l'ORSN (http://www.orsn.net/), mais en plus, si un serveur DNS lequel on installe un domaine en .fr fait de la récursion, ils vérifient que la liste root servers corresponds à celle de l'ICANN.
Trop trop utile pour vérifier que le domaine en questions réponds bien.

Petit how-to sur comment leur faire plaisir (debian)

On va creer une 2e conf pour un 2e bind, qui ne fera pas de récursion, simple non?
# mkdir /etc/bind/ownafnic
# cp /etc/bind/named.conf /etc/bind/ownafnic/named.conf
# sed 's/\/etc\/bind\/named.conf.options/\/etc\/bind\/ownafnic\/named.conf.options/' /etc/bind/ownafnic/named.conf
# chown -R bind:bind /etc/bind/ownafnic

Et on cree le fichier 'named.conf.options' en question:
options {
        directory "/var/cache/bind";
        allow-query { any; };
        allow-recursion { none; };
        auth-nxdomain no;    # conform to RFC1035
        listen-on port 328 { 213.161.193.2; 127.0.0.1; };
        notify no;
};

controls {
        inet 127.0.0.1 port 425
        allow { 127.0.0.1; } keys { "rndc-key"; };
};
Ainsi, on a même la possibilité d'utiliser rndc, avec la même clef que l'autre bind

On prépare le petit forwarding qui va bien:
# iptables -t nat -A PREROUTING -i eth0 -s 192.134.4.0/22 -p udp --dport 53 -j REDIRECT --to-port 328
# iptables -t nat -A PREROUTING -i eth0 -s 192.134.4.0/22 -p tcp --dport 53 -j REDIRECT --to-port 328
# iptables -A INPUT -p tcp --dport 328 -s 192.134.4.0/22 -j ACCEPT
# iptables -A INPUT -p udp --dport 328 -s 192.134.4.0/22 -j ACCEPT

Un petit script d'init qu'il est bien, qu'il suffit de lancer :)
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
    start)
        echo -n "Starting (fake) domain name service: named"
        /usr/sbin/named -c /etc/bind/ownafnic/named.conf -u bind
        echo "."
    ;;

    stop)
        echo -n "Stopping (fake) domain name service: named"
        /usr/sbin/rndc -p 425 stop
        echo "."
    ;;

    reload)
        /usr/sbin/rndc -p 425 reload
    ;;

    restart|force-reload)
        $0 stop
        sleep 2
        $0 start
    ;;

    *)
        echo "Usage: /etc/init.d/bind9-afnic {start|stop|reload|restart|force-reload}" >&2
        exit 1
    ;;
esac

exit 0
Oui, c'est le script debian avec juste ce qu'il faut pour causer au 2e bind.

Et voila, on a un joli bind, qui n'est utilisé que pour les requètes de l'afnic (zonecheck), et qui ne fait pas de récursion.
On constatera que ce bind aussi utilise les root ORSN, d'ailleurs.

En bonus, celui qui comprends le choix de numéros de ports tcp est fort.

Saturday, September 24 2005

Vive l'éducation nationale

Ma soeur est inscrite à l'université de jussieu en License 3 Lettres modernes, et devait passer un test de niveau d'anglais sur internet.

Le site est tests.eila.jussieu.fr:
HTTP/1.1 200 OK
Server: Apache

Le serveur d'authentification est un OpenBSD 3.X (87%) ou NetBSD (85%), et fournit une interface web sous SPIP.

Le minimum que l'on puisse dire, c'est qu'ils apparaissent un minimum sensibles au libre. Cela parait normal, vu les recommendations du gouvernement, non?

Le test, obligatoire car établissant le classement par niveau pendant les cours, se presente sous la forme:
test anglais

C'est beau, c'est meme magnifique, utilisation d'une technologie proprietaire necessaire pour entrer dans une universite nationale.

La ou ca devient carrement Kafkaïen, c'est qu'apparement c'est du flash8, même si ma soeur a le plugin Flash (7) pour GNU/Linux sur sa machine (sapusaipaslibre mais bon...), et bien ce test ne passe tout simplement PAS. Images a remettre dans le bon ordre, sans image... texte ne s'affichant tout simplement pas, etc...

Le pire, c'est que je PAYE des gens a pondre ce genre de merdes, avec le salaire de MON travail, sur du logiciel libre.

Je ne sais pas trop ce qu'il y a faire contre ca, mais ce qui est certain c'est qu'il s'agit tout simplement de discrimination pure et simple a l'acces d'un service public et qu'aucun argument de cout, de competences, de delais à respecter, etc... ne peux etre valable dans ce cas.

Tuesday, September 20 2005

OpenBGPd 3.7 sous NetBSD

Vu qu'aparement ca n'avais pas ete fait, ou du moins, ca n'etais pas dans pkgsrc, et que je n'ai pas trouve de how-to sur le sujet, je me suis attaque au portage de OpenBGPd 3.7 pour NetBSD.

Pour ce faire, il vous faut un NetBSD 2.0.x ou -CURRENT, avec ses sources.
Commencez par installer pf, dont opengpd a besoin (il a surtout besoin de pfvar.h en fait), avec le how-to suivant: http://nedbsd.nl/~ppostma/pf/
Vous avez gagne un beau /usr/pkg/lkm/pf.o en bonus.

Il existe un how-to pour OpenBGPd 3.6 sous FreeBSD a cette adresse: http://lukasz.bromirski.net/projekty/openbgpd/index-en.html
Il doit surement etre complet pour FreeBSD, ca ne coute rien de le lire, mais il ne suffit pas pour NetBSD.

Les patchs sont tous triviaux, mais pour gagner du temps, une archive deja modifiee et disponibles ici: https://tao.mu/~fosco/src/openbgpd-3.7-netbsd-2.0.2.tgz

Afin de compiler il; faut aussi modifier deux fichiers:
- /usr/pkg/include/net/pfvar.h: rajouter les lignes suivantes
#include <arpa/inet.h>
#include <netinet/in.h>

- /usr/share/mk/bsd.sys.mk:
remplacer la ligne 38
CFLAGS+=        ${CWARNFLAGS} ${NOGCCERROR:D:U-Werror}
par
CFLAGS+=        ${CWARNFLAGS} ${NOGCCERROR:D:U}
Histoire de ne pas etre lachement jete a chaque warning.

si tout se passe bien, ca doit compiler:
# cd /path/to/bgpd
# make && make install
# cd /path/to/bgpctl
# make && make install

OpenBGPDd tourne en tant que l'utilisateur _bgpd du groupe _bgpd qu'il conviens donc de creer:
# groupadd _bgpd
# useradd -m -g _bgpd _bgpd

Pour tester une configuration simple: http://blog.mouh.org/index.php?2005/09/13/92-openbgpd
Ne pas oublier de donner un mode 600 ou 400 a /etc/bgpd.conf

Sunday, August 28 2005

kernel Ubuntu

Moi qui pour une fois esseyais d'utiliser le kernel d'une distrib sans recompiler le mien...

MAIS ILS SONT TROP CONS!
Faut vraiment avoir bu qqch de fort pour mettre CONFIG_IDEDMA_ONLYDISK=y dans la conf d'un kernel!
Surtout qu'en plus les lecteurs incompatibles udma sont blacklistés...

Evidement la lecture dvd sacade moins la d'un coup....

bilan de pertes de l'été

Cette année j'avais tenté une nouvelle approche, afin de limiter les traditionnelles pertes d'été: j'avais coupé des box.

Résultat peu concluant, les pertes sont comparables:
- une cm
- deux cartes réseaux
- une barette de SD-RAM
La cm ca fait chier, c'est une cm d'athlon xp ...

Reste plus qu'a remplacer tout ca maintenant :)

Monday, August 15 2005

J'adore windows

# echo "block in quick on fxp0 proto tcp from any to any port = 139" >> /etc/ipf.rules
# echo "block out quick on fxp0 proto tcp from any to any port = 139" >> /etc/ipf.rules
# echo "block in quick on fxp0 proto tcp from any to any port = 445" >> /etc/ipf.rules
# echo "block out quick on fxp0 proto tcp from any to any port = 445" >> /etc/ipf.rules
# pfctl -d ; pfctl -e -f /etc/ipf.rules
Et je suis sur que y a des clients qui vont oser raler...

Wednesday, July 27 2005

What the hack

Bon bah je suis au 'What the hack' depuis le 23 au matin (comprendre, 2h du mat).

Donc au niveau gains d'xp c'est un peu bizarre, enfin disons qu'on attends peu d'un évenement informatique de donner des points en "montage de tentes de cirque" et autres.

On notera que la tente OpenBSD est dans la même veine que l'os: Avant même d'être montée, elle est déja par terre.

L'event ne commence officiellement que demain, mais on a déja (enfin?) un accès réseau, et donc uniquement pour le geste, un serveur web est lancé sur un joli atari st: http://87.76.19.150/
Evidement, la page est sur une floppy, donc patience... :)

Dans un registre comique, on pourra citer le passage dans une station service sur une autoroute belge: Un voiture française, de jeunes, qui s'arrète sur une aire d'autoroute en pleine nuit, direct, une voiture belge: "Hey cousin! cousin! tu cherche quelque chose?" "Gni??" "Coke, Exta, Ero, Er1" C'est toujours comique ...

Monday, July 4 2005

lanproject

j'étais à la lanproject ce week end (http://www.lanproject.net/), une bonne grosse lan de 48h non-stop, plus installation et désinstallation.

Ca devait faire eller genre 4 ans uqe j'avais pas mis les pieds dans une lan, et pas des grosse comme celles ci (350 personnes).

Mais ca rox! travailler dans l'urgence, trouver des solutions rapides pour résoudres des problèmes, ca faisait bien longtemps que je ne m'étais pas autant amusé.

Ajouté à cela la bouffe à volonté, le tournois de worms gagné (même s'il étais ridicule :)) c'est quand même cool ), je suis encore sur mon nuage.

Ouais j'parle de ma vie, mais:
- un blog c'est fait pour ca
- j'fais ce que je veux d'abord, na!

Et puis ca fait tellement du bien de couper avec le quotidien, qui est si quotidien, si routinier :)

Monday, June 6 2005

sarge

SARGE!

Sunday, May 29 2005

ON A GAGNE!

Voila, on a gagné. Enfin. Esperons maintenant un vrai seisme politique dans notre pays de mou, ca fairais du bien.

Thursday, May 26 2005

php4+php5 avec suphp

suphp (http://www.suphp.org/) est un module apache permettant d'exécuter du code php avec les privilèges de son utilisateur propriétaire. Il a l'avantage sur d'autres méthodes d'être à la fois compatible FastCGI et utilisable avec eaccelerator (http://eaccelerator.net/), permettant des performances supérieures à une utilisation cgi classique. Le petit patch suivant permet simplement de choisir entre l'exécution du code avec php4 ou php5, en fonction du contenu de l'array envp. Seuls les fichiers '.php5' sont exécutés via php5, le reste étant éxécuté par php4. suphp.c, ligne 41
 char dest[6];
 int nK=0;
 int isphp5=0;
suphp.c, ligne 82
while(envp[nK]) {
  strncpy(dest, envp[nK]+strlen(envp[nK])-5, 6);
  if ( ! strncmp( dest, ".php5" , 5 ) ) {
    isphp5=1;
    break;
  }
  nK++;
}

if (isphp5) {
  execve(OPT_PATH_TO_PHP5, argv, envp);
}
else {
  execve(OPT_PATH_TO_PHP, argv, envp);
}
config.h, ligne 81
#define OPT_PATH_TO_PHP5 "/usr/lib/cgi-bin/php5"
suphp.h, ligne 49
#ifndef OPT_PATH_TO_PHP5
#define OPT_PATH_TO_PHP5 "/usr/lib/cgi-bin/php5"
#endif
On recompile/installe, et ca marche

Tuesday, May 17 2005

Lego

Y a des journées comme ca, quand tu reviens du taf, t'as envie de te changer les idées.

Comme il parait c'est d'époque, j'me suis payé ceci: http://shop.lego.com/product.asp?p=4502
Non seulement ca m'a occupé la soirée, mais en plus c'est toujours aussi amusant à monter, et pour couronner le tout, il pète ce x-wing.

A refaire.

- page 1 of 2