<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Content Rewrite on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/content-rewrite/</link><description>Recent content in Content Rewrite on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Fri, 25 Jul 2014 14:14:08 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/content-rewrite/index.xml" rel="self" type="application/rss+xml"/><item><title>Vulture 2.0.8 : des nouveautés et des impacts sur la WEBUI de Shinken</title><link>https://blog.zwindler.fr/2014/07/25/vulture-2-0-8-des-nouveautes-et-des-impacts-sur-la-webui-de-shinken/</link><pubDate>Fri, 25 Jul 2014 14:14:08 +0000</pubDate><guid>https://blog.zwindler.fr/2014/07/25/vulture-2-0-8-des-nouveautes-et-des-impacts-sur-la-webui-de-shinken/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/12/logo2-white1.webp" alt="Featured image of post Vulture 2.0.8 : des nouveautés et des impacts sur la WEBUI de Shinken" /&gt;&lt;p&gt;Fin mai, la version 2.0.8 est sortie et a apporté un lot impressionnant de fonctionnalités supplémentaires (ainsi que quelques bugfixes d’usages)&amp;hellip; ainsi que quelques petites surprises pour ma configuration, et notamment pour publier la WebUI de Shinken au travers de Vulture.&lt;/p&gt;
&lt;p&gt;Mais le jeu en vaut largement la chandelle, regardez plutôt &amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Réécriture de la documentation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OMG ! Vulture dispose ENFIN d’une documentation (relativement complète) pour CHAQUE page de l’interface d’administration. Cela permet de remettre au clair les passages qui n’avaient pas été bien compris lors de mes premières installs et corriger quelques erreurs dues au manque d’information sur les versions précédentes.&lt;/p&gt;
&lt;p&gt;A noter, si vous commencez, il faut aller sur ces deux pages, avant de lire la doc en entier, pour ne pas être perdu :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://www.vultureproject.org/documentation/installation/" target="_blank" rel="noopener"
&gt;Documentation d&amp;rsquo;installation de Vulture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://www.vultureproject.org/premiers-pas-avec-vulture/" target="_blank" rel="noopener"
&gt;Premiers pas avec Vulture (pas indiqué assez clairement je trouve, ça devrait être le PREMIER lien après l’install)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Refonte intégrale du packaging&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Refonte intégrale du packaging : Vulture s’installe désormais simplement avec 3 paquets&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ENFIN bis ! Et ça fonctionne bien, fini les galères pour installer les dépendances. Par contre la liste des distribs gérées se limite à sont plus simple appareil : CentOS 6.5 et Debian 7.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mise à jour automatique des configurations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bon&amp;hellip; ça, ça fait un moment qu’on nous le promet, et j’ai du faire une fausse manipulation certainement car comme d’habitude&amp;hellip; j’ai tout perdu&amp;hellip; Si vous avez des retours positifs, je suis preneur ;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Support d’une URL par défaut dans les interfaces&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En voilà une bonne idée ! Cependant, j’ai eu à l’inverse la mauvaise idée d’en indiquer une pour mon interface, alors que cette appli/URL n’existait pas, et je me suis retrouvé avec de gros soucis sur mon portail, qui ne marchait tout simplement plus.&lt;/p&gt;
&lt;p&gt;J’avais des erreurs au niveau des logs des applications, avec des messages d’erreurs faisant état d’une application inconnue depuis le fichier Core::AuthzHandler.&lt;/p&gt;
&lt;p&gt;Je le re-testerai une autre fois, pour voir, mais je me demande s’il ne manque peut être des contrôles vu que c’est une nouvelle fonctionnalité. Si vous n’en avez pas besoin, je vous conseille de ne pas l’utiliser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plugins – Transhandler&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Suite à l’installation de la 2.0.8 de Vulture, je n’arrivais plus à faire fonctionner la WebUI de Shinken. J’arrivais à avoir la mire d’authentification, mais pas les images et le CSS.&lt;/p&gt;
&lt;p&gt;Après dépilage des logs, j’ai fini par remarquer que les connexions faisant appels au CSS et aux images (de type static/*) se retrouvaient redirigés sur le serveur où est installé Vulture, et pas sur le serveur Shinken où elles sont situées.&lt;/p&gt;
&lt;p&gt;Après vérification, j’ai trouvé avec étonnement que le plugin TransHandler STATIC static/* livré par défaut lors de l’install était appliqué à toute mes applis, &lt;strong&gt;alors que cette règle n’est normalement appliqué à AUCUNE application&lt;/strong&gt; (paramètre positionné à None)**. [Edit] En fait selon l’équipe de Vulture, c’est normal, quand on a la colonne « Application » à « None », ça signifie que ça s’applique à toutes les applications [/Edit]&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;La documentation fait bien état de ce plugin, qui sert effectivement à mettre en local sur le serveur qui héberge Vulture toutes les ressources statiques (&lt;a class="link" href="http://www.vultureproject.org/documentation/configuration/configuration-des-applications-web/composants-plugins/plugins-transhandler/" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;J’ai désactivé ce plugin, et tout est rentré dans l’ordre. &lt;strong&gt;[Edit]&lt;/strong&gt; Il semblerait que cela soit plus compliqué que cela. Ce contournement provoque notamment des effets de bord sur le portail. J’ai ouvert un thread sur le google group de vulture à ce sujet.&lt;strong&gt;[/Edit]&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Will not rewrite (Rewrite Content) this content-type: application/json&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une fois Shinken de nouveau disponible, ce n’était pas terminé pour autant. Visiblement, depuis la 2.0.8 (peut être avant mais je n’ai pas remarqué en 2.0.4), le plugin de réécriture de contenu de la page à la volée &lt;em&gt;Rewrite Content&lt;/em&gt; ne prend plus en charge l’ensemble des contenus par défaut. Cela se traduit par une page web qui n’est simplement pas réécrite (on retrouve les URL privée de PNP dans la page Shinken) et par le message suivant dans le fichier de log&lt;/p&gt;
&lt;p&gt;Le log est plutôt explicite, et la doc aussi (&lt;a class="link" href="http://www.vultureproject.org/documentation/configuration/configuration-des-applications-web/composants-plugins/reecriture-de-contenu" target="_blank" rel="noopener"
&gt;vultureproject.org/documentation/configuration/configuration-des-applications-web/composants-plugins/reecriture-de-contenu&lt;/a&gt;/) !&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vulture ne pourra altérer que les contenus dont le &lt;em&gt;content-type&lt;/em&gt; est l’un des suivants (il est cependant trivial d’en ajouter d’autres, contacter l’équipe de développement pour signaler un type non géré)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Les types sont les suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;text/xml&lt;/li&gt;
&lt;li&gt;text/html&lt;/li&gt;
&lt;li&gt;application/vnd.ogc.wms_xml&lt;/li&gt;
&lt;li&gt;text/css&lt;/li&gt;
&lt;li&gt;application/x-javascript&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J’ai donc signalé ce manque à l’équipe mais en attendant qu’ils publient un patch, vous pouvez simplement ajouter dans l’expression régulière &lt;em&gt;application/json et text/javascript&lt;/em&gt; ligne 138 du fichier &lt;em&gt;/opt/vulture/lib/Vulture/Plugin/Plugin_OutputFilterHandler.pm&lt;/em&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;diff /opt/vulture/lib/Vulture/Plugin/Plugin_OutputFilterHandler.pm*
138c138
&amp;lt; if ($r-&amp;gt;content_type ne &amp;#39;&amp;#39; and $r-&amp;gt;content_type !~ /(text/xml|text/html|application/vnd.ogc.wms_xml|text/css|application/x-javascript|text/plain|application/json|text/javascript)/){
---
&amp;gt; if ($r-&amp;gt;content_type ne &amp;#39;&amp;#39; and $r-&amp;gt;content_type !~ /(text/xml|text/html|application/vnd.ogc.wms_xml|text/css|application/x-javascript|text/plain)/){
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>[En bref] Sortie de Vulture 2.0.6</title><link>https://blog.zwindler.fr/2013/08/22/sortie-de-la-2-0-6-de-vulture/</link><pubDate>Thu, 22 Aug 2013 19:38:28 +0000</pubDate><guid>https://blog.zwindler.fr/2013/08/22/sortie-de-la-2-0-6-de-vulture/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/12/logo2-white1.webp" alt="Featured image of post [En bref] Sortie de Vulture 2.0.6" /&gt;&lt;h2 id="sortie-de-vulture-206"&gt;Sortie de Vulture 2.0.6
&lt;/h2&gt;&lt;p&gt;Dans le genre news pas très fraîche, je voudrais la sortie Vulture 2.0.6, vieille d’environ 2 mois&amp;hellip; &lt;a class="link" href="http://www.vultureproject.org/2013/07/sortie-de-vulture-2-0-6/" target="_blank" rel="noopener"
&gt;Sortie de Vulture 2.0.6&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le changelog fait état de la correction de 3 bugs et l’ajout de quelques petites features sympa. Je ne sais pas si c’est les mises à jours des dépendances (ou les modifications de celles ci?), mais j’avais plusieurs comportements étranges sur mes vulture (Debian et CentOS de test) qui semblent aujourd’hui être de l’histoire ancienne!&lt;/p&gt;
&lt;p&gt;Comme d’habitude avec Vulture, mise à jour = suppression de la base de données. Vous aurez donc tous vos paramétrages à refaire, mais personnellement, je trouve que le jeu en vaut la chandelle dans ce cas précis.&lt;/p&gt;
&lt;p&gt;Sachez aussi que normalement cela devrait être la dernière fois si l’on en croit la doc d’install de Vulture.&lt;/p&gt;
&lt;p&gt;A tester la prochaine fois, j’ai hâte de ne plus avoir besoin de tout refaire à chaque fois !&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Activation de django-evolution&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Depuis la version 2.0.6, il est possible d’activer l’application django-evolution sur vulture, qui permettra une mise à jour de la base de données lors des mises à jour.&lt;/p&gt;
&lt;p&gt;Afin de l’utiliser, il faut d’abord l’installer:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;easy_install -U django_evolution
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;N’hésitez pas à remonter à la dev-list toutes les anomalies que vous pourriez rencontrer. Ils sont assez réactifs.&lt;/p&gt;</description></item><item><title>MàJ : Publier sur le WAN la WebUI de Shinken via Vulture (2.0.4+)</title><link>https://blog.zwindler.fr/2012/11/17/maj-publier-sur-le-wan-la-webui-de-shinken-via-vulture-2-0-4/</link><pubDate>Sat, 17 Nov 2012 17:45:15 +0000</pubDate><guid>https://blog.zwindler.fr/2012/11/17/maj-publier-sur-le-wan-la-webui-de-shinken-via-vulture-2-0-4/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/12/logo2-white1.webp" alt="Featured image of post MàJ : Publier sur le WAN la WebUI de Shinken via Vulture (2.0.4+)" /&gt;&lt;h2 id="vulture-et-shinken-encore"&gt;Vulture et Shinken, encore
&lt;/h2&gt;&lt;p&gt;Petit update de l’article &lt;a class="link" href="https://blog.zwindler.fr/2012/10/21/publier-sur-le-wan-la-webui-de-shinken-via-vulture/" &gt;Publier sur le WAN la WebUI de Shinken via Vulture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Depuis la mise à jour de vulture en 2.0.4, il est possible d’avoir des virtuals hosts, qui évitent ainsi le besoin d’avoir deux URLs distinctes du point de vue FQDN pour la WebUI et pour pnp4nagios.&lt;/p&gt;
&lt;p&gt;On se retrouve donc avec deux applications comme suit :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Shinken - shinken.vulture.fr - http://@IP_shinken:7767&lt;br&gt;
Shinken pnp4nagios - shinken.vulture.fr/pnp4nagios - http://@IP_shinken/pnp4nagios&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ATTENTION : Le « / » à la fin de pnp4nagios dans l’URL privée est très important&lt;/p&gt;
&lt;p&gt;Pensez à modifier vos filtres de réécriture d’URL à la volée pour qu’il pointe bien vers cette URL.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2012/11/rewritepnp_new.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;C’est beaucoup plus propre avec un FQDN unique&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Petite note additionnelle&lt;/strong&gt; : Attention pour ceux qui sont en 2.0.X avant 2.0.3, la mise à jour doit se faire par un réinstallation. Pour éviter de devoir tout refaire à la main, l’idéal est de désinstaller vulture en ayant préalablement copié la base de données, d’installer la nouvelle version, puis de mettre manuellement à jour la base de données.&lt;/p&gt;
&lt;p&gt;La partie « export/import » de la configuration dans vulture fait planter vulture si la base a changé de version entre l’export et l’import (car la base de données n’est pas identiques). Tout sera planté ;-)&lt;/p&gt;</description></item><item><title>Publier sur le WAN la WebUI de Shinken via Vulture</title><link>https://blog.zwindler.fr/2012/10/21/publier-sur-le-wan-la-webui-de-shinken-via-vulture/</link><pubDate>Sun, 21 Oct 2012 19:13:14 +0000</pubDate><guid>https://blog.zwindler.fr/2012/10/21/publier-sur-le-wan-la-webui-de-shinken-via-vulture/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/12/logo2-white1.webp" alt="Featured image of post Publier sur le WAN la WebUI de Shinken via Vulture" /&gt;&lt;p&gt;Ceux d’entre vous qui me suivent savent déjà que je suis de manière avide tous les développements du projet Shinken, un outil de supervision compatible avec Nagios, mais qui apporte des fonctionnalités de haute dispo et de vue business bien supérieures à ce qu’on peut faire simplement avec Nagios. Depuis quelques temps, les développeurs de Shinken ont beaucoup bossé sur une interface plus épurée et pourtant plus puissante que celle de Nagios (voire même Centreon pour certaines idées) en HTML 5.&lt;/p&gt;
&lt;p&gt;Dans les débuts de cette interface, j’ai eu le plus grand mal à la faire passer au travers de mon web proxy applicatif personnel (Vulture). Aujourd’hui, avec la stabilisation du code de la WebUI de Shinken et aussi une meilleure compréhension des mécaniques de vulture, j’ai réussi à la faire passer sur Internet et je peux donc consulter à tout instant l’état de mon infra perso, ce qui, vous en conviendrez, est une nécessité absolue.&lt;/p&gt;
&lt;p&gt;Mais trêves de bavardages. La première chose que je tiens à dire, c’est que cet articule ne couvrira pas l’installation de Shinken, pour la bonne et simple raison que j’ai horreur d’écrire des articles quand des blogs/forum/wiki existent déjà pour dire la même chose. Pour rappel :&lt;/p&gt;
&lt;p&gt;Si vous souhaitez installer Shinken, vous n’avez qu’à exécuter la commande suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://web.archive.org/web/20130120075004/http://www.shinken-monitoring.org/download/" target="_blank" rel="noopener"
&gt;Page de download de Shinken (lien mort, remplacé par Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour configurer Shinken&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://web.archive.org/web/20130323210053/http://www.shinken-monitoring.org/wiki/shinken_10min_start" target="_blank" rel="noopener"
&gt;10 Minute Shinken Installation Guide (lien mort, remplacé par Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Passons maintenant aux choses sérieuses. Dans un premier temps, vous avez installé et configuré Shinken, il fonctionne, et vous pouvez ouvrir votre WebUI en local&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2012/10/shinken_webui.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le dashboard classique de l’outil de supervision de base. C’est la moins sexy des vues de Shinken mais je reste un peu vieux jeu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maintenant, tout se passe côté Vulture. Je pars du principe que vous disposer d’un nom de domaine (on n’a qu’à prendre vulture.fr, au hasard), et que vous avez mappé les adresses suivantes sur l’IP depuis votre domaine vers votre serveur vulture&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;portal.vulture.fr&lt;/li&gt;
&lt;li&gt;shinken.vulture.fr&lt;/li&gt;
&lt;li&gt;pnp.vulture.fr&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous l’aurez certainement deviné, la première sert au portail et est rattaché à la définition de l’interface vulture. Tout arrivera sur cette interface (pour ceux qui en ont plusieurs, pour les autres qui n’en ont qu’une, c’est évident). Cependant pour les deux autres, vous pouvez remarquer que j’ai été obligé d’utiliser deux noms différents pour ma WebUI (au moins dans un premier temps, en attendant de trouver une meilleure façon de faire). Et pour cause&amp;hellip;&lt;br&gt;
Malheureusement, la WebUI utilise un composant python qui génère du code HTML 5 à la volée, en écoute sur le port 7767. Cependant, pour compléter un peu la vue des services et notament pour ce qui est des perfdata, l’équipe de Shinken à pris le parti de réutiliser le travail de pnp4nagios, qui est intégré directement dans l’interface. Or, pnp4nagios est un composant web tout ce qu’il y a de plus basique, qui tourne dans un apache sur le pour 80 (ou n’importe quelle autre port, on s’en fiche, juste pas le 7767).&lt;/p&gt;
&lt;p&gt;Du coup, vu de vulture,  j’ai été contrains à créer deux applications, et donc à leur donner deux noms distincts. C’est là la partie qu’il reste à améliorer. Il est surement possible de faire mieux, pour l’instant je n’ai pas trouvé&amp;hellip;&lt;/p&gt;
&lt;p&gt;Une fois nos deux applications définies dans vulture, il reste encore un petite opération pour que le tout fonctionne. A l’heure actuelle, le code de Shinken à la facheuse tentance à générer des liens et à rediriger automatiquement vers des pages via des URLs absolues&amp;hellip; du type http://@IP_locale/webui. En local, votre navigateur saura résoudre cette  IP privée, mais pas sur Internet. C’est pourquoi nous allons demander à vulture de réécrire tous les contenus qui posent problèmes à la volée. Pour cela il faut aller dans le menu « Plugin de réécriture de contenu ». Il faudra transformer toutes les requêtes qui sont en HTTP en local en HTTPS derrière vulture, et transformer les URL pnp pour qu’elles pointent vers la bonne application.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2012/10/rewritewebui.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Shinken crache des liens HTTP simple toutes les 30 secondes, ce qui est fâcheux quand votre vulture écoute sur du HTTPS&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2012/10/rewritepnp.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;la webui génère de moches adresses IP locales que vulture n’ose pas modifier sans notre accord explicite&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une fois ces étapes réalisées, vous devriez pouvoir afficher la webui derrière votre vulture comme si vous étiez en local. Reste donc à accepter les certificats autosigner, à s’authentifier dans la WebUI PUIS dans pnp4nagios, et le tour est joué. Et comme vulture est un SSO en plus d’être un firewall applicatif, il sera aussi possible de bypasser ces deux authentifications, mais ceci fera l’objet d’un article ultérieur (quand j’aurai pris le temps de comprendre comment ça fonctionne)&lt;/p&gt;</description></item></channel></rss>