walk-hoary

Découper et rassembler un fichier en morceau

Parfois en déplacement, je dispose d’une connexion 1Mbps voir moins. Pour télécharger un fichier plus rapidement je me sers de plusieurs connexion internet pour aller plus vite. (mon téléphone, celui d’un amis…)

Exemple pour un fichier de 900Mo, je vais le découper en fichiers de 100Mo et télécharger 3 morceaux sur la connexion internet de mon hôte, 3 autres morceaux avec mon téléphone, et 3 autres morceaux avec un autre abonnement.

Pourquoi 3 par devices ? Car cela donne 100Mo ce qui permet de télécharger plus rapidement le ou les derniers morceaux sur la connexion la plus rapide.

Découper un fichier

split -b 100m monfichier.zip

Cela va générer plusieurs fichiers monfichier.xaa mofichier.xab …

Télécharger

Sur le device 1 :

wget -c http://qth.fr/monfichier.xaa http://qth.fr/monfichier.xab http://qth.fr/monfichier.xac

L’option -c permet de rédémarrer un téléchargement là où il en était, vous pouvez donc interrompre avec CTRL-C à votre guise. (ou suspendre/resume CTRL-Z … $fg)

 

Rassembler un fichier

Mettez tous vos fichiers ensembles

cat monfichier.*  > monfichier.zip

 

Et voilà !

Script bash mono-instance

Voici un petit script bash à inclure dans votre script si vous souhaitez qu’il ne soit lancé qu’une seule fois. Je l’ai fait à La Rache dans le but qu’un rsync ne se lance pas plusieurs fois.

Vous pouvez l’inclure par un simple :

. /usr/local/bin/run_once.sh

 

/usr/local/bin/run_once.sh

#!/bin/sh
SCRIPTNAME=`basename $0`
export LOCKSYNC="/var/run/$SCRIPTNAME.lock"
PID=$$
echo "["`date +"%Y/%m/%d %H:%M:%S"`"] Demarrage du script $0"
if [ -f "$LOCKSYNC" ]
then
echo "Fichier lock "$LOCKSYNC" present. Deja en cours ?"
PIDLOCK=`cat $LOCKSYNC`
if [ -f /proc/$PIDLOCK/exe ]
then
echo "Le process semble etre toujours en cours. Lancement de $SCRIPTNAME impossible."
exit
else
echo "Le process ne semble plus etre en cours, Lancement de $SCRIPTNAME"
rm $LOCKSYNC
fi
fi
echo "Creation du lock "$LOCKSYNC
echo $PID > $LOCKSYNC

Pour le fonctionnement, il va créer un fichier lock correspondant au nom du script qui indiquera si le programme est déjà lancé ou non. Si le lock est présent, le script va également vérifier que le processus est toujours actif.

Je m’en sers dans la machine proxy transparent qui sert de dépôt locaux lors de nos install party. Cela est particulièrement utile car nous sommes plusieurs admins sur la machine en question.

Et joyeuses fêtes !

À tous ces plateforme anti-spam à la con comme messagelabs.com

Aujourd’hui, je reçois un email d’un utilisateur qui n’arrive pas contacter un client par email. Effectivement, le serveur, ici messagelabs.com refuse de communiquer avec notre serveur d’envoi.

Soit ! Il arrive que des serveur soit blacklistés… Je consulte donc la page d’aide communiqué par le MTA distant. J’obtient un email et envoie les infos habituels. Et là c’est le drame ! On me dis simplement : Vous ne pouvons pas traiter votre demande car vous n’êtes pas client.

Okay… Alors on va demander au client de contacter lui même sa plateforme antispam… Réponse : Vous n’êtes pas le contact autorisés à nous demander quoi que ce soit.

Mais bordel, symantec ! Ca vous amuse de blacklister des serveurs sans explication ?? Oui oui symantec, car messagelabs.com est leur plateforme anti-spam.

Outre le fait que l’on ne peut pas joindre l’adresse email précisé dans le message d’erreur (pas de formulaire), ces derniers se foutent complément de la gueule du monde en ayant un support aussi mauvais.

Symantec, vous n’avez pas compris le principe d’internet, je n’achèterais jamais de produit chez vous !

