Quelques commandes linux dans windows

Whois dans windows
Whois dans windows
Whois dans windows

Au boulot j’utilisais ubuntu comme OS. Celui-ci me convenait parfaitement jusqu’à l’arrivée de « unity ». Au début il était possible de passer outre et utiliser un bon vieux gnome2 des familles, solution qui me convenait parfaitement.

Puis est arrivé le moment ou « unity » s’est imposé de façon ferme et ou toutes mes tentatives pour installer gnome2 ou 3 se sont soldés soit par des échecs, soit des systèmes instables. J’ai donc profité de cette occasion pour me pencher un peu plus sur la fedora (15 puis 16). Mais le métier de développeur étant ce qu’il est, j’ai finalement opté pour windows sur ma machine de travail.

 

Seulement voilà, elles sont passées ou toutes mes jolies commandes qui vont bien ? whois, dig, host ?

La solution est en fait très simple, je suis allé chercher les commandes manquantes dans la version compilée pour windows de bind9 et sur le site de cette personne qui a compilé whois avec cygwin.

J’ai placé le tout dans un répertoire sur ma machine et ajouté une entrée dans le Path vers ce répertoire.

 

Je peux désormais utiliser ces commandes directement depuis le cmd, un peu de confort retrouvé. 😉

J’ai regroupé les binaires et les DLLs nécessaires dans ce fichier que vous pouvez téléchargez directement.

Petit tour dans les stats

J’ai vraiment aucune idée d’article. Vraiment aucune quoi. Et comme cela fait longtemps que je n’ai rien écrit, je vais vous montrer un petit bout des stats de ce site.

Show me your browser

Répartition des navigateurs
Répartition des navigateurs

Chrome est utilisé par 50.65% de mes visiteurs. Firefox par 38.96%. IE ne représene que 1.95%.

 

 

Un OS dans le nez ?

Quand j’ai ouvert ce blog, les OS linux représentés la quasi-totalité des visites. Aujourd’hui ce n’est plus vraiment le cas.

Répartition des OS
Répartition des OS

Windows 59.74%. Linux 29.87%. Macintosh 9.74%. Ipad 0.65%

 

 

Quelques mots-clés

Troll par Squimelia
Troll par Squimelia

Finalement, ce qui me fait le plus marrer dans ce genre d’exercice, ce sont les recherches qui ont conduit les gens vers mon blog. Cete liste regorge souvent de pépites. Florilège:

apple développe son propre os << magnifique, quelqu’un devra lui expliquer un jour
symbole pirate  << merci je suis vraiment touché
utilisateurs internet explorer sont des abrutis << je l’adore celui-là
theme rockmelt olympique marseille << je vais rester poli et ne rien dire hein ….

Le plus lu

L’article le plus lu sur mon blog concerne le navigateur rockmelt. J’espère donc en avoir convaincu quelques-uns de ne pas l’utiliser.

Unix man page

Plaque Unix de Bell labs
Plaque Unix de Bell labs
Plaque Unix de Bell labs

Je viens juste de faire très rapidement un petit outil de recherche de page de manuel unix. Il s’agit d’une extension chrome / chromium. Je n’ai pas la prétention d’en faire l’outil du siècle mais comme cela fonctionne pas trop mal hein ….

L’idée de base était de voir comment fonctionner le développement d’extensions chrome / chromium ainsi que le chrome webstore. Le code est basé sur celui d’une extension développé par un pote et jamais publié, son plugin devait être publié sous licence BSD, j’ai décidé d’en faire de même. Source de unixmanpage.

Le source est probablement un peu crado, mais comme d’hab’ sur ce site c’est du « quick & dirty » hein.

Du coup l’extension a sa propre page sur le chrome webstore et cette connerie m’a tout de même coûté 5$US. Au moins maintenant je peux publier autant d’extensions que j’en ai envie. Le process de publication est simple mais impose quelques régles assez strictes comme la taille des images liées par exemple ou le fait de ne pouvoir cocher que deux catégories maximum.

Vous gênez pas pour dire tout le bien que vous pensez de cette extension les gens.

Récuperer des photos effacées

Saint-Jacut de la Mer, Côtes d'Armor, le 12 septembre 2010.
Saint-Jacut de la Mer, Côtes d'Armor, le 12 septembre 2010.
Saint-Jacut de la Mer, Côtes d'Armor, le 12 septembre 2010.

Ce week-end a été un peu pourri pour moi, suite à une mauvaise manipulation, j’ai perdu l’ensemble des photos prises depuis un an, et en particulier celles des deux dernières semaines. Celles de la naissance de « numéro deux ». Imaginez que je m’en voulais terriblement.
Toujours est-il que non résigné j’ai fini par trouver une solution, j’ai donc booté sur une sur linux mint installé sur un clé usb, monté le disque dur en cause en lecture seule, puis lancé un coup de photorec dessus. L’usage est simple, il suffit de suivre scrupuleusement les questions posées.

Ce soft a formidablement fait son boulot et m’a retrouvé l’ensemble des clichés perdus. Cependant les fichiers sont tous arrivés dans un répertoire « output », classés dans l’ordre dans lequel ils étaient sur le disque. Donc pas un ordre logique pour moi. De plus, la quantité de fichiers (18 000 en tout) rendait extrêmement long le chargement dans nautilus.

J’ai donc fait un script permettant de dispatcher les fichiers « jpg » dans des répertoires différents en fonction de leur taille. Cela correspondant plus ou moins à l’évolution de mes divers APNs au fil du temps. En 2002 un 2MPX, en 2004 un 4MPX …. jusqu’à aujourd’hui avec le 12MPX.

Le script doit bien entendu être adapté à votre situation en modifiant les variables suivantes :

#———————————————————–
## CONFIG
#———————————————————–
#le nom du répertoire contenant les fichiers à trier
my $rep= »/home/ »VOTRE_HOME »/a_trier »;

## chemin vers le répertoire des images
## trop petites pour être honnêtes
$main::newrept= »/home/ »VOTRE_HOME »/THUMBSTEST »;

## chemin pour les fichiers de moins de 500KO
$main::newrepmoins500= »/home/ »VOTRE_HOME »/MOINS500″;

## chemin pour ceux entre 501KO et 1000KO
$main::newrep5001000= »/home/ »VOTRE_HOME »/500-1000″;

## chemin pour ceux entre 1001KO et au-delà
$main::newrep1000= »/home/ »VOTRE_HOME »/PLUS1000″;

#———————————————————–
## FIN CONFIG
#———————————————————–

Évidemment cela ne permet pas mieux d’obtenir un classement propre des clichés. J’ai donc tenté d’utiliser jhead (une première pour moi), et simplement en tapant :

jhead -nf%Y-%m-%d–%H.%M.%S *.jpg

dans chacun des répertoires ou le script précédent a copié les fichiers, j’ai pu obtenir un classement par date assez précis, pour ensuite réimporter les fichiers dans des répertoires nommés à la date des jours de prises de vues.

Pour résumer, Photorec, un simple script perl, l’utilitaire jhead m’ont permis de récupérer tout les clichés perdus.

#DENY3M et PluXML

Nasty cat
Nasty cat
Nasty cat

Voici une version modifiée du fichier config.php de PluXml accompagné d’un
fichier blocked.html que vous pouvez modifier à votre guise. Voir les
fichiers attachés. Détails des modifications du fichier config.php :
/*

* début ajout pour filtrage IP

*/

function ip_in_network($ip, $net_addr, $net_mask){

if($net_mask <= 0){ return false; }

$ip_binary_string = sprintf(« %032b »,ip2long($ip));

$net_binary_string = sprintf(« %032b »,ip2long($net_addr));

return (substr_compare($ip_binary_string,$net_binary_string,0,$net_mask) === 0);

}

function net_sanitize() {

$IP_banneds = array (

« 62.160.71.0 » => 24,

« 84.233.174.48 » => 28,

« 80.118.39.160 » => 27

);

if($_SERVER[‘REMOTE_ADDR’] === « 127.0.0.1 »)

$client_ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’];

else

$client_ip = $_SERVER[‘REMOTE_ADDR’];

foreach ($IP_banneds as $ip => $mask) {

if(ip_in_network($client_ip,$ip,$mask)) {

//redirection

header(« Location:blocked.html »);

die;

}

}

}

//on éxécute la fonction

net_sanitize();

/*

* fin ajout pour filtrage IP

*/
Ce code a été ajouté après la licence et avant tout envoi de « header » au navigateur.

pluxml-neutrality pluxml-neutrality.tar_

#DENY3M et Drupal

Cats eye
Cats eye
Cat's eyes

Tout a commencé le vendredi 22 avril lorsque 3M nous a gratifié d’un article sur son blog. Un de plus, lui permettant de nous « éclabousser » de son savoir, de ses connaissances techniques et de sa philosophie. L’article en question est nommé : « La neutralité du net : une utopie
séduisante ». N’insistez pas je ne vous donnerez pas le lien. Pas
question de lui fournir de l’audience. Merde quoi.

Bref, dés le titre tout est dit et résume assez bien l’article. D’ailleurs bluetouff en parle très bien. Cela vous fera un article a « flattr » bande de radins.

Du coup est venu une idée à Paul Da Silva, rediriger les IPs de nos
chers députés, lorsqu’ils veulent accéder à nos sites vers une page qui
leur est spécialement dédiée. Je ne retrouve pas celle de Paul et j’ai
pas envie de chercher. Donc juste un screen.

filtrage IP

J’avoue avoir pas mal hésité avant de me lancer moi aussi. Entre le
moment ou tout a commencé et le moment ou je me suis décidé, un plugin wordpress pour assurer ce filtrage et l’affichage de la page « dédiée » est apparu. Cela m’a décidé.

J’en arrive enfin au fait. Pour en faire autant si vous utilisez
drupal, il va vous falloir installer le plugin si joliment nommé « troll »

dans votre répertoire « sites/all/modules/ » et bien penser à modifier le
fichier « blocked.html » afin de lui ajouter une petite touche de
personnalisation.

Ensuite vous l’activez, puis dans l’admin vous le configurez en intégrant les fameuses IPs à bloquer.

Pour tout avouer cette pratique est à dix-milles lieux de l’idée que
je me fais d’internet. Pour moi internet doit rester ouvert, quitte à
devoir laisser s’exprimer des gens comme 3M sur des sujets qu’ils ne
maitrisent pas, mais alors pas du tout, du tout, du tout. Le problème
est que ces gens votent également les lois, celles-là même contre
lesquelles nous nous battons depuis des années. Ils font donc qu’ils
sachent quels seront les effets des blocages de sites. Espérons que le
message soit entendu.

Merci à bluetouff de m’avoir convaincu,en me faisant boire (enfoiré
😉 ) , de rédiger un petit article sur la façon de faire dans Drupal.

Rockmelt, le navigateur qui veut tout savoir de vous

A possum and a movie camera 1943
A possum and a movie camera 1943
A possum and a movie camera 1943

Aujourd’hui, j’ai vu passer dans mes flux RSS un article sur un nouveau navigateur. Rockmelt.

J’ai également pu lire beaucoup de choses sur twitter le concernant.
Pourtant il semblerait peu se soit inquiété des conditions
d’utilisations.

Je ne vais pas m’étendre mais au paragraphe 3 de la page « terms of service »

Restrictions. Except as expressly specified in this
Agreement, you may not: (a) copy or modify the Software;
(b) transfer, sublicense, lease, lend, rent, or otherwise
distribute the Software to any third party; or (c) make
the functionality of the Software available to other users. You
acknowledge and agree that portions of the Software,
including, without limitation, the source code and the specific design
and structure of individual modules or programs,
constitute or contain trade secrets of RockMelt and its licensors.
Accordingly, you agree not to disassemble, decompile, or
otherwise reverse engineer the Software, in whole or in part, or permit
or authorize a third party to do so, except to the extent
such activities are expressly permitted by law
notwithstanding this prohibition.

Nous apprenons donc dans ce paragraphe que ce soft est tout sauf
open-source, sauf bien-sûr la partie issue de chromium, et encore dans
ce cas, aucune mise à dispo des sources.

Les « privacy policy » sont également très intéressantes, un petit extrait pour la route

Your Personal Information. When you
communicate with us or use the Browser, we may collect personally
identifiable information about you.

On y trouve bien-sûr de quoi rassure rle quidam moyen (qui n’aura de
toute façon pas lu ces conditions) ainsi que le fait que Rockmelt se
réserve le droit des récupérer les infos vous concernant directement
dans votre compte facebook :

For instance, when you log in, Facebook might tell us
that you’re a 28-year-old male from ZIP code 94105. This information
comes from the data you’ve supplied in your Facebook
profile and agreed to share with applications like RockMelt. This
information on its own isn’t enough to identify you
specifically.

Allez, je sens que certains détestent déjà ce navigateur qui en veut à
notre vie privée. En tout cas ce sera sans moi, puis de toute façon il
n’y a pas de version linux et je ne suis pas sur facebook.

Hadopi Quick & Dirty blocker (2)

Mon précédent billet a été écrit un peu à la RACHE, du coup je reprends ici et je vais tenter d’être un peu plus clair. Hadopi, par le biais de la société TMG, va procéder à des relevés IP en téléchargeant un chunk (un morceau du fichier) via P2P sur votre machine si vous avez été repéré comme seedeur. Pourquoi vont-ils se donner cette peine ? Simplement pour éviter les faux-positifs générés par seedfuck.

D’un autre côté, les IPs des machines de TMG sont connues. Elles ont été rendues publique il y a de cela quelques mois.

Ce que je vous proposais donc lors de la rédaction de ce billet, était d’apprendre à configurer le logiciel iptables – logiciel libre et présent dans toutes les distributions linux – de façon à bloquer toute demande de téléchargement de chunk en provenance de ces IPs. Afin de ne pas tout retaper, je vous invite à télécharger ce fichier .

Afin de l’utiliser voici comment il faut procéder :

sudo chmod +x blocker.sh

Cela rend le fichier exécutable. Il ne vous reste donc plus qu’a l’exécuter :

sudo ./blocker.sh

ou

sudo sh blocker.sh

Bien entendu je pressens que ma solution n’est pas la meilleure ou
qu’elle est incomplète. C’est pourquoi je vous invite tous à la
considérer comme base de travail pour fournir au final un script de
qualité et 100% fonctionnel.

#!/bin/bash

toBlock[0]= »85.159.236.252″

toBlock[1]= »85.159.236.253″

toBlock[2]= »85.159.236.254″

toBlock[3]= »85.159.232.81″

toBlock[4]= »85.159.232.82″

toBlock[5]= »85.159.232.83″

toBlock[6]= »193.107.240.1″

toBlock[7]= »193.107.240.2″

toBlock[8]= »193.107.240.3″

toBlock[9]= »193.107.240.4″

toBlock[10]= »82.138.81.211″

for((indice=0;indice<${#toBlock[@]};indice++))

do

iptables -A INPUT -s ${toBlock[indice]} -j DROP;

done

exit

À vous les studios.

Hadopi Quick & Dirty blocker

Soirée hadopi m'a tué

Je
viens de faire un tout petit script qui permet de configurer iptables
(nécessite d’être sous linux donc) et qui permet d’empécher d’éventuels
indésirables d’accèder à votre machine (genre hadopi au hasard). D’abord
voici le script :

#!/bin/bash toBlock[0]="85.159.236.252"

toBlock[1]="85.159.236.253"

toBlock[2]="85.159.236.254"

toBlock[3]="85.159.232.81"

toBlock[4]="85.159.232.82"

toBlock[5]="85.159.232.83"

toBlock[6]="193.107.240.1"

toBlock[7]="193.107.240.2"

toBlock[8]="193.107.240.3"

toBlock[9]="193.107.240.4"

toBlock[10]="82.138.81.211"

for((indice=0;indice<${#toBlock[@]};indice++))

do

iptables -A INPUT -s ${toBlock[indice]} -j DROP;

done

exit

Ce script il suffit de l’enregistrer sous blocker.sh par exemple puis de le rendre éxécutable :

sudo chmod +x blocker.sh (pour ceux qui sont sous ubuntu)

et enfin de l’éxécuter en sudo

Voilà vous devriez être tranquilles. Facile non ?

Conditions ternaires et PHP

L'éléphant, symbole du langage PHP.
L'éléphant, symbole du langage PHP.
L'éléphant, symbole du langage PHP.

Cette
semaine j’ai fait une découverte. Un truc de fou je vous dis. La
plupart des développeurs PHP ne connaissent pas les conditions
ternaires. D’ailleurs la plupart prétendant développer en PHP5
développent en fait en PHP4. Et encore. Bref.

Donc pour les incultes qui vont passer par ici en se demandant ce
qu’est cette bête dont on parle dans les soirées geeks, voici
l’explication.

La condition ternaire est une façon de gérer des conditions de façon
beaucoup plus simple. En gros cela évite de trop user ses petits doigts
boudinés sur le clavier.

Exemple, Jean-Paul, développeur chez …….. écrit une condition :

if ($pizza == « quatre fromages ») $toto = mangerPizza();

else $toto = pasMangerPizza();

Une condition ternaire équivalente ressemblerai à ça :

$toto = ($pizza== »quatre fromages ») ? mangerPizza() : pasMangerPizza();

Mais comment elle marche ta condition Floflo ?

Alors c’est simple, $var1 = (cond) ? expr1 : expr2;

donc $var1 prendra la valeur retournée par expr1 si cond retourne TRUE. Sinon $var1 prendra la valeur de expr2.

Et voilà une condition gérer en une ligne. En plus d’être très
élégante dans le code, elle permet de faire des économies de ligne. De
gagner en lisibilité.

Les conditions ternaires ont cependant des limites et il conviendra
d’utiliser des conditions « classiques » dans le cas d’exécution de bloc
de code important.

Sur le manuel PHP