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.

#51 Le 24/01/2013, à 09:59

david-vincent

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Bonjour,

J'utilise le script se Syl21 http://www.syl21.org/2011/06/02/freebox … n-seedbox/

Je pouvais l'initialiser avec cette commande :

for file in $(cat test.txt); do /home/DV/freeseedbox $file; done

Qui me permettait de batcher plusieurs URL à partir d'un fichier texte, et ca marchait au poil !

Donc il semblerait que depuis la dernière update de la box, il y a un pb de token (enfin je suppose), avez-vous une idée de ce qu'il faut modifier ?


#! /bin/bash

#VALIDATION DE CURL
curl --version > /dev/null 2>&1
if [ 0 -ne $? ]; then
	echo -e "\n\tCURL doit être installé\n
pour Ubuntu:\t'sudo apt-get install curl'
pour Fedora:\t'sudo yum install curl'
pour Open-Suse:\t'sudo yast install curl'
pour Mandriva:\t'sudo urpmi curl'\n"
	read -t 3
	exit 1
fi

#GESTION DU MOT DE PASSE
if [ -e ~/.config/FreeSeedBox.conf ]; then
	password=`grep "password=" ~/.config/FreeSeedBox.conf | cut -d= -f2`
else
	read -sp "Mot de passe de votre FreeBox: " password
	mkdir ~/.config > /dev/null 2>&1
	echo "password=$password" > ~/.config/FreeSeedBox.conf
	chmod 600 ~/.config/FreeSeedBox.conf
	echo -e "\n\n\tMot de passe enregistré...\n"
	exit 0
fi

#URL EN ARGUMENT OU DEMANDE D'URL
if [ -z "$1" ]; then
	read -p "URL ou Chemin : " url
else
	url=$1
fi

#TEST DU TYPE D'URL
case $url in
		http://*.torrent)	type_url="torrent_url"
		;;
		http://* | ftp://*)	type_url="web_url"
		;;
		*)			type_url="torrent_file"
		;;
esac

#CONNECTION A LA FREEBOX
cookieFile=$( mktemp )
resultFile=$( mktemp )
echo -ne "\nConnection à la FreeBox"
curl -c $cookieFile -d "login=freebox&passwd=$password" http://<mon_IP>/login.php -v > $resultFile 2>&1
if grep -q "Set-Cookie:" $resultFile; then
	echo -e "\t\t\t\t<  OK  >"
else
	echo -e "\t\t\t\t<ERREUR>\n
Impossible de joindre la FreeBox ou mot de passe incorrect.\nutiliser 'ping <mon_IP>' pour tester la connexion.
editer '~/.config/FreeSeedBox.conf' pour changer de mot de passe.\n"
	rm $cookieFile $resultFile > /dev/null 2>&1
	read -t 3
	exit 2
fi

#DEMANDE DE TELECHARGEMENT A LA FREEBOX
case $type_url in
	torrent_url)	echo -en "\nAjout de l'URL 'Torrent' à la FreeBox"
			curl -b $cookieFile -d "url=$url&user=freebox&method=download.torrent_add" http://<mon_IP>/download.cgi -H 'X-Requested-With: XMLHttpRequest' -s > $resultFile 2>&1
	;;
	web_url)	echo -en "\nAjout du 'Direct Download' à la FreeBox"
			curl -b $cookieFile -d "url=$url&user=freebox&method=download.http_add" http://<mon_IP>/download.cgi -H 'X-Requested-With: XMLHttpRequest' -s > $resultFile 2>&1
	;;
	torrent_file)	echo -en "\nAjout du fichier 'Torrent' à la FreeBox"
			curl -b $cookieFile -F "data=@$url" -F "user=freebox" -F "method=download.torrent_add" http://<mon_IP>/download.cgi -H 'X-Requested-With: XMLHttpRequest' -s > $resultFile 2>&1
	;;
esac
if grep -q "result" $resultFile; then
	echo -e "\t\t<  OK  >"
else
	echo -e "\t\t<ERREUR>\n
Impossible d'ajouter ce téléchargement, valider la source du téléchargement.
Connectez-vous à 'http://<mon_IP>/download.php'\npour voir si vous ne l'avez pas déjà téléchargé.\n"
	rm $cookieFile $resultFile > /dev/null 2>&1
	read -t 3
	exit 3
fi

#DECONNECTION DE LA FREEBOX
echo -e "\nDéconnection de la FreeBox\t\t\t<  OK  >\n"
rm $cookieFile $resultFile > /dev/null 2>&1
exit 0

Voici le message d'erreur

Connection à la FreeBox                         <  OK  >

Ajout du 'Direct Download' à la FreeBox         <ERREUR>

Impossible d'ajouter ce téléchargement, valider la source du téléchargement.
Connectez-vous à 'http://<mon_IP>/download.php'
pour voir si vous ne l'avez pas déjà téléchargé.

Merci pour votre aide je suis un bidon en prog...

Dernière modification par david-vincent (Le 24/01/2013, à 10:00)

Hors ligne

#52 Le 24/01/2013, à 10:36

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Yop,

En effet,il ne parvient pas à ajouter le téléchargement à cause du Token wink

Il faut que tu adaptes le script pour faire comme ça : http://forum.ubuntu-fr.org/viewtopic.ph … #p12259041

Hors ligne

#53 Le 24/01/2013, à 10:57

david-vincent

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Vinky41 a écrit :

Yop,

En effet,il ne parvient pas à ajouter le téléchargement à cause du Token wink

Il faut que tu adaptes le script pour faire comme ça : http://forum.ubuntu-fr.org/viewtopic.ph … #p12259041

Merci pour l'info... mais cela depasse mes "compétences" dans le domaine.... J'ai fais plusieurs essais dans ce sens mais c'est trop high level pour moi wink

Hors ligne

#54 Le 24/01/2013, à 11:01

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Tu as essayé "à la main" en rentrant la première ligne de commande pour te connecter (et donc voir les infos de connexion) et ensuite de rentrer la seconde ligne de commande en remplaçant ID, TOKEN et bien sûr URL ?

Ca te permettra de bien comprendre le fonctionnement smile

après il faut remplacer dans le script la ligne qui télécharge par celle que je t'ai donnée en stockant au préalable les valeurs token & ID dans des variables pour automatiser le tout smile

Hors ligne

#55 Le 24/01/2013, à 11:23

david-vincent

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Vinky41 a écrit :

Tu as essayé "à la main" en rentrant la première ligne de commande pour te connecter (et donc voir les infos de connexion) et ensuite de rentrer la seconde ligne de commande en remplaçant ID, TOKEN et bien sûr URL ?

Ca te permettra de bien comprendre le fonctionnement smile

après il faut remplacer dans le script la ligne qui télécharge par celle que je t'ai donnée en stockant au préalable les valeurs token & ID dans des variables pour automatiser le tout smile

J'ai essayé mais je fais que de la mer.. Quand je vois comment certains galèrent pour faire de l'upload sur la box (avec le pb du token), ca me depasse:
http://forum.ubuntu-fr.org/viewtopic.php?id=638101&p=2

Je suis incompétent en prog et curl....

Tant pis je me faderai tout mes dl à la mano avec leur interface archaique, en esperant que quelqu'un trouve une solution...

GG free avec leur MàJ de daube...

Merci pour ton aide

Dernière modification par david-vincent (Le 24/01/2013, à 11:27)

Hors ligne

#56 Le 24/01/2013, à 12:33

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

david-vincent a écrit :

J'ai essayé mais je fais que de la mer.. Quand je vois comment certains galèrent pour faire de l'upload sur la box (avec le pb du token), ca me depasse:
http://forum.ubuntu-fr.org/viewtopic.php?id=638101&p=2

Merci pour le lien wink je vais l'iader également smile

david-vincent a écrit :

Tant pis je me faderai tout mes dl à la mano avec leur interface archaique, en esperant que quelqu'un trouve une solution...

GG free avec leur MàJ de daube...

Je ne peux pas te laisser dire ça.

Premièrement, une solution a été trouvée comme je te l'ai indiqué, elle est juste pas automatiser (je passerai le script que j'ai fait avec un ami pour automatiser quand celui-ci l'aura posté sur github)

Enfin, la maj était INDISPENSABLE. Déjà que la freebox est une vrai passoire niveau sécurité (mdp en clair) donc csrf semblait être un bon début pour empecher les demandes involontaire.

Dernière modification par Vinky41 (Le 24/01/2013, à 12:33)

Hors ligne

#57 Le 24/01/2013, à 15:11

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Voici comme promis le script smile

https://github.com/valentinconan/scriptDownloadFreebox

Suffit de copier/coller le script et cela fonctionne smile (il faut bien sûr remplacer l'ip/mdp)

Pour l'utiliser il faut juste lui mettre l'url du fichier que l'on veut télécharger en argument.

Hors ligne

#58 Le 04/02/2013, à 11:45

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

@Vinky41 Merci pour ton script. Je me bats avec un script semblable mais pour activer/désactiver le WiFi à certaines heures depuis mon NAS Synology.
Le script trouvé un peu partout fonctionnait à merveille mais avec l'introduction du token CSRF je ne m'en sors pas : j'obtiens systématiquement une 403 Forbidden hmm

J'ai isolé la partie désactivation :

#!/bin/sh

resultCurl=$( mktemp )

curl -S -d "login=freebox&passwd=XXXXXXXX" http://mafreebox.freebox.fr/login.php -v > $resultCurl 2>&1
if grep -q "Set-Cookie:" $resultCurl; then
    echo "Login to Freebox succeeded!"
else
    echo "Login to Freebox failed!"
    rm $resultCurl > /dev/null 2>&1
    exit 1
fi

csrfToken=`grep "X-FBX-CSRF-Token" $resultCurl | cut -f 3 -d ' ' | sed "s/\r//"  `
fbxSid=`grep "FBXSID" $resultCurl | cut -f 3 -d ' ' | sed "s/FBXSID=//" | sed "s/;//" | sed "s/\r//" `

curl -s -b FBXSID=$fbxSid -D - -o /dev/null -e "http://mafreebox.freebox.fr/settings.php?page=wifi_conf" http://mafreebox.freebox.fr/wifi.cgi --data-urlencode "csrf_token=${csrfToken}" -d "channel=11&ht_mode=disabled&method=wifi.ap_params_set&config=Valider" -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json, text/javascript, */*" > $resultCurl 2>&1
if grep -q "HTTP/1.1 200 OK" $resultCurl; then
    echo "Setting Freebox wifi OFF succeeded!"
else
    echo "Setting Freebox wifi OFF failed!"
fi

echo "Logout to Freebox succeeded!"
rm $resultCurl > /dev/null 2>&1

exit 0

Tout semble ok au niveau de ma commande curl, la requête est conforme à ce qu'envoie le formulaire.
Mais rien à faire, 403 Forbidden .. Tu aurais une idée ?

Merci pour ton aide ..

Hors ligne

#59 Le 04/02/2013, à 12:58

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Salut,

Je ne vois pas le souci niveau token.

As tu essaye déjà ligne par ligne manuellement ? (Connexion + envoie de la commande en y mettant les id/token à la main )

Hors ligne

#60 Le 04/02/2013, à 14:22

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Oui et pareil : 403 Forbidden.

Ton script de download fonctionne correctement j'imagine ? Je ne vois pas de différences fondamentales entre les 2, tout du moins dans l'esprit.
Ce serait possible que tu lances mon script chez toi steuplai ?

Merci.

Hors ligne

#61 Le 04/02/2013, à 14:37

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Je viens de tester à l'instant et ça fonctionne bien chez moi en le faisant à la main. (par contre j'ai utilisé mes commandes pour me connecter : http://forum.ubuntu-fr.org/viewtopic.ph … #p12259041

(j'en ai même perdu le wifi n'ayant pas vérifié tes paramètres tongue)

Hors ligne

#62 Le 04/02/2013, à 15:17

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Rien à faire, 403 même avec ta commande de connexion. Je lance le script depuis un NAS dans le réseau local.
Comprend pas, j'ai dû rater une info ..

Merci à toi ! Si tu as une idée, je suis preneur ..

Hors ligne

#63 Le 04/02/2013, à 15:29

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Moi je suis en dehors du réseau et j'y met l'ip externe (essai dès fois que wink )

Hors ligne

#64 Le 04/02/2013, à 17:47

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Ce serait le comble que je puisse désactiver mon Wifi perso uniquement depuis l'extérieur wink
A suivre donc ..

Hors ligne

#65 Le 04/02/2013, à 18:00

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Je n'ai pas dit ça. Mais peut-être que la requête en local est à adapté.

Mais je testerai une fois chez moi si cela fonctionne en local. Mais je ne vois pas de raison.

Tu es sur de ne pas faire d'erreur de frappe ou de c/c ?

Hors ligne

#66 Le 04/02/2013, à 18:01

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Ecoute, je retourne le script dans tous les sens, je vois pas.
Alors si tu peux m'apporter un regard neuf, je prend !

Hors ligne

#67 Le 05/02/2013, à 21:11

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

@Vinky41 T'as testé par hasard ? Merci.

Hors ligne

#68 Le 05/02/2013, à 23:57

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Salut,

Excuse moi pour le temps de réponse sad

Alors oui je viens de tester à l'instant et je confirme que ça fonctionne très bien wink (j'ai testé à la main c'est à dire ma ligne de connexion + ta ligne de commande en remplaçant à la main le SID & Token.

Connexion :

curl -s -D - -o /dev/null http://mafreebox.freebox.fr/login.php -d 'login=freebox&passwd=<Mon_MdP>'

Vous aurez donc un ID et un jeton qui s'afficheront

HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Fri, 18 Jan 2013 16:52:21 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: FBXSID="<ID>"; Max-Age=86400; HTTPOnly
X-FBX-CSRF-Token: <TOKEN>
Location: /settings.php

Il restera plus qu'à télécharger en utilisant les ID, jeton que vous avez reçu précédemment et bien sûr votre url :

curl -s -b FBXSID=<ID> -D - -o /dev/null -e "http://mafreebox.freebox.fr/settings.php?page=wifi_conf" http://mafreebox.freebox.fr/wifi.cgi --data-urlencode "csrf_token=<Token>" -d "channel=11&ht_mode=disabled&method=wifi.ap_params_set&config=Valider" -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json, text/javascript, */*"

Pour ce qui est de ton script j'ai vu ça : csrf_token=${csrfToken}

1. t'as pas un souci avec tes accolades ? tu voulais pas plutôt mettre : csrf_token={$csrfToken} ?
2. Il ne faut de toute manière ne pas en mettre pour que cela fonctionne wink

la bonne ligne à mettre doit donc être :

curl -s -b FBXSID=$fbxSid -D - -o /dev/null -e "http://mafreebox.freebox.fr/settings.php?page=wifi_conf" http://mafreebox.freebox.fr/wifi.cgi --data-urlencode "csrf_token=$csrfToken" -d "channel=11&ht_mode=disabled&method=wifi.ap_params_set&config=Valider" -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json, text/javascript, */*" > $resultCurl 2>&1

Tiens moi au courant smile

Dernière modification par Vinky41 (Le 06/02/2013, à 00:02)

Hors ligne

#69 Le 06/02/2013, à 00:24

Zakhar

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Vinky41 a écrit :

Pour ce qui est de ton script j'ai vu ça : csrf_token=${csrfToken}

1. t'as pas un souci avec tes accolades ? tu voulais pas plutôt mettre : csrf_token={$csrfToken} ?
2. Il ne faut de toute manière ne pas en mettre pour que cela fonctionne wink

Non, ça c'est tout à fait correct et la forme "standard" des variables shell.

Par contre, en général, pour éviter les "mauvaises surprises" comme par exemple un espace au milieu de la chaîne de caractère qui fait tout planter, on les met en général entre guillemets du genre :

foo="${bar}"

Tu connais sans doute cette "forme" de variable dans les expressions plus étendues comme :

foo=${#bar}

Là on prend la longueur de la chaîne 'bar', et donc pas de guillemets puisque cela renvoie un nombre entier.

Ou alors :

foo="${bar:3:2}"

Celle ça extrait une sous-chaîne, mais il n'est PAS RECOMMANDE de l'utiliser car c'est un "bashism", voir ici pour plus d'explication : https://wiki.ubuntu.com/DashAsBinSh

En fait, l'écriture de la variable avec les {} est une forme "nue" des autres expansions de variables. C'est la variable brute, non étendue.
C'est une bonne pratique de l'écrire ainsi, parce que de la sorte tu identifies bien les variables. En outre, dans certains cas tu ne peux pas faire autrement que d'utiliser la variable avec des crochets comme par exemple :

foo="${bar}blah blah"

Là j'ai concaténé 'blah blah' au contenu de la variable 'bar'. Sans les crochets ça donnerait :

foo="$barblah blah"

... et donc le shell va chercher une variable 'barblah' qui n'existe pas !

Donc même si la formulation correcte serait :

csrf_token="${csrfToken}"

avec des guillemets en plus, le bug ne vient pas de là puisque le CSRF ne contient a priori pas d'espaces ni caractères "piège" qui planteraient un script. C'est cependant aussi une bonne pratique de ne pas oublier les guillemets !..


Désolé, je ne peux pas aider beaucoup plus car la Freebox n'est pas chez moi (elle est loin).

Par contre de bonnes pistes pour trouver d'où vient le bug :
- faire tourner le script en mode "debug" (dash -x ./script params)
- rajouter des options -v aux curls (pour voir plus de détail sur ce qu'il se passe)


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

Hors ligne

#70 Le 06/02/2013, à 16:10

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Bon j'ai réussi à le faire marcher à la main mais c'est pas systématique.
Ya un truc qui merde avec fbxSid et csrfToken, caractères spéciaux ou non.

Hors ligne

#71 Le 06/02/2013, à 16:14

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Salut,

Tu as bien utilisé --data-urlencode ?

Pas un souci de c/c pour ton test ?

Hors ligne

#72 Le 06/02/2013, à 16:36

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Je suis certain : à la main ça passe pas toujours. Doit y avoir un truc avec les caractères spéciaux wink
Via le script, ça ne passe jamais ..

Tu n'as jamais ce souci avec ton script là :
https://github.com/valentinconan/script … oadFreebox ?

Merci.

Hors ligne

#73 Le 06/02/2013, à 17:35

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Oui oui chez moi ça fonctionne à tous les coups.

J'avais le même souci avant de mettre le data-urlencode.

Hors ligne

#74 Le 06/02/2013, à 18:56

dca77

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Bonsoir,

J'ai également le même problème avec le script wifi et le NAS Synology depuis la mise à jour de la Freebox.

Je suis un newbie en prog mais je vais essayer de modifier le script pour que cela fonctionne de nouveau ce soir.

Merci en tous les cas pour ces précieuses informations.;)

Hors ligne

#75 Le 06/02/2013, à 22:01

sebastien4

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

@Vinky41 J'ai bien le data-urlencode. Comprend pas où je merde hmm Forcément sur fbxSid / csrfToken ..
@dca77 Curieux d'avoir ton retour ..

Hors ligne