#26 Le 23/01/2013, à 14:20
- root
Re : Uploader sur votre Freebox Révolution à distance
J'ai essayé ce matin. Y'a pas moyen ...
Voila ce que j'ai fait. J'ai crée 2 variables globales
FBSID=''
FBCSRF=''
Une fonction curlget, appelé lors du login pour recuperer le token et l'id et set les variables :
curlget()
{
local err=0 # Erreur retournée par la fonction appelée
local hcode
if printf '%s' "${1}" | grep -q 'FBXSID='; then
hcode=$(printf '%s' "${1}" | grep "FBXSID")
FBSID=$(printf '%s' "${hcode}" | sed 's/.*FBXSID="//;s/".*$//')
else
exit 2
fi
if printf '%s' "${1}" | grep -q 'X-FBX-CSRF-Token'; then
hcode=$(printf '%s' "${1}" | grep "X-FBX-CSRF-Token")
FBCSRF=$(printf '%s' "${hcode}" | sed 's/.*X-FBX-CSRF-Token: //;s/\r//')
else
exit 2
fi
if printf '%s' "${1}" | grep -q '_ERR='; then
err=$( printf '%s' "${1}" | sed 's/.*_ERR=//' )
exiterr "${err}" "${eMSG_CURL_ERR}${err}"
fi
return $?
}
et j'ai mis a jour la fonction ccurl appelé a chaque lancement de curl en ajoutant le SID et CSRF
ccurl()
{
curl -b FBXSID="${FBSID}" --data-urlencode "csrf_token=${FBCSRF}" "${@}" -w "%{http_code}" -s || printf "_ERR=${?}"
Au final, j'ai bien le token et le CSRF passé au server freebox, mais celui ne les supporte pas apparement :
Erreur=85
** Erreur JSON avec la Freebox.
{"jsonrpc":"2.0","error":{"message":"parse error: bad starting element 'c' (should be '[' or '{')","code":-32700}}
Hors ligne
#27 Le 23/01/2013, à 19:23
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Non, là ton token a marché !
En effet, tu as une erreur de parsing JSON "applicative" qui te dit que le message JSON ne commence pas par ce qu'il faut.
Si le token n'avait pas marché, tu aurais eu une erreur http_code 403 (et donc le JSON serait non défini !).
Donc ta modification de token est OK, il faut juste regarder soit avec WIreshark, soit en faisant un print sur le ccurl, ce que tu envoies exactement qui n'est pas du JSON, ou alors tu rajoutes -v au curl et ça va te spammer l'écran des messages exacts envoyés et reçus par curl !..
Et si tu ne vois pas, il faut comparer à ce que fait un navigateur quand il envoie son JSON.
Dernière modification par Zakhar (Le 23/01/2013, à 19:24)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#28 Le 24/01/2013, à 09:41
- root
Re : Uploader sur votre Freebox Révolution à distance
J'ai creusé un peu
la commande lancé semble bonne :
curl --data-urlencode csrf_token=tXQKJVrzrZW+K0INRWMJBtODajfwdlCQkb/55nno9x0kQQSIZHrolX/4rmTBKQMC -b FBXSID=zRNHF1pkZ+hRA9nP+s2ajwFeGVZvX2Cw88uDvpFZJ5dq3IkknpHPtS7ip
v7Q3O67 http://MONIP/download.cgi -o /tmp/tmp.p8kedmPdN8 -b /tmp/tmp.p8kedmPdN8.c --data {"jsonrpc":"2.0","method":"download.config_get"} -H Content-Type: application/json; charset=utf-8 -w %{http_code} -s
Par contre je pense que ce qui est interpreté par curl est bizarre. J'ai fait un --trace-ascii car -v affiche juste les commandes pas les data :
=> Send header, 408 bytes (0x198)
0000: POST /download.cgi HTTP/1.1
001d: User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 Ope
005d: nSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
008e: Host: <MONIP>:8080
00a9: Accept: */*
00b6: Cookie: FBXSID="MPcfAQ0G1eZ/VRSH9PlPMsV/roR1ROjQWJrpv8MQkO2BaOTX
00f6: iSDlUoCQUkCXPoDM"; FBXSID=MPcfAQ0G1eZ/VRSH9PlPMsV/roR1ROjQWJrpv8
0136: MQkO2BaOTXiSDlUoCQUkCXPoDM
0152: Content-Type: application/json; charset=utf-8
0181: Content-Length: 126
0196:
=> Send data, 126 bytes (0x7e)
0000: csrf_token=NNjdYGJAwemGTOZI4yl3kQe0vOqjRzJewOvL%2BASJQbfzKFg3CbE
0040: fFZT3kZhd062k&{"jsonrpc":"2.0","method":"download.config_get"}
== Info: upload completely sent off: 126out of 126 bytes
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
<= Recv header, 15 bytes (0xf)
0000: Server: nginx
<= Recv header, 37 bytes (0x25)
0000: Date: Thu, 24 Jan 2013 08:02:29 GMT
<= Recv header, 32 bytes (0x20)
0000: Content-Type: application/json
<= Recv header, 28 bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 24 bytes (0x18)
0000: Connection: keep-alive
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 125 bytes (0x7d)
0000: 72
0004: {"jsonrpc":"2.0","error":{"message":"parse error: bad starting e
0044: lement 'c' (should be '[' or '{')","code":-32700}}
0078: 0
007b:
Ce que je comprend, c'est que le csrf_token est mal donné, mais je ne sais pas si il faudrait qu'il se trouve la dans une enveloppe json ou alors ailleurs ...
Je ne peux pas faire de wireshark pour le moment. J'essaierais peut-etre ce weekend histoire d'avoir une idée clair de ce a quoi il faut parvenir.
Hors ligne
#29 Le 24/01/2013, à 11:29
- Vinky41
Re : Uploader sur votre Freebox Révolution à distance
Salut
Tu as essayé avec ces indications ? http://forum.ubuntu-fr.org/viewtopic.ph … #p12259041
De mon côté ça marche impec
Dernière modification par Vinky41 (Le 24/01/2013, à 13:17)
Hors ligne
#30 Le 24/01/2013, à 16:36
- root
Re : Uploader sur votre Freebox Révolution à distance
Yes,
ça semble marcher un peu mieux (j'avais pas les meme argument que toi sur la commande curl). Mais il y a encore pas mal de boulot pour integrer tout ça au script de Zakhar.
Reste a voir, si j'arriverais a faire quelque chose avec qu'il ai a le faire lui-même
Je vous tiens au courant bien sur. Merci pour l'aide !
Hors ligne
#31 Le 24/01/2013, à 17:00
- Vinky41
Re : Uploader sur votre Freebox Révolution à distance
PAs de soucis
Tiens pour automatiser le tout : http://forum.ubuntu-fr.org/viewtopic.ph … #p12327011
C'est le script que j'utilise personnellement
Hors ligne
#32 Le 24/01/2013, à 18:25
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Excellente la photo du chien !..
@Vinky41, en fait le script objet du présent post est un cas fonctionnel un peu différent. Ce qu'on fait ici c'est fonctionnellement "uploader" sur la Freebox. C'est en théorie impossible, du moins via l'interface web, donc on "contourne" l'impossibilité en installant un serveur web local (à moins qu'il n'y en ait déjà un installé) et en demandant à la Freebox de venir chercher le fichier.
Cependant, effectivement, le gros du truc c'est rajouter un lien sur l'interface de download de la Freebox, et ça c'est pareil que dans le script dlfree, même si ce n'est pas le même but. Donc en réutilisant ce que tu as découvert en reverse-engineerant le protocole, on doit s'en sortir !
Ensuite l'autre partie du script c'est juste pour faire un affichage sympa... mais elle nécessitera probablement aussi le CSRF token.
@root, effectivement le CSRF et les arguments JSON ont l'air "collés" et ça n'a pas l'air de plaire à la Freebox.
Je ferai la MàJ ce week-end (ça approche), faut juste que je m'arrange avec ma mère pour rebooter sans la gêner... par exemple quand elle est sortie promener le chien (il est presque de la même couleur que celui de la photo... mais nettement moins doué en shell )
Dernière modification par Zakhar (Le 24/01/2013, à 18:26)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#33 Le 24/01/2013, à 20:40
- Vinky41
Re : Uploader sur votre Freebox Révolution à distance
@zakhar : hum ok... Tu veux dire : uploader depuis une freebox et non pas uploader sur une freebox ? (Dans le second cas je comprend que mon ordinateur va envoyer un fichier sur la freebox, c'est peut-être pour ça que j'avais mal compris ^^ Mea culpa)
Donc de ce que j'ai compris : tu telecharges le fichier sur la freebox (depuis un serveur web local) qui suite à ce dl, laisse le fichier en partage (comme un torrent qu'on a téléchargé donc ? ) et donne la possibilité de télécharger un fichier disponible sur la freebox depuis n'importe où ?
Hors ligne
#34 Le 24/01/2013, à 21:31
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Non non, c'est exactement comme dlfree, sauf que au lieu que le téléchargement se fasse depuis un site public (dlfree) vers la Freebox, ça se fait de ton PC vers la Freebox. Donc vu de ton PC c'est un "upload" (et pour la Freebox, c'est un "download").
Et côté seedbox, on n'utilise pas le torrent, mais le "download direct HTTP" (sur la Freebox), donc le fichier n'est pas partagé au monde entier !..
Le cas d'usage c'est par exemple :
- j'ai pris un film des mes enfants, et je veux que la grand-mère puisse le voir tranquillement dans son fauteuil devant la télé.
- le film de mes enfants est sur mon PC à Paris, la grand-mère est à l'autre bout de la France (chez Free avec une Freebox 6).
- je dois donc mettre le film qui se trouve sur un PC à Paris dans le répertoire Vidéos de la Freebox distante à l'autre bout de la France.
La commande est alors (je simplifie en supposant que tu as réglé une fois pour toute le fichier paramètres par défaut qui contient le IP, les ports, les mots de passe -sinon le script demande tout ça de toute façon):
upfree "Film_des_enfants.mkv" -t "/Disque dur/Vidéos"
Le script s'occupe alors de tout :
- démarrer un serveur web s'il n'en détecte aucun
- "uploader" le fichier ("up" par rapport au PC émetteur, et donc "down" par rapport à la Freebox)
- une fois le fichier totalement uploadé, il fait le "rename" depuis Téléchargements vers Vidéos (et accessoirement il nettoie aussi la liste de téléchargement).
- lorsqu'on utilise un serveur web qui le supporte (Apache par ex.) le script peut être interrompu et on peut donc faire l'upload en autant de fois qu'on veut (ce qui est bien pour les GROS fichiers parce que l'upload ADSL c'est super lent !... Genre 1G ça met 2h30).
Cette fonction de "reprise" de l'upload est en réalité "non documentée" et impossible à activer à partir de l'interface web, mais à partir du moment où on part d'un serveur qui supporte les "range" ça fonctionne parfaitement.
Et une fois tout ceci fini, la grand-mère peut regarder le film tranquillement sur son canapé, sans avoir à faire aucune manipulation "informatique".
... c'est bien sûr un exemple, ça marche avec plein d'autres choses (la musique de ton dernier concert, etc...)
Cerise sur le gâteau, si tu as bien réglé le fichier des paramètres et mis le script dans les scripts de Nautilus, tu peux même le faire sans taper de commande, directement depuis Nautilus !
Conclusion des manipulations (une fois configuré) :
- l'émetteur = 1 clic sur Nautilus
- la mamie = 0 manipulation (sauf la télécommande, mais ça elle maîtrise)
Dernière modification par Zakhar (Le 24/01/2013, à 21:45)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#35 Le 24/01/2013, à 22:56
- Vinky41
Re : Uploader sur votre Freebox Révolution à distance
Hum ok, donc en gros ça à la même fonctionnalité point de vue freebox. La différence étant qu'on part d'un ordinateur qui initialement n'a aucun serveur web ? C'est ça ? Si oui, cela voudrait dire que le script que j'ai précédemment montré n'est qu'une étape parmis les autres. Mais il semble que son intégration dans le tiens rendra ton script à nouveau fonctionnel. Je me trompe ?
PS : je suis intéressé par cette fonctionnalité de reprise de téléchargement. Tu peux me donner quelques pistes (nom ou autre) pour que j'implemente ça sur mon serveur web ?
Hors ligne
#36 Le 24/01/2013, à 23:07
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Oui absolument, c'est bien une "étape".
Mais le script upfree prévoit aussi plein de cas, comme par exemple il va aller regarder où tu as mis tes téléchargements, il vérifie qu'il peut écrire la cible, il vérifie qu'il y a assez de place sur la Freebox avant de commencer le téléchargement (tu l'aurais mauvaise de passer 10 heures sur un upload pour qu'il se plante après 4G !), etc...
Pour ce qui est de la reprise... regarde dans upfree (tu peux récupérer le code sur le 1er post). J'ai mis plein de commentaires... aussi pour moi, parce que quand on relit plusieurs mois plus tard, on ne se souvient pas forcément de ce qu'on a fait.
Tu verras alors que l'étape en question n'est que quelque lignes parmi... tout un tas d'autre lignes très largement plus nombreuses !
Ce qui fait l'astuce c'est la fonction fbx_dlremove.
On retire le téléchargement de la liste quand on sort du programme.
- Soit le téléchargement est fini, et comme ça la liste est "propre"
- Soit le téléchargement a été interrompu et le fait de le retirer de la liste ne supprime pas ce qui a déjà été téléchargé.
... du coup, la fois suivante, il y a déjà un bout de fichier, et la Freebox va juste demander la suite en faisant une requête "range".
... en fait j'ai écrit trop vite plus haut, tu peux tout à fait le faire "à la main" sur ton navigateur pour expérimenter.
Dernière modification par Zakhar (Le 24/01/2013, à 23:09)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#37 Le 25/01/2013, à 08:29
- root
Re : Uploader sur votre Freebox Révolution à distance
J'ai réussi a lancer une requête sur le freebox apres le login (pour récupérer le répertoire de téléchargement sur la freebox et l'espace disque), en utilisant la commande donnée par Vinky41. Du coup il faut changer tout les appel ccurl, mais aussi le traitement du message de retour visiblement.
Au final, je suis pas sur que ce que je suis en train de faire sera utile : car il y a peut-être une meilleur façon de faire, et que je suis un peu bourrin avec ton script, mais j'apprend des trucs.
Si tu bosse sur ton script ce weekend, je ferais un point sur ce que j'ai fait ce soir.
Hors ligne
#38 Le 25/01/2013, à 12:02
- root
Re : Uploader sur votre Freebox Révolution à distance
Yeepee. J'ai réussi en envoyer un téléchargement sur la freebox.
Voici comment :
J'ai crée 2 variable globale
FBSID=''
FBCSRF=''
on set les 2 variables lorsque on fait le login sur la freebox. Dans la fonction fbx_login(), a la place de la fonction curlcheck j'appelle curlget
curlget()
{
local err=0 # Erreur retournée par la fonction appelée
local hcode
if printf '%s' "${1}" | grep -q 'FBXSID'; then
hcode=$(printf '%s' "${1}" | grep "FBXSID")
FBSID=$(printf '%s' "${hcode}" | sed 's/.*FBXSID="//;s/".*$//')
else
exit 4
fi
if printf '%s' "${1}" | grep -q 'X-FBX-CSRF-Token'; then
hcode=$(printf '%s' "${1}" | grep "X-FBX-CSRF-Token")
FBCSRF=$(printf '%s' "${hcode}" | sed 's/.*X-FBX-CSRF-Token: //;s/\r//')
else
exit 6
fi
if printf '%s' "${1}" | grep -q '_ERR='; then
err=$( printf '%s' "${1}" | sed 's/.*_ERR=//' )
exiterr "${err}" "${eMSG_CURL_ERR}${err}"
fi
return $?
}
Ensuite je custumise les appels curl qui suivent. En modifiant la commande curl en elles-meme dans la fonction ccurl
ccurl ()
{
curl --data-urlencode "csrf_token=${FBCSRF}" -b FBXSID="${FBSID}" "${@}" -w "%{http_code}" -s -H "Accept: application/json, text/javascript, */*" || printf "_ERR=${?}"
et dans tout les appels a la fonction ccurl. A chaque fois que du JSON était passé en parametre :
jsoncatch "$( ccurl http://"${fbxIPPort}"/storage.cgi\
-o "${TMPLOG}" \
-b "${TMPLOG}.c" \
-data "${JSONRPC}\"storage.list\"}" \
-H 'Content-Type: application/json; charset=utf-8')"
J'ai du remplacer de cette facon :
jsoncatch "$( ccurl http://"${fbxIPPort}"/storage.cgi\
-o "${TMPLOG}" \
-b "${TMPLOG}.c" \
-d "method=storage.list" \
-H 'X-Requested-With: XMLHttpRequest')"
Enfin, j'avais un souci avec la fonction jsoncatch qui partait en erreur alors que tout semblait ok. j'ai été un peu bourrin et j'ai du supprimé une boucle
Au final, c'est pas très clean (comme vous pouvez le voir dans le code que j'ai copié), c'est surtout de la bricole de ton script mais ça marche.
Si tu n'as pas le temps de reprendre ton script ce weekend, j'essaierais de reprendre tout ça proprement la semaine prochaine.
Hors ligne
#39 Le 25/01/2013, à 20:06
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Pas de problème, je vais reprendre vos 2 contributions et faire ça "propre" dans le script.
Comme tout le travail de "débroussaillage" est déjà fait, il en me restera plus que le "propre" !
Merci à vous deux, je reposte ici quand c'est fait.
Dernière modification par Zakhar (Le 25/01/2013, à 20:06)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#40 Le 26/01/2013, à 01:25
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Changelog
Version 1.1.0 du 26 janvier 2013 :
Licence changée en WTFPL V2
Compatibilité avec le firmware 1.1.9 de la Freebox Server (CSRF Token)
Fréquence de rafraichissement par défaut non opérationnelle : corrigé.
Crédits à Vinky41 et root pour les recherches sur le CSRF
----------------------------------------------
Note: en réalité, seule la fonction de postage pour "downloader" sur la Freebox (donc pour ce script, "uploader" depuis votre PC) nécessite le token. L'ensemble des autres fonctions du script n'en ont absolument pas besoin. C'est donc encore une "sécurité" (*) bizarre qu'à mis Free... on peut supprimer/renommer des fichiers sur le NAS sans aucun problème même si on n'est pas en possession du jeton mais on ne peut pas télécharger !..
(*) "sécurité" avec des guillemets... puisque le mot de passe persiste à circuler complètement en clair. Franchement c'est assez nul de prétendre "sécuriser" quand on a une faille aussi béante.
@Vinky41 et root, en fait le header Accept JSON n'est pas du tout utile, par contre celui du HTTPRequest si (mais il était déjà requis auparavant).
Donc en résumé, les modifications sur le script étaient assez mineures (2 lignes dans le login pour récupérer le CSRF et 1 ligne dans l'upload pour le fournir !).
Après il restait un micro bug de la 1.0.3 sur le rafraîchissement de l'affichage que j'ai corrigé au passage -par défaut 2sec, mais si on veut économiser un peu de bande passante pour la conserver pour l'upload, on peut monter par exemple à 30 = 30sec, ainsi on fait moins de requêtes et on évite de consommer trop de bande passante juste pour mettre à jour l'affichage !-.
N'hésitez cependant pas à tester et à bien "secouer" ou cas où des erreurs m'auraient échappées.
Dernière modification par Zakhar (Le 26/01/2013, à 01:31)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#41 Le 26/01/2013, à 15:05
- Vinky41
Re : Uploader sur votre Freebox Révolution à distance
C'est clair que la base c'est le MP chiffré....
Enfin bon. Sinon pour le csrf, je n'ai effectivement pas compris pourquoi il était uniquement nécessaire pour dl et pas pour le reste. Quitte à le mettre, autant le mettre pour tout... Enfin free et la sécu quoi
Hors ligne
#42 Le 26/01/2013, à 15:07
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
C'est certainement que les seuls "risques" aujourd'hui avérés proviennent de ces petites saletés d'appli mobiles, et la seule chose qu'ils aient inventé sur ça ce sont des trucs qui jouent avec la liste des téléchargements !
Mais comme le mot de passe voyage tranquillement en clair dans les airs sur le réseau 3G/3G+, ben... je dis comme toi :
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#43 Le 27/01/2013, à 16:54
- benoitseize
Re : Uploader sur votre Freebox Révolution à distance
Bonjour,
Question un peu déplacée, mais je me lance :
Est ce que ce script marche sous debian squeeze ?
Je demande cela car j'ai un serveur dédié sous debian et ce serait super pratique de pouvoir utiliser ce script.
Hors ligne
#44 Le 27/01/2013, à 17:38
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Je ne vois pas pourquoi il ne fonctionnerait pas sous Debian Squeeze !..
C'est du shell, il n'y a rien de spécifique à Ubuntu, juste des trucs standards comme curl (qu'il faut que tu installes s'il n'est pas de base dans ta Debian, par exemple il n'est plus par défaut dans Ubuntu, mais un sudo apt-get install curl et c'est résolu!) et le reste ce sont des commandes shell ordinaires.
De toute façon tiens-moi au courant si ça ne marche pas, je réparerai.
P.S.: si tu utilises le "serveur web intégré" il te faut python... mais j'imagine que c'est installé par défaut sur une Debian... sinon tu installes Apache (voir post #2 pour la configuration et la sécurité) et tu auras en plus la possibilité de reprendre des uploads interrompus.
Dernière modification par Zakhar (Le 27/01/2013, à 17:43)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#45 Le 28/01/2013, à 15:45
- benoitseize
Re : Uploader sur votre Freebox Révolution à distance
Je ne vois pas pourquoi il ne fonctionnerait pas sous Debian Squeeze !..
C'est du shell, il n'y a rien de spécifique à Ubuntu, juste des trucs standards comme curl (qu'il faut que tu installes s'il n'est pas de base dans ta Debian, par exemple il n'est plus par défaut dans Ubuntu, mais un sudo apt-get install curl et c'est résolu!) et le reste ce sont des commandes shell ordinaires.
De toute façon tiens-moi au courant si ça ne marche pas, je réparerai.P.S.: si tu utilises le "serveur web intégré" il te faut python... mais j'imagine que c'est installé par défaut sur une Debian... sinon tu installes Apache (voir post #2 pour la configuration et la sécurité) et tu auras en plus la possibilité de reprendre des uploads interrompus.
Merci de ta réponse.
J'ai installé le serveur graphique, gnome et les composants NX.
Tout est OK, je vois bien le bureau de mon serveur debian.
Malheureusement, je n'arrive pas à lancer le script.
Je l'ai placé dans le répertoire .gnome2/nautilus-scripts/upfree
Mais là, il n'apparait pas de menu scripts comme je l'attendais !
Si tu peux m'aider ...
Edit
En fait, je n'avais pas fait l'association. J'ai bien le menu script.
Finalement, ce n'est pas ce que je cherchais. Je voulais downloader directement sur une freebox distante des fichiers implantés sur un serveur debian distant.
Dernière modification par benoitseize (Le 28/01/2013, à 17:43)
Hors ligne
#46 Le 28/01/2013, à 18:20
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Je ne suis pas sûr de comprendre ce que tu veux faire... surtout parce que tu parles de mode graphique !
Tu as un serveur Debian (accessible par NX, donc je suppose hébergé) appelons S ce serveur.
Tu as donc probablement un PC avec le client NX qui te permet d'aller sur S, appelons P ce PC.
Tu as une Freebox distante appelons la F.
Tu as des fichiers implantés sur un autre (?) serveur distant, appelons le T.
Et donc tu veux :
- depuis le PC P pilotant une interface graphique (via NX) située sur S, demander à la Freebox F de récupérer des fichiers sur T ?
... moui... pas sûr de comprendre pourquoi tu as besoin de faire si compliqué... mais si c'est ça, effectivement upfree n'y répond pas !
Il répond à un besoin bien plus simple et clair formulé au post #1 !
Alors comme tu veux, tu peux reformuler ton besoin, qu'on comprenne un peu mieux (plutôt que de partir en "solution") et s'il s'agit d'un projet confidentiel, tu peux bien sûr t'inspirer du script et l'adapter. Il est désormais en WTFPL 2, donc on en fait vraiment ce qu'on veut sans même de contrainte de devoir republier en libre !
Dernière modification par Zakhar (Le 28/01/2013, à 18:34)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#47 Le 29/01/2013, à 08:25
- benoitseize
Re : Uploader sur votre Freebox Révolution à distance
@Zakhar
Merci de ta patience !
En effet je n'étais pas clair. Sur la base de tes conventions, voici ce que je veux faire.
S (serveur distant debian squeeze)
P (PC, W7, NX)
F (freebox distante V6)
Je veux transférer des fichiers de S vers F par le biais de ton script lancé depuis P à travers NX.
Si c'est possible, il resterait à régler cette histoire de ports que je n'ai pas comprise..
Et si ça marche, ce serait génial car, en clair, ça permettrait de balancer un fichier récupéré sur un serveur dédié à (censuré) sur n'importe quelle freebox "amie".
Hors ligne
#48 Le 29/01/2013, à 18:52
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Bah oui, si le fichier est bien sur S, le script est fait pour ça et ça doit marcher (à partir du moment où tu auras réglé les histoires de port) !..
Ça sera même plus agréable à utiliser que dans mon cas. Moi j'envoie des fichiers de chez moi à chez ma mère, et je suis donc limité à la vitesse d'upload de mon ADSL, soit 1Mpbs. En gros, 1Go "coûte" 2h30. Dans ton cas, on peut imaginer que ton dédié à une bande passante suffisante et que tu seras limité au download de la Freebox ciblée, et donc si elle n'est pas trop éloignée du DSLAM, 1G en 7 minutes... ça change l'utilisabilité par rapport aux 2h30 !..
Par contre, comme c'est mon "use-case", il n'est pas prévu pour gérer une "liste de Freebox", mais simplement une seule. L'idée est de la "programmer" une fois pour toute dans le fichier de configuration.
Cependant, comme les options que tu donnes en ligne de commande ont "priorité" par rapport à ce qui est dans le fichier de configuration, rien ne t'empêche de "surcharger" au cas par cas la Freebox ciblée. Je parle de "ligne de commande" et pas d'interface graphique, parce que en graphique c'est moins souple. S'il y a Freebox configurée dans le fichier de config, le mode graphique ne te demandera rien, et ne te permet donc pas de "changer de Freebox" au cas par cas. Si tu veux pouvoir "changer de Freebox" dans le mode graphique, alors il ne faut rien mettre dans le fichier de configuration, mais du coup à chaque fois il va te demander les coordonnées de ta Freebox.
... après tu peux toujours adapter le script si vraiment tu as plusieurs Freebox, et que tu tiens à l'interface graphique !..
L'interface graphique est aussi "moins riche". Voir l'exemple de la liste de photos au post #1. En mode texte tu as la progression photo par photo et l'estimation du total, en mode graphique, juste le fichier en cours et pas le total.
Donc maintenant, qu'est-ce qui te gène dans les "ports" ?
Si un truc n'est pas clair dans les explications du post #1, tu peux me dire où tu coinces que je tâche d'expliquer mieux.
Le principe étant que ce n'est pas ton serveur S qui va "uploader", mais la Freebox F qui va venir chercher sur ton serveur S, il te faut un port ouvert pour ça sur S... en plus des ports ouverts sur la Freebox pour l'administration à distance.
C'est pourquoi on a 2 jeux de ports (ceux de ton serveur, et ceux de la Freebox).
Et côté serveur S, j'ai tenu compte que ça pouvait être un PC derrière une box en NAT, et tu as donc port externe/port interne, ce qui en principe ne devrait pas te concerner sur ton dédié.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#49 Le 30/01/2013, à 09:19
- benoitseize
Re : Uploader sur votre Freebox Révolution à distance
Alors là, vraiment, excellente nouvelle !
Pour préciser mon usage, j'aurai toujours la même freebox comme cible.
Je souhaite , a priori, utiliser l'interface graphique car je ne suis pas un pro de linux; je me débrouille sans trop comprendre ce que je fais.
Pour tester, je voulais prendre ma freebox pour cible, rien n'ayant été fait sur les ports. Ce qui m'embête, c'est que quand je lance le script (à partir d'un fichier) par le biais de NX, il ne se passe rien.
J'attendais au moins un message erreur.
Désolé de te solliciter encore, mais je sens qu'on touche au but et que tout ceci pourra servir à tous ceux qui ont la même idée que moi, et je suis sur qu'ils sont nombreux.
Hors ligne
#50 Le 30/01/2013, à 19:12
- Zakhar
Re : Uploader sur votre Freebox Révolution à distance
Ok je vois
Mais avant même de te lancer dans le script, la première manipulation à faire est de tester l'interface à distance standard de ta Freebox depuis ta Debian. Ainsi si tu y arrives, c'est qu'au moins ça a été correctement activé (et si tu n'y arrives pas... bah... c'est que tu as omis un truc, et il n'y a aucune chance que le script marche).
Pour cela il te faut activer ton admin distante sur ta Freebox. Et sur la Debian, tu lances Firefox (ou tout navigateur que tu veux) et tu donnes l'IP+port que tu as choisi, et là tu auras l'interface de connexion.
Si tu as le script visible dans Nautilus et qu'il ne se passe rien, il est possible
- qu'il manque simplement Zenity.
- que tu aies omis de donner des droits d'exécution au script !
Zenity est un petit utilitaire Gnome qui permet d'afficher des boîtes de dialogue, de progression, etc... à partir d'un script shell. Il est installé de base avec Ubuntu... et peut-être pas avec Debian.
Il va donc falloir a minima trouver le terminal et faire :
sudo apt-get install zenity
(Ou si tu as un gestionnaire de paquets comme Synaptic, tu peux bien sûr utiliser l'interface graphique de Synaptic)
Pour les droits d'exécution, en se positionnant avant dans le répertoire où tu l'as mis (cd /nom/du/repertoire)
chmod +x upfree
(Pareil, avec Nautilus, tu fais "propriétés" et tu peux activer les switch exécutable)
Ensuite, avant de se lancer en mode graphique, le mieux est quand même de faire un test en mode "texte".
C'est pas vraiment difficile... tu vas dans un répertoire où tu as un fichier de test à uploader, et tu fais simplement
/path/où/tu/as/mis/le/script/upfree MonFichier
si tu n'as pas paramétré le fichier de configuration, tous les "paramètres" te seront demandés par le script.
... bien sûr, à ce moment là il faudra les fameux "ports" !
Une fois que ceci fonctionne, tu peux ensuite te lancer dans le mode graphique.
Dernière modification par Zakhar (Le 30/01/2013, à 19:18)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne