Closed zoic21 closed 1 year ago
Hello, Via docker en installation supervisée ?
Bonjour, Non docker sur un synology directement. Mais je pense il y a un autre soucis, quand je vais sur l'url depuis mon pc j'ai une comme erreur : empty reponse et rien dans les logs de home assistant (je devrait avoir ip non autorisé je pense). Je suis pas sur de m'y prendre correctement pour activer les logs en debug, je vais sur ma liste d’intégration je clique sur activer les journaux degug, je lance un test depuis l'ipx800 et je clic pour desactiver les journaux debug et la ca me télécharge un fichier mais j'ai rien concernant l'ipx800 dedans.
J'ai pu faire plus de test dans la fonction check_api_auth
j'ai commenté :
if request.remote != host:
raise ApiCallNotAuthorized("API call not coming from IPX800 IP.")
Et c'est bon le push marche, j'ai rajouté de la log et j'ai :
2023-05-26 17:30:58.976 DEBUG (MainThread) [custom_components.ipx800v4] Update asked from IPX PUSH, : 172.17.0.1 != 192.168.1.165
Donc oui j'arrive avec l'ip de mon docker et non l'ip de l'ipx. Je vais essayer de mettre un reverse proxy devant pour qu'il envoi la bonne ip.
Edit avec un reverse proxy qui passe l'ip plus aucun soucis tout marche. Par contre en regardant le code je me pose quelques questions :
class IpxRequestRefreshView(HomeAssistantView):
"""Provide a page for the device to force refresh data from coordinator."""
requires_auth = False
url = "/api/ipx800v4_refresh/{data}"
name = "api:ipx800v4_refresh"
def __init__(
self, host: str, password: str, coordinator: DataUpdateCoordinator
) -> None:
"""Init the IPX view."""
self.host = host
self.password = password
self.coordinator = coordinator
super().__init__()
async def get(self, request, data):
"""Respond to requests from the device."""
if check_api_auth(request, self.host, self.password):
_LOGGER.debug("Update asked from IPX PUSH")
await self.coordinator.async_request_refresh()
return web.Response(status=HTTPStatus.OK, text="OK")
_LOGGER.warning("Authentication for PUSH invalid")
Sur cette partie, si check_api_auth est false on va jamais renvoyer de réponse a la demande et donc ca tourne dans le vide, ne devrait qu'il pas avoir un retour type 401 ?
2eme question check_api_auth renvoi pas de false mais une exeption en cas de soucis, ne devrait il pas avoir un try catch ?
Oui en effet il y a ces deux points à corriger/améliorer, je me note ça
Bonjour, J'ai un petit, j'utilise home assistant en docker avec un ipx800v4 et j'aimerais bien mettre en place le push global (ipx800v4_refresh/on), le soucis c'est que je suis en docker et donc l'ip avec laquelle arrive les demandes de l'ipx sont en 172.X.X.X et non avec l'ip réel de l'ipx. J'ai donc logs des erreurs comme quoi l'ip n'est pas celle d'un ipx...
Comment faire dans ce cas ?
Merci d'avance pour ta réponse.