Projet

Général

Profil

Bug #3721

Champ Adresse IP windows

Ajouté par Icham Sirat il y a presque 10 ans. Mis à jour il y a presque 10 ans.

Statut:
Fixed - Corrigé - Implémenté
Priorité:
Normale
Assigné à:
Icham Sirat
Version cible:
Début:
05/06/2014
Echéance:
% réalisé:

100%

Temps estimé:
2.00 h

Description

On a perdu le champ adresse IP sur les windows...

Historique

#1 Mis à jour par Icham Sirat il y a presque 10 ans

  • Petite mise à jour du problème sur windows :
    • le paquet installable affiche la version et le numéro de build dans les infos mais pas l'IP
    • le code dans Qt sur windows affiche l'IP mais pas les infos de build (normal)

#2 Mis à jour par Icham Sirat il y a presque 10 ans

  • % réalisé changé de 0 à 30

Je viens de comparer les retours aux branches ad-hoc lorsqu'on build des branche RC :

on est sur une branche STABLE ou RC, on essaye de revenir à toutes les revisions ad hoc des branches externes
 M  abuledulomv1.cpp
 M  abuledulomv1.h
 M  normal/abuleduapplicationv1.cpp
 M  normal/abuleduapplicationv1.h
 M  abuledussologinv1.cpp
 M  lang/abuledunetworkaccessmanagerv1_en.ts
 M  lang/abuledunetworkaccessmanagerv1_es.ts

Je connais les révisions (seulement n-1 sur les fichiers impactés) et ça ne touche pas l'affichage des IP..

#3 Mis à jour par Icham Sirat il y a presque 10 ans

Je viens de compiler sur Windows en debug & release et je vois l'IP...

Je rajoute un debug+log de l'Ip locale dans le code (revno 616) et je rebuilde un paquet.

#4 Mis à jour par Icham Sirat il y a presque 10 ans

Bon sur windows, toujours une petite incompréhension...

Le code compilé affiche l'IP et pas l'exécutable installé non..

Je vais tracer toute la boucle de recherche d'adresse IP (méthode showParam()) et rebuild du paquet pour windows.

#5 Mis à jour par Icham Sirat il y a presque 10 ans

Aie petit bug Qt trouvé ici https://bugreports.qt-project.org/browse/QTBUG-21570
Comme on boucle sur les configurations trouvées, sur Windows 7 la méthode QNetworkConfigurationManager::allConfigurations() retourne 0 (cf bug).

Mais il est peut-être possible de passer par les interfaces détectées et non par les configurations réseau -> Test en cours

#6 Mis à jour par Icham Sirat il y a presque 10 ans

Voici la plus simple méthode pour avoir l'IP locale :

    foreach (const QHostAddress &address, QNetworkInterface::allAddresses()) {
        if (address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress(QHostAddress::LocalHost))
             qDebug() << address.toString();
    }

Fonctionne sous Linux et Windows en développement.
Intégration de ce bout de code dans aLaCarte et build du paquet pour test.

Ce code est fonctionnel mais je perds des infos. Il faut que je trouve une manière aussi simple d'avoir le masque de sous-réseau + adresse MAC.
example : xxx.xxx.xxx.xx (masque : xxx.xxx.xxx.x, adresse MAC :xx:xx:xx:xx:xx:xx)

#7 Mis à jour par Icham Sirat il y a presque 10 ans

  • % réalisé changé de 30 à 50

Voilà pour l'adresse MAC (attention, ne retourne que la première non loop-back trouvée :

    foreach(const QNetworkInterface &netInterface, QNetworkInterface::allInterfaces())
    {
        // Return only the first non-loopback MAC Address
        if (!(netInterface.flags() & QNetworkInterface::IsLoopBack)){
            qDebug() << netInterface.hardwareAddress();
        }
    }

#8 Mis à jour par Icham Sirat il y a presque 10 ans

Hey encore plus simple, les trois d'un coup :

    foreach(const QNetworkInterface &netInterface, QNetworkInterface::allInterfaces())
    {
        foreach (const QNetworkAddressEntry &addrEntry, netInterface.addressEntries()) {
            if(addrEntry.ip().protocol() == QAbstractSocket::IPv4Protocol &&   addrEntry.ip() != QHostAddress(QHostAddress::LocalHost) ){
                qDebug() << "ADRESSE IP" << addrEntry.ip().toString();
                qDebug() << "NETMASK ASSOCIE" << addrEntry.netmask().toString();
            }
        }
        // Return only the first non-loopback MAC Address
        if (!(netInterface.flags() & QNetworkInterface::IsLoopBack)){
            qDebug() << "ADRESSE MAC" << netInterface.hardwareAddress();
        }
    }

Je pense faire une structure type AbulEduNetWorkInfo avec un triplet IP,Subnet, MAC, et sûrement déplacer ça dans AbulEduApplication. -> Feature #3723

#9 Mis à jour par Icham Sirat il y a presque 10 ans

  • % réalisé changé de 50 à 80

Compilation d'un paquet (only windows) suite à la feature #3723

#10 Mis à jour par Icham Sirat il y a presque 10 ans

  • Statut changé de Assigned - En cours à Fixed - Corrigé - Implémenté
  • % réalisé changé de 80 à 100

Problème réglé =)
revno 618

Formats disponibles : Atom PDF

Redmine Appliance - Powered by TurnKey Linux