IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

API PHP pour routeur Huawei B2338-168


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut API PHP pour routeur Huawei B2338-168
    Bonjour,
    Je souhaite utiliser une API développé par un développeur Github babca qui ne me répond pas sur ma demande faite en Septembre 2021, je tente ma chance ici du coup.
    Cette API permet de récupérer des informations sur le routeur 4G.

    Voici l'origine du code source du script : https://github.com/babca/huawei-api

    dpkg.txt : Ci-joint le résultat de la commande "dpkg -l" sur une nouvelle machine installée aujourd'hui (Debian minimal mise à jour du 15/01/2022).

    Selon la documentation du développeur, j'ai installé Apache, PHP les librairies qui vont bien (composer, curl, etc...), je met le mot de passe (masqué ci-dessous) de mon routeur en variable dans le script status_example.php....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    
    /**
    Most simple example
    */
    require_once 'vendor/autoload.php';
    
    $router = new HuaweiApi\Router;
    
    const IP       = "192.168.1.1";
    const USERNAME = "user"; // probably always 'user'
    const PASSWORD = "[...]";
    
    //$router->enableDebug();
    $router->setAddress(IP);
    $router->login(USERNAME, PASSWORD);
    
    $router->getLteBand();

    Voici le résultat que j'obtiens (ayant tronqué par la balise [...] pour que ce soit plus lisible) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    We got a PUB key and OTP for login:
    {"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8[...]\ntwIDAQAB\n-----END PUBLIC KEY-----\n","otp":"d40f52c4"}
    We got a CSRF token for login:
    gj9iSIJF9V193Bj7TdTPWfBSdSokO7J9Hwr4ghHYgNLbHGD0GgnTyOda5IpxRgZw
    PREPARING POST REQUEST:
    Array
    (
        [action] => login
        [page] => login.asp
        [csrftoken] => gj9iSIJF9V193Bj7TdTPWfBSdSokO7J9Hwr4ghHYgNLbHGD0GgnTyOda5IpxRgZw
        [user_lang] => en
        [user_name] => m9+UaBIG9ukqZseJI/lR8sW7Nr8[...]+CmbdVUGY/ebznRtGMI6liLOOWw9EglQ==
        [user_name_plaintext] => 
        [user_passwd] => m55X+B2tObqrdpoi3ZhNKtq9z7F[...]6S/b5tZs5HvW1XSzCwWEl/7BheOTBQ==
        [user_passwd_plaintext] => 
    )
    ERROR in getModemStatus(): Probably because of an invalid or expired session token, router returned garbage HTML instead of JSON. Grab a new session token first.
    J'ai vérifié lors d'une connexion sur l'interface Web du routeur en https://192.168.1.1 les données transmisses par requête POST sont biens les mêmes variables que celles envoyées par le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    user_name_plaintext=
    &user_passwd_plaintext=
    &user_lang=en
    &user_name=g9nbC/aqXG+x[...]rkWfQl+9wkh6D21dgNx5TQ==
    &user_passwd=ONCo2cq4nfp9V3W177zj/tupBVI[...]pKObGhac6f/h84q8G3zmkHxsWM6XTJ53NX0Fw==
    &page=login.asp
    &action=login
    &csrftoken=fqBN55yc8DrYktROsDWWrivdMwpUniGQgtBM8dq9HR8CpWlJ1FiPC9d9mfCIS5Fe

    Merci de votre lecture et de votre aide, je bloque à ce niveau depuis 6 mois...

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    dans le fichier Router.php ligne 54, affichez le résultat de la requête avant le passage à "json_decode" :
    https://github.com/babca/huawei-api/...Router.php#L54

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Alors j'ai rajouté 2 lignes avant la ligne 54 :

    Nom : debug_API_huawei.png
Affichages : 428
Taille : 147,3 Ko
    Voici le résultat : debug.html

    Je ne suis pas sûr d'avoir répondu à la question, dans le fichier HTML généré, je ne vois rien de plus clair pour moi!

    Merci pour l'aide et le debug!

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En activant le mode debug, voici la trace que j'ai dans le log error d'Apache :

    Nom : debug_API_huawei01.png
Affichages : 452
Taille : 1,01 Mo

    si ça peut aider au diagnostic....

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    d'après le résultat dans debug.html, il y a une redirection vers la page de connexion.
    refaite la même chose avec la requête de connexion là :
    https://github.com/babca/huawei-api/...outer.php#L118

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->http->getUrl('/cgi-bin/sysconf.cgi')
    La valeur de l'URL retournée est : https://192.168.1.1/cgi-bin/sysconf.cgi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->http->post($this->http->getUrl('/cgi-bin/sysconf.cgi'), $login_post_fields);
    Le retour de cette requête est un fichier vide

    Du coup je dois comprendre que c'est le HTTP POST qui ne se fait pas pour l'authentification ?
    A un autre endroit du script, on peut lire un commentaire... donc peut être que le routeur ne répond rien...
    // router will respond with empty body
    et
    // if we got *any* cookie && then successfuly grabbed csrf token for the current session, we consider the state as successful login

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2022
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    De ce que j'ai pu voir, c'est que lors de la requête HTTP POST, j'obtiens une erreur HTTP 500... du coup l'authentification échoue et n'obtiens pas le Cookie de la session.

    Nom : debug_API_huawei02.png
Affichages : 396
Taille : 822,2 Ko

    Avec l'authentification depuis Firefox, je vois dans les entêtes HTTP les informations sur le cookie, que je n'ai pas dans les logs debug Apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set-Cookie: sid=pVaWF330N7AunC1OvheMrohKYssV19tLQpAxY2bedtOjsrwuji8jQDE1bjBQFOU8; path=/;secure; HttpOnly
     
    Cookie: sid=pVaWF330N7AunC1OvheMrohKYssV19tLQpAxY2bedtOjsrwuji8jQDE1bjBQFOU8

Discussions similaires

  1. [SQL Server] API en PHP pour simple lecture de quelques tables
    Par PhiMau dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/01/2020, 16h47
  2. cURL & PHP pour API
    Par Dark_Lycos dans le forum Langage
    Réponses: 1
    Dernier message: 03/02/2019, 10h39
  3. Recherche scripteur PHP pour Google MAPS API
    Par emeric73 dans le forum Autres
    Réponses: 0
    Dernier message: 22/02/2010, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo