Linux
::fail2ban et pure-ftpd
[Trackback]
Date : 2008-10-02@20:04:07
Rang : 0
Pour ajouter pure-ftpd à la liste des filtres de fail2ban il faut ajouter le contenu suivant au fichier /etc/fail2ban/jail.conf en utilsant votre éditeur de texte préféré.
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3
Traduction : On active le filtre pure-ftpd qui va bannir sur les ports ftp,ftp-data,ftps,ftps-data les IP ayant éffectuer plus de trois tentatives infructueuses de login grace au log /var/log/messages.
On vérifie que le ficher /etc/fail2ban/filter.d/pure-ftpd.conf existe, si ce n'est pas le cas le crée et ajouter le contenu suivant (un grand merci à Cyril Jaquier et Yaroslav Halchenko pour leurs contributions).
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Modified: Yaroslav Halchenko for pure-ftpd
#
# $Revision: 3$
#
[Definition]
# Error message specified in multiple languages
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
#
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\\\\\\\\S+)
# Values: TEXT
#
failregex = pure-ftpd(?:\\\\\\\\[\\\\\\\\d+\\\\\\\\])?: (.+?@<HOST>) \\\\\\\\[WARNING\\\\\\\\] %(__errmsg)s \\\\\\\\[.+\\\\\\\\]$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Et enfin on redemarre fail2ban
/etc/init.d/fail2ban restart
Il ne reste plus qu'à tester que cela fonctionne bien depuis une autre machine avec un login inéxistant.
petitchevalroux@home:~# tail -f /var/log/fail2ban.log
2008-10-02 19:45:59,816 fail2ban.jail : INFO Jail 'pure-ftpd' started
2008-10-02 19:46:00,836 fail2ban.actions: WARNING [pure-ftpd] Ban 192.168.X.Y
2008-10-02 19:56:00,852 fail2ban.actions: WARNING [pure-ftpd] Unban 192.168.X.Y
On voit bien dans ce log que la machine 192.168.X.Y est bannie puis libérée.
Linux
::Modifier l'UID d'un utilisateur
[Trackback]
Date : 2008-10-01@19:43:36
Rang : 0
La commande :
usermod -u NEWUID username
permet de modifier l'identifiant utilisateur du user "username" comme le montre la suite de commandes suivante :
home:~#id petitchevalroux
uid=1001(petitchevalroux) (...)
home:~#usermod -u 1001 petitchevalroux
home:~#id petitchevalroux
uid=1001(petitchevalroux) (...)
PHP
::Inverser les éléments d'un tableau avec ses clés
[Trackback]
Date : 2008-09-30@13:52:51
Rang : 0
La fonction PHP array_flip permet d'inverser les valeurs d'un tableau avec ses clés.
Par exemple un tableau
[0]=>"toto"
[1]=>"tata"
[2]=>"tila"
[3]=>"tequila"
sera transformer en :
["toto"]=>0
["tata"]=>1
["tila"]=>2
["tequila"]=>3
PHP
::Benchmark lecture et ecriture dans un fichier
[Trackback]
Date : 2008-09-18@17:42:57
Rang : 0
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$handle = fopen($filename, 'r+');
$str = fread($handle, filesize($filename));
rewind($handle);
ftruncate($handle,0);
fwrite($handle, $string);
fclose($handle);
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$content = file_get_contents($filename);
file_put_contents($filename,$content);
}
var_dump(time() + microtime() - $time);
Résultats :
float 10.173743963242
float 10.913619995117
Conclusion :
C'est bien plus rapide d'ouvrir un fichier en lecture écriture et que de faire une lecture puis une ecriture
Application directe :
Dans le cache de nos objets, nous projetons de sauvegarder nos disques en evitant de mettre en cache disque les objets n'ayant pas changer. Pour cela il faut bien comparer l'objet frai et l'objet caché et donc lire puis écrire le cache si celui ci a effectivement changer.
Javascript
::charger dynamiquement un javascript
[Trackback]
Date : 2008-08-29@11:59:27
Rang : 0
Ce code permet de charger un javascript en javascript de manière dynamique dans la page.
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'votre javascript à charger';
document.getElementsByTagName('head')[0].appendChild(script);
Cela permet par exemple de charger un javascript que lorsque vous en avez besoin.
Javascript
::Recharger proprement une page
[Trackback]
Date : 2008-08-29@11:54:37
Rang : 0
Ce code javascript permet de recharger proprement une page une fois que celle ci est chargée.
window.onload = function(){window.location.reload();};
Cela évite de faire planter le navigateur lorsqu'un window.location.reload() est fait sur une page contenant un document.write().
Je n'ai pas réussi à isoler ce bug mais dans certains cas Firefox afficher tout simplement une page blanche en chargement lorsque j'utilise le window.location.reload() dans une page en cours de chargement (dans le head pour être plus précis).
Javascript
::Rédiriger un navigateur depuis une iframe
[Trackback]
Date : 2008-08-29@11:46:40
Rang : 0
Ce code javascript permet de rediriger en pleine page un navigateur depuis une iframe.
Tester sous IE6,IE7 et Firefox 3
top.location.href = url;
Réseau
::Vider le cache DNS sous Windows
[Trackback]
Date : 2008-08-27@12:13:53
Rang : 0
Pour vider le cache DNS de windows XP il faut faire :
Démarrer > Executer puis tapper cmd pour lancer la ligne de commande.
Ensuite il faut lancer la commande
ipconfig /flushdns
Linux
::Recharger Alsa
[Trackback]
Date : 2008-08-20@10:45:37
Rang : 0
Pour recharger alsa de manière brutale quand vous n'avez plus de son il faut lancer la commande :
sudo alsa force-reload
Pour moi la commande :
sudo /etc/init.d/alsa-utils
Ne m'a jamais sortie du pétrin donc je content d'avoir trouver l'autre
PHP
::Benchmark touch vs file_put_contents
[Trackback]
Date : 2008-05-28@14:54:59
Rang : 0
Dans la série question existentielle :
touch vs file_put_contents
le code de test :
<?php
$time = time() + microtime();
for ($i = 0 ; $i < 10000; $i++)
{
file_put_contents('test.txt','www.deezer.com Tu peux te
créer ta propre
playlist en tinscrivant. Tu ne veux pas tinscrire? Pas gra
ve, tu peux quand meme écouter de la musique.
Simple dutilisation,
lit toutes les musiques de
la dernière recherche
les unes après les autres.');
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0 ; $i < 10000; $i++)
{
touch('test.txt');
}
var_dump(time() + microtime() - $time);
?>
Les résultats :
file_put_contents 0.41347002983093
touch 0.071331977844238
Soit 6 fois plus rapide, l'application directe de ce test est que l'on évite l'écriture en cache d'un objet si celui ci n'a pas changer et on le revalide par un touch.
Pour vérifier que le cache n'a pas changer il faut bien sur lire le cache même quand il n'est plus valide.
Ce qui donne le code de bench suivant :
<?php
$time = time() + microtime();
for ($i = 0 ; $i < 10000; $i++)
{
file_put_contents('test.txt','www.deezer.com Tu peux te
créer ta propre
playlist en tinscrivant. Tu ne veux pas tinscrire? Pas gra
ve, tu peux quand meme écouter de la musique.
Simple dutilisation,
lit toutes les musiques de
la dernière recherche
les unes après les autres.');
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0 ; $i < 10000; $i++)
{
file_get_contents('test.txt');
touch('test.txt');
}
var_dump(time() + microtime() - $time);
?>
Les résultats :
file_put_contents 0.51197385787964
touch + file_get_contents 0.3950469493866
Le gain est minime cette fois mais c'est toujours ça de pris :D
