Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/12/2011, à 01:15

Zakhar

"Montez" votre Freebox V6 à distance... streamez votre musique et + !

Et voila, chose promise...

"MONTEZ" VOTRE FREEBOX "DISTANTE" !

A l'image de curlftpfs, j'ai fait un programme vous permettant de "monter" une Freebox Revolution (V6) sur votre filesystem local.

Le montage est pour l'instant "Read-Only" (write c'est une autre histoire... ce sera pour un peu plus tard !).

Bien sûr, en local, cela présente un intérêt tout relatif vu qu'on peut déjà le faire avec curlftpfs ou cifs.

... mais la bonne nouvelle... c'est que ça fonctionne parfaitement à distance !


Quels sont les cas d'utilisation intéressants :

  • Naviguer plus facilement (Nautilus, Dolphin,...) sur l'arborescence de votre Freebox (l'interface Web fournie n'est pas géniale !)

  • Ecouter de la musique stockée sur votre Freebox "en streaming" (c'est à dire sans avoir à la télécharger préalablement).

  • De même pour regarder des photos, sans avoir à les télécharger préalablement.

  • Pouvoir télécharger des fichiers comme vous les copiez depuis vos disques locaux, avec Nautilus

  • Pour passez des commandes shell (rsync par ex.) sur les fichiers de la Freebox, comme s'ils étaient locaux.

  • ...

Sans plus attendre c'est ici :

(Build 0.5.03 du 10 décembre 2011 - 16:40)
(Build 0.5.05 du 24 décembre 2011 - 17:40)
(Build 0.5.06 du 25 décembre 2011 - 00:50)
(Build 0.6.0 du 7 janvier 2012 - 21:30)
(Build 0.6.1 du 8 janvier 2012 - 16:00)

(Build 0.6.2 du 11 février 2012 - 14:45)
Code source (langage C)

Version binaire Lucidx64
Version binaire Lucidx32

Il s'agit d'une version de qualité "release candidate" : tout fonctionne déjà de façon poussée et bien testé.
A partir de la 0.6.1, la version standard (ci-dessus) ne contient plus les messages de niveau DEBUG, de façon à être plus compacte et plus rapide. Si vous souhaitez une version avec ces messages (-DDEBUG) et avec les symboles de debogage (-g), vous pouvez la compiler, ou la récupérer directement ici :
Version DEBUG binaire Lucidx64
Version DEBUG binaire Lucidx32



Si vous voulez aider à tester vous êtes les bienvenus (voire faire des bouts de code... tiens la partie "write" par exemple big_smile )
Le programme lié est compilé avec les symboles de débogage. Vous pouvez donc observer ce qu'il se passe avec Nemiver (par exemple) en cas d'anomalie.

Si vous souhaitez un binaire sur une autre version d'Ubuntu que Lucidx64, vous pouvez:
- le compiler vous même (2 trucs à installer et une ligne de commande, tout est dans le commentaire -en anglais- du source)
- m'indiquer pour quelle version d'Ubuntu (par ex. 11.10 32bits) vous voulez le binaire.


Utilisation du programme:

pour un usage standard, on ne peut guère faire plus simple :

./fbxrofs http://78.90.90.90:12345 repertoire_de_montage

-78.90.90.90 est l'IP publique de votre Freebox distante (ou sinon mafreebox.freebox.fr pour usage en réseau local)
-12345 est le port ouvert pour l'administration distante (dans la page de paramétrage de l'admin distante).
-répertoire_de_montage ... bah, ben c'est, comme son nom l'indique... là où vous voulez monter votre Freebox sur votre filesystem !

Le programme va vous demander le mot de passe, et si vous ne vous êtes pas trompé, il va scanner l'ensemble des répertoires et fichier de la freebox, puis rendre la main lorsqu'il a lancé Fuse.

A partir de là votre Freebox est accessible comme des fichiers locaux... c'est juste bien moins rapide (à cause du A de ADSL qui fait que la "voie montante" est à 1Mbps max)... sauf si vous avez la chance d'être en Freebox V6 Fibre !..

Pour plus d'options, lancez avec l'option -h ou --help (comme habituellement !).

Le démontage, comme pour tout système via fuse se fait avec :

fusermount -u repertoire_de_montage


Désinstallation du programme:

Retirez simplement l'éxécutable de votre système, soit en mode graphique en supprimant le fichier fbxrofs, soit en console avec :

rm fbxrofs

Et c'est tout pour Ubuntu !
(Pour d'autres distributions, vous avez peut-être dû installer les librairies libfuse ou libcurl, si c'est le cas, elle ne devraient plus être utile. Attention à ne pas les supprimer pour les Ubuntu car elles servent à d'autres logiciels )




Note : ancienne version stable (0.5.06) sans lecture asynchrone :
Ancien Code source (langage C)

Ancienne Version binaire Lucidx64
Ancienne Version binaire Lucidx32

Dernière modification par Zakhar (Le 11/02/2012, à 14:48)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#2 Le 03/12/2011, à 01:16

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Instructions de compilation :

elles sont indiquées dans le source, mais pour aller plus vite, voici ce que vous devez faire :

-1) Installer les deux librairies dont dépend le programme : fuse et curl
Ceci est à faire une seule fois, ensuite vous pourrez compiler autant de fois que nécessaire

(Sur Lucid Lynx, et à adapter à votre distribution)

sudo apt-get install libcurl4-gnutls-dev libfuse-dev

-2) Après avoir téléchargé le source, le compiler avec :

`curl-config --cc --cflags --libs` `pkg-config fuse --cflags --libs` -o fbxrofs fbxrofs.c -Wall -g -O3

Si vous voulez debugger et avoir le maximum de trace, change un peu les options avec :

`curl-config --cc --cflags --libs` `pkg-config fuse --cflags --libs` -o fbxrofs-dbg fbxrofs.c -Wall -g -DDEBUG

Cette commande vous produit alors un fichier fbxrofs-dbg contenant toutes les chaînes de caractères de la trace maximale (option -l 7)

Dernière modification par Zakhar (Le 14/02/2012, à 22:35)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#3 Le 03/12/2011, à 01:16

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Réservé à la doc ultérieure


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#4 Le 03/12/2011, à 02:33

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Salut Zakhar !
Intéressant ! tongue

Je m'abonne et je vais suivre cette discussion... À plus.

Dernière modification par bishop (Le 03/12/2011, à 02:35)


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#5 Le 03/12/2011, à 15:55

moths-art

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Superbe initiative pour les heureux freenautes!
Ca fera encore une bonne raison pour des basculements sur linux...
C'est vrai que l'idée de passer par rsync est vraiment bonne.

On commence à mettre de plus en plus de données dans nos 'machinbox' et pouvoir effectuer des backups facilement n'est pas des plus anodins.

Comme bishop, je vais suivre cette discussion.
T'aider au dev, ça va être délicat... (tu n'y perds rien par ce que mon code c est plutôt médiocre)
En revanche, je testerais régulièrement...

Hors ligne

#6 Le 03/12/2011, à 16:11

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Merci à vous deux des encouragements.

@moths-art, si tu as besoin d'une version compilée sur une cible particulière n'hésite pas (mais compte tenu de ton message, je devine que tu sais compiler toi-même... surtout qu'en l'occurrence c'est super simple, même pas de makefile !).

Là je fais du "propre" (+ commentaires), et après il faut que je rajoute le "multi-thread". Je pensais qu'on pouvait s'en passer vu que c'est du read-only, mais ça ralentit même un ls si on lit en même temps. Or le "ls" ne nécessitant pas d'accès à la Freebox (tout l'arbre des fichiers est lu en mémoire à l'initialisation - c'est une limitation, mais elle est tolérable pour du "read-only") on peut parfaitement le faire en multi-thread sans problème. Seules les lectures seront sérialisée. En effet, ce n'est pas réentrant vu qu'on n'utilise qu'une seule connexion à la Freebox. Et dans un sens, ça n'est pas grave vu que de toute façon, soit on est limité par l'upload, soit on est en réseau local et les read doivent aller très vite !

Dernière modification par Zakhar (Le 03/12/2011, à 16:13)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#7 Le 03/12/2011, à 18:13

moths-art

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Zakhar a écrit :

@moths-art, si tu as besoin d'une version compilée sur une cible particulière n'hésite pas (mais compte tenu de ton message, je devine que tu sais compiler toi-même... surtout qu'en l'occurrence c'est super simple, même pas de makefile !).

Oui, effectivement, j'ai déjà sollicité pas mal mes bécanes avec des compiles donc c'est pas ça qui leur fait peur :
que ça soit make, scons etc, ça ne pose pas de problème.

Pour la notoriété, une fois que le projet sera plus abouti, tu pourras en parler à FreeNews.
Avant tout, j'ai ajouté quelques lignes dans le wiki :
http://doc.ubuntu-fr.org/freeboxv6

Pour les cibles, il faudrait peut-être te mettre en relation avec les devs de myfreetv, freego ou freetuxtv afin d'avoir un beau paquet dans un ppa distribué pour plusieurs versions de ubuntu!

Soit dit en passant : le source à l'air bien documenté et harmonieux : j'aime bien quand y'a un peu d'ASCII ART pour mettre la doc en valeur!  (^_^)

Dernière modification par moths-art (Le 03/12/2011, à 18:15)

Hors ligne

#8 Le 03/12/2011, à 21:25

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Merci merci ;-)

Là je me suis arraché les cheveux sur la version 32 bits, c'est galère en fait le 32 bits yikes

Enfin, j'y suis arrivé, il y avait des carbistouilles entre les formats %ld et certains types comme off_t.

Je publierai la version compatible 32/64 un peu plus tard dans le W.E.

Eh oui aussi, j'essaye de bien commenter parce que sinon, même pour moi, si je reprends le source dans 6 mois je sais plus pourquoi j'ai fait tel ou tel truc !..

Merci pour l'ajout dans le Wiki, à l'occase j'ajouterai l'autre utilitaire (il me sert bien !) qui permet l'upload avec reprises, en blocs, et même via Nautilus vers une Freebox "remote". Lui c'est du shell : http://forum.ubuntu-fr.org/viewtopic.php?id=638101
Eh oui après la suite c'est le paquet dans le ppa... on verra ça pour plus tard quand ça sera un peu plus "polissé" come logiciel. Par exemple tiens la reconnexion automatique si on ne fait rien sur le montage fuse et que le cookie expire.... c'est long à tester, faut que je laisse expirer le cookie hmm

Quant à Freenews, pas question. C'est des idiots, leur forum est hyper censuré dès que tu dis un truc qui n'a pas l'heur de leur plaire. J'écrirais plutôt au gars d'Univers Freebox s'il veut faire un mot (sinon on s'en passe !).

Dernière modification par Zakhar (Le 03/12/2011, à 21:27)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#9 Le 04/12/2011, à 01:34

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Build 0.5.01 - 04 Décembre 2011 - 01:32
- Fonctionne aussi en 32 bits !
- Le reconnexion est codée (si le cookie expire)... il reste à la tester.
- Encore un peu plus de "propre" et de commentaires.
(Page du Wiki mise à jour avec la version 32bits)

Dernière modification par Zakhar (Le 04/12/2011, à 01:41)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#10 Le 05/12/2011, à 00:55

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Build 0.5.02 - 05 Décembre 2011 - 00:50
- Multi-threading implémenté (ça améliore bien les choses, et par ex. pour le streaming de musique avec VLC, avec RythmBox c'était déjà OK)
- Escape des fichiers (mais il y a un bug, même sur l'interface natif avec le '?')
- Encore un peu plus de "propre" et de commentaires.
[ Voir les /Todo mis à jour, pour ce qu'il reste à faire ]


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#11 Le 10/12/2011, à 16:50

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Build 0.5.03 - 10 Décembre 2011 - 16:40
- Suite des tests, debogage, et traitement de certains cas particuliers (escape de caractères, etc...)
- Fin de la mise en forme/commentaires détaillés du programme.

[ Voir les /Todo mis à jour, pour ce qu'il reste à faire ]

Il reste notamment à faire les "optimisations", dont la principale est le "readahead".

En effet, la façon simple dont fonctionne le programme 'consomme' environ 4% d'overhead dans le cas d'une copie simple de fichier à distance. Puisqu'on lit exactement ce que le système fuse nous demande de lire et rien d'autre, lors d'une copie d'un gros fichier, on lit celui-ci par blocs de 128K (lectures du kernel).
La conséquence est qu'on a un header aller/retour (environ 1K au total) chaque 128K de données, mais surtout on paye la latence pour chacun de ces paquets.
L'idée consiste alors à faire du "readahead", c'est à dire, en parallèle, à lire la suite du fichier avant qu'on ne nous la demande.

Comme il n'y a pas de bonne façon dans 100% des cas d'usage, cette façon de faire les choses devrait améliorer pour les 'lectures séquentielles', mais risque de dégrader un peu pour les 'lectures aléatoires'.
Il faut donc 'affiner' l'algorithme pour qu'il ne fasse du 'readahead' que lorsque ça semble efficace.

On rajoutera alors aussi un paramètre pour l'utilisateur permettant de régler l'agressivité du 'readahead', ou de le supprimer totalement s'il sait qu'il va utiliser seulement des lectures aléatoires.

La présente version va donc 'forker' puisqu'elle est considérée comme 'release candidate' (pour les fonctionnalités qu'elle comprend).

Une fois le readahead au point, et si réellement on note l'amélioration, je fusionnerai les deux branches.

La prochaine sera donc 0.6.00... ou pas wink

Dernière modification par Zakhar (Le 10/12/2011, à 17:00)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#12 Le 17/12/2011, à 11:14

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Ca avance !

Alors maintenant j'en suis à un "overhead" de seulement 0,2% sur une copie séquentielle (avec rsync par exemple).

Le problème est que ça dégrade considérablement par rapport à la lecture simple par blocs lorsqu'on lit plusieurs fichiers en parallèle. Par exemple : je fais un rsync sur un gros fichier et j'écoute de la musique en streaming en même temps (oui je sais c'est vicieux de faire ça sur une freebox à distance !). La dégradation vient du fait que, comme dans l'implémentation actuelle il n'y a qu'un seul "reader", pour passer du rsync au stream et vice-versa, on est obligé d'arrêter la lecture en cours à chaque fois. Si ça se fait simplement, la conséquence au niveau réseau est que toute la fenêtre d'anticipation TCP est fichue en l'air, elle est irrécupérable, sauf à écrire un programme niveau socket réseau, ce qui est hors de proportion dans le cas de figure qui nous intéresse !
Cela crée donc de la "perte" et une partie de la bande passante est "gaspillée" dans la situation exposée.

Je vais donc passer à une implémentation à plusieurs lecteurs. Du coup ça devient un pattern classique : consumer / dispatcher / worker.
Ca aura aussi le mérite d'être plus "réactif" en cas de lectures simultannée. Dans le protocole actuel, les lectures sont "sérialisées", là elle seront "parallélisée", ce qui veut dire que les lectures de "petits" blocs seront moins pénalisées par la sérialisation derrière des blocs plus gros.
Si ça complexifie le "lecteur", d'un autre côté ça simplifie le "read-ahead" parce que désormais la gestion redevient 1 buffer d'anticipation par lecteur.

... allez 3ème architecture en cours wink

... et là on devrait arriver à un truc qui fonctionne nettement mieux en copie séquentielle, sans gros dégâts sur la performance en lectures en parallèle.

Dernière modification par Zakhar (Le 17/12/2011, à 11:16)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#13 Le 24/12/2011, à 17:46

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Contribution de canaillou2k5 (en MP)
- Description du bug: lorsqu'on essaye de monter une Freebox avec un disque formaté en HFS+ (Mac) connecté en USB, une erreur se produit.
- Trace : voici la trace au moment de l'erreur (log du programme)

[2011/12/24 13:18:43] 9:{"mimetype":"inode\/directory","name":".HFS+ Private Directory Data\r","modification":1314614008,"type":"dir","size":2}
[2011/12/24 13:18:43] Réponse JSON mal formée : {"mimetype":"inode\/directory","name":".HFS+ Private Directory Data\r","modification":1314614008,"type":"dir","size":2}

Correction
- Effectivement, on voit que le fichier (en l'occurrence un répertoire) contient un 'caractère spécial', en l'occurrence un '\r' soit 0x13, dans son nom. Cela faisait partie d'un /TODO général sur le fait de tester ce qu'il se passe lorsque les fichiers comportent des caractères dans la plage 0x1 à 0x1F.
Je n'ai pas corrigé ce /TODO général, mais pour l'instant, uniquement le /r

Et voici donc la 0.5.05
- Contribution canaillou2k5
- Correction lorsque le nom des fichiers contient un '\r'.

(Note: désormais les binaires sont compilés sans option -g. Donc si vous souhaitez debugger... il vous faudra recompiler !)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#14 Le 25/12/2011, à 01:12

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Contribution de canaillou2k5 (en MP)
- Lorsqu'un répertoire est inaccessible, le programme s'arrête et ne fait pas de montage.
- Trace : voici la trace au moment de l'erreur (log du programme)

Lecture de l'arborescence de la Freebox...
Erreur JSON: {"id":823378840,"jsonrpc":"2.0","error":{"message":"\/media\/2To Green\/.Trashes\/0: Permission denied","method":"fs.list","code":400}}

Correction
- Effectivement, ce genre d'erreur n'arrive jamais avec le disque interne de la Freebox (on n'a aucun moyen de changer les droits des fichiers). Par contre, lorsqu'on branche un disque en USB à la Freebox, si celui-ci a des répertoires qui ont de droits empêchant la Freebox de les lire, on peut avoir l'erreur signalée. En ext4, il suffit de créer un répertoire avec le compte de votre utilisateur courant, de faire un chmod 400, et la Freebox ne pourra pas le lire !..
Et j'avoue, ce n'était pas très astucieux de faire d'un tel cas une "erreur fatale". C'est quelque part une erreur de spécification. Donc désormais, lorsqu'on le programme ne peut pas lire un répertoire, il affiche un avertissement et il continue.
C'est seulement si en définitive on a 0 répertoires et 0 fichiers qu'on arrête le programme (inutile de monter un truc en read-only s'il n'y a rien dessus !).

Autres corrections et améliorations
- Dans le cas où on avait un répertoire nommé (par exemple) test, et un autre test2, on pouvait avoir un listage des répertoires incorrect.
- A noter, qu'outre les répertoires inaccessibles (expliqués ci-dessus), certains fichiers peuvent aussi être inaccessibles. On ne le sait pas lorsqu'on parcourt l'arborescence pendant la phase d'initialisation, car l'information n'est pas fournie d'emblée par la Freebox. On ne s'en aperçoit que lorsqu'on tente de lire un fichier (et il n'y a rien à y faire... sauf à démonter le disque externe de la Freebox, et changer les droits du fichier en question). Si cela arrive, le programme rend désormais une erreur plus significative, en l'occurrence : permission non accordée.
- /TODO: dans les 'to do', j'ai rajouté qu'il faudrait faire une meilleure gestion des liens symboliques. A ce jour, on sait dire qu'une entrée est un lien symbolique, mais on ne peut que les lister. En réalité, la Freebox ne faisant aucune différence pour le téléchargement entre le lien symbolique et le fichier pointé par le lien, il faudrait voir si on ne peut pas faire un HTTP Head sur le lien histoire d'avoir la taille du fichier pointé, et ensuite faire passer le lien pour un fichier régulier.

Et voici donc la 0.5.06
- Un répertoire inaccessible n'est plus une erreur fatale (ça ne l'est que si TOUT est inaccessible !).
- Correction d'un bug empêchant l'accès à certains répertoires dont le nom était "proche" (par ex.: test, test2)
- Code retour significatif lorsqu'on ne peut pas accéder à un fichier.

Dernière modification par Zakhar (Le 25/12/2011, à 01:14)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#15 Le 25/12/2011, à 16:23

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Salut Zakhar !
J'ai attendu que tu peaufines ton script pour faire un essai. Essai concluant, ton script fonctionne très bien.
L'intérêt pour moi est de pouvoir télécharger (copier) des fichiers enregistrés sur le disque dur de la freebox à partir de Nautilus.

Quelques infos concernant la procédure... pour les non-initiés... dont je fais parti.
Tu devrai préciser qu'il faut rendre exécutable le script fbxrofs.

J'ai créer un dossier FreeMedia dans mon $HOME (dossier personnel).
Le script fbxrofs se trouve dans mon $HOME (dossier personnel).

Montage :

cd && ./fbxrofs http://mafreebox.freebox.fr ~/FreeMedia

Le mot de passe requis est celui de la freebox, pas celui de l'utilisateur sudo ou de l'administrateur root.


Démontage :

cd && fusermount -u ~/FreeMedia

La commande est exécutée sans privilèges sudo ou root


Exemple

bishop1104@Bishop1104:~/Bureau$ cd && ./fbxrofs http://mafreebox.freebox.fr ~/FreeMedia
Mot de passe : 
Lecture de l'arborescence de la Freebox...
ATTENTION : France 2 - Mots croisés (Merkel à l'Elysée ?) - 05-12-2011 20h38 01h20 (107).m2ts contient un '?'.
Compte tenu d'un bug de la Freebox, vous ne pourrez pas le télécharger, ainsi quetout son contenu s'il s'agit d'un répertoire.
ATTENTION : France 2 - Mots croisés (Merkel à l'Elysée ?) - 05-12-2011 20h38 01h20 (107).m2ts.idx contient un '?'.
Compte tenu d'un bug de la Freebox, vous ne pourrez pas le télécharger, ainsi quetout son contenu s'il s'agit d'un répertoire.
26 fichiers, 6 répertoires, 0 liens
Lecture Freebox OK
Démarrage de Fuse

Et c'est bon. L'arborescence est crée dans le dossier FreeMedia. Par exemple, dans le sous-répertoire /Disque dur/Enregistrements les fichiers (films, séries,concerts, etc) sont bien présents... big_smile


Un grand Merci à toi Zakhar car il y a un bout de temps que je cherchais une méthode simple pour réaliser ceci.
Bonnes Fêtes !


Note : J'utilise HandBrake pour convertir les fichiers .m2ts en .m4v (mp4) ou .mkv.

Dernière modification par bishop (Le 25/12/2011, à 20:30)


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#16 Le 07/01/2012, à 21:43

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Merci pour ton retour Bishop. big_smile

Comme je l'explique au début, pour faire ce que tu fais en local, il y a déjà une solution, c'est dans les dépôts, et ça s'appelle curlftpfs.

Le principe de curlftpfs est un peu le même que celui de ma première version, sauf que ça utilise FTP, et moi j'utilise l'interface HTTP en lecture.

Mais... bonne nouvelle, la dernière version que je viens de mettre en ligne fonctionne 15% plus vite que curlftpfs en local (l'ancienne était horrible en performances en local, presque 2 fois plus lente que la nouvelle version).

Et donc la grosse nouveauté c'est : la lecture asyncrhone !


Vous pouvez donc prendre la nouvelle version, je l'ai secouée un maximum aujourd'hui, aussi bien en local qu'à distance, en 32 et 64 bits.


Les versions en ligne (post 1) sont compilées avec optimisations (-O3) et donc sans symboles de débogage.

Si vous rencontrez des problèmes, vous pouvez charger les versions debug :
Version DEBUG binaire Lucidx64
Version DEBUG binaire Lucidx32

Ensuite pour m'aider à trouver d'où vient le problème, il vous faut valgrind (c'est dans les dépôts) et lancer avec

valgrind --leak-check=full ./fbxrofs-dbg 'http://votre_freebox/Disque dur' rep/de/montage -l 7 -f 1>/tmp/fbx.log 2>&1

Si le programme ne plante pas, vous terminez proprement avec

fusermount -u rep/de/montage

Et les informations debogage :
- le fichier de log dans le répertoire temporaire ci-dessus
- ce que vous étiez en train de faire au moment où ça a planté, par exemple : handbrake + stream musique avec VLC sur le montage, et sauvegarde de fichier disque/disque en parallèle (oui ça a une influence si on fait d'autres I/O même hors du montage !)


Enjoy !


Changelog de la 0.6.0
- Lecture asynchrone !..
- Le système de journalisation a été entièrement refondu (voir commentaires ou aide). Il fonctionne désormais avec un "niveau de gravité" (voir man syslog ). La journalisation se fait à la console pendant l'initialisation et en mode daemon elle se fait dans le journal daemon. Si on lance en premier plan (option -f par exemple) la journalisation se fait tout le temps à la console (et on peut donc la rediriger).


Evolution future : mode écriture !

... je m'y mets !

(j'ai une idée pour que ce ne soit pas trop dur à coder... on va voir ça !)

Dernière modification par Zakhar (Le 07/01/2012, à 22:04)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#17 Le 08/01/2012, à 00:59

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Salut Zakhar !
Cette nouvelle version (Version binaire Lucidx64) que tu proposes dans le Poste #1 provoque une erreur de segmentation.

bishop1104@Bishop1104:~$ ./fbxrofs http://mafreebox.freebox.fr /home/bishop1104/FreeMedia
Erreur de segmentation

Par contre la version (Version DEBUG binaire Lucidx64) que tu proposes dans le poste #16 (ci-dessus) fonctionne correctement (???).

bishop1104@Bishop1104:~$ ./fbxrofs-dbg http://mafreebox.freebox.fr /home/bishop1104/FreeMedia
Mot de passe : 
Lecture de l'arborescence de la Freebox...
Total: 6 fichiers, 6 répertoires, 0 liens
Lecture Freebox OK

Démarrage de Fuse

Dernière modification par bishop (Le 08/01/2012, à 00:59)


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#18 Le 08/01/2012, à 01:24

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Bien vu... et c'est un problème de firefox qui croit que c'est un fichier texte et fout des 0D-0A à  la place des 0A... grrr

Et du coup ça met des instructions qui n'en sont pas et évidemment ça plante tout.

En attendant tu peux récupérer la version 'sans les symboles de debug' de deux façons :
- en compilant le source wink
- avec curl (qui est plus malin que firefox !)

curl http://xslt2.0.free.fr/free/rofs/binaries/lucid64/fbxrofs -o fbxrofs

Désolé pour l'inconvénient !

Je vais regarder si on peut forcer firefox à faire un transfert binaire d'un fichier.

[Edit] ... bon, là ça semble remarcher... si ça se trouve c'est moi qui avait merdé avec le transfert FTP qui était en 'automatique' et pas en binaire. Donc tu peux réssayer le lien du post 1, ou la commande curl.
J'ai revérifié les 6 fichiers en les rétéléchargeant et en comparaison binaire, ils sont tous bons a priori.

Dernière modification par Zakhar (Le 08/01/2012, à 01:36)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#19 Le 08/01/2012, à 01:49

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Ca fonctionne en téléchargeant fbxrofs avec curl.

bishop1104@Bishop1104:~$ ./fbxrofs http://mafreebox.freebox.fr /home/bishop1104/FreeMedia
Mot de passe : 
Lecture de l'arborescence de la Freebox...
Total: 6 fichiers, 6 répertoires, 0 liens
Lecture Freebox OK

Démarrage de Fuse

fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option

J'ai démonté puis remonté le répertoire. Le message ci-dessous n'apparaît plus :

fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option

Je ne pense pas avoir oublié de démonter le répertoire FreeMedia lors de la précédente opération mais faute d'en être sûr... roll


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#20 Le 08/01/2012, à 11:37

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Ce message là vient de fuse.

Le message ci-dessus apparaît en principe quand tu as mis des fichiers dans le répertoire où tu cherches à monter. Comme le montage va faire disparaître temporairement ces fichiers, c'est considéré comme non sûr, par exemple, si le répertoire contenait des fichiers de configuration, on pourrait "berner" un utilisateur en faisant un montage et en présentant des fichiers de configuration différents... avec toutes les conséquences que tu imagines.
Et donc fuse râle quand tu fais ça. Comme il te le dit aussi, si tu sais que c'est toi qui as mis les fichiers (hors montage) et qu'ils vont temporairement disparaitre avec le montage, tu peux toujours forcer avec

-o nonempty

Toutes les options -o que tu mets avec fbxrofs sont passées par le programme à fuse, et donc ce 'forçage' fonctionne... si tu en as besoin !..

Le message arrive aussi effectivement si tu as déjà un montage, puisqu'il y a alors des fichiers/répertoires. En effet dans la version en cours, si tu montes un endroit de ta freebox où il n'y a rien du tout, le montage est annulé... vu qu'en read-only, monter un truc vide est assez inutile !
Démonstration, actuellement il n'y a pas d'enregistrements télé sur ma Freebox cible et donc :

$ ./fbxrofs 'http://77.77.77.77:7777/Disque dur/Enregistrements' freebox
Lecture de l'arborescence de la Freebox...
Aucun fichier ni répertoire accessible : montage annulé.

Pour savoir si tu as un montage en cours tu peux faire

mount
mount a écrit :

(...)
fbxrofs on /home/zakhar/freebox type fuse.fbxrofs (ro,nosuid,nodev,user=zakhar)


ou pour les montages "utilisateur" comme ceux sous fuse :

cat /etc/mtab
/etc/mtab a écrit :

(...)
fbxrofs /home/zakhar/freebox fuse.fbxrofs ro,nosuid,nodev,user=zakhar 0 0


Et n'hésite pas à faire un nouveau post si toutefois tu rencontrais un bug, soupçon de bug, ou des choses qui sont "améliorables".

P.S.: pour la partie écriture, ça ne fonctionnera pas en local car la seedbox qui est utilisée pour ça ne sait pas télécharger un fichier sur le réseau local, elle s'attend à utiliser comme interface celui qui communique vers l'internet (la sortie ADSL). Et donc, curlftpfs reste la solution locale pour lire/écrire

Dernière modification par Zakhar (Le 08/01/2012, à 11:43)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#21 Le 08/01/2012, à 13:44

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Salut Zakhar !
Merci pour ces infos...

Je ne manquerai pas de t'informer si je rencontre un  problèmes avec cette version ou les versions à venir. tongue
À bientôt !

Dernière modification par bishop (Le 08/01/2012, à 13:44)


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#22 Le 08/01/2012, à 16:21

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Changelog de la 0.6.1 (Amélioration mineure)
- La version standard (rapide) ne contient désormais plus les messages de niveau debug. Avec cette version normal, l'option -l 7 est équivalente à -l 6 puisqu'elle contient 0 message debug. Comme il n'y a pas non plus le test et les appels à la fonction de journalisation, c'est un tout petit plus rapide, et surtout le code est plus compact (notamment parce que les chaînes de caractères du mode debug ne sont plus là !).
Si vous souhaitez debugger et/ou afficher les messages de niveau debug, merci d'utiliser la version compilée avec les symboles de debogage et les messages DEBUG. La nouvelle option de compilation pour avoir les messages de debug est -DDEBUG

Les options DEBUG (symboles de débogage + messages de niveau DEBUG) sont là :
Version DEBUG binaire Lucidx64
Version DEBUG binaire Lucidx32

Dernière modification par Zakhar (Le 08/01/2012, à 16:23)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#23 Le 23/01/2012, à 23:53

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Yesss...

De façon "expérimentale" (codé en dur comme un cochon, y compris la taille du fichier) j'arrive à uploader un fichier sur la Freebox. Ca devient bon ! big_smile

... et je me presse pas trop, parce qu'en ce moment les big-news chez Free tournent plutôt autour du téléphone mobile.
De plus je comptais adapter ensuite mon prog pour en faire un http-fs avec démo sur Rapidshare/Megaupload à la clé... mais là c'est aussi un peu raté de ce côté là. Bon, vous me direz, Rapidshare est pas encore fermé (et en plus Rapidshate a des "APIs" pour programmeur !)... mais pour combien de temps malgré les déclarations à haute voix des commissaires européens ?

Dernière modification par Zakhar (Le 23/01/2012, à 23:55)


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#24 Le 11/02/2012, à 14:52

Zakhar

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

La version "écriture" demande un peu plus de travail car la structure des fichiers n'est maintenant plus "constante" puisqu'on peut écrire/modifier. La gestion de l'arborescence des fichiers de la Freebox doit donc être ré-écrite complètement.

En attendant, une amélioration sur la version read_only :


Changelog de la 0.6.2 (Amélioration)
- Suppression de la liste chaînée des sémaphores de réponse. Désormais, on utilise pour cela une variable de __thread, cela permet d'éviter un verrouillage inutile plus les traitements push/pop dans l'arbre. Le code est également simplifié.


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#25 Le 13/02/2012, à 22:45

bishop

Re : "Montez" votre Freebox V6 à distance... streamez votre musique et + !

Salut Zakhar !
On vient de me changer le FreePlayer.
J'ai essayé les deux dernières versions de fbxrofs que tu proposes. Quand je lance la commande

./fbxrofs http://mafreebox.freebox.fr /home/bishop1104/FreeMedia

l'arborescence est bien présente dans le dossier FreeMedia mais les dossiers restent désespérement vides.

Une idée !


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne