Transfert d'appel Free à distance
By grapsus on Tuesday 29 December 2009, 20:11 - Permalink
Chez Free il est impossible, pour raisons de sécurité, de paramétrer un renvoi d'appels depuis une autre adresse IP que la sienne. Voici un script shell à éxécuter sur une machine chez soi pour contourner ce système et paramétrer le transfert d'appels depuis l'extérieur :
transfert.sh :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/bash LOGIN="" MDP="" TMP="/tmp/transtmp" if [ ! -d "$TMP" ] ; then mkdir -p "$TMP" || (echo "Dossier temporaire inaccessible" ; exit 1) fi NUMERO="$1" if [ -n "$NUMERO" ] ; then TRANSINC='&transinc=transinc' fi USERAGENT='Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5' wget --no-check-certificate --quiet --keep-session-cookies --save-cookies="$TMP/free-cookie" \ --user-agent="$USERAGENT" --post-data='login='"$LOGIN"'&ok=Connexion&pass='"$MDP" \ -O "$TMP/login.html" https://subscribes.free.fr/login/login.pl ID=`grep -o 'id=[[:alnum:]]*&idt=[[:alnum:]]*' "$TMP/login.html" | tail -n 1` if [ -z "$ID" ] ; then echo "Login : erreur." exit 1 fi echo "Login : OK" wget --no-check-certificate --quiet --keep-session-cookies --load-cookies="$TMP/free-cookie" \ --user-agent="$USERAGENT" --post-data='appsort=0000&delai=5&incon='\ "$NUMERO"'&mevo_delai=35&mevo_mode=5&nonrep=&occup='"$TRANSINC" \ -O "$TMP/transfert.html" 'https://adsls.free.fr/admin/tel/adminservice_valid.pl?'"$ID" export LC_ALL=c if grep -sq 'Donn.*valid.' "$TMP/transfert.html" ; then echo "Transfert : OK" else echo "Transfert : erreur" exit 2 fi rm -f "$TMP/*" |
Si aucun numéro n'est fourni en paramètre, le script désactive le renvoi d'appels, sinon il l'active pour ce numéro. Ne pas oublier de renseigner son login et son mot de passe Free au début du code.
Voici une version CGI (à placer dans un dossier cgi-bin Apache ou Lighttpd) qu'on peut exécuter par exemple à partir d'un smartphone ( transfert-cgi.sh?numero=... ) :
transfert-cgi.sh :
1 2 3 4 5 6 7 8 | #!/bin/bash echo "<html><body>" NUMERO=`echo "$QUERY_STRING" | cut -f 2 -d '='` ./transfert.sh "$NUMERO" echo "</body></html>" |
En plus ces scripts peuvent servir de base pour d'autres automatisations chez le même FAI, il suffit de récupérer la requête à rejouer avec Firebug ou Wireshark et de la lancer à la place de la deuxième requête du script.
Édition du 16 juillet 2010
L'interface de Free est passée en HTTPS, j'ai adapté le script présenté dans cet article.
Comments
bonjour
comme faire tourner le "transfert.sh "sous windows.
est ce que je dois mettre mon numero à chaque fois que je vois "numéro".
merci
slt
comment faire tourner le "transfert.sh" sous windows.
est ce que je dois rentrer mon numero à chaque fois qu'il "numero"
merci
Bonjour,
En fait le numéro est un paramètre du programme, sous un système Unix on tape simplement en ligne de commande
./transfert.sh NUMERO
pour le faire marcher. Si vous n'êtes pas familier de la ligne de commande je vous conseille soit de vous faire aider par un ami qui utilise Linux ou un autre système Unix soit d'en savoir un peu plus sur internet. Sous windows il est possible aussi de faire marcher ce script, mais c'est compliqué parce qu'il faut installer un environnement de compatibilité du genre Cygwin.
Bonjour
Merci.si j'ai bien compris l'utulisation la plus simple est sous unix (systeme ubuntu par exemple)
bonjour, votre idee m'interesse fortement. J'aimerais en parler afin de ne pas faire d'erreur, notemment sur à quel endroit mettre le numero. Bien sur, je seris reconnaisant. Laissez moi un message svp. Cordialement
Bonjour,
Désolé j'avais un peu délaissé mon blog, quelles sont vos questions par rapport à ce script ?
Bonjour,
Je viens de tester les scripts sous cygwin. Ils affichent tous les 2 login ok et transfert ok mais lorsque je consulte l'admin de free aucun n'est activé.
J'ai modifié et rajouté une ligne au code et maintenant il refonctionne.
Pourriez-vous partager l'astuce et expliquer votre modification ? Ça pourrait aider d'autres utilisateurs de Cygwin.
j'ai rajouter ligne 16: else TRANSINC='&transinc' sans cela le transfert ne se désactivé pas.
et j'ai modifié ligne 36 par : --user-agent="$USERAGENT" --post-data="incon="$NUMERO""$TRANSINC" " \
Dans cygwin: j'ai posé les deux fichier SH dans le répertoire home/"nom utilisateur"
depuis cygwin je tape la ligne de commande:
./transfert.sh NUMERO (pour active le transfert)
et
./transfert.sh (pour le désactive)
script super interaissant!!
mais je crois que la page free pour le transfert d appel a changer...
donc plus fonctionel :(
tu pourrais voir ca?
Merci
Est-ce que tu es sûr qu'il ne marche pas ? Je l'utilise encore tous les jours depuis mon téléphone portable avec le wrapper CGI et ça passe. Sinon essaye de voir les sorties de wget avec l'option -O -.
salut, j'essai de faire tourner le script sous windows aussi, j'obtiens
"longin ok"
"transfert erreur"
pareil en ajoutant les lignes de codes proposées par twixsnow
help me please j'ai besoin du transfert d'appel pour le boulot, et j'ai ma freebox qui a planté.
@anisse
Essayez d'ajouter l'option -O - à wget pour afficher la page que renvoie l'interface de free, ça vous aidera à comprendre d'où vient le problème.
Je cherche quelqu'un qui pourrait me faire une interface sous windows, ou sur Internet, j'utilise tous les jours le tansfert, et votre solution est pratique.
Pourriez vous me faire un devis.
Merci
@anisse
je l'ai pourtant testé sous windows avec cygwin et cela fonctionne. Je viens de le faire à l'instant. Maintenant je le fais fonctionner a distance avec mon iphone avec une connexion ssh.
Je m'aperçois :
- avec horreur que Free ne permet plus d'activer le transfert à distance.
- avec soulagement que vous proposez une solution.
Malheureusement je travaille sous Windows et je ne suis pas assz calée. Pouvez vous m'aider à mettre en place la solution que vous proposez ?
Merci
J'ai installé l'environnement Cygwin sous W7 et me suis fiée à mes vieux souvenirs d'unix. Quand je lance le programme $ transfert xxxxxxxxxxx (depuis le répertoire dans lequel je l'ai installé soit /
j'obtiens les messages :
line 2: $'\r' : command not found
line 5: $'\r' : command not found
line 8 : syntax error near unexpected token $'\r''
line 8 : mkdir -p "$tmp || (echo "dossier temporaire inaccessible" ; exit 1)
Pouvez vous m'aider ? manque un programme ? dossier d'installation ? Merci
@Michounette
Je pense que vous avez enregistré le script à l'aide d'un éditeur de texte windows qui a enregistré des retours à la ligne façon windows (CR LF), alors que sous Unix on utilise des retours à la ligne simples (LF). D'où les '\r' parasites détectés par Cygwin.
Tu l as tester sur iphone!!! super
comment on fait pour pour que ca fonctionne sur iphone et avec une connexion ssh
Il n'y pas de client ssh sur iPhone à ma connaissance.
Mais il suffit de mettre un serveur web sur ton lan derrière la freebox et d'utiliser le 2e script que je donne pour faire le transfert de l'extérieur avec une page web.
Je me sert de issh comme client iphone. J'ai un serveur web lighttpd qui tourne chez moi avec le fichier transfert.sh dessus. Je me connecte grâce au client et je le lance a distance. J'ai plus qu'a appeler mon fixe et je suis transférer. Grace à issh on peut créer des raccourcis de commande à taper afin de gagner du temps.