Homebrew, le gestionnaire de paquets oublié de Mac OS

Je suis tombé ce matin sur cet article via un tweet de @nixcraft (que je vous conseille chaudement de suivre).

Il met en lumière que la version de git présente sur El Capitan, dernière version en date du système d’exploitation des ordinateurs de la marque Apple, n’est pas à jour et permet d’exécuter du code arbitraire, ce qui n’est pas top du point de vue de la sécurité.

Il dénonce également le système de protection ajouté dans El Capitan (nommé SIP) qui empêche l’utilisateur, même avec les pouvoirs du super utilisateur (root), de modifier les fichiers systèmes, notamment le binaire git défaillant.

Cependant, ce qu’il oublie de dire, c’est qu’il y a un moyen d’avoir son binaire git à jour, même avec SIP, sans avoir à faire de manipulations compliquées et sans mettre le système en danger en désactivant SIP.

Ce moyen, c’est Homebrew, et il fait bien plus que ça.

Continuer la lecture

Supprimer récursivement tous les BOM de vos fichiers UTF-8 en un script

Travaillant sur un vieux projet PHP, j’ai été confronté à de vieux fichiers cradingues encodés en UTF-8 AVEC BOM, posant des problèmes d’affichages et de redirections.

Le BOM, si vous ne savez pas ce que c’est, c’est un caractère se situant généralement en début de fichier servant à déterminer en quel type d’UTF est encodé un fichier (UTF-8, 16, 32, autres ?). Ce marqueur n’étant pas nécessaire en UTF-8, il nous pose plus de problèmes qu’autre chose et l’on a pour habitude de l’omettre.

Après quelques recherches, je suis tombé sur des bouts de scripts sur le forum d’Ubuntu, mais ils modifient tous les fichiers présents. J’ai des fichiers encodés en latin9 parmi ceux à corriger, mon but n’est pas de les changer :-/

Du coup, je me suis créé un script bash qui cherche et corrige seulement les fichiers présentant cette particularité, le voici :

#!/bin/bash
FROM=UTF-8
TO=UTF-8
ICONV="iconv -f $FROM -t $TO"
BASEDIR=${1:-.}

# Convert
grep -rl $'\xEF\xBB\xBF' "$BASEDIR" | while read fn;
do
    $ICONV "$fn" > "$fn".bak
    awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' "$fn".bak > "$fn"
    rm "$fn".bak
    echo "$fn"
done

Un petit chmod +x sur ce script, vous l’exécutez en passant en paramètre le dossier contenant les fichiers à fixer et c’est fini 😀

Continuer la lecture

Faire cohabiter Apache et OpenVPN sur le 443

Hier, je me suis expérimenté à installer OpenVPN sur un serveur tout neuf … Ou plus ou moins une récup d’un vieux PC de @Codeur_Fou x)

Et je dois dire que c’était plutôt simple quand on a un bon tuto. Et c’est là que je vous renvoie à l’excellent billet de Nico Largo sur le sujet.

Il y a juste une toute petite chose qui manque sur son tutoriel. Il utilise le port 443, port qui je le rappel est utilisé communément par le HTTPS.

Comment donc faire cohabiter Apache et OpenVPN pour qu’ils délivrent les pages demandés en HTTPS et le VPN tranquilou ni vu ni connu j’t’embrouille wesh ?

EDIT : Comme me l’a signalé Kahas, je me base sur Debian, mais les modifications sont tout à fait applicables sur d’autres systèmes Linux, il vous suffira d’adapter les commandes. De plus, je modifie Apache, mais la configuration d’Nginx et autres serveurs web sera sensiblement la même.

Continuer la lecture

Utiliser le clavier Mac sur un Windows

Ami utilisateurs de Mac, vous adorez peut-être Mac pour son clavier un peu spécial. Les touches ne sont pas au même endroits et pourtant, beaucoup estime que ces changements sont plus logiques et plus pratiques que les emplacements communément acquis.

Et que cela est rageant voir perturbant quand vous installez Windob Windows via Bootcamp ou une machine virtuelle Windob Windows et que vous ne retrouvez pas votre clavier habituel !

Continuer la lecture

Utiliser socket.io (et les websockets) avec Apache

Je vois déjà certains venir et dire qu’Apache pas fait pour ça, que son rôle est d’afficher des pages statiques ou PHP brute et que tout le reste devrait être laissé à un vrai serveur proxy ou à un serveur web plus récent comme Nginx. Alors oui … Mais quand on n’a pas envie de s’embêter à mettre en place un système compliqué et juste monter un node à l’arrache pour faire une tâche précise, Apache est largement suffisant.

Malheureusement, le support du websocket dans le mod_proxy d’Apache n’est assuré qu’à partir de la version 2.4. Or, la version proposée actuellement dans les dépôts Debian (ou autre Linux stable) est généralement la 2.2. Faut t-il pour autant basculer sur une branche de mise à jour instable ?

Je vous propose aujourd’hui de compiler vous-même l’extension mod_proxy_wstunnel qui permettra de vous servir de websocket sans trop de problèmes.

Continuer la lecture

Installer Windows sur un vieux Macbook sans clé USB et sans DVD

Ce samedi a été une après midi bidouille.

Mon frère s’est commandé un Optibay, un étui en métal permettant d’y loger un second disque dur à mettre à la place du lecteur optique (lecteur DVD si vous préférez).

L’installation du matos s’est passé sans soucis, le MacBook Pro milieu 2009 retrouve une seconde jeunesse avec un SSD en disque principal (le disque dur de base du Mac se retrouvant en second pour stocker tout pleins de choses, notamment une partition dédié à Windows).

Sauf que arrivé à l’installation du dit Windows … Je me suis rendu compte que j’avais complètement oublié que le support de Bootcamp sur un Macbook relativement ancien ne pouvais se faire qu’en présence d’une galette officielle de Windows dans le mangeur de disque … Pas cool :'(

Et histoire d’enfoncer encore le clou un peu plus … Impossible de booter par clé USB comme vous le feriez sur un Macbook récent (vous verrez plus loin dans l’article), bref la misère :/

Quoi qu’il en soit, l’esprit du système D m’emplis et tel un Mac Gyver des temps moderne, je me suis mis au défi d’installer Windows 7 avec seulement un ISO (légal / non modifié) et sans utiliser de périphériques externes. C’est parti !

Continuer la lecture

DISM : l’outil ultime de création de supports Windows 7 personnalisés

Il y a maintenant 4 ans (oui déjà), j’ai rédigé un article pour le laboratoire Microsoft de Supinfo (donc j’ai été co-responsable en 2ème année) traitant en détail du DISM.

Cékoidoncstruc ?

Le DISM (ou Deployment Image Servicing and Management) est un outil en ligne de commande présent sur Windows 7 qui permet de fabriquer des images disques de Windows 7 personnalisés.

Par exemple disons que j’ai envie d’avoir un Windows 7 Pro avec mon driver Nvidia installé de base, quelques logiciels comme Firefox aussi (<= obligatoire) puis pourquoi pas qu’il soit directement configuré avec la bonne langue, activé avec une licence valide et sans avoir besoin de toucher à quoi que ce soit pendant l’installation ? Bah c’est possible et plutôt simplement en plus !

Concrètement, ça sert beaucoup dans deux cas de figures :

  • Vous avez besoin de réinstaller souvent votre système ou que vous n’avez pas envie de refaire toujours les mêmes actions quand vous installez votre système sur d’autres ordinateurs
  • Vous voulez déployer une image Windows sur pleins de postes et que cette image répondent exactement à vos besoins.

Puis ça vous apprendra aussi diverse petites choses sur la structure de Windows 7 ainsi que de l’architecture du registre (au niveau stockage, les ruches, toussa …). Notez que ce tutoriel peu très bien s’appliquer à Windows 8, vu que ce système (de merde) s’appuie sensiblement sur le même noyau que Windows 7.

Bref, dans tout les cas, je vous invite à lire mon article détaillé sur le laboratoire Microsoft de Supinfo.