Alexa-API - Problème de création de Cookies

Bonjour,

Je rencontre un problème pour la création du cookies du plugin.
La fenêtre de connexion ne s’ouvre pas (Les Pop-up sont autorisés).

Version Jeedom : V4.0.38
Version Plugin : Stable ou Beta (J’ai testé les 2)
Contexte : Jeedon in Docker, Lancement via une pile Docker-compose (L’objectif suivant est un stack K8S). le port 3457 est exposé, Mode réseau = Bridge
Site Amazon : amazon.ca (et oui, je suis au Canada)

Voici les logs

alexaapi

[2020-01-11 01:35:16][INFO] : Lancement Serveur pour Cookie - DEBUT deamonCookieStart
[2020-01-11 01:35:16][INFO] : Arrêt du service cookie
[2020-01-11 01:35:16][DEBUG] : ---- Kill initCookie.js: kill $(ps aux | grep 'initCookie.js' | awk '{print $2}')
[2020-01-11 01:35:16][DEBUG] : ---- Lancement démon Alexa-API-Cookie sur port 3457 : nice -n 19 nodejs /var/www/html/plugins/alexaapi/resources/initCookie.js  amazon.ca alexa.amazon.ca
[2020-01-11 01:35:16][INFO] : Lancement Serveur pour Cookie - DEBUT deamon_info
[2020-01-11 01:35:16][INFO] : Test si serveur cookie lance
[2020-01-11 01:35:16][INFO] : Lancement Serveur pour Cookie - FIN   deamonCookieStart

alexaapi_cookie

Alexa-Remote: No cookie given, generate one
Alexa-Cookie: Use as Login-Amazon-URL: alexa.amazon.ca
Alexa-Config (alexa-cookie.js): amazonserver=alexa.amazon.ca
Alexa-Config (alexa-cookie.js): alexaserver=undefined
Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Alexa-Cookie: Use as Accept-Language: fr-FR
Alexa-Cookie: Proxy mode disabled
[HPM] Proxy created: !/cookie-success  ->  https://alexa.amazon.com
[HPM] Proxy rewrite rule created: "^/www.amazon.com" ~> ""
[HPM] Proxy rewrite rule created: "^/alexa..amazon.com" ~> ""
Alexa-Cookie: Proxy-Server listening on port 3457
Alexa-Remote: Error from retrieving cookies
initCookie - Error: You can try to get the cookie manually by opening http://amazon.ca:3457/ with your browser.

Message d’erreur

http://localhost:8080/index.php?v=d&m=alexaapi&p=alexaapi&id=alexaapi	 ligne 57   Uncaught SyntaxError: Failed to execute 'open' on 'Window': Unable to open a window with invalid URL 'http://:3457/'.

Merci

as tu regarder si tu n’as pas un bloqueur de pub ou autre (on ne sais jamais)
C.

Je confirme que ça ne viens pas de là. J’ai tester sur plusieurs navigateurs dont certains sans bloqueurs. ça ne change rien
D’ailleurs, eedom est en liste blanche sur les navigateurs avec bloqueurs :slight_smile:

Bonjour de ce que je vois votre jeedom est mal configuré, vérifiez l’adresse ip interne dans la configuration réseau de jeedom

Alors attention, pour l’adresse IP,

Je suis dans un conteneur Docker en mode bridge

L’adresse que j’utilise est l’adresse de l’hote (localhost:8080) mappée sur l’adresse et le port interne de conteneur 172.X.X.3:80.

# wget http://localhost:8080

--2020-01-11 10:03:09--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 302 Found
Location: index.php?v=d [following]
--2020-01-11 10:03:09--  **http://localhost:8080/index.php?v=d**
Reusing existing connection to localhost:8080.
HTTP request sent, awaiting response... 200 OK

Le port nodeJs 3457 est également exposé donc localhost:3457 est mappé sur le port interne du conteneur 172.X.X.3:3457

 wget http://localhost:3457

--2020-01-11 10:04:29--  http://localhost:3457/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:3457... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://amazon.ca:3457/www.amazon.com/ap/signin?showRmrMe=1&openid.return_to=https%3A%2F%2Falexa.amazon.com%2F&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_dp_project_dee&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0& [following]
--2020-01-11 10:04:29--  http://amazon.ca:3457/www.amazon.com/ap/signin?showRmrMe=1&openid.return_to=https%3A%2F%2Falexa.amazon.com%2F&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=amzn_dp_project_dee&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&
Resolving amazon.ca (amazon.ca)... 54.239.19.238, 52.94.225.242, 54.239.18.172
Connecting to amazon.ca (amazon.ca)|54.239.19.238|:3457... failed: Connection refused.
Connecting to amazon.ca (amazon.ca)|52.94.225.242|:3457... failed: Connection refused.
Connecting to amazon.ca (amazon.ca)|54.239.18.172|:3457... failed: Connection refused.

