vzwingma / domotique

Gestion domotique de la maison
3 stars 3 forks source link

Livebox authentification #15

Closed jec44 closed 3 years ago

jec44 commented 6 years ago

Bonjour, Pour le script Status Network avec la livebox, j'ai un message "permission denied" quand je lance local commandeurl="curl -s -X POST -H 'Cache-Control: no-cache' -d '' " .. apiLiveBox .. "/sysbus/Devices:get"

Comment résoudre ce problème ? Merci

vzwingma commented 6 years ago

Bonjour,

Il se semble pas y avoir d'authentification sur cette API. 1) Pouvez vous essayer d'exécuter l'appel en dehors des scripts : via le plugin "Postman" dans Chrome par exemple. 2) Est ce que la commande "curl" est bien exécutable par l'utilisateur linux qui exécute le script ? (normalement il doit être ici : /usr/bin/curl)

Le résultat chez moi :

pi@domatique:~ $ ls -l /usr/bin/ | grep curl -rwxr-xr-x 1 root root 157080 nov. 4 2016 curl

jec44 commented 6 years ago

Bonjour, J'ai essayé POSTMAN , l'erreur d'authentification est la même ! la commande CURL est bien exécutable, j'ai d'autres script dont le tien pour la Freebox qui fonctionnait très bien !

admin@DSBOX:/tmp$ ls -l /usr/bin/ | grep curl -rwxr-xr-x 1 root root 108352 Nov 10 16:36 curl

Maintenant je suis sur une Livebox, fibre oblige, et j'essaye tant bien que mal a obtenir le même résultat dans Domoticz. J'ai donc copié ton script sans aucune modification (à part les variables) et j'ai cette erreur :

[string "commandArray = {} ..."]:34: bad argument #1 to 'pairs' (table expected, got nil)

Quand je regarde le fichier peripherique.tmp {"status":null,"errors":[{"error":13,"description":"Permission denied","info":"Devices"}]}

Merci de ton aide

vzwingma commented 6 years ago

Bonjour,

Donc, c'est bien l'API elle même qui a une authentification. Est ce que vous pouvez tester en ajoutant le login/mot de passe Admin de la Livebox en tant qu'authentification BasicAuth dans Postman ?

===

 Maintenant je suis sur une Livebox, fibre oblige,   

Je vois qu'on a le même parcours :)

papo-o commented 6 years ago

Bonjour, sur les livebox4 la requête http://livebox.home/ws/Devices:get nécessite maintenant une authentification fibre oblige j'ai moi aussi abandonné la freebox

vzwingma commented 6 years ago

Merci pour ces informations. Comme je n'ai pas d'authentication sur la version de Livebox, je ne peux guère vous aiguiller. @jec44 @papo-o Est ce bien avec le compte "admin" que l'API est accessible ? Elle est du type HTTP BasicAuth ?

papo-o commented 6 years ago

oui c'est bien le compte admin qui est utilisé c'est la même authentification qui permet la récupération des données DSLStats, MIBs, WANStatus et Device info j'arrive à récupérer les infos Devises via ce script bash auquel j'ai ajouté la requête curl suivante :

getDevices=curl -s -b "$myCookies" -X POST -H 'Content-Type: application/x-sah-ws-4-call+json' -H "X-Context: $myContextID" -d "{\"service\":\"Devices\",\"method\":\"get\",\"parameters\":{}}" http://$myLivebox/ws mais je n'est pas réussi à inclure les curl dans ton script lua

vzwingma commented 3 years ago

De retour sur Livebox 5 / Fibre, l'authentification a bien changé :

Authentification

     {
    "service": "sah.Device.Information",
    "method": "createContext",
    "parameters": {
        "applicationName": "so_sdkut",
        "username": "admin",
        "password": "<Mettre le mot de passe admin>"
    }
     }

La réponse donne :

{
    "status": 0,
    "data": {
        "contextID": "hT88gPQJZArD0lNK5ZqfEbKjOa8UgMBpcUk3x0GxwOFLbL5IRNDTdU6dNRgSXDLX",
        "username": "admin",
        "groups": "http,admin"
    }
}

Utilisation des API

Pour utiliser les api, il suffit ensuite d'injecter le ContextId dans les requêtes suivantes :

Exemple pour le Statut WAN

     {
    "service": "NMC",
    "method": "getWANStatus",
    "parameters": { }
     }