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.

nombre réponses : 16

#0 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 22/01/2013, à 11:27

root
Réponses : 82

Bonjour Zakhar,

J'utilise ton script depuis 1 semaine, et il est parfait smile (exactement ce dont j'avais besoin)
Mais depuis 2 jours, patatra, plus moyen de le faire marcher. Visiblement la dernière mise a jour freebox pose quelque problème.

Travailles-tu toujours sur ce script, comptes-tu le maintenir ou faut-il se mettre a activement a trouver une autre solution ?

Merci encore pour ton investissement et bravo pour ton boulot (car pour moi ça marchait impec' )

#1 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 23/01/2013, à 08:23

root
Réponses : 82

Merci pour la reponse rapide.

Je n'ai aucune urgence et ne veux pas te mettre de pression (vu le prix manquerais plus que ça). Je voulais juste savoir si tu utilisais toujours ce script et si il fallait s'attendre a une mise a jour prochainement.

Si tu pense le mettre a jour c'est cool, sinon j'aurais mis les mains dans ton script. Je fais un peu de scripting, mais j'avoue volontiers que tout ce qui est parsing XML/JSON et ce genre de format, ça m'horipile. Je vais donc attendre un mise a jour, ça m'évitera de m'arracher les cheveux smile

Merci encore !

#2 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 23/01/2013, à 14:20

root
Réponses : 82

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}}

#3 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 24/01/2013, à 09:41

root
Réponses : 82

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.

xVyoSl.jpg

#4 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 24/01/2013, à 16:36

root
Réponses : 82

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 smile
Je vous tiens au courant bien sur. Merci pour l'aide !

#5 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 25/01/2013, à 08:29

root
Réponses : 82

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.

#6 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 25/01/2013, à 12:02

root
Réponses : 82

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 big_smile

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.

#7 Re : -1 »  Uploader sur votre Freebox Révolution à distance » Le 18/02/2013, à 08:31

root
Réponses : 82

Salut,

Apres quelque test, j'ai des comportement étrange, aussi bien avec ma version bricolé, qu'avec ta version clean.

J'utilise le serveur monté dynamiquement pour envoyer des fichiers vers ma freebox, et de temps a autres le serveur crash avant la fin de l'envoie avant comme simple message :

Test.mkv   0 4474M 11.4M575559938,"rx_rate":0,"size":575559938
./upfree.sh: line 354:  6377 Terminated              python -m SimpleHTTPServer "${opt_port}" > /dev/null 2> "${TMPROOT}.log" < /dev/null  (wd: /tmp/tmp.SDT42NeOwV)

Cela semble se produire aléatoirement, mais sur certain fichier c'est systematique. Je vais essayé de mettre des traces de debug dans le script, j'ai l'impression que de temps a autre le script n'arrive pas a recupéré la progression .

#8 Re : -1 »  Gnome crée des fichiers en chmod 600 au lieu de 755 » Le 11/02/2007, à 15:55

root
Réponses : 12

Il doit falloir voir avec les maques par default (umask) http://perso-info.enst-bretagne.fr/~leroy/Unix/Commandes/umask.html

Par default il est de 022 et mais il toute de meme pas executable (question de sécurité comme la dit naholyr)

Essaye de mettre un umask 011 ou 000 (??)

#9 Re : -1 »  Gnome crée des fichiers en chmod 600 au lieu de 755 » Le 11/02/2007, à 20:31

root
Réponses : 12

Mmhh, j'ai pas tout suivi, mais c'est une commande que tu va caler dans ton environement (.profile, .bashrc ) donc si un dossier est monté sur ton fs, sa devrait marcher sur ton environement, sauf si le montage force un umask auquel cas il faut matter du coté du serveur tongue

Bref, je ne sais pas trop, mais je te conseil d'approfondir du coté de la commande umask. Ou bien regarde dans les fichiers de conf (man etc..) de sshfs si il n'y a pas une option mask, ce qui est aussi fort probable.

#11 Re : -1 »  Gnome crée des fichiers en chmod 600 au lieu de 755 » Le 14/02/2007, à 16:21

root
Réponses : 12

je suis loin d'etre un expert je vois pas trop roll

apronfondis dans la config d'apache, pour changer le umask de l'user plutot que l'user en lui-mem.

#12 -1 »  Bloqué le nombre d'espace de travail » Le 09/02/2007, à 23:17

root
Réponses : 2

Bonjour,
un truc certes futile mais enervant a la longue : je désire n'avoir qu'un espace de travail sous gnome (comme sa sa s'integre vraiment bien a compiz et son cube de bon geek qui se respecte cool )

J'ai beau faire clique droit, preference sur le gestionaire de bureau, le passer a 1, y'a pas de probleme sa marche. Mais a chaque reboot, il revient a 2, me forcant a repeter la manip pour retrouver l'environement desiré.

D'ou ma question,est-ce un simple bug et j'attend la MAJ ou un truc m'a echappé et j'attend vos conseil avisé ? big_smile

#13 Re : -1 »  Bloqué le nombre d'espace de travail » Le 10/02/2007, à 11:33

root
Réponses : 2

Mhhh, j'aime pas trop la sauvegarde de session ,sa garde aussi les application ouverte ce qui peut lourdement ralentir le chargement de gdm (amarok + gaim + firefox *30onglet + k3b + des xterm a foison hmm )

Y'aura pas plutot un parametre gconf ou dans xorg.conf ?

#14 Re : -1 »  Loger une session console » Le 09/02/2007, à 13:03

root
Réponses : 5

Yep, sauf que je veux pas une redirection mais une copie (en gros que la sortie standart et la sortie d'erreur soit copié dans un fichier log mais s'affiche aussi dans le xterm)

Deplus je voudrais que sa se fasse pour tout une session (suite de commande). En gros dans la console tout ce passe normalement, je tape mes commandes, j'ai des reponse qui s'affiche. Ensuite je peux allez voir le fichier de log et je vois tous ce que j'ai tapé et tout ce qui m'a été retourné.

Un peu comme history mais avec en plus les sortie. (j'espere avoir été plus clair hmm )

#15 Re : -1 »  Loger une session console » Le 09/02/2007, à 16:49

root
Réponses : 5

Bon apres avoir fait une recherche (un peu plus serieuse) sur google, j'ai trouvé la commade script (installé de basé)

Sa fait exactement ce que je voulais (sauf que sa sauvegarde en dur, sa devient vite compliqué a lire quand on a mis des couleur partout big_smile)


EDIT :
je peux pas editer le premier message (je n'etait pas encore inscrit au forum) pour mettre la balise resolu
et d'autre solution sont bien sur bienvenue tongue