p-dor/LiveboxMonitor

Prise en charge de l'HTTPS dans l'ajout de profil

Lulucmy opened this issue · 8 comments

Bonjour,

Tout d'abord bravo pour votre outil très pratique. Il fonctionne parfaitement sur Mac et avec différent types de Livebox (j'ai pu tester les 3 & 5 sans soucis).

Le seul problème que j'ai rencontré c'est en ajoutant les URLs pour la gestion à distance. Je passe par un DyDNS qui oblige à utiliser HTTPS.
La fonction suivante "force" le HTTP à chaque connexion, et impossible de s'y connecter sans...

# Cleanup URL
def CleanURL(iURL):
n = len(iURL)
if n:
if not iURL[n - 1] == '/':
iURL += '/'
if not iURL.startswith('http://'):
iURL = 'http://' + iURL
return iURL

Problème HTTPS Livebox Monitor

Merci et bonne continuation :)

p-dor commented

Bonsoir, merci pour vos commentaires !
Ah je n'avais pas pensé à ce cas précis :-)
Avez vous Python installé pour essayer des modifications sur le source pour vérifier que cela marche bien ? J'ai des doutes sur la bonne prise en charge de l'HTTPS par le programme...

Avez vous Python installé pour essayer des modifications sur le source pour vérifier que cela marche bien ? J'ai des doutes sur la bonne prise en charge de l'HTTPS par le programme...

Pas de soucis, je teste ça

Ca fonctionne en modifiant CleanURL & LmSession :

# Cleanup URL
def CleanURL(iURL):
	n = len(iURL)
	if n:
		if not iURL[n - 1] == '/':
			iURL += '/'
		if not iURL.startswith('http://') and not iURL.startswith('https://'):
			iURL = 'http://' + iURL
	return iURL

Comme les certificats TLS sont mauvais, il faut ajouter verify = False aux requêtes de LmSession.py :

r = self._session.post(self._url + 'ws', data = aAuth, headers = self._sahServiceHeaders, timeout = DEFAULT_TIMEOUT, verify = False)
r = self._session.post(self._url + 'ws', data = '{"service":"Time", "method":"getTime", "parameters":{}}', headers = self._sahServiceHeaders, timeout = DEFAULT_TIMEOUT, verify = False)
t = self._session.post(self._url + c, data = json.dumps(aData), headers = self._sahServiceHeaders, timeout = iTimeout, verify = False)
t = self._session.post(self._url + c, data = json.dumps(aData), headers = self._sahEventHeaders, timeout = iTimeout, verify = False)

D'un point de vue sécurité c'est pas terrible, mais dans ce contexte à vous de juger

p-dor commented

Très bien merci pour votre test !
Je vais regarder ça et essayer de me renseigner pour essayer de conserver la sécurité... Sinon tant pis et je mettrai un gros avertissement dans la documentation.

p-dor commented

Bonjour j'ai commencé à tester un peu.
De mon côté avec les changements ci dessus, une Livebox 5 et l'accès à distance activé, je n'arrive pas à me connecter même sans passer par un DynDNS.
Que je mette mon IP internet après http:// ou https:// c'est le même combat : le serveur ne répond pas (d'ailleurs il aurait été étonnant que cela marche en http://).
Vous avez réussi avec une Livebox 5 ? Si oui j'aimerai comprendre la configuration exacte...
Merci !

Bonjour,

  • Dans la configuration de la Livebox 5, l'accès a distance est activé (avec username/password/port personnalisé)
  • Le DynDNS est hébergé par ChangeIP

Les seules choses que j'ai modifié dans le code sont dans mon précédent commentaire, et dans le champ URL de la Livebox sur l'app, j'ai entré : https://nomdedomain.com:10000/

A noter que cela ne fonctionne pas sans le HTTPS et sans le port choisi dans la configuration.

Merci & bon week-end :)

p-dor commented

Bon impossible de faire marcher ça avec ma config pour l'instant, que je tente depuis mon VPN ou depuis une connexion 4G, même en tapant l'URL dans plusieurs browsers, depuis un PC, un Mac ou depuis un appareil iOS, le serveur ne répond jamais...
Mais j'ai tout de même incorporé les changements nécessaires pour au moins essayer. C'est maintenant dans le repo.

p-dor commented

La release v1.1 contenant cette évolution est maintenant publiée.