TwinXeon by Renaudet

A propos du site Twinxeon et de son serveur

Historique

  En 2000 ou 2001, un collègue m'envoie par mail un micro serveur HTTP écrit en une seule classe Java. C'est l'illumination. Ce serait donc aussi simple que cela ?. Pour en avoir le coeur net, je me lance dans l'analyse. Il faut gérer les types MIME, et aussi la sécurité. Externaliser la configuration du serveur et créer une console d'administration... Tout ceci fini par me convaincre petit à petit que les technologies Web sont décidément très simples à mettre en oeuvre.

  Du serveur HTTP au serveur d'application, il n'y a qu'un pas que je franchis rapidement. Au début, l'interface de programmation est propriétaire, mais il y a un embryon de moteur de servlet et un compilateur de page JSP. Et puis en 2004 c'est le grand défit : rendre le serveur compatible avec les APIs J2EE 1.2, et en particulier l'API Servlet, l'utilisation des Datasources, de JNDI et les JSPs. Le serveur s'enrichit petit à petit et me permet de développer de petites applications Web parfaitement fonctionnelles.

  En 2005, quand Gandalf est mis en ligne, quelques pages du site sont dynamiques, en particulier la section Plan du Site qui est délivrée par une Servlet et une page JSP. Un embryon de forum est commencé en 2007 mais ne sera pas développé plus que cela.

Caractéristiques

  Le serveur est composé de 2 + N serveurs répartis sur 1 + N processus. Le serveur d'administration tourne en collocation avec le serveur HTTP qui écoute par défaut sur le port 80. De 0 à N processus serveurs d'applications peuvent ensuite être configurés, démarrés ou arrêtés dynamiquement, chacun dans sa propre machine virtuelle Java. Le protocole de communication entre le serveur HTTP et les serveurs d'applications est propriétaire. Il vise à faciliter au maximum la transmission de buffers de tailles non fixes en optimisant l'étape de lecture. Comme le routeur Linksys ne reroute que les requêtes HTTP de port 80 sur Moebius, il est impossible d'accéder aux instances de serveur d'applications depuis Internet. Aussi, la partie dynamique du serveur n'étant pas en prise directe sur l'extérieur, elle isolée via le serveur HTTP dans une sorte de DMZ.
[processus java]
Les processus Java du serveur HTTP et du serveur d'applications

Console d'administration

  La console d'administration a été développée sous Eclipse 2.1.2 et n'a pas été migrée en Eclipse 3.0... par manque de temps. Connectée sur le port d'administration du serveur, elle permet de gérer localement ou à distance le serveur à travers un Command Pattern par dessus un protocole XML. Tous les objets administratifs de la configuration du serveur HTTP sont disponibles depuis la console qui permet en outre de faire des sauvegardes, créer de nouvelles instances de datasource, servlet ou même serveur d'applications.

  Les denriers développement permettent également de déployer une application J2EE 1.2 au format WAR, à condition pour la console de s'exécuter localement au serveur.
[console d'admin]
La console d'administration du serveur Twinxeon sous Eclipse

Gestion du nom de domaine

  Lorsque j'ai voulu mettre Gandalf en ligne, j'ai été confronté à un petit problème technique : Wanadoo, mon fournisseur d'accès Internet ne permet pas l'attribution d'adresse IP fixe. J'ai alors recherché sur différents forums et c'est là que j'ai découvert le service no-ip.org. Il s'agit d'un DNS dynamique basé aux USA et qui fonctionne à l'aide d'un petit client logiciel installé sur le PC que l'on souhaite transformer en serveur. Il suffit d'ouvrir un compte, gratuit, et de configurer le nom de domaine, puis d'installer et de paramétrer le client No-IpDUC.exe que je lance au démarrage de la machine.

  Dès que l'adresse IP du poste change, le client No-IpDUC.exe publie la nouvelle adresse sur le site no-ip.org. C'est très simple à mettre en oeuvre, gratuit et ça marche très bien. La preuve, vous arrivez à lire ces lignes ! Les limitations de no-ip.org sont les suivantes : le nom de domaine se termine obligatoirement par no-ip.org (d'où le nom de domaine de twinxeon), et la période d'inactivité du client ne doit pas excéder 60 jours. D'ailleurs, durant la période d'interruption de service suite au crash de Gandalf, j'ai reçu plusieurs mails du site no-ip.org pour m'avertir de la possible révocation prochaine de mon compte s'il n'était plus utilisé.
[le client noip]
La fenêtre du client NoIpDUC

Administration du Site

  Le Site TwinXeon est entièrement généré via templates et fichiers de configuration XML et / ou fichiers textes. Par exemple, les articles comme cette page about sont générés via un template, un fichier de configuration XML et divers fichiers textes brut (avec cependant un zeste de mise en forme HTML).
Il existe également des pages dynamiques générées via JSP, mais ces mêmes pages JSP sont également générées via templates avant d'être publiées sur le serveur d'applications.
  TwinXeon est insensible aux attaques classiques, les plus répandues cherchant à exploiter les failles de sécurité de PHP. J'analyse régulièrement les fichiers de log du serveur HTTP frontal et j'y trouve souvent des preuves de tentative d'attaque bien naïves. Il m'arrive de les signaler aux fournisseurs de service Internet ou à l'administrateur de l'organisation détentrice de l'adresse IP. Ah, un conseil aux hackers en herbe, TwinXeon est muni d'un système d'auto-défense sur certaines URL et peut retourner dans ce cas quelques méga-octets de caractères non imprimables...
Voici le fichier access log de TwinXeon au 04/01/2011 après traitement automatisé. On remarque que la grande majorité des requêtes provient de france, puis de pays anglo-saxons et pour finir... de chine ! J'ai eu des tentatives d'attaque de pratiquement tous les pays du monde, mais la chine remporte la palme de très loin. Bravo !

La carte suivante reporte les localisations approximatives des clients HTTP ayant envoyé des requêtes sur TwinXeon (à l'exception de la France) :


Statistiques au 04/01/2011

Le lien suivant affiche les statistiques actualisées d'utilisation du site

Cette page a été regénérée le 23/04/2014 à 23:23:29
Site optimisé pour un affichage en 800x600 sous Firefox 8.x - ©Copyright 2011-2012 by Nicolas Renaudet