Giter Site home page Giter Site logo

hotspot-connect's People

Contributors

oxmel avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

ng-pe

hotspot-connect's Issues

Impossible d'obtenir une adresse ip dans certains cas (dhclient).

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.

Solution

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.

TODO

Liste des changements prévus

  • Sécurité minimale sur les identifiants (fichier à part + chmod 600)
  • Refactoriser le module de diagnostic
  • Séparer la configuration du logger avec le module logging.config
  • Effectuer tout le travail de vérification, test, retry, etc... sur le module principal
  • Remplacer le timer fixe par du polling pour obtenir plus rapidement l'état de l'association avec le hotspot
  • Intégrer la possibilité d'utilser un service VPN pour sécuriser le trafic entre le client et le hotspot

TypeError: __str__ returned non-string (type Error)

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

unexpected reply FAIL-BUSY for cmd SCAN

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

403 Client Error: Forbidden for url: https://login.orange.fr/front/login

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.

Fonction de diagnostic qui ne joue pas correctement son rôle

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 :

  • Le Pi a perdu la connexion avec le hotspot
  • Le Pi n'a pas obtenu une adresse ip valide
  • Le Pi est connecté, avec une ip valide, mais le réseau est quand même inaccessible

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.