oxmel / hotspot-connect Goto Github PK
View Code? Open in Web Editor NEWTransformer un hotspot orange en accès internet sédentaire avec un Raspberry Pi.
Transformer un hotspot orange en accès internet sédentaire avec un Raspberry Pi.
Mise à jour : Le script de configuration pi-modem-router.sh
a été mis à jour pour utiliser dhcpcd à la place de dhclient pour l'interface wifi. Il n'est donc plus nécessaire de faire appel à wpa_action
pour déclencher une requête dhcp à chaque connection au hotspot. Voir ce commit pour plus d'infos.
Lors de la connexion au hotspot, dhclient est censé être lancé pour permettre au client d'obtenir une adresse ip. Mais en l'état, wpa_supplicant n'envoie pas l'info lorsqu'il vient de se connecter. Donc dhclient se déclenche aléatoirement sans prendre en compte l'état actuel de la connexion.
Si la configuration actuelle fonctionne quand même, c'est parce que le script est lancé au démarrage du Raspberry, ce qui permet à wpa_supplicant et dhclient de se synchroniser sans même le faire exprès. Mais si on arrête le script et qu'on le relance manuellement, là il est possible que le Raspberry n'arrive pas à obtenir d'ip.
Pour régler le problème, il faut modifer le fichier /etc/network/interfaces
et remplacer ces lignes :
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Par celles-là :
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Cette modification permet de lancer wpa_action
en background qui va surveiller l'état de wpa_supplicant et détecter chaque event (connexion / déconnexion) pour appeler ifupdown
en conséquence. Et quand ifupdown
va être appelé, il va à son tour lancer dhclient.
Si au lancement le script crash avec cette erreur, cela signifie que la date et l'heure sur le Pi sont mal configurées. Ce qui a souvent tendance à se produire lorsque le Pi n'a pas été allumé depuis un certain temps. Pour régler le problème, il suffit de mettre à jour la date et l'heure et de relancer le script.
Voilà la trace complète pour référence :
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/__init__.py", line 859, in emit
msg = self.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 732, in format
return fmt.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 471, in format
record.message = record.getMessage()
File "/usr/lib/python2.7/logging/__init__.py", line 331, in getMessage
msg = str(self.msg)
TypeError: __str__ returned non-string (type Error)
Logged from file auth.py, line 63
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/__init__.py", line 859, in emit
msg = self.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 732, in format
return fmt.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 471, in format
record.message = record.getMessage()
File "/usr/lib/python2.7/logging/__init__.py", line 331, in getMessage
msg = str(self.msg)
TypeError: __str__ returned non-string (type Error)
Logged from file auth.py, line 63
Salut, merci pour ce travail !
J'ai fait une install toute fraiche de Raspberry pi 2
J'ai suivi les instructions à la lettre, et j'obtiens l'erreur en titre. Je suis bien allé fouillé, mais sans succès.
Pour votre information, une commande
iwlist wlan0 scan
retourne bien la liste des réseaux wifi présents autour de moi
J'ai tout de même réussi à aller plus loin après avoir tapé cette commande, mais avec un fail d'authentification. Et au bout de 2 ou 3 essais, je réobtiens l'erreur en titre. Ca ne semble pas déterministe... Beaucoup de mal à expliquer pourquoi !
PS : je suis en train d'essayer de l'adapter en bash only, avec du curl mais j'ai des petits soucis pour maintenir les sessions, y compris avec le cookie-jar
Cette erreur apparaît systématiquement à chaque tentative d'authentification sur le serveur. Cela vient du fait que orange a récemment procédé à une mise à jour de sécurité sur la page login.orange.fr avec un système de détection de robots et la mise en place d'un captcha.
En revanche, il semble possible de pouvoir contourner le problème en passant par les API utilisées par l'application mobile "Orange Réseau". Et notamment l'api disponible sur api.sso.orange.fr pour pouvoir s'authentifier à nouveau. Merci à @ng-pe pour cette information.
Si tout va bien, un fix devrait donc pouvoir être trouvé dans les jours qui viennent pour avoir de nouveau un script fonctionnel.
Si pour une raison quelconque la connexion réseau est perdue, un diagnostic va être lancé pour essayer de déterminer l'origine du problème.
La fonction qui s'ocupe de ce diagnostic prend pour l'instant en charge 3 cas de figures :
Dans les deux derniers cas, le bssid (l'adresse MAC) du hotspot est censé être ajouté à une blacklist, mais dans le cas n°3, cette étape est ignorée. Ce qui peut conduire à ce que le même hotspot soit réutilisé plusieurs fois.
Edit : Après une analyse plus poussée c'est en fait la structure entière de la fonction qui est à revoir. Puisque même si la réparation de la connexion s'effectue correctement, le point d'accès est quand même susceptible de se faire blacklist.
Ce bug n'est pas critique en soi, mais si la connexion est trop instable cette fonction ne jouera pas correctement son rôle. Ce qui risque dans certains cas de rallonger considérablement le temps d'attente avant de retrouver un accès à internet.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.