Avancement

Le transfert de protection d’un objet vers une autre entité est fonctionnel. Il doit être vérifié en situation réelle.

Ce transfert commence simplement en la récupération de la clé de session chiffrée avec une clé privée de l’entité courante. Ce pourrait être à terme toute entité que l’on contrôle. La clé de session est de nouveau chiffrée avec la clé privé de l’entité destinataire. Un lien de chiffrement asymétrique marque cette étape et surtout permet à l’entité destinataire de détecter cette clé de session à son usage, et donc de déchiffrer l’objet protégé.

La mise en place du processus de signature et diffusion via bachue n’est pas encore terminé. Cette évolution du code n’est donc pas encore publiquement disponible.

Avancement

Peu d’avancées ce week-end sur le code. Il y a eu quelques traductions et améliorations dans l’affichage du mode aff.

La mise en place du processus de signature et diffusion via bachue n’est pas encore terminé.

Depuis hier soir, un menu permet de choisir une entité à qui on veut transmettre un objet protégé. La mécanique derrière, qui ne marche pas encore, chiffrera la clé de session avec la clé privé de l’entité destinataire. A suivre…

Avancement

L’entité bachue diffuse depuis ce soir la version de sylabe du 18/02/2014.

La partie du code gérant la traduction de texte commence a être conséquente alors que même pas un quart du code ne l’utilise pour l’affichage des textes. Les fonctions de traduction et d’affichage de l’aide en ligne sont déplacées vers la toute fin du code. L’ensemble est un peu plus lisible…

Avancement

Quelques modifications du code ce soir dans le mode aff, mais pas encore rendu public. L’entité bachue n’est pas encore pleinement opérationnelle pour diffuser les mises à jours du code de sylabe au fur et à mesure de ses évolutions.
Dans les modifications, il y a notamment plusieurs parties qui ont été adaptées à la traduction automatique. La vue aff est maintenant à moitié traduite.

Toutes les entités du serveur publique ont été mises à jours vers sylabe en version nébulisée. La manÅ“uvre ne s’est pas déroulée de façon aussi automatisée que prévu. Le code du bootstrap n’a semble-t-il pas réussit à récupérer les versions les plus à jour de sylabe que propose bachue. Il a fallu à chaque fois faire suivre les liens de mise à jour manuellement et synchroniser les liens jusqu’au dernier lien de mise à jour. Il faut maintenant trouver d’où vient le problème.. Bref, ça marche mais ce n’est pas pratique…

Les entités à jour :
http://stephane.nebule.fr/
http://zulu.nebule.fr/

Avancement

La mise en place du bootstrap permettant l’installation de sylabe nébulisé a posé quelques problèmes. La tentative de mise à jour de l’entité zulu n’a pas fonctionné immédiatement.

Le code du bootstrap intégrait des fonctions d’inclusion d’objets php, sylabe et la librairie nebule, via le chargement de pages web, via http donc. Les codes php inclus comme pages web étant restreint au serveur local pour des problèmes de sécurité. Le code de l’inclusion étant :
include("$bootstrap_loc_entite/o/$bootstrap_load");
Avec $bootstrap_loc_entite quelque chose comme http://localhost.
Or, sur le serveur hébergeant zulu, la version de php est un peu plus ancienne. Et cette ancienne version ne supporte visiblement pas très bien les inclusion via http. Cela aurait pût être bloquant puisque cet inclusion par http avait été rendu nécessaire parce que l’interpréteur php ne supportait pas l’inclusion de fichiers sans extensions .php. Mais, heureusement, la version plus ancienne de php supporte elle l’inclusion de fichiers sans extension. Donc ça marche avec un code de ce genre :
$v = explode('.',PHP_VERSION);
$bootstrap_phpversion=($v[0] * 10000 + $v[1] * 100 + $v[2]);
if($bootstrap_phpversion < 50500) include("o/$bootstrap_load"); else include("$bootstrap_loc_entite/o/$bootstrap_load");

Il reste une petite difficulté, je ne sais pas à partir de quelle version de php ce changement de comportement s’est fait. J’ai donc placé le seuil de bascule de comportement à la version 5.5.0.

Donc, Pour l’instant tout fonctionne bien avec sylabe en version nébulisée.
Toutes les entités du serveur vont basculer progressivement pour profiter enfin des nouvelles versions.

L’entité bachue est accessible sur Internet mais elle n’est pas vraiment active. Le serveur public n’héberge qu’une copie. L’entité est déverrouillée sur une station hors ligne afin de signer les nouvelles versions de sylabe et de la librairie nebule. Une station miroir en ligne mais mieux protégée de l’Internet est en cours de mise en place. Elle va faciliter la synchronisation des liens et objets de la station isolée (qui le restera) vers le serveur miroir sur Internet accessible à l’adresse http://bachue.nebule.org/ .
Une fois le processus complet en place, la diffusion des mises à jours de sylabe sera complète :

20140216 sync bachue

Avancement

Les problèmes sur l’entité bachue sont en passe d’être résolus. Elle va pouvoir bientôt héberger les nouvelles versions de sylabe, et donc permettre leur diffusion dans de bonnes conditions.

L’avancement du code de sylabe continue. Un système de traduction de l’interface est implémenté et n’attend plus que d’être utilisé partout dans l’interface… C’est le temps de modifier le code aux multiples endroits où il est fait un affichage de texte.

Au cours de la conversion du site web de l’entité bachue, il est apparu un autre problème pour la mise en Å“uvre de sylabe. Le bootstrap rappelle par défaut l’objet de sylabe via la page http://localhost/, or cela ne peut pas marcher si le serveur web héberge plusieurs sites web de noms différents. La page par défaut ne connait pas les objets de l’entité bachue
Ce sera corrigé rapidement.
Cela donne ce genre d’erreur :

20140214 bootstrap error

Détournement de liens de mise à jour – suite

Suite à la réflexion de l’article Détournement de liens de mise à jour, je modifie dans le code de sylabe la vérification des paramètres pour autoriser les liens avec des ID d’objets de taille à partir de 6 octets. Cela concerne les paramètres synobj, synlnk, synunkobj, majobj, crlsrc, crldst et crlmet.

Avancement

Depuis 2 jours, le code du bootstrap est profondément remanié pour intégrer la résolution d’un graphe de relations de mise à jour des objets et surtout l’auto déploiement répliqué d’un code. Il intègre une version allégée de la librairie nebule indispensable à son fonctionnement.

L’interpréteur php ne permet pas (d’après mes essais) d’appeler du code php via la fonction include() si le fichier demandé n’a pas l’extension .php . Il n’est donc pas possible en l’état de charger un objet comme code php puisqu’un objet n’a pas d’extension. Ça n’a pas de sens pour un objet de l’affubler d’une extension. La méthode la plus fiable de typer un objet est le type mime correspondant à son contenu réel et non une simple extension. Maintenant, nebule attribue un type mime à un objet par un lien, mais cette attribution est signée et peut être multiple.
Cependant, si il n’est pas possible d’inclure un code php depuis un objet, il est possible de faire appel à du code php toujours via la fonction include() depuis un emplacement web (http). Cela fonctionne si on modifie les options qui l’autorise dans php, à savoir allow_url_fopen et allow_url_include. Cela fonctionne aussi, mais à vérifier, parce que le contenu de l’objet est transmit avec son type mime par le serveur web. Le type mime transmit avec l’objet est justement déduit d’un lien de cet objet.
Pour éviter l’inclusion d’un code non local et donc potentiellement dangereux, le lien web fait systématiquement référence à http://localhost/o/objet avec ‘objet‘ un objet nebule forcément présent et avec des liens validés par l’entité bachue ou l’entité locale, exclusivement.

Le code du bootstrap inclut maintenant la résolution du graphe des mises à jours de la librairie nebule, et charge cette librairie. Elle est donc chargée par défaut même si l’application (sylabe par défaut) ne l’utilise pas. Elle ne remplace pas le minimum nécessaire de fonctions nebule directement intégrées dans le bootstrap, en version allégées, et nécessaire au fonctionnement du bootstrap. Mais cette inclusion de la librairie complète à postériori ouvre des possibilités plus élaborées.

Le code du bootstrap ne sait pas encore aller chercher tout seul auprès de l’entité bachue les dernières version des codes de nebule et sylabe. Mais les fonctions allégées de nebule qu’il embarque si normalement capable de le faire. C’est juste une question de code à ajouter en cas d’absence d’objet comme lors d’une nouvelle installation.

Le bootstrap étant capable de trouver la dernière version de la librairie nebule et de la charger, et de trouver la dernière version du code sylabe et de le charger, leur présence sous forme de fichier n’est plus nécessaire. Les derniers essais ont été réalisés avec succès avec uniquement le bootstrap présent sous forme de fichier et donc en ayant volontairement supprimé les fichiers lib_nebule.php et sylabe.php. Ces essais ont montré aussi que bien qu’il soit possible de suivre les liens de mises à jours des anciennes versions de sylabe, leur exécution n’est souvent plus possible par ce biais puisqu’ils essaient de charger directement la librairie nebule par le nom de fichier…

Ces derniers développements ne sont pas encore en ligne parce que cela implique des modifications au niveau du serveur Apache pour chaque instance de sylabe. A venir très prochainement donc, et avec une nouvelle doc d’installation…

Gestion des versions de sylabe – mise en ligne

Suite de Gestion des versions de sylabe.

Depuis hier soir, le code de sylabe et de la librairie nebule sont mise en ligne en tant qu’objets avec liens de mise à jour :

On peut voir dans le mode nav que ces objets n’ont pas de mise à jour aujourd’hui. C’est parce que ce sont les derniers disponibles en date d’aujourd’hui. En passant par les liens, on peut remonter jusqu’à l’origine de ces codes :

Dans le mode nav apparaît bien que ces objets ont été mis à jours et que la dernière mis à jour connu correspond à un des trois objets cités précédemment.

En raison d’un petit problème technique, les liens et objets, bien que signés par bachue, sont diffusés par http://stephane.nebule.fr/ et http://zulu.nebule.fr/. Ils n’en restent pas moins tout à fait valides.

Il reste préférable de télécharger un objet en passant par le lien web dédié « Télécharger« . En effet, l’affichage des objets dans les modes aff et nav est parfois légèrement faussé.

La vue réduite des objets dans le mode nav est un peu buggée

Le mode aff ne présente pas la mise à jours d’un objet si une entité n’est pas déverrouillée. L’état de mise à jour est bien présent lorsque déverrouillée. Ce petit problème d’affichage sera corrigé.

Gestion des versions de sylabe

La diffusion du code de sylabe et de la librairie de nebule en php sous forme d’objets et diffusés par bachue est sur le point d’intervenir. Ce n’est plus qu’une question de petits ajustements et de vérification des liens générés.

Le code de mise à jour (résolution des graphes de mises à jours) est jugé maintenant fonctionnel. Il a été modifié pour permettre la synchronisation des liens et objets manquants sur demande explicite. Cette synchronisation est encore en cours de test.

Le code de bootstrap va être modifié pour intégrer le code de résolution des graphes de mises à jours et ainsi charger l’objet à jour correspondant à sylabe et plus par défaut le fichier ‘sylabe.php‘.

C’est un moment singulier du projet sylabe puisqu’il devient assez mature pour se diffuser par lui-même en tant qu’objet !

Cependant, pour éviter des problèmes de sécurités (prévisibles), le boostrap ne prendra en compte que les liens de mises à jours signés par bachue. Et ce au moins pour un certain temps…

Avancement

Maintenant que le code qui permet de résoudre le graphe des mises à jours d’un objet est prêt, même si imparfait, on peut ajouter le code pour synchroniser les liens au besoin. C’est à dire de permettre au fur et à mesure du parcours de l’arbre, de synchroniser les liens et les objets de façon à trouver la dernière mise à jour disponible auprès des autres entités. Cela doit permettre de rattraper les mises à jour d’un programme par exemple quelque soit le retard de version de ce programme. Évidement, ce comportement est bridé par les deux variables $nebule_permitsynclink et $nebule_permitsyncobject.

Une nouvelle variable $nebule_permitautosync fait son entré. Elle permet d’activer la recherche automatique des mises à jours en ligne des liens d’objets consultés. Sinon, la synchronisation est réalisée uniquement sur demande explicite via l’interface sylabe. Le comportement de tout synchroniser peut entraîner de fortes latences dans l’interface…

L’interface a été un peu remaniée pour simplifier la lecture du code. Maintenant, lorsqu’aucune action n’est réalisée, c’est affiché en haut.

L’interface, toujours, commence à devenir un peu rempli… avec les différents ajouts de fonctionnalités. Il va falloir revoir un peu l’agencement des modes et veiller à une plus grande cohérence dans l’organisation de chaque mode. Et il va falloir ajouter l’aide en ligne partout.