Services – Non je ne suis pas mort

Petit coucou rapide… J’ai toujours fait en sorte que les quelques services sur ce site soit fonctionnel car je m’en sert souvent pour ne pas dire tous quotidiennement. Je vous les fait donc partager car il s’agit de logiciel libres.

Les logiciels que je mets à disposition

Partage de texte

http://paste.qth.fr

Il s’agit de zerobin, un pastebin dont le contenu coté serveur est chiffré par la clé contenue dans l’url. Il a des options interessante comme le fil de conversation ou la destruction après lecture.

Upload d’image

http://pix.qth.fr

Lui est très récent, il permet de mettre en ligne une image. j’utilisais toujours celui des TDCT ou toile-libre.org mais j’ai fini par créer le miens.

Rédaction collaborative

http://pad.qth.fr

Il s’agit d’un framapad pour écrire un texte avec plusieurs participant (en live) en donnant simplement l’URL du « pad ».

Agrégateur de RSS

http://rss.qth.fr

C’est mon lecteur RSS en ligne, il est basé sous tiny-tiny-rss. Il a un client sous Android très bien fait. Je l’utilise plusieurs fois par jour et le recommande si vous avez beaucoup de flux à surveiller. Si cela vous interesse, vous pouvez l’auto-héberger ou vous créer un compte sur le miens. (Places limitées)

Gestionnaire de bookmarks

http://links.qth.fr

Il s’agit là de mes bookmarks personnels que je rend public (ou non) en y indiquant une description. Ces bookmarks peuvent être surveillées par flux rss. Cela est basé sous shaarli, je l’utilise plusieurs fois par jour de n’importe où. (et la rivière de shaarlis ici)

Sondages

http://studs.qth.fr/

Pour créer des sondages en ligne. (de studs. Il en existe d’autres tel que papillon)

Redmine

http://labs.qth.fr

Pour gérer mes projets personnels. Il s’agit là de projets relativement fermés ou peu interessant pour le monde.

Statusnet

http://status.qth.fr/

Pourquoi je le garde ? Car il fonctionne bien ! Malheureusement peu utilisé.

Mindmap

http://mindmap.qth.fr/

Pour faire rapidement des mindmap (de mindmaps)

Dessins SVG en ligne

http://svg.qth.fr/

Pour dessiner vite fait… (de svg-edit)

Les autres services que j’utilise

Yourls pour créer des liens courts ou mémotechnique. Cela permet en autre de gérer la destination de vos liens ou visualiser les stats car il s’agit de redirection.

Subsonic pour écouter ma musique ou la partager. Un bonne application cliente sous android existe aussi.

Redmine pour la lecture de mes emails

owncloud pour la gestion de mes contacts et de mon agenda. Je l’utilise sur mon android afin de me libérer de google sur ces 2 aspects.

piwigo pour gérer mes statistiques à la façon google analytics.

Agenda et contacts android ? Ho oui avec Owncloud !

Retour d’utilisation Owncloud sur Android

Cet article va vous intéresser si vous souhaitez garder une certaine indépendance avec votre mobile android. J’utilisais depuis peu gmail pour synchroniser contact et calendrier car c’était complètement automatique, ouvert, accessible via un navigateur. Sauf que bon, autant j’apprécie google mais je préfère gérer mes données personnelles comme je le fait avec mes emails !

 

J’ai testé Owncloud, et je du coup il tourne depuis car il a été très simple à mettre en place chez moi. (Des simples scripts PHP). Il offre la synchronisation carddav et caldav que l’on attend, il permet de consulter/modifier son calendrier et ses contacts via l’interface web simplement. Mais j’ai bien aimé aussi qu’il puisse synchroniser des répertoires de mon pc un peu comme à la dropbox. En effet il existe plein de client pour avoir un backup ou un répertoire que vont considérez important et le synchroniser sur votre serveur (même sur android pour vos photos par exemples) . La copie de ce répertoire n’est pas chiffrée ; même si c’est votre serveur, j’aurais aimer y glisser un clé de chiffrement un peu comme Firefox le fait avec sa synchronisation de préférence. (Que vous pouvez aussi auto-héberger ;) ).

 

Coté synchronisation Android, j’ai téléchargé Caldav et CardDav de Marten Gadja (+ les JBWorkaroud recommandés pour Androdi Jelly). Vous aurez alors des compte de synchronisation intégrés à votre android pour gérer calendrier et contacts. Ce sera à vous de faire le transfert de vos contact et calendrier en utilisant la fonction exporter sur gmail.com et le réporter via l’interface wbe de votre owncloud (cela se fait très facilement en format ics et card, formats ouverts et libre rappelons le !).

 

Voilà, j’ai testé Owncloud (quelques minutes pour l’installer) et comme ça marche très bien, je l’ai adopté. vous pouvez virer vos contacts et calendriers de chez votre ancien fournisseur mais il vous sera toujours utile pour accéder à google Play ;)

Encodage de caractère

Parfois, le serveur d’hébergement se trouve en UTF-8 mais malgré les avertissements aux développeurs, on se retrouve avec des fichiers ANSI comme la plupart des éditeur de texte sous Windows. (Je parle même pas des \r inutiles).

Connaître l’encodage du fichier

file --mime-encoding MONFICHIER.php

Sans cette option –mime-encoding, file vous dirai juste qu’il s’agit d’une code php…

 

Conversion du fichier

Exemple de l’ansi à l’UTF8

iconv -f WINDOWS-1252 -t UTF-8 MONFICHIER_ansi.php > MONFICHIER_utf8.php

Ou de l’UTF-8 à l’iso8859-15

iconv -f UTF-8 -t ISO_8859-15 MONFICHIER_utf8.php > MONFICHIER_iso.php

 

Encodages supportés

iconv -l vous donnera la liste des encodages supportés. Les plus importants à retenir sont :

  • WINDOWS-1252 (Parfois appelé CP-1252, ANSI ou latin-1, c’est un dérivé de ISO_8859-1 qui ressemble beaucoup ISO_8859-15)
  • UTF-8 (universel et compatible ASCII)
  • ISO_8859-1 (Ou latin-1 lui aussi, il lui manque les symbole euro qui est ¤)
  • ISO_8859-15 (Ou latin-9)
  • ASCII (lol)
  • Le code morse ne fait pas parti des encodages supportés

 

Mémo de compilation de kernel

Introduction

Il y a quelques années, il était assez fréquent de devoir recompiler son noyau linux pour pouvoir utiliser tel ou tel module… Aujourd’hui c’est très rare mais reste toujours instructif. Je vais donc détailler ici les étapes essentielles pour la compilation mais aussi l’installation d’un noyau compilé par vos petites main sous debian/ubuntu/linuxmint…

Pre-requis

Les sources

Les sources du noyau. On va prendre ceux de linuxmint, mais vous pouvez allez cherchez la version que vous voulez sur kernel.org. Ces deux moyens vont vous donner un fichier tar.gz que nous devons décompresser dans l’emplacement standard /usr/linux/src (Si vous prenez les sources depuis apt de votre distrib, il devrait se trouver dans /usr/src/). Vos sources sont à décompresser dans le répertoire universel /usr/src/linux/

Pour gérer les version, nous utilisons la méthode du lien symbolique en décompressant dans /usr/src/linux-source-3.0.2

sudo tar xvf MESSOURCES -C /usr/src/

Et Ferons un lien symbolique linux

sudo ln -s /usr/src/linux-source-3.0.2 /usr/src/linux

La configuration

Récupérer la configuration utilisé par le noyau de la distribution s’avère utile pour partir sur quelque chose qui marche. Ce n’est pas obligatoire si vous savez ce que vous faites. Vous trouverez ces config dans le répertoire /boot de votre système. (exemple /boot/config-3.2.0-30-generic)

sudo cp /boot/config-3.2.0-30-generic /usr/src/linux/.config

Outils

Pour compiler votre noyau, vous aurez besoin d’un compilateur, mais aussi d’un outil pour configurer et surement un autre pour packager car il est très utile d’en faire un .deb. Cela facilite la désinstallation par exemple ou sa distribution.

sudo aptitude install build-essential

Configurer

Rentrez dans le répertoire /usr/src/linux et lancez l’outil qui vous permettra de configurer votre kernel.

sudo make menuconfig ou sudo make xconfig si vous préférez une version graphique sous X

Oui faites pas comme moi, préférez compiler vos programme en tant qu’utilisateur ! ;-)

Compilation et empacketage

sudo make-kpkg --initrd --revision=NumeroQueVousVoulez kernel_image kernel_headers modules_image

Cette commande va compiler et vous faire les 3 .deb qu’il vous faut pour installer votre kernel. Et c’est cette commande que j’oublie tout le temps :-) Vous connaissez sûrement la suite pour installer des .deb.



                      

Tags: , ,

Tester un serveur smtp

Il m’arrive souvent de devoir tester si un serveur est capable de relayer un email (ou l’inverse pour empecher l’open relay).

$telnet monserveur.exemple 25
helo nimportequoi
mail from: uneadresse@valide.exemple
rcpt to: uneautreadresse@valide.exemple
data
Tapez votre message
et terminez par une ligne comportant juste un point
quit

A chaque commande, le serveur doit vous répondre un code de retour et parfois une description. Ce code est standard, 2xx = ok (continuez), 4xx = erreur temporaire (ressayez plus tard), 5xx = erreur permanente (votre mail ne passera jamais)

Tags: , ,

Certificats pour serveurs

Cet article vous montre comment créer un certificat willcard signé par un tiers

Pourquoi un certificat ?

Parfois il m’arrive de ne pas pouvoir consulter mes emails car le réseau que j’utilise n’est pas sécurisé. J’entends par là que je ne sais pas qui est derrière et pourrait écouter mon trafic et capturer aisément mes identifiants.

J’ai donc décidé d’installer un certificat sur qth.fr. Comme la plupart de mes services sont en *.qth.fr j’ai choisis de faire un certificat willcard que j’ai fait signé par cacert. Le faire signer par autre que soit a l’avantage de pouvoir vérifier auprès de cacert que le certificat est valide. Il faut savoir que cacert est une autorité non reconnue par les navigateurs par défaut car son modele de confiance se base sur ses utilisateurs. (C’est les utilisateurs vérifient entre eux leur identité, cherchez « Key signing party » sur un moteur de recherche).

Ce serveur utilise donc les certificats de cacert ; pour installez le certificat root de cacert, rendez vous sur la page http://www.cacert.org/index.php?id=3 et cliquez simplment sur http://www.cacert.org/certs/root.crt . Attention, cela veux dire que vous acceptez tout les certificats signés par cacert !

Comment ça marche ? (grossièrement)

Pour sécuriser un site en SSL, le serveur doit obligatoirement connaitre un clée privée et un certificat publique signé. Il arrive qu’un ou plusieurs certificats intermédiaires soient nécessaires, j’en parlerais plus loin. Notez que les extensions varient d’un système à l’autre, mais on retrouve globalement KEY, CRT, CSR et PEM (ce dernier désigne en fait jusque c’est un fichier pour le chiffrement, j’utiliserais donc cette extension pour tous mes fichiers).

  • Le certificat privé « KEY » est un fichier généré que vous devez conserver et ne jamais le divulguer ! Il sera utilisé par votre serveur pour chiffrer votre trafic. Il peut être protégé par un mot de passe, libre à vous, personnellement je n’en met pas.
  • La demande de signature certificat « CSR » est un fichier généré à partir de la clé privée. ici je la crée en même temps. Elle peut être divulgué à votre tier de confiance. Elle contient diverses informations comme quels domaines il concerne, la durée de validité…
  • Le certificat « CRT » est le fichier généré par votre autorité de certification tiers.

Lorsque votre navigateur demande une page à votre serveur en SSL, ce dernier vous renvoie la réponse chiffrée avec le certificat publique signé par votre tiers. Votre navigateur peut donc vérifier que le certificat est valide auprès de l’autorité et déchiffrer la réponse du serveur.

Le certificat intermédiaire est parfois nécessaire lorsque l’autorité de certificat est inconnue de votre navigateur mais qui a pourtant été approuvé par une autre autorité, qui elle est connue de votre navigateur. Ce fichier doit donc être envoyé par le serveur en même temps que votre certificat signé. (Il peut y avoir plusieurs certificats intermédiaires).

Notez qu’il existe les certificats normaux et les certificats EV (Extended validate). Ces derniers permettent juste une vérification plus poussée de votre identification et provoque l’apparition de la barre d’adresse verte. (Sinon elle reste de la couleur normal)

Gérer un KEY et un CSR

Créer le fichier /usr/share/ssl-cert/ssleay-MONDOMAINE.cnf (un exemple se nome ssleay.cnf) et insérez ce texte que vous adapterez.

# -------------- BEGIN custom openssl.cnf -----
HOME                    = /etc/apache2/ssl/
RANDFILE                = /dev/urandom
oid_section             = new_oids
[ new_oids ]
[ req ]
default_days            = 730            # how long to certify for
default_keyfile         = /etc/apache2/ssl/qth_MONDOMAINE.pem
distinguished_name      = req_distinguished_name
encrypt_key             = no
string_mask = nombstr
req_extensions          = v3_req # Extensions to add to certificate request
[ req_distinguished_name ]
commonName              = Common Name (eg, YOUR name)
commonName_default      = MONNOMFQDNDUSERVEURDOMAINE
commonName_max          = 64
countryName             = Country Name (2 letter code)
countryName_default             = MONCODEPAYS_FR_PAREXEMPLE
countryName_min                = 2
countryName_max                = 2
organizationName        = Organization Name (company)
organizationName_default        = MONNOMDORGANISATION

localityName            = Locality Name (city, district)
localityName_default    = MAVILLE

stateOrProvinceName     = State or Province Name (full name)
stateOrProvinceName_default = MONDEPARTEMENT
emailAddress            = Email Address
emailAddress_max        = 40
[ v3_req ]
subjectAltName=DNS:MONDOMAINE,DNS:*.MONDOMAINE
# -------------- END custom openssl.cnf -----

Lancez la génération :

openssl req -batch -config /usr/share/ssl-cert/ssleay-MONDOMAINE.cnf -newkey rsa:2048 -out /etc/apache2/ssl/MONDOMAINE_csr.pem

Configurez apache

Créez un virtualhost qui écoutera sur le port 443 et insérez la configuration suivante :

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/MONDOMAINE_crt.pem
SSLCertificateKeyFile /etc/apache2/ssl/MONDOMAINE_key.pem

Et si besoin les certificats intermédiaires (Ajoutez les si votre autorité en a car d’autres navigateurs peuvent se comporter différemment que le votre au moment de vos tests) :
SSLCertificateChainFile /etc/apache2/ssl/MONDOMAINE_intermediate1.pem

Cisco

J’ai du récemment dans mon travail à administrer des équipements CISCO, j’y ai passé pas mal de temps que ce soit pro ou perso car je n’ai jamais travaillé avec. Outre le petit routeur qui nous a servit de passerelle PPPoE remplacé par un FreeBSD, j’avoue ne pas être à l’aise avec cette syntaxe. Je vous donne ici les premiers élement qui m’on manqué pour commencer. Il ne s’agit là que de quelques mémos que je juge utile avant d’essayer de comprendre leur syntaxe. Après cela, la documentation est très abondante et surtout fournie par CISCO.

  • Lorsque vous êtes logué sur un cisco, vous pouvez être dans un mode normal qui ne vous autorise pas à le configurer. Vous devez alors taper enable pour y entrer et acceder à la config, aux propriétés…
  • La configuration se trouve dans un format linéaire, vous pouvez la voir en tapant show run (pour running-config)
  • Pour modifier la configuration, cela se fait ligne par ligne, entrez dans l’édition en tapant « conf t », terminez par CTRL+Z. Vos modifications sont appliquées immédiatement.
  • Vous vous déplacez par bloc dans la configuration, ainsi pour acceder au bloc Bloc_A.SousBloc_1, vous devez tapper Bloc_A, puis taper SousBloc_1. Vous pouvez à tout moment accéder aux autres blocs tant qu’ils sont enfant directs ou plus haut hiérarchiquement. (Bloc_E est accessible à tout moment par exemple)
  • Lorsque vous êtes en mode édition vous pouvez ajouter des ligne en les entrant directement, ou en enlever en tapant « no  » suivie de la ligne exacte.