Pour résumé, un wgetsur localhost:3457 sur l’hôte envoi en réalité un wget sur 172.X.X.3:3457

Au niveau des masques de sous-réseau

La configuration réseau n’est donc pas la même qu’en mode « normal ».

Merci, pour le retour et le temps pour pas ta réponse malgré tout. Cela m’a permis de faire les vérifications d’usage, vérifier le réseau et les communications.

@Alexa-Api Developpers : Si vous souhaitez avoir un exemple de configuration Docker avec docker-compose pour vos tests, vous pouvez me contacter afin que je peux vous fournir les Dockerfile via le docker Hub (Faudra simplement que je les push). Il y a deux images (Jeedom et Bdd) ainsi que le fichier docker-compose.yaml.

Pour information, certains plugins nécessitent le mode réseau « host » car besoin de broadcast.

Comme vous semblez connaître docker, l’adresse dans le réseau interne doit pouvoir être joignable par le demon alexaapi et par votre ordinateur. Il s’agit d’un proxy permettant de capturer le cookie amazon. Et dans vos logs, je vois qu’il essaye de se connecter à http://:3457 (port sur proxy temporaire) ce qui me fait dire que l’ip interne n’est pas renseignée, à vous de définir l’ip adéquate (localhost ne peut donc fonctionner) et plein de personnes utilisent docker avec ce plugin @Kyoshi par exemple.

Cette adresse interne est également utilisée par le demon pour communiquer avec jeedom

Ok, bien vu.
En effet, je connais assez bien Docker, Kubernetes, Helm. (Je suis architecte DevOps xD)

Alors, c’est good ! La fenêtre est bien là, sur le 127.0.0.1:3457

Voici la configuration pour ceux qui utilise docker :

En fait, j’ai pas touché ma configuration réseau
Pour le moment, je monte les applications donc je fait du compose (K8s viendra plus tard).

un network spécifique pour la pile Jeedom (car j’ai 2 applications webs sur ma stack);
lancement du compose avec un expose des ports 3457 => 3457, et 8080 (host) => 80 (Container)

on peux vérifier que le daemon soit accessible et up avec un

wget localhost:3457

Mon problème venait d’un incompréhension de la page de configuration réseau de jeedom.

Dans la partie « Accès Interne » il faut entrer http://localhost:80 (ou 127.0.0.1:80).
Je pensais que si rien n’était mentionné, le mappage se faisait tout seul sur la boucle locale, mais il n’en est rien.

Du coup, cela fonctionne.

PS : Pour ceux qui serait interessé par un configuration Docker / Kubernetes / Helm v3, vous pouvez me contacter pour des conseils et autres.

Merci Beaucoup nebz, j’ai pu avancé grâce a toi. Cela m’a permis de remettre en question toute ma conf, et ainsi passer par la partie que j’avais zappé.

C’est cool, merci pour ton aide.

A ta dispo si des questions sur le plugin (et plutôt @nebz pour les questions d’infrastructures)

Je suppose que tu voulais dire « Multicast » et non « Broadcast ». En effet, docker et le multicast, il sont pas meilleurs potes xD :slight_smile:
Le mode hôte, non merci. Exposition maximale, sécurité zéro.
Après, il y a le macvlan, mais là aussi, c’est moyen. Ca dépends des contraintes et des besoins.

Et j’ai pas encore vu beaucoup de plugin multicast. J’ai entendu parlé de Xioami home mais après j’ai pas cherché plus loin je dois dire. :grin:

Oui dans le cas de mes plugin (homebridge, homepTalk) c’est multicast (multicast dns pour être précis, ou mDNS) mais je ne connais pas les besoins des autres plugins.

J’ai entendu que Shelly, sonoff dyi utilisent aussi multicast pour découvrir les périphériques sur le réseau , bref Le mode host est quasi nécessaire… après la sécurité docker… on est dans un réseau domestique et pas pro donc bon

Oui, en effet, ce sont des réseau domestiques. Je suis d’accord que le sécurité n’est pas forcément la même. Mais de nos jours, avec les cambriolages en augmentation et les cambrioleurs se mettant à la technologie, malheuresement on est de moins en moins à l’abris. Quoi , parano moi ??? pffff a peine /// MDR :):grin::rofl::rofl::rofl:

Certes un système domotique ne remplace pas un système d’alarme, mais de nombreux objets connectés peuvent être une faille de sécurité « physique » (serrures connectées) si on ne fais pas attention.

Merci en tout cas pour les informations sur le fonctionnement des tes plugins. Actuellement, je regarde si justement, avec un middleware, il n’y a pas la possibilité de faire un proxy multicast. ce qui règlerai le problème du multicast et de la sécurité.
:ok_hand::+1::+1:

Ok tiens moi au courant, je sais que certains en avaient trouvé mais peu eu de retour…

Aucun probleme :slight_smile:

Bonjour,

J’ai un probleme similaire de connexion
Ma configuration reseau me semle correct correcte et pas de bloqueur

Alexa-Remote: No cookie given, generate one
Alexa-Cookie: Use as Login-Amazon-URL: amazon.fr
Alexa-Config (alexa-cookie.js): amazonserver=amazon.fr
Alexa-Config (alexa-cookie.js): alexaserver=alexa.amazon.fr
Alexa-Cookie: Use as User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Alexa-Cookie: Use as Accept-Language: fr-FR
Alexa-Cookie: Proxy mode disabled
[HPM] Proxy created: !/cookie-success  ->  https://alexa.amazon.com
[HPM] Proxy rewrite rule created: "^/www.amazon.com" ~> ""
[HPM] Proxy rewrite rule created: "^/alexa..amazon.com" ~> ""
Alexa-Cookie: Proxy-Server listening on port 3457
Alexa-Remote: Error from retrieving cookies
initCookie - Error: You can try to get the cookie manually by opening http://192.168.0.103:3457/ with your browser.
Router: / / GET / {"host":"192.168.0.103:3457","connection":"keep-alive","cache-control":"max-age=0","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","accept-encoding":"gzip, deflate","accept-language":"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7","cookie":"jeedom_token=; registerDevice=qDif4vIWKEM8b990LmX9NWRFq5x-WWRFD5h3FW0Qqg6ZttMWtke5GvcdTUA7; sess_id=pvb2ob5euve8qi5rs3l9m72v3u; PHPSESSID=pvb2ob5euve8qi5rs3l9m72v3u; session-id=140-1268403-6423506; ubid-main=133-5888728-1569761; session-id-time=2216098087l; session-token=WkR6mnnfjyt2Ril3onM6IOVDKDIMbWHJYgO9Mw82uMfWLWUKPtqeslZfhmALCNzliyY+A9gO3XiuxxXeGOgdNsuto9h9ViWiwADvkqMeQe6O2gjDiBS53/tIH2XZsY6X41Kn11hkI9KzeP8DUsutAa1725KHhczmgGWQwVMONdmJZgzMu1JA8MgYSya790VxwXVcqaMnBrRxMsx9dAxALQZ2mRLjm9; csm-hit=tb:0Q143H32GKMFQSRGJ8AK+s-TXJ3BJ4BJE6DA4BDVSE5|1585378092420&t:1585378092421&adb:adblk_no"}
Alexa-Cookie: Initial Page Request: https://www.amazon.com/ap/signin?openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fap%2Fmaplanding&openid.assoc_handle=amzn_dp_project_dee_ios&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&pageId=amzn_dp_project_dee_ios&accountStatusPolicy=P1&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns.oa2=http%3A%2F%2Fwww.amazon.com%2Fap%2Fext%2Foauth%2F2&openid.oa2.client_id=device%3A361841085143778165851253634882612534406635303665061053214011853723413249564c5635564d32573831&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.oa2.response_type=token&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.pape.max_auth_age=0&openid.oa2.scope=device_auth_access&language=fr_FR
Alexa-Cookie: Proxy-Request: GET /
Alexa-Cookie: Headers: {"cookie":"jeedom_token=; registerDevice=qDif4vIWKEM8b990LmX9NWhj6s0RFq5x-WWRFD5h3FW0Qqg6ZttMWtke5GvcdTUA7; sess_id=pvb2ob5euve8qi5rs3l9m72v3u; PHPSESSID=pvb2ob5euve8qi5rs3l9m72v3u; session-id=140-1268403-6423506; ubid-main=133-5888728-1569761; session-id-time=2216098087l; session-token=WkR6mnnfjyt2Ril3onM6IOVDKDIMbW1uHJYgO9Mw82uMfWLWUKPtqeslZfhmALCNzliyY+A9gO3XiuxxXeGOgdNsuto9h9ViWiwADvkqMeQe6O2gjDiBS53/tIH2XZsY6X41Kn11hkI9KzeP8DUsutAa1725KHhczmgGWQwVMONdmJZgzMu1JA8MgYSya790VxwXVcqaMnBrRxMsx9dAxALQZ2mRLjm9; csm-hit=tb:0Q143H32GKMFQSRGJ8AK+s-TXJ3BJ4BJE6DA4BDVSE5|1585378092420&t:1585378092421&adb:adblk_no","accept-language":"fr-FR","accept-encoding":"gzip, deflate","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","user-agent":"AmazonWebView/Amazon Alexa/2.2.223830.0/iOS/11.4.1/iPhone","upgrade-insecure-requests":"1","cache-control":"max-age=0","connection":"close","host":"www.amazon.com"}
Alexa-Cookie: Headers: {"cookie":"jeedom_token=; registerDevice=qDif4vIWKEM8b990LmX9NWhj6s0RFq5x-WWRFD5h3FW0Qqg6ZttMWtke5GvcdTUA7; sess_id=pvb2ob5euve8qi5rs3l9m72v3u; PHPSESSID=pvb2ob5euve8qi5rs3l9m72v3u; session-id=140-1268403-6423506; ubid-main=133-5888728-1569761; session-id-time=2216098087l; session-token=WkR6mnnfjyt2Ril3onM6IOVDKDIMbW1uHJYgO9Mw82uMfWLWUKPtqeslZfhmALCNzliyY+A9gO3XiuxxXeGOgdNsuto9h9ViWiwADvkqMeQe6O2gjDiBS53/tIH2XZsY6X41Kn11hkI9KzeP8DUsutAa1725KHhczmgGWQwVMONdmJZgzMu1JA8MgYSya790VxwXVcqaMnBrRxMsx9dAxALQZ2mRLjm9; csm-hit=tb:0Q143H32GKMFQSRGJ8AK+s-TXJ3BJ4BJE6DA4BDVSE5|1585378092420&t:1585378092421&adb:adblk_no; frc=ogcy4CnzHnPOba0j0/hY+ewd2Pit9dBr77JqvwfEbCpdgkhXOuM3xkUSrNCggTuQhS+M8aJ3W7AgVnvHPgmC75Zk6LdrL8nAQsc6keST+Tc4kGaW6gwhX5RxpjrDRNd9WVSLvcf1nTLr98sexgjZBdy/u9z2scaVioOwlCWiQ+aP7MVuKLqhoscEvBABTtDRvTgMsyznk8wfdtVIcBw6oOKZwAAuuFP+T9Qv24p6JfhfBB1m+KRNaeRbM1yPWsiaSgwZk4wmhZAfzn8UPuD5MZ+pkn2UETwMAyNbnZ15QLCfIRRjF0TxUC4PoyrupKcJCmNsbH7fMQqoC+fwKmGXGKcPFpN1jL6AWMFVnZiRq8OT8XjDHf3QZ7w0R926/igpWkOnaCW7UShY9fJk5rs++JoqYo6mCBKhUg==; map-md=eyJkZXZpY2VfdXNlcl9kaWN0aW9uYXJ5IjpbXSwiZGV2aWNlX3JlZ2lzdHJhdGlvbl9kYXRhIjp7InNvZnR3YXJlX3ZlcnNpb24iOiIxIn0sImFwcF9pZGVudGlmaWVyIjp7ImFwcF92ZXJzaW9uIjoiMi4yLjIyMzgzMCIsImJ1bmRsZV9pZCI6ImNvbS5hbWF6b24uZWNobyJ9fQ==","accept-language":"fr-FR","accept-encoding":"gzip, deflate","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","user-agent":"AmazonWebView/Amazon Alexa/2.2.223830.0/iOS/11.4.1/iPhone","upgrade-insecure-requests":"1","cache-control":"max-age=0","connection":"close","host":"www.amazon.com"}
(node:8959) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
ERROR: Error: socket hang up
[HPM] Error occurred while trying to proxy request / from 192.168.0.103:3457 to https://alexa.amazon.com (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

bonjour @mika-nt28,

peux tu mettre les log en debug pour ton erreur ?

Salut @mika-nt28

Oui, étrange tout semble bon.
Ton port 3457 est libre avant le lancement du daemon et occupé après ?
192.168.0.103:3457 sur un autre navigateur ne donne rien ?

Bonjour,

Je vais essayer avec edge, mais je ne pense pas que se soit un soucis de navigateur vue que le code est executé coté jeedom

Sur edge c’est passé apres plusieur essais

Étonnant. Le tout c’est que ça ait finalement fonctionné.

Tu pourras stp cocher « résolu » ?