Archives de catégorie : Informatique

Apparition d’un trac et d’un dépôt Git

J’ai un peu merdé mais je viens d’installer sur mon pack 1and1 duo essentiel un trac (en fait le logiciel traq) et un dépôt git …les choses sérieuses commencent 😉
Le lien vers le trac « Les projets de Bertrand »
En fait ces deux opérations viennent de donner un coup de frein à mes tests de vps ?
Entre avoir la charge de gestion d’un vps (et oui parfois ça rame) et la tranquillité .. je crois que je vais opter pour la tranquillité 😉

hacking Expressgate eeepc

Finalement au bout de quelque temps j’ai réussi à en faire ce que je voulais … mais pour ça il faut retrouver pas mal d’anciennes versions et ça n’a pas été le plus facile.
J’ai donc maintenant un navigateur avec adblock et java …. plus la possibilité d’ouvrir d’ajouter des programmes en php sur la machine.
Au cours de mes investigation j’ai vu qu’il y avait la possibilité de mettre un fichier addon-xterm.bin sous ASUS.SYS pour activer xterm, mais je ne suis pas arrivé au bout visiblement cet addon est codé et décodé par un programme appeler xterm_dec. Un coup de strings sur l’exécutable m’a montré la présence d’un clé de codage (en clair dans le code).
Finalement il a été plus simple de recréer un va-xterm.sqx. pour cela le plus compliqué a été de retrouver un paquet debian xterm pour etch. On trouvera son bonheur sous snapshot debian.
le mieux est de repartir d’un squashfs-root précédement récupéré. D’extraire dans ce répertoire squashfs-root d’un coup depkg-deb extract. Puis on recrée un squashfs que l’on dépose dans ASUS.SYS. Un coup de touch ASUS.SYS/addon-xterm.bin arrêt de la machine et on relance.
une fois expressgate lancé on trouve dans la barre de lancement trois icône pour lancer xterm. ça doit marcher ™. On en profite pour récupérer sous usr/share une archive xterm…tgz ..le contenu nous permettra de mettre à jour le squashfs va-xterm. Je vous laisse découvrir le contenu …du répertoire applications que fous mettrez dans usr/share de votre squashfs-root.

Tant que l’on est dans xterm on en profite pour lancer firefox -safe-mode afin de désactiver le plugin splashtop qui empêche de charger les extension.
et plus qu’à aller chercher les anciennes versions des plugins.

pour gagner du temps vous pouvez télécharger un archive en tgz ou en zip. Dans cette archive il y a un fihier version32 qui est destiné à remplacer le fichier version qui est sous c:ASUS.SYS et que vous aurez bien pris soin de sauvegarder et un fichier va-xterm.sqx à déposer sous c:ASUS.SYS …

Première modifications à expressGate/splashtop

Cet article n’est qu’un compte rendu rapide du comment faire. Il s’agit de l’application des informations issue du forum phoronix. Pour plus d’infomation vous pouvez lancer une recherche sur expresgate hacking. Cette opé concerne expressgate sur eeepc où celui ci est stocké le disue dur windows et pas sur un SSD.

Commençons :
Le principe :
A la racine du disque dur windows vous trouverez un répertoire caché ASUS.SYS. Celui-ci contient entre autre un ensemble de fichiers avec l’extension sqx et un fichier version. Ce sont ces fichiers qui nous intéressent.
Le fichier version décrit la version de chaque fichier ainsi que son checksum. Afin de pouvoir fair le modification il faut le modifier. L’opération consiste à ne garder que les 32 premiers octets.
Donc l’amener sur linux et le raccourcir par dd

dd if=version bs=32 count=1 of=version32

plus qu’à remplacer sous ASUS.SYS le fichier version par notre version32
les fichier sqx contiennent chacun des élément par exemple bs-php….sqx contient php. C’est en fait un partie d’arboresence stocké sous forme d’un suashfs (un système de fichier très compressé en lecture seule). A noter qu’il s’agit de squashfs en version 3 la version du noyau de linux utilisé par expressgate étant incompatible avec la 4.
Il faut donc aller sur sourceforge charger une version 3 de squashfs et de compiler les squashfs-tools. C’est bon ? vous avez squashfs et unsquashfs ?
copier sur votre partition linux un des paquet et soumettez le unsquahfs (regardez le man) sous squashfs-root vous allez trouver la structure complète. Vous êtes donc prêt à faire vos première modifications …
ces modifcations faites un coup de squasfs pour créer un nouveau fichier .sqx le déposer sous ASUS.SYS et l’affaire est faite.

Ma première modification a consisté à m’attaquer au paquet bs-apache afin de pouvoir ouvrir la machine à l’utilisation d’outils php. Donc décompression du bs-apache modification de la configuration sous opt/apache/conf les dernière lignes du httpd.conf contiennent des règles de réécritures supprimer à partir re rewritecond.
resquacher remettre sous ASUS.SYS.
mettre à la racine de votre disque windows un fichier phpinfo.php contenant

<?php phpinfo();

éteindre passer sous expressgate lancer le navigateur et ouvrir
http://127.0.0.1:1080/links/winhdd/disk1/phpinfo.php

Et voilà

ENcore une idée loufoque – concevoir un site tout en Javascript

Ce matin, alors que je planchais dans une transformation d’un objets dom récupéré par xhtml … je me suis fait la réflexion suivante …

Pour concevoir une appli web en général on est obligé de jouer avec au mois trois langages différents qui n’ont rien à voir entre eux. L’idée de Sun de mettre java sur les serveurs et sur les clients a me semble t’il fait plus ou moins long feu, pourtant …

Et si on concevait une appli web uniquement en Javascript ? par exemple en concevant la page html comme un objet dom que l’on transmettrait en json … plus j’y pense plus je pense que cette idée devrait être creusée.

(Edit) en fait je m’aperçoit que pas ma ont déjà eu l’idée entre jsext (projet mort) jsdb et v8cgi.
J’aurais préféré un projet basé sur spidermonkey mais le seul que j’ai réussi à recompiler est en fait v8cgi

Slax livebox orange et IPV6

pour des besoins de test j’ai établi un petit script permettant de se connecter à travers une livebox en IPV6 en tunellant IPV6 en IPV4. Ce script est inspiré d’une description debian et a été mis au point / testé sur une SLAX. sur SLAX il nécessite le paquet iproute. Il faut aussi avoir un dyndns en place afin de pouvoir récupérer l’adresse V4 externe

#!/bin/sh
ADDRESS=`ip -f inet addr show |grep 192.168|sed 's/ *inet (192.168.1.[0-9]*).*/1/'`
IP=`host domain.dyndns.org|grep address|sed 's/.*address//' | tr "." " "`
IPV6=`printf "2002:%02x%02x:%02x%02x::1/16" $IP`
ip tunnel add tun6to4 mode sit ttl 74 remote any local $ADDRESS
ip link set dev tun6to4 up
ip -6 addr add $IPV6 dev tun6to4
ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4
echo nameserver 80.10.246.2 >> /etc/resolv.conf
echo nameserver 80.10.246.129  >> /etc/resolv.conf

1and1 tedieu ils ont mis un moteur de ferari dans mon hébergement !

Pendant plusieurs année je trouvais que mon hébergement manquait de tonus, mais je dois dire que les temps de réponse se sont améliorés dans des proportions énormes.
Je ne sais pas ce qu’ils ont fait mais je les en remercie.
A vue de nez les temps de réponse ont été divisés d’un facteur 3. Ce soir la page d’accueil s’est affichée en mois d’1 secondes et la page d’admin de wordpress en moins de 3 secondes.
Grandiose !

1and1 optimisation des temps de réponse

Je ne sais pas à quoi tient ce phénomène mais j’ai amélioré notablement les temps de réponse des blogs sur l’hébergement en utilisant une astuce trouvée sur le blog de lise
il suffit donc d’avoir dans son .htaccess

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

ça n’empêchera pas les erreurs 500 qui arrivent de temps en temps mais ça apporte un léger mieux.

autre tentavive je viens d’installer zend_optimiser en me référant à la faq

Une tentative d’attaque

Et bien que voilà une nouvelle tentative …
cela dit ce n’est pas très discret dans les traces, … il ya tentative de création d’utilisateur mais si la page wp-login.php est bien appelée la même adresse ip n’appelle pas les feuilles de style.
Tout semblerait que ces attaques passent par des proxy pour l’instant j’en ai détecté un chez Leaseweb et l’autre de netdirect.

Encore un wordpress multiblog

J’ai profiter de l’arrivée de WordPress 3 pour revoir ma stratégie de multi blog …
le but état de modifier au possible les modification de WordPress.
Mon premier pas a été de tenter la version Mu en créant un réseau de wordpress … intéressant mais imposant une format de d’URL. Alors que je voulait mixer du person.domain.tld/blog et du person.domain.tld. Cela est bien sur possible avec un peu d’url rewriting mais par contre il n’y a pas une vrai indépendance entre les blogs et pas de moyens très simple pour se réserver un blog de test …
La solution est un mélange d’URL Rewriting et Liens symboliques. Bien sur ce n’est jouable qu’à condition de pouvoir créer des liens symbolique ce qui n’est pas possible chez tout les hébergeurs, et la méthode varie suivant ceux-ci.
La racine du blog contiendra un fichier wp-config.php un .htaccess et un lien symbolique vers l’installation de wordpress.

Ce qui suit concerne l’installation chez 1and1
1) création du lien symbolique par exécution d’un petit php déposé à la racine de elui-ci Makelien.php

<?php
passthru('ln -s /kunden/homepages/xxx/xxxxxx/htdocs/chemin_pour/wordpress wordpress'); passthru('ls -l');

2) exécuter et supprimer le petit php
3) copier le répertoire wp-content à la racine du blog
4)ecrire .htacces avec ce contenu


Options +FollowSymLinks
RewriteEngine On
RewriteBase /blog

RewriteRule ^$ /blog/wordpress/index.php [L]

RewriteCond %{REQUEST_FILENAME} !/blog/wordpress/.*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ wordpress/$1 

RewriteCond %{REQUEST_FILENAME} /blog/wordpress/.*
#RewriteCond %{REQUEST_FILENAME} !/blog/wordpress/wp.*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /blog/wordpress/index.php [L]

Si le site n’est pas dans un sous répertoire blog supprimer la ligne RewriteBase et le /blog de chaque RewriteRule
5) poser à la base du blog un wp-config.php

<?php
// ** Réglages MySQL ** //
define('DB_NAME', 'xxxxxxxxxxxxxxxx');		// Le nom de la base de données
define('DB_USER', 'xxxxxxxxxxxxxxx');     		// Votre identifiant MySQL
define('DB_PASSWORD', 'xxxxxxxxxx'); 	// ...et votre mot de passe
define('DB_HOST', 'xxxxxxxxxxxx');    			// Dans la plupart des cas, vous n'aurez pas à modifier cette ligne
define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); 
// Modifiez chaque KEY en y mettant une phrase unique.  Vous n'avez pas besoin de la mémoriser.
// Elle doit être longue et compliquée.  Vous pouvez aller sur le site http://api.wordpress.org/secret-key/1.1/ 
// afin de générer des phrases uniques pour votre installation. Chaques phrases doit être différentes.
define('AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique. 
define('SECURE_AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique.  
define('LOGGED_IN_KEY', 'xxxxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique.
define('NONCE_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); 
 
// Vous pouvez faire plusieurs installations sur une même base de données, en leur donnant chacune un préfixe unique.
$table_prefix  = 'blog_xxxxxxxxx_';		// Que des chiffres, lettres ou caractères soulignés, s'il vous plait !
 
// Modifiez la ligne suivante pour traduire l'administration de WordPress. Il faut que le dossier
// wp-content/languages contienne un fichier .mo correspondant à la langue choisie.
// Par exemple,  installez de.mo dans wp-content/languages et précisez 'de' pour la variable WPLANG,
// si vous souhaitez mettre en place la traduction allemande.
define ('WPLANG', 'fr_FR'); define('WP_CONTENT_DIR',dirname(__FILE__).'/wp-content'); define('WP_CONTENT_URL','http://adresse_du_blog/wp-content'); define('WP_POST_REVISIONS', false); //pour éviter de surcharger la base de données
 
require_once(ABSPATH . 'wp-settings.php');

6) dans l’installation de wordpress (celle ou pointe les liens symboliques) créer un wp-config.php qui chargera le bon config-php suivant le nom du site d’appel.

<?php
define('ABSPATH', dirname(__FILE__) . '/'); switch ($_SERVER['HTTP_HOST'])
  {
    case 'person1.domain.tld' :
	    include_once('/kunden/homepages/xx/xxxxxx/htdocs/person1/blog/wp-config.php'); 	    break;     case 'person2.domain.tld' :
	 include_once('/kunden/homepages/xxxx/xxxxx/htdocs/person2/wp-config.php');          break;     default :
	    exit('Accès illégal');   }

plus rien n’empêchera les mises à jour automatiques des sites

Sqlite et Mysql lequel est le plus rapide

Je viens de faire un test sur le même hébergement 1&1 de trois blogs wordpress 1 avec PDOsqlite vous le lisez et deux privés qui utilisent la base mysql sur un serveur dédié. pour cela j’ai utilisé pingdom tools.
Bonne surprise la version PDOSqlite est de loin la plus rapide 1,7s de temps de chargement pour 2,3 et 3,2s pour les version mysql. A défaut de répéter le test plussieurs fois on voit déjà que PDO SQLITE n’est pas un handicap.