friedrith / node-wifi

📶 NodeJS tool to manage wifi (connections, scans)
MIT License
402 stars 161 forks source link

connect function no check the SSID, then no return when the SSID is wrong #19

Open Manu1400 opened 7 years ago

Manu1400 commented 7 years ago

1/ On Mac, install (the last version of) node-wifi with command npm install node-wifi 2/ In Hyper (a terminal), run node 3/ Copy paste the code `var wifi = require('node-wifi');

// Initialize wifi module // Absolutely necessary even to set interface to null wifi.init({ iface : null // network interface, choose a random wifi interface if set to null }); 4/ Connect your computer to your wifi, with GUI. 5/ Copy paste the other code // Connect to a network wifi.connect({ ssid : "FreeWifi", password : ""}, function(err) { if (err) { console.log(err); } console.log('Connected'); });` 6/ Wait few seconds.

node-wifi try to connect FreeWifi SSID (it's a free wifi not secured in France from "Free" popular company). But failed. Mac reconnect your favorite wifi SSID. And node-wifi say "Connected" because no check the SSID connected.

Expectation : throw an error.

friedrith commented 7 years ago

Bonjour, J'avoue ne pas avoir testé node-wifi sur un freeWifi. Est ce que tu pourrais tester les manipulations suivantes ?

  1. lancer la commande ifconfig et vérifier que l'interface en0 existe bien.
  2. lancer la commande `networksetup -setairportnetwork "en0" "freeWifi"

Pourrais-tu afficher le résultat ici ?

Manu1400 commented 7 years ago

Bonjour, En somme, le problème n'est pas FreeWifi, mais tout simplement que si tu n'arrive pas à te connecter à un réseau pour une raison ou une autre, Mac OS te reconnecte automatiquement à ton réseau wifi (en suivant l'ordre de la liste de préférence de réseau wifi).

friedrith commented 7 years ago

C'est tout à fait possible mais j'avoue que node-wifi devrait emettre un message d'erreur même si c'est jamais très simple avec les commandes wifi. N'hésite pas à me dire de quelle manière je peux t'aider.

friedrith commented 7 years ago

Je viens de tester avec la configuration suivante :

Et cela fonctionne parfaitement avec le code qui tu as mis ci-dessus. Mon mac arrive à se connecter au freeWifi. Pour un réseau où le mot de passe est mauvais, il renvoie l'erreur suivante via la commande networksetup -setairportnetwork "en0" "freeWifi_secure" "toto" :

Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)Failed to join network FreeWifi_secure.
Error: -3900  The operation couldn’t be completed. (com.apple.wifi.apple80211API.error error -3900.)

Et la même erreur est renvoyée via node-wifi.

Cela peut dépendre de ta configuration réseau (si échec automatiquement se reconnecter à un autre réseau ?). Mais j'avoue ne pas trop m'y connaître en mac sur cela. A tout hasard, je vais améliorer la stabilité en améliorant les gestions des retours d'erreurs dans node-wifi.