samedi, 12 novembre 2016

Serveur mail : Garder un peu de ma vie privée

En me baladant dans les entêtes de mes mails je m’aperçois que des informations, inutiles à mon goût, mais également intrusives apparaissent dans l'ensemble des mails que j’envoie. Ni une ni deux, j'enfourche mon moteur de recherche préféré et me voilà parti à trouver une solution. Le truc bien avec Postfix, pour envoyer mes mails, c'est que je peux faire n'importe quoi (j'entends autre chose que le faire tomber en panne, ou en marche selon l'alignement des planètes).

Donc l'idée pour ne fournir que les informations nécessaires à la transmission d'un mail; c'est de configurer le serveur SMTP de telle sorte qu'il filtre les entêtes indésirables au moment d'envoyer le mail.

Pour ce faire, on édite le fichier /etc/postfix/master.cf en ajoutant dans la partie relative à la déclaration du service smtp(s) la ligne cleanup_service_name=auth-cleanup comme indiqué ci-dessous

smtps     inet  n       -       y       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o cleanup_service_name=auth-cleanup

on ajoute également cette fois, où on souhaite, dans le fichier /etc/postix/master.cf la directive suivante;

auth-cleanup   unix  n       -       -       -       0       cleanup
  -o header_checks=pcre:/etc/postfix/header_checks

on édite enfin le fichier /etc/postfix/header_checks ainsi;

/^Received:.*with ESMTPSA/              IGNORE
/^X-Originating-IP:/    IGNORE
/^X-Mailer:/            IGNORE
/^Mime-Version:/        IGNORE
/^User-Agent:/          IGNORE

on redémarre enfin le service Postfix

# service postifx restart

et on envois un mail afin de vérifier l'absence des entêtes qui me dérangeaient. L'avantage de cette configuration est qu'elle ne s'applique que sur les mails sortant, laissant ainsi intacte les entêtes des mails reçus.

mardi, 1 octobre 2013

Centreon : superviser la charge mémoire de vos serveurs Oracle

Les gens sensibilisés à la supervision ont tous rencontrés ce problème;
Un applicatif hébergé sur un serveur, se réserve de la RAM au démarrage pour disposer d'un espace d'échange avec la certitude que ce dernier lui sera entièrement dédiée.
Pour le cas d'Oracle cela va permettre au SGBD de charger directement en RAM une structure interne et ainsi avoir des temps de réponse optimum.
Voici par exemple un cas concret avec un serveur Oracle.

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7971       7847        124          0        171       3966
-/+ buffers/cache:       3709       4261
Swap:        16002       1812      14189

On remarque que sur les 8Go de RAM présente sur le serveur, 4Go sont en cache.
À l'aide de la commande ipcs, on relève la RAM allouée spécifiquement au service Oracle.

$ ipcs -m  | grep oracle
0x43906674 11239429   oracle    660        4096       0
0x8a5a4b48 11501575   oracle    660        4096       0

Pour le serveur concerné nous avons 2 instances de bases avec chacune 4Go de RAM allouée.
Il est également possible de voir la valeur de la RAM allouée directement en base de données.

$ sqlplus '/ as sysdba'
SQL*Plus: Release 11.2.0.2.0 Production on Tue Oct 1 10:59:38 2013
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Connecte a :
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
hi_shared_memory_address             integer     0
memory_max_target                    big integer 3G
memory_target                        big integer 3G
shared_memory_address                integer     0
SQL>

Il est à noter, que la valeur memory_target, au même titre que celle retournée par la commande ipcs, sont des valeurs maximales, la valeur effective pouvant être inférieure.
Oui mais voilà, comment, côté supervision, traiter ce comportement ? D'un point de vue du système la RAM est allouée, donc consommée. Comment pouvons nous dans ce cas identifier un manque de RAM et décider s'il est nécessaire ou non de redimensionner la machine ?
La supervision de la RAM sur ce genre de serveur est problématique car souvent en statut critique. Le but de la manœuvre est donc ici de continuer de stocker la charge de RAM, sans que cela ne remonte d'état WARNING ou CRITICAL.
% Pour se faire nous allons utiliser un check classique que nous allons chainer avec un second script, j'ai nommé negate.
Voici le script classique utilisé pour superviser la RAM :

# ./check_snmp_storage.pl -H serveur1 -C ro-snmp -m -q Ram -w 90 -c 95 -f ; echo $?
Physical memory: 98%used(3818MB/3886MB) (>95%) : CRITICAL | 'Physical_memory'=3818MB;3497;3691;0;3886
2

Le script retourne bien un statut critique, la valeur du code retour étant 2.
Et maintenant le même script couplé avec negate :

# ./negate -o OK -w OK -c OK /usr/lib/nagios/plugins/check_snmp_storage.pl -H serveur1 -C ro-snmp -m -q Ram -w 90 -c 95 -f ; echo $?
Physical memory: 98%used(3819MB/3886MB) (>95%) : CRITICAL | 'Physical_memory'=3819MB;3497;3691;0;3886
0

Cette fois-ci, le code retour est 0.
Voilà donc, mission accomplie ! Nous continuons de stocker les valeurs d'utilisation de la mémoire vive, sans que celle si ne change jamais d'état coté supervision.
Ce n'est plus la RAM que nous allons superviser, mais la mémoire virtuelle (swap). Ainsi, dès que le serveur va commencer à utiliser la mémoire virtuelle, des alertes seront remontées.
Nous venons donc de voir un moyen efficace et élégant de superviser les serveurs hébergeant des applications fonctionnant sur le principe de réservation de mémoire vive.

samedi, 15 décembre 2012

Dotclear : publier vos billets depuis Libre office grâce à XML RPC

Nous allons ici voir comment configurer notre éditeur de texte Libre Office afin qu’il prenne en charge XML/RPC. Nous pourrons ainsi simplement rédiger des billets dans notre éditeur de texte et les publier directement (ou lorsque vous disposerez d’une connexion internet) sur votre blog.

Les bénéfices sont énorme en terme de facilité de mise en page ( et oui vous éditez vos billets avec un véritable éditeur de texte, du coup tout de suite c’est plus simple :) ) , gestion des images (oui oui, vous avez bien entendu ! L’outil la configuration gère également les images )

Vous pourrez d’ailleurs télécharger le fichier ODT qui a été utilisé pour générer ce billet... Si c’est pas beau ça :) !!

Dans mon exemple j’utilise Libre Office, mais d’une manière générale, il s’utilise avec la plupart des éditeurs de texte dignes de ce nom et supportant le protocole RPC/XML.

Ajout de l’extension

Cette dernière est fourni par Sun, se nomme Sun Weblog Publisher et est disponible ici.

Il vous suffit de télécharger ce dernier. Une fois sur votre disque local ; lancer Libre Office Writer. Dans le menu Outils > Gestionnaire des extensions

sbres_13555356ca-982c7.png

On clique ici sur le bouton Add et on renseigne le chemin vers le fichier sun-weblog-publisher.oxt Sun Weblog Publisher (Dans Téléchargements par défaut). Validez jusqu’à installation de l’extension.

Configuration de l’extension

Une fois l’extension installée, on relance Libre Office. Nous allons à présent pouvoir configurer l’outil. On se rend a nouceau dans le gestionnaire des extensions ( Outils > Gestionnaire des extensions )

sbres_135553499d-52fc9.png

on se positionne sur l’extension Sun Weblog Publisher et on clique enfin sur Options .

sbres_135553685f-e8fc2.png

C’est ici que nous allons déclarer les divers blogs que nous administrons et que l’on souhaite mettre à jour à travers Libre Office.

On clique donc sur Ajouter pour déclarer un nouveau blog

sbres_1355531cdd-7d77f.png

Type : on trouve ici diverses plateforme de blog nativement supportées, mais également type-mobile (xml-rpc). C’est ce choix que j’ai pour ma part utilisé pour Dotclear 2

sbres_135553e795-f415b.png

URL du serveur : cette dernière est disponible dans l’interface d’administration du blog dans la section Paramètres du blog dans la section Interface XML/RPC

il suffit donc de reporter l’adresse fournie, ainsi que les nom d’utilisateur et mot de passe

Une fois les éléments renseigné on clique sur OK et on ferme ensuite le gestionnaire des extensions.

Voilà notre site à présent ajouté avec succès, nous pouvons maintenant rédiger notre premier article.

Rédaction du billet

Avant de constater la simplicité avec laquelle il est à présent possible de publier nos article, je rappelle qu’il est (toujours !) important d’utiliser les styles appropriés au besoin, pour s’épargner toutes sortes de problèmes inutiles. Dans notre cas, il s’agit de garantir que l’export fonctionne correctement.

Ainsi les titres seront de type

Titre 1,

Titre 2,

Titre 3...

NB : pour dotclear

Les diverses mises en formes comme le gras, l’italique, surligné, barré, fonctionnent également.

Les couleurs aussi fonctionnent à merveille.

Les liens html ? Également !

Bref je pense que tout le monde a compris le principe.

Une petite précision cependant concernant le titre utilisé par Dotclear ainsi que l’url généré est défini dans les propriétés du document sur le champ titre.

Fichier > Propriétés > Onglet Description

sbres_1355535f2e-88359.png

Ainsi le titre de notre Article sera « Un titre ». le titre de l’article n’est donc aucunement basé sur le nom du fichier enregistré.

Ayant pour ma part suffisamment de contenu pour en venir au moment fatidique : la publication du billet...

Accrochez vous ! C’est balaise !

Dans le menu Fichier > Envoyer... > To Weblog

sbres_135553968c-63bf8.png

C’est tellement beau que j’en ai un p’tit pincement au cœur ! :)

vendredi, 14 décembre 2012

Un super titre

pour un super post :)

En effet voici mon premier post réalisé via XML/RPC à l’aide de live Writter… Bon pas une gloire en soit mais je découvre les outils basés sur ce protocole.

Concernant les divers liens utiles pour la mise en oeuvre de la configuration je me suis inspiré de ces pages.

Liens connexes

vendredi, 30 novembre 2012

Blog : quelques nouveautés

Un petit billet histoire de faire part de deux nouveautés apparues sur le blog. L'une plus ancienne, mais sur laquelle je n'ai pas pris le temps de communiquer, et la seconde, fraîchement débarquée ce jour.

Vous remarquerez la présence d'une section Pages dans le menu de droite, cette dernière compte pour le moment 2 pages.

  • Politique de confidentialité : L'outil me permettant d'établir des statistiques de fréquentation de mes sites, j'ai nommé Piwik, m'offre la possibilité de vous laisser le choix de ne pas participer aux statistiques. il vous suffit pour cela de vous rendre sur la page et de désactiver le suivi. Sachez cependant que l'anonimisation des données est activée sur l'instance Piwik que j’héberge.
  • Statistiques : Il s'agit ici encore d'une fonctionnalités offerte par Piwik et permettant d’intégrer des statistiques directement dans le contenu de votre site. De la sorte il est ainsi possible de publier des statistiques d'utilisation de votre site directement sur ce dernier.

Voilà pour aujourd'hui, en vous souhaitant bonne visite.

jeudi, 11 octobre 2012

Firefox : utiliser l'authentification NTLM (SSO) pour vos sites internes

J'avais déjà cherché une première fois comment passer le jeton d'authentification Windows généré à l'ouverture de ma session au navigateur Firefox que j'utilise. En effet ceci se fait de façon complètement transparente via Internet Explorer, mais ce navigateur me donnes des boutons.

Voilà donc les actions à effectuer
On lance notre navigateur Firefox et dans la barre d'adresse on saisit about:config ceci pour nous permettre d'accéder aux options avancées de configuration de Firefox.
dans la case recherche on tape : network.automatic pour n'afficher que les occurrences commençant par cette séquence.
Les deux variables sur lesquelles nous allons porter notre attention sont :
network.automatic-ntlm-auth.trusted-uris : cette variable va nous permettre de déclarer les différentes url des sites pour lesquelles le jeton d'authentification sera envoyé. Pour plus d'informations sur la syntaxe se reporter ici
network.automatic-ntlm-auth.allow-non-fqdn : lorsque l'on utilise des noms de machines sans préciser la zone, par exemple intranet au lieu de intranet.domain.com, il est nécessaire que cette valeur soit positionnée à true

Liens connexes:

lundi, 12 mars 2012

Facebook : c'est du propre

Au détour de la configuration de mon proxy je me suis rendu compte d'une chose plutôt étrange .... Sans épiloguer sur ma soirée et son déroulement, j’étais en train d'échanger avec un ami à travers mon client Pidgin. J'ai configuré ce dernier pour qu'il puisse utiliser mon compte facebook et ainsi accéder, sans utiliser l'interface, à la liste de mes contacts( pour faire plus court, j'utilise le service XMPP de facebook à travers mon client :)). J'avais donc une conversation que nous pourrions qualifier de privée. Je précise tout cela pour avoir une idée du contexte.
Au détour de la conversation je lui envoie un lien pointant vers un des sites que j’héberge sur un serveur.
Il se trouve que j'avais un fichier de log ouvert en arrière plan, je vois donc la trace de la requête de mon interlocuteur déclenchée au clic du lien que je lui ai écris précédemment.
Et là très grosse surprise... Le lien ne correspondait absolument pas à celui que j'avais renseigné...

ainsi, là où j'avais indiqué une adresse de type http://domaine.com, mon interlocuteur a reçu pour sa part ce lien http://domaine.com (l'idéal étant de copier/coller les 2 liens dans un bloc-note pour apprécier la différence).
Il est à noter que pour mon exemple j'ai utilisé un champ h aléatoire ne sachant pas à quoi il correspond mais semblant lié à mon profil personnel. Pour cette raison le résultat ici, est d'être redirigé vers une alerte facebook vous informant d'un rebond vers un autre site. Dans le cas d'un champ h valide; la redirection se fait en totale transparence. le premier champ u correspondant à l'adresse du site à atteindre, h semble correspondre à une sorte de hash entre le profil et quelque chose d'autre (ou pas). Il semble même possible de réutiliser la variable "h" en modifiant le contenu de "u".
C'est à s'y méprendre les mêmes me direz-vous. Et pourtant, l'un pointe directement chez moi, tandis que l'autre fait un petit détour par facebook pour enfin revenir chez moi. Tout ceci je le rappelle se passe sans utiliser l'interface web de facebook.
. Voici ici le protocole de tests utilisé :

Test 1

Objectif :
  • identification et tentative de localisation d'une réécriture
Contexte :
  • Les 2 clients utilisent l'interface web facebook
Validation du test :
  • client A écrit manuellement un lien et l'envoi à client B
  • client B copie/colle le lien au format texte pour visualiser le lien présent dans le href généré
  • client A copie/colle le lien au format texte pour visualiser le lien présent dans le href généré
Résultat attendu :
  • le lien reçu par client B est réécrit.
  • le lien affiché par client A n'est pas réécrit.
interprétation si le test est valide :
  • Il y a réécriture des url au travers du service Facebook semblant intervenir au moment de la réception de par client B. En effet le lien affiché dans la fenêtre de conversation du client émetteur du message n'est pas modifié.

Test 2

Objectif :
  • localisation de la réécriture.
Contexte :
  • Client A utilise un client XMPP et accède au service avec son compte Facebook.
  • Client B utilise l'interface web facebook
validation du test :
  • Client A envoie un message a client B
  • Client B envoie un message a client A
Résultat attendu :
  • le lien reçu par client A n'est pas réécrit
  • le lien reçu par client B est réécrit
interprétation si le test n'est pas valide :
  • Il y a réécriture des url et ce uniquement au travers de l'interface web facebook.

MITIGATION : Il suffit donc d'utiliser directement le service XMPP sans passer par l'interface web facebook pour ne plus subir cette réécriture d'URL.

Bien évidement, il s'agit la de collecter une fois de plus des données, on ne sait pour quel usage. Mais bon comme dirais l'autre : "t'as signé, c'est pour en chier !" :). Une des implication de la pression de la touche "Accepter" en bas de page d'inscription de votre fournisseur de service préféré...
Personnellement, ce qui me dérange ici le plus c'est qu'il s'agit clairement d'une manipulation de mon message pour en réécrire la substance... Bref encore un truc qui m’énerve ! Méchant ! Méchant facebook! Pas beau va !

Pour la solution de contournement, elle est simple :) : chiffrez vos échanges ! on ne le répétera jamais assez. Il ne s'agit pas là d'une quelconque psychose ou je ne sait quel autre argument en bois, (ah j'oubliais l’éternel "j'ai rien à cacher" ou l'excellent "tu fais des trucs pas clairs"), mais belle et bien d'une réelle alternative à toutes ces problématiques de protection des données, ou encore le respect de la vie privée ou je ne sais quoi.
Il s'agit ici de s'assurer que le service effectue son travail de fournisseur en toute neutralité, et que nous conservions la maîtrise de notre contenu. Notez bien que le principe s'applique de façon relativement transparente sur les mails ainsi que la messagerie instantané.
Utilisons donc le service que nous souhaitons, qu'il s'agisse du numéro un mondial ou de votre serveur dans votre placard, mais arrêtons de dépendre de la faiblesse de ce fournisseur. La mise en place prend certes un poil plus de temps, mais le gain est immense !
Pour faire cela,avec les outils de messagerie instantané, j'utilise le client multi protocole Pidgin avec son excellent plugin pidgin-encryption. ça prend 5 minutes à installer et c'est transparent dans l'usage quotidien. Foncez !! :D

Liens connexes :

jeudi, 19 janvier 2012

Megaupload & Co c'est fini

Voilà, c'est fini. Suite à une superbe décision dont vous trouverez le détail ici, les machines du célèbre hébergeur de contenu Megaupload ont étés saisies ce jour dans le cadre d'une investigation. Le service n'est donc plus disponible.

Liens connexes :

mercredi, 4 janvier 2012

Duck Duck Go : un moteur de recherche qui vous veut du bien

Je cherchais depuis quelques temps une alternative à Google en temps que moteur de recherche. Je me suis aujourd'hui décidé pour Duck Duck Go.

Ce dernier est très largement configurable et permet de mettre rapidement en place un moyen efficace de se prémunir de la collecte d'informations vous concernant. Pour un bref rappel des enjeux vous pourrez trouver ce superbe guide illustré disponible ici.

Configuration

Je vais ici présenter quelques options à mettre en œuvre lors du premier usage. Bon nombre des actions présentées, sont pour la plupart présenté dans la section Privacy
Sans plus attendre; commençons par le commencement :).
Pour éditer les options du moteur, nous allons nous rendre dans la section settings.
Dans la partie Result settings :
On édite le champ Région : à France
Dans la partie Privacy Settings :
On édite le champ Address Bar : à Off
On édite le champ HTTPS : à On
Dans la partie Interface Settings :
On édite le champ Advertisements : à Off
Je ne voudrais pas vous assommer avec les nombreuses fonctionnalités que comporte l'outil et vous invite donc à lire la documentation très bien faite à ce sujet. N'hésitez pas à me faire part de vos remarques ou suggestions sur la configuration de l'outil.

Intégration

Il est bien évidement possible d'intégrer ce nouveau moteur à votre navigateur.
Un module est disponible pour Firefox. Vous trouverez plusieurs déclinaisons de l'outil, j'ai pour ma part choisi Duck Duck Go SSL.
Vous pouvez ensuite modifier le comportement de la barre d'adresse pour que cette derniere utilise également votre nouveau moteur de recherche.
Pour cela, saisissez about:config dans la barre d'adresse de Firefox et recherchez l'occurrence keyword.url.
Remplacez la valeur par défaut http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q= par https://duckduckgo.com/?q=

Liens Connexes :

Pour une fois l'article est largement fourni en lien donc ça va être plutôt light.

jeudi, 22 décembre 2011

Facebook et DPC : Un pas en avant pour vos données personnelles

Le 21 décembre 2011, la DPC (l'équivalent de la CNIL française en Irlande) a rendu sa copie, après 3 mois d'audit (dont 6 jours sur site) de Facebook-Irlande, siège du célèbre réseau social.
Parce que vous êtes feignants, mais aussi, parce que je trouve important de communiquer sur ce genre de choses, voici quelques points notables que j'ai pu relever à la lecture (en diagonale :) )de ce dernier.
La partie la plus importante concerne les périodes de rétention des données collectées, et l'anonymisation de ces dernières au fil du temps. Ainsi, la période de rétention , jusqu'ici d'une durée illimitée, est ramenée à 2 ans. Au delà de cette période un processus d'anonymisation est déroulé. de la même façon, les données collectées au travers des divers add-on (J'aime, Partager, ...) sont elles aussi supprimées. Le délai est, cette fois, variable selon la façon dont elles sont collectées.
La suppression des comptes devrait, elle aussi être améliorée. Ainsi les données devront être supprimées de façon irrévocable dans un délai maximum de 40 jours après la demande.
Un des reproches récurrents, est aussi le manque de documentation sur les conditions d'utilisation, ou encore les options de sécurité présentées à l'utilisateur.

Il est tout de même important de souligner quelques points.
Le module de reconnaissance faciale permettant la suggestion d'identification lorsque vos contacts publient des photos dans lesquelles vous semblez apparaître est bien désactivé lorsque l'utilisateur désactive la fonction "Suggestions d'identifications". Voilà dans les grandes lignes les quelques points clé que j'ai pu relever.

Pour ma part, après la lecture de ce rapport je me suis empressé de parcourir les options de mon profil afin de désactiver, et supprimer, bon nombre de fonctionnalités activées par défaut et dont je n'avais même pas connaissance. Je vous invite chaudement à parcourir vos options de confidentialité. J'ai pu remarquer un gros travail sur la clarté des explications fournies pour chacune des options. Et pour les plus courageux, je vous encourage à parcourir le rapport dont le lien figure ci-dessous. Enfin pour les sceptiques, une revue est déjà planifiée pour juillet 2012.

Liens connexes :

jeudi, 3 novembre 2011

Piwik mobile: vos statistiques à portée de main

Voila quelques temps déjà que j'utilise ce merveilleux outil qu'est Piwik pour avoir un certain regard sur les statistiques des différents sites que j’héberge. Je suis tombé aujourd'hui sur un client en version mobile permettant ainsi d'acceder à l'ensemble des statistiques depuis son téléphone portable. Disponible aussi bien pour iPhone (IOS) que pour Android. Vous trouverez ici toutes les informations utiles:

mardi, 25 octobre 2011

Déménagement !

Nous y voila ! Depuis quelques temps déjà je travaille à la mise en oeuvre d'une infrastructure à la maison. ondulée et tolérante à de nombreuses pannes, je suis à présent parvenu à quelque chose de relativement mature. Ceci me permet à présent d'heberger l'ensemble de mes services directement chez moi. Voila donc chose faite, le blog, ainsi que quelques autres services, viennent d'être migré. Reste les données contenus sur un autre serveur qui seront rapatriés ultérieurement. Vous apprécierez au passage le reverse de mon IP :)

jeudi, 29 septembre 2011

Firefox 7 : afficher http et https dans les url

Vous l'aurez certainement remarqué mais dans firefox 7 le http ou https du début des adresses internet... Allez comprendre ... Ceci étant dit pour faire réapparaitre le début de vos adresses voila comment procéder: saisissez dans la barre d'adresse "about:config" passez ensuite la variable

browser.urlbar.trimURLs=false

pour la couleur c'est cette variable qu'il faut modifier

browser.urlbar.formatting.enabled=false

lundi, 6 juin 2011

Gnome et scrot : Capture de zones d'écran

Nous allons voir ici comment ajouter une fonction de capture d'une zone spécifique de l'écran. Pour rappel il est par défaut possible de faire deux type de captures:

  • La touche PrintScreen capture l'intégralité de l'écran
  • la combinaison Alt + PrintScreen capture l'intégralité de la fenêtre présente sous le curseur.

Nous allons ajouter une troisième combinaison de touche, qui nous permettra de sélectionner une zone, à l'aide du curseur de la sourie, délimitant la zone à capturer.

pré-requis

scrot doit être installé. la procédure est pour un environnement gnome. elle est donc à adapter pour d'autres environnements.

Mise en œuvre

Nous allons créer un script contenant les informations suivantes :

~/script$ cat screenshot.sh 
#!/bin/sh 
SCREEN_PATH="$HOME/Screenshot"
DATE=$(date +%Y-%m-%d-%H:%M:%S) 
sleep 1 && scrot -s -b $SCREEN_PATH/screenshot_$DATE.png 
On prend soin de rendre le script executable
~/script$ chmod u+x screenshot.sh

Nous allons ensuite créer un raccourci clavier afin d'utiliser simplement cette fonctionnalité : Système > Préférences > Raccourcis Clavier. On clique sur ajouter scrot_1.png on renseigne ensuite les informations suivantes (à adapter selon votre configuration) scrot_2.png Il ne reste plus qu'à sélectionner la combinaison de touches de votre choix. Pour ma part j'ai choisi la combinaison Ctrl + PrintScreen Je dois dire que je suis assez satisfait du résultat. Il me suffit à présent de taper la combinaison Ctrl + PrintScreen pour sélectionner une zone de l'écran à capturer.
Enjoy !

jeudi, 2 juin 2011

find : optimisation de traitements

On ne fini jamais d'en apprendre sur la merveilleuse commande qu'est find. Aujourd'hui grâce au remarques de jsz', voici ce que j'ai pu constater :

$ time find Bureau/ -type f -exec ls {} >/dev/null \;
real    0m13.386s
user    0m21.149s
sys     0m8.297s
$ time find Bureau/ -type f -exec ls {} >/dev/null +
real    0m0.205s
user    0m0.116s
sys     0m0.088s

la subtilité réside ici dans la façon dont sont traités les occurrences retournées par find. Dans le premier cas les occurrences sont traitées de façon unitaire; ainsi pour n occurrences nous lancerons n fois la commande ls.
Dans le second cas, nous utilisons la capacité de ls à traiter simultanément plusieurs chemins. Ainsi pour n occurrences la commande ls ne sera exécutée qu'une unique fois. il y a concaténation des occurrences pour ne former qu'une unique ligne.
Pour la partie optimisation, et bien les temps de traitement parlent d'eux-même.

vendredi, 20 mai 2011

Firefox : optimisation des bases SQlite

J'entends beaucoup parler d'optimisation de navigateur avec des manipulations plus ou moins pertinentes à effectuer sans que le gains ne soit réellement mesuré. Aujourd'hui je vous propose une optimisation relativement triviale visant à nettoyer les bases SQlite utilisées par Firefox pour y stocker diverses informations.

Les pré-requis:

  • sqlite3 doit être installé
  • Firefox doit être fermé au moment des manipulations, faute de quoi les commandes à venir se solderont par un message vous informant que la base est verrouillée.

Mise en œuvre

les fichiers relatifs au profil utilisateur sont, par défaut, stockés dans le répertoire ~/.mozilla/firefox/*.default/. Nous allons donc optimiser tous les fichiers sqlite présents dans ce répertoire à l'aide de la commande suivante:

$ find ~/.mozilla/firefox/*.default/ -iname "*.sqlite" -exec sqlite3 {} 'VACUUM;' \;

Pour comprendre l'opération effectuée il suffit de se reporter à la documentation sqlite. La directive VACUUM vise à reconstruire dans son intégralité la base sqlite en compactant cette dernière au maximum. Pour le détail des actions effectuées par la commande je vous invite à lire l'excellente présentation de la documentation officielle. http://www.sqlite.org/lang_vacuum.html Voici une présentation de chacun des fichiers sqlite afin de mieux comprendre (Merci Gniarf):
urlclassifier3.sqlite : c'est la base qui est fournie par google pour la fonction anti-malware, ca pèse facilement 23 Mo a la sortie d'une installation. Si la fonctionnalité est désactivé vous n'avez donc pas besoin de stocker cette base.
cookies.sqlite : va contenir l'ensemble des cookies stockés par les différents sites visités.
places.sqlite : contient l'historique des pages visitées donc avec une rétention de 90 jours, ce fichier peut facilement atteindre 20Mo. Vous pouvez trouver une présentation exhaustive de cette base ici.
key3.db : c'est la base de mots de passes enregistrés dans firefox. Cette dernière est chiffrées et ne peut donc être accédée :

sqlite> SELECT name FROM sqlite_master WHERE type = "table";
Error: file is encrypted or is not a database

signons.sqlite : il fonctionne apparemment de paire avec la base key3.db. ce dernier n'est pas chiffré. On peut donc imaginer qu'il est utilisé pour accéder aux informations chiffrées de la base key3.db
downloads.sqlite : contient la liste de téléchargements lancés dans le navigateur.
content-prefs.sqlite : Contient les préférences individuelles appliquées à des pages. ici pour plus de détails le contenu (désolé la page n'était disponible que dans le cache google au moment ou j'écris).
premissions.sqlite : contient l'ensemble des préférences appliquées sur un site. On y liste donc les sites autorisés à utiliser ou non les cookies, ou encore afficher ou non des images.
formhistory : contient l'historique des formulaires saisis dans votre navigateur.
search.sqlite : contient la liste des différents moteurs de recherche intégrés au navigateur.
webappsstore.sqlite : contient les données au format DOM générées par les différents sites. plus de détails ici

Maintenant est-ce vraiment efficace ?

J'ai effectué mes tests sur un navigateur Firefox fraichement installée, je n'ai donc pas observé de changement significatif de performances. Cependant les chiffres parlent d'eux même. Voici donc les variations de taille que j'ai pu observer sur les différents fichiers SQLite une fois le nettoyage des base effectué. Optimisation des bases SQLite Firefox On constate que 3 bases (cookies.sqlite, urlclassifier3.sqlite, places.sqlite) ont fait l'objet d'un sérieux nettoyage et j'avoue avoir été surpris d'un tel gain après un temps si court d'utilisation. J'imagine donc largement à quel point cette optimisation peut s'avérer bénéfique dans le cas d'une utilisation prolongé de Firefox. J'ai entamé un suivi des bases sqlites constitutives du profil, nous pourrons ainsi voir l'évolution de ces dernières dans le temps et générer des jolis graphiques :). Voici donc comme promis un graphique représentant le bénéfice du compactage des bases dans le temps. compactage de base sqlite pour la version en taille originale vous pouvez la trouver ici

Liens connexes

mercredi, 24 novembre 2010

Pidgin : le certificat omega.contacts.msn.com n est plus valide

SI vous aussi votre client pidgin se plaint d'une erreur de certificat au moment de la connexion à votre compte de messagerie hotmail; il vous suffit simplement de récupérer le nouveau certificat en vigueur. Pour se faire rien de plus simple. Ouvrez un terminal et tapez simplement la commande suivante:

wget "http://files.andreineculau.com/projects/pidgin/omega.contacts.msn.com.txt" -O ~/.purple/certificates/x509/tls_peers/omega.contacts.msn.com

J'ai péché l'info ici quand même. Merci à l'auteur pour le tip.

vendredi, 15 octobre 2010

UCI : l'Interface de Configuration Unifié d'OpenWrt

Voila un outil qu'il est sympathique. En effet UCI est un outil en ligne de commande permettant de facilement configurer votre système OpenWrt. Voici quelques exemples de configuration, libre à vous de parcourir les documentations existantes pour trouver votre bonheur.

Configuration du serveur DNS pour les clients DHCP:

Mon service DNS étant hébergé sur une autre machine que le routeur OpenWrt, il est nécessaire que les clients récupère l'adresse du service DNS afin de pouvoir l'interroger.
Nous allons donc fixer le DNS primaire et secondaire pour l'ensemble des clients DHCP de la zone lan.

root@OpenWrt:~# uci add_list dhcp.lan.dhcp_option="6,192.168.10.254,192.168.10.1"

s'agissant d'une liste de paramètres, on utilise la directive add_list. Enfin pour les options DHCP il suffit de se repporter à la RFC relative à DHCP : 2132 ainsi qu'aux options disponibles dans dnsmasq. on applique ensuite notre nouvelle configuration

root@OpenWrt:~# uci commit dhcp

Puis on vérifie

root@OpenWrt:~# uci show dhcp.lan
dhcp.lan=dhcp
dhcp.lan.interface=lan
dhcp.lan.start=100
dhcp.lan.limit=150
dhcp.lan.leasetime=12h
dhcp.lan.dhcp_option=6,192.168.10.254,192.168.10.1

Il ne nous reste donc plus qu'à relancer le service DHCP pour que la nouvelle configuration soit appliquée:

root@OpenWrt:~# /etc/init.d/dnsmasq restart

Configuration du hostname. Par défaut il est défini à "OpenWrt" Nous allons donc parcourir la configuration à la recherche de cette occurrence:

root@OpenWrt:~# uci show | grep OpenWrt
--luci.themes.OpenWrt=/luci-static/openwrt.org--  <--- correspond au thème graphique nommé  "OpenWrt" et disponible dans Luci 
system.@system[0].hostname=OpenWrt  <--- correspond au nom de l'hôte
uhttpd.px5g.commonname=OpenWrt  <--- correspond au Common Name utilisé lors de la génération du certificat SSL
root@OpenWrt:~#

Nous allons donc éditer les deux variables ainsi:

root@OpenWrt:~# uci set system.cfg02f02f.hostname=courgette
root@OpenWrt:~# uci set uhttpd.px5g.commonname=courgette
root@OpenWrt:~# uci commit dhcp

Et voila le tour est joué Je vous encourage à parcourir la documentation disponible sur cet outil fort sympatique.

Liens connexes:

mercredi, 22 septembre 2010

LVM : migration de données ou comment remplacer un disque defectueux

Voila déjà quelques temps que j'utilise LVM pour gérer mes volumes de stockage.

Extrêmement flexible ce système permet de grandir "à la demande" soit avec l'ajout de volume physique, soit avec la simple allocation d'espace disque supplémentaire.

Nous allons aujourd'hui voir comment migrer des données avec la couche LVM.

Le plan:

J'ai récemment fais l'acquisition d'un NAS Synology DS1010+ offrant, entre autre, la possibilité de publier des volumes via iSCSI. L'idée est donc de déporté tout les volumes de stockage depuis les disques locaux de mon serveur vers le NAS. De la sorte les volumes présents sur mon serveur pourront bénéficier des performances et tolérance de panne offertes par le NAS.

J'ai donc utilisé LVM pour migrer tout ce beau monde.

L'action

je passe sur la configuration du volume iSCSI que j'ai déjà évoqué dans un article précédent. Une fois le volume iSCSI présenté au serveur le reste des action est relativement simple.

Dans un premier temps nous ajoutons le nouveau volume, /dev/sdb dans mon cas, au système LVM

routeur ~ # pvcreate /dev/sdb

On l'ajoute ensuite au VG à migrer

routeur ~ # vgextend shares /dev/sdb

On vérifie

routeur ~ # pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/hdb1  shares lvm2 a-   186,30g      0
  /dev/hdc1  shares lvm2 a-   233,75g      0 
  /dev/sdb   shares lvm2 a-   300,00g 300,00g

On migre ensuite les données d'un PV vers un autre: Attention; pour une migration des données en cours d'utilisation, allez faire un tour dans le man. Pour ma part j'ai démonté les partitions avant l'action.

routeur ~ # pvmove /dev/hdb1 /dev/sdb

l'action est relativement longue selon la quantité de données à migrer.

On observe à présent que l'ensemble du volume /deb/hdb1 est libre.

routeur ~ # pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/hdb1  shares lvm2 a-   186,30g 186,30g
  /dev/hdc1  shares lvm2 a-   233,75g      0 
  /dev/sdb   shares lvm2 a-   300,00g 113,75g

On peut à présent le sortir du Volume Group auquel il appartient

routeur ~ # vgreduce shares /dev/hdb1
  Removed "/dev/hdb1" from volume group "shares"

Pour ensuite le liberer totallement du système LVM

routeur ~ # pvremove /dev/hdb1
  Labels on physical volume "/dev/hdb1" successfully wiped

On observe à présent que le volume ne fait plus partie des volumes disponible et peut donc être retiré du serveur en toute tranquillité.

routeur ~ # pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/hdc1  shares lvm2 a-   233,75g      0 
  /dev/sdb   shares lvm2 a-   300,00g 113,75g

Pour information, J'ai entendu, sans le tester, que la même chose se fait avec lvconvert en utilisant la notion de miroir.

mardi, 21 septembre 2010

Recyclage Flasher sa NeufBox 4 avec OpenWRT

En faisant du ménage je suis tombé sur un vestige de mon ancien abonnement internet. Une jolie NeufBox toute fonctionnelle mais qui n'offrait pas de grandes possibilités en terme de configuration.

"Ce serait vachement bien si je pouvais installer Linux dessus pour exploiter pleinement la bête".

Et après quelques recherches je tombe sur la perle ! Ce site merveilleux qu'est http://www.neufbox4.org/, traite exactement de ce que je souhaite faire.

Je vous invite à parcourir ce dernier ou vous trouverez de nombreuses informations utiles pour les manipulations à venir.

Ayant déjà eu à faire à des image d'équipements réseau à installer par différents moyens comme TFTP, Console et autre, je décidais d'utiliser la méthode via CFE. Cette méthode est en effet, à mes yeux, la plus simple et facile à mettre en œuvre, et offrant l'avantage majeur de pouvoir effectuer des retours en cas de plantage.

Premier frein: il faut un câble spécifique pour se connecter au port série, pas facile à trouver dans le commerce. pour ma part j'ai choisi le R232-3V3 qui est extrêmement pratique et pourra être utilisé sur d'autres équipements par la suite (selon les dires d'Obinou :)).

Une fois le câble acquis il a fallu jouer un peu du fer à souder pour ajouter les connecteurs du port console qui sont obstrués par le fabriquant. Toute les informations relatives à la gestion du port série sont disponibles ici:

http://www.neufbox4.org/wiki/index.php?title=Port_s%C3%A9rie

Mon choix s'est ensuite porté sur OpenWRT qui est un projet relativement abouti et dont l'objectif est d'offrir une solution libre de système d'exploitation d'équipements réseau.

voici les informations pour la compilation du bousin.

http://www.neufbox4.org/wiki/index.php?title=OpenWrt.

une fois l'image compilé avec les options qui vont bien, il ne reste plus qu'à flasher la Neufbox4 via TFTP

L'opération terminée, la Box reboot toute seule et charge openWRT.

Voila votre box est à présent libéré et ne demande plus qu'à chanter !!

Nous verrons dans des prochains articles les possibilités de notre nouvelle NeufBoxRemix :)

  • Installation d'une interface Web d'administration
  • Mise en oeuvre d'une DMZ
  • Déploiement d'un outil de monitoring et de statistiques

Un grand grand (grand, grand,... ) merci à Obinou, créateur du projet, et dont la disponibilité et la générosité, m'ont permis de mener à bien cette petite bidouille.

Liens connexes:

- page 1 de 5