19
mars
'12

Vodstok, un outil de partage volontaire

Publié le 19 mars 2012

Durant le meeting du mois de Janvier, j'avais présenté un de mes outils nommé Vodstok (pour Voluntary Distributed Storage Kit), mais il n'était pas finalisé. J'ai pris un peu de temps parmi le peu disponible pour tenter de finaliser le code et pouvoir le mettre à disposition de tous. Cet outil permet à tout un chacun de pouvoir uploader et télécharger des fichier stockés sur Internet, dans un nuage de serveurs de stockage mis à disposition par des volontaires.

Stockage distribué volontaire

Des personnes utilisant Vodstok l'installent sur leurs serveurs web (aucune base de données requise, compatible PHP4/5) et décident ainsi de partager une portion de leur espace de stockage aux utilisateurs de Vodstok. Chaque propriétaire de serveur peut ainsi s'ajouter à un réseau maillé de serveurs, et l'ensemble constitue une plate-forme de stockage distribué accessible en HTTP.

La force de ce système est d'une part sa résistance aux coupures: si un serveur tombe, le système est toujours fonctionnel, bien que les données du serveur perdu soient considérées comme perdues (Vodstok n'assure pas de redondance actuellement). Mais il est toujours possible de s'en servir, et en comptant sur l'effet Streisand, cela devrait a priori favoriser ce système. D'autre part, Vodstok se base sur le protocole HTTP, qui est universel et permet même de passer au travers de proxies, ce qui évite d'avoir une configuration de ports particulière, comme c'est le cas avec BitTorrent par exemple.

Vodstok intègre un client en ligne de commande écrit en Python, qui permet d'assurer un stockage sécurisé (AES256) et une répartition d'un fichier sur l'ensemble des serveurs. Bien sûr ce client peut être modifié et les usages dérivés sont nombreux, la seule limite reste votre imagination. Pour faire simple, un serveur sur lequel vodstok est déployé fait office de système de stockage seul, il n'y a pas d'autre logique particulière. On peut le considérer comme un "bout de disque dur" qui ne regarde pas ce qui y est stocké ni comment s'en servent les utilisateurs.

Comment partager une partie de son espace de stockage web avec Vodstok

En premier lieu, il faut récupérer l'archive de Vodstok sur la page du projet, et copier le contenu du dossier www sur le serveur distant. Une rapide modification du fichier de configuration config.inc.php permet de paramétrer le bouzin:

<?php

define('QUOTA_MB', 1024); /* Je décide de partager 1Go d'espace disque */
define('MAX_ENDPOINTS',1500);
define('MAX_ENDPOINT_LEN',200);

/*
DO NOT MODIFY OR REMOVE THE FOLLOWING LINES
*/

define('QUOTA',QUOTA_MB*1024*1024);
define('CHUNK_DIR','chunks');
define('ENDPOINT_DIR','endpoints');

?>

On chmod 777 les dossiers chunks et endpoints, et c'est tout, Vodstok est paré à fonctionner côté serveur. Reste à voir comment s'en servir côté client.

Pour le client, rien de bien compliqué: le dossier client contient le code source de l'outil, qui est pour l'instant seulement en ligne de commande. On le copie dans un dossier accessible à l'utilisateur, et on peut le lancer:

# chmod +x /opt/vodstok-1.2 && cd /usr/bin/local && ln -s /opt/vodstok-1.2/vodstok vodstok
$ vodstok
Usage: vodstok [options] [VDS URL]

Options:
  -h, --help            show this help message and exit
  -l, --list-endpoints  List saved endpoints
  -a ENDPOINT, --add-endpoint=ENDPOINT
                        Add an existing endpoint
  -r ENDPOINT, --del-endpoint=ENDPOINT
                        Remove an existing endpoint
  -p ENDPOINT, --publish=ENDPOINT
                        Publish an existing endpoint
  -w DIRECTORY, --write=DIRECTORY
                        Set destination directory
  -s, --size            Displays distributed storage capacity
  -v, --version         Show version
  -u, --update          Update endpoints

Première étape, ajouter le point de stockage web nouvellement créé, ainsi que d'autres déjà existant:

$ vodstok -a http://www.monserveur.com/vodstok/
$ vodstok -a http://virtualabs.fr/vodstok/
$ vodstok -a http://www.depotware-network.net/vodstock/
$ vodstok -a http://vodstok.zengeek.org/

Lors de chaque ajout de point de stockage (ou endpoint), vodstok vérifie que celui-ci est bien fonctionnel.

Seconde étape, publier votre point de stockage:

$ vodstok -p http://www.monserveur.com/vodstok/

Etape ultime, récupérer de nouveaux points de stockage grâce à la fonctionnalité de mise-à-jour intégrée:

$ vodstok -u

Comment échanger des fichiers grâce à Vodstok

Pour échanger des fichiers, vous n'avez pas obligatoirement besoin d'installer un point de partage (mais ça serait quand même 'achement bien, pour la bonne santé et l'espace de stockage du système). Il est tout de même conseillé d'ajouter au moins un point de stockage existant, et de mettre à jour la liste des points de stockage:

$ vodstok -a http://virtualabs.fr/vodstok/
$ vodstok -u

Une fois cela fait, il est alors très facile d'uploader un fichier sur le réseau vodstok:

$ vodstok britney-spears-chante-sous-la-douche.mp3
[+] Uploading ... 100.00%
[i] File successfully uploaded.
Share this link: vds://054B22B4D64746A94CCE72AB410516C7@www.depotware-network.net/vodstock/#5e23d232a24a332d3e64f02d9b9c9350

Et c'est identique pour le téléchargement:

$ vodstok vds://9AAFC5E52E29E833D969399E9EEF3D0F@virtualabs.fr/vodstok/#6edc5a91f3c29190229822f0119f9745
[+] Retrieving file summary
[+] Starting file download
[+] Downloading ... 100.00%
[i] File saved as britney-spears-chante-sous-la-douche.mp3

Source et contribution

J'ai mis le projet sur [GITHUB], et monté un repository Vodstok sur mon hébergement. N'hésitez pas à tester, jeter un oeil, et si vous pensez pouvoir apporter votre brique, à modifier le code et proposer vos améliorations.

Conclusion

Le projet vodstok est actuellement viable, mais toujours en phase beta. Je suis en train d'essayer d'améliorer le système et de faire en sorte que celui-ci soit fiable et efficace. Essayez-le, installez des points de stockage, et faites moi vos retours d'expérience par email (virtualabs -at- gmail -dot- com) ou directement via twitter !

`GITHUB] [https://github.com/virtualabs/Vodstok <https://github.com/virtualabs/Vodstok>`_ `HOMEPAGE] [http://virtualabs.fr/vodstok/ <http://virtualabs.fr/vodstok/>`_

14
oct.
'11

Le code source de Youspot est désormais ouvert (GPLv2)

Publié le 14 octobre 2011

Cela fait plus de six longs mois que je tente (en vain) de me motiver afin de développer une seconde version de mon application Youspot pour Android, et je me heurte à chaque fois à des barrières: pas assez de temps, application relativement complexe, manque de motivation pour coder la nuit (malgré le coca, je dois avouer). Bref, je n'en pouvais plus de ne pas pouvoir faire avancer ce projet aussi vite que je l'aurais voulu.

Alors j'en ai parlé autour de moi. Aux geeks qui me connaissent, aux collègues, etc ... Sur twitter aussi j'ai fait part de cette idée d'arrêter de tenter d'améliorer la version actuelle de Youspot, et plusieurs followers m'ont suggéré d'ouvrir les sources. Il est vrai que jusque là, j'avais conservé jalousement le code source de l'application, tout en sachant pertinemment que cela ne servait pas à grand chose, ayant réalisé pas mal d'analyse d'application Android. Je ne sais pas pourquoi je n'avais pas songé à diffuser le code plus tôt, certainement parce que celui-ci était mal/peu commenté. Certainement parce que je pensais pouvoir mener la barque de ce projet à terme.

La réalité m'a rattrapé: le boulot, la famille et le temps que j'ai investi dans Youspot ont eu raison de ma santé (ou presque), et j'accumule un grand nombre de projets personnels qui restent en stand-by à cause de Youspot. Bref, décision fut prise d'ouvrir les sources, et tant qu'à faire autant promouvoir git, car je suis en train de migrer mes projets de subversion à git. C'est donc tout naturellement que le code source de Youspot a atteri sur github (https://github.com/virtualabs/Youspot/). Le code source de l'application, les ressources graphiques ainsi que le code PHP du webservice sont disponibles, et a priori n'importe qui peut recompiler l'application, l'arranger à sa sauce et monter son propre serveur Youspot.

Ce que j'espère de tout cœur, en partageant ce code source d'application, c'est qu'il puisse montrer aux développeurs débutant sur Android comment coder (de manière pas très propre et conforme ISO1664) une application assez complexe; ainsi que permettre à une ou plusieurs personnes qui seraient intéressées par l'application de reprendre le développement de celle-ci. La version actuelle présente sur le Market ne sera pas retirée, et le site www.youspot.org restera actif (merci Corbier ;), je tiens à le préciser.

Merci à tous d'avoir testé et soutenu Youspot, peut-être du renouveau très bientôt ? Qui sait.

03
mars
'11

Youspot, une application de wardriving communautaire pour Android

Publié le 03 mars 2011

J'ai lancé en beta-test via Twitter, il y a de cela un mois environ, l'application Youspot pour Android. Cette application est gratuite et sans publicité, et permet de «wardriver» ainsi que de centraliser les informations sur les points d'accès détectés.

Présentation de l'application Youspot

L'objectif premier de cette application est de fournir aux possesseurs de smartphones une alternative à a connexion 3G. En effet, il y a dans les villes de nombreux points d'accès ouverts, sur lesquels les connexions sont possibles et plus efficaces que la 3G. A l'heure où le trafic 3G est montré du doigt, le Wifi collaboratif peut devenir une alternative viable.

Les utilisateurs ont aussi la possibilité de recenser les points d'accès manuellement, via le site de l'application. Pour le moment, l'application et le site étant en version beta, il n'y a pas possibilité de retirer un point d'accès connu de la base de connaissances. Cette fonctionnalité devrait être implémentée rapidement.

Fonctionnement de Youspot

L'application Youspot, une fois installée sur un smartphone Android (version >= 1.5) scanne les réseaux sans-fils alentours, et les envoie dans la base de connaissances de Youspot. Celle-ci vérifie si les points d'accès sont connus, auquel cas elle retourne des informations complémentaires (clef d'authentification, si connue, etc ...). Aucune information privée n'est transmise, pas même la configuration des points d'accès enregistrés dans le smartphone, ni la localisation géographique, ou encore le numéro IMEI.

Les données collectées servent à générer deux graphes de statistiques, le premier proposant une synthèse du nombre de points d'accès par fournisseurs d'accès Internet, le second synthétisant la répartition des chiffrements employés par les points d'accès recensés. Une carte est aussi disponible (mise à jour différée), et permet de localiser des points d'accès ouverts ou accessibles, et ceux qui sont (a priori) correctement protégés. A ce jour, plus de 30 000 points d'accès ont été recensés par les beta-testeurs !

Chiffrement des points d'accès sans-fil

Il est assez effarant de voir que bon nombre de points d'accès utilisent encore le chiffrement WEP (29%), et même que 6,3% de ceux-ci sont (a priori) complètement ouverts. Seuls 18,8% des points d'accès utilisent le chiffrement WPA2. Le manque d'information et l'obsolescence des points d'accès (qui ne supportent pas WPA/WPA2 pour la grande majorité) sont des raisons plausibles pouvant expliquer ces constatations.

L'Hadopi a du souci à se faire, tout particulièrement en ce qui concerne la sécurisation des points d'accès sans-fil et des moyens de sécurisation. Les FAIs ont tenté de faire des efforts en ce qui concerne les modes de chiffrement par défaut, mais certains irréductibles continuent d'employer le chiffrement WEP (qui a dit que la Nintendo DS ne supportait pas WPA ?), pour moultes raisons.

<article44|flattr>



Les contenus disponibles sur ce blog sont publiés sous licence Creative Commons BY-NC-SA.
Vous pouvez réutiliser tout ou partie de ces contenus à condition de citer l'auteur et l'origine, vous ne pouvez en faire une utilisation commerciale, et enfin vous devez partager tout travail ou œuvre dérivée sous les mêmes conditions — c'est-à-dire avec la même licence d'utilisation Creative Commons.