none
Détection de mode de connexion

    Discussion générale

  • Bonjour tout le monde,

    J'ai écrit un programme pour synchroniser la machine (la mettre à l'heure en relançant le service Tardis) lors de la connexion Internet. En effet j'ai pris l'habitude de débrancher le réseau pendant le démarrage de la machine, pour que l'antivirus et le pare-feu soient démarrés lorsque je le rebranche).

    Pour cela je me base sur les deux fonctions suivantes :

            public static bool IsConnected()
            {
                int Desc;
                Application.DoEvents();
                return InternetGetConnectedState(out Desc, 0);
            }
    
            public static bool DispoServeurs()
            {
                Beep(100, 10);
                List<string> ListeServeurs = new List<string>();
                ListeServeurs.Add("pool.ntp.org");
                ListeServeurs.Add("0.pool.ntp.org");
                ListeServeurs.Add("1.pool.ntp.org");
                ListeServeurs.Add("2.pool.ntp.org");
                bool booDispo = false;
                int FLAG_ICC_FORCE_CONNECTION = 1;
                foreach (string str in ListeServeurs)
                {
                    if (InternetCheckConnection(str, FLAG_ICC_FORCE_CONNECTION, 0)!=0) booDispo = true;
                }
                if (!booDispo) Sleep(5000);
                return booDispo;
            }
    

    ça marche très bien depuis des années, mais là je suis en déplacement ce qui me fait expérimenter une situation nouvelle.

    Je me connecte au hot-spot wifi d'Orange, en accès gratuit (enfin pour les clients Orange). Lorsque j'établis la connexion sur le hotspot la fonction IsConnected détecte la connexion, et DispoServeurs détecte les serveurs.

    Voilà le hic : le hotspot ne laisse passer les données ntp qu'après authentification. Il faut ouvrir une page dédiée dans le navigateur, autoriser les scripts, accepter les conditions générales, et s'authentifier.

    Or, comme je lance mon programme au démarrage de session Windows, dès la connexion au hotspot il affiche son formulaire, qui relance le service, mais la synchronisation ne se fait pas. Dans le navigateur l'affichage d'une page web quelconque affiche ceci :
    "Ce réseau nécessite peut-être que vous vous connectiez à un compte pour utiliser Internet."

    Je me demande comment on peut par code différencier ce mode de connexion qui attend une authentification (protocole hsts), du mode de connexion définitif après authentification (http). En clair distinguer le mode qui permet de recevoir des données, de celui qui ne le permet pas (si je ne considère pas comme données la page qui demande un mot de passe).

    Il y aurait bien le chargement d'une page web et l'analyse de son contenu, qui forcément diffère, mais peut-être existe-t-il un moyen plus orthodoxe ?

    lundi 10 juillet 2017 21:08