Aller au contenu

Messages recommandés

Posté(e) (modifié)

J'ai une petite question @Lazer. J'utilisais jusqu'à présent ta scene qui fonctionnait parfaitement pour moi (grand merci!!).

Je viens de passer de migrer le contrôleur d'une Cloud Key à une Dream Machine Pro, et je n'arrive pas à adapter la scène....

L'IP du contrôleur est désormais la même que le routeur.

On accède au contrôleur par https://IPROUTEUR/network

Mais https://IPROUTEUR/network/api/... ne pointe pas sur l'API du contrôleur et renvoie au dashboard....

Je n'ai pas trouvé d'info sur le sujet...

Aurais-tu des idées?

D'avance merci!!!

 

PS: j'ai bien trouvé ça, mais c'est du Chinois pour moi.... 

https://community.ui.com/questions/Unifi-API-on-an-Unifi-Dream-Machine/dcbda0aa-8c37-4a23-acdd-ee5fd11de588

Modifié par PdB
Posté(e)

Non désolé je ne sais pas, mais tu n'as pas répondu à ma question, es-tu certain que c'est le même port ?

 

Mais si l'API a changé, ça va être compliqué...

Posté(e)

Rien trouvé sur le port ou l'API qui aurait changé juste l'adresse de l'API qui est introuvable...

Posté(e)

Bonjour,

Essaie en https avec le port 8443 comme sur les ck.

Il faut peut être démarrer avec l’application téléphone en Bluetooth pour la première fois comme sur les cloud keys.


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e) (modifié)

Bonjour,

 

J'ai aussi une dream machine pro. Je n'ai pas réussi a faire fonctionner la detection de presence. Je pense que l'api a changer.

 

@Lazer On est sur le port ssl 443.

 

 

 

Modifié par yoim
Posté(e)

J'ai avancé ici: https://ubntwiki.com/products/software/unifi-controller/api

 

Le endpoint pour l'API est https://IP/proxy/network

et pour le login:  /api/auth/login au lieu de api/login

 

En revanche j'ai une erreur de login

 

 

[DEBUG] 11:28:46: Need to login and get new cookie
[DEBUG] 11:28:46: Login
[DEBUG] 11:28:46: 2020-10-23 11:28:46.360354 [ error] Handshake error: certificate verify failed
[DEBUG] 11:28:46: httpClient:request() : Error : certificate verify failed
 

Posté(e)

Il faut désactiver la vérification de validité des certificats au niveau de la scène.

Il y avait un post là-dessus mais je ne l’ai pas en tête.


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

Cool ça :)

 

Pour le certificat, c'est plus compliqué que ça.

Le checkcertificate = false est déjà dans les options de la requête http effectuée par le code LUA
 

Le problème, c'est la HC2 qui ne supporte pas la suite de chiffrement utilisée par Unifi.

En première page j'ai donné la modification à faire sur le fichier de configuration du contrôleur Unifi, je ne sais pas si c'est valable pour l'UDM.... encore faut-il avoir accès en root au système... est-ce le cas sur UDM ?

Posté(e)

C’est moi qui était repasse en checkcertificzte = true en tentant de bidouiller avant.

en repassant a false j’ai

 

[DEBUG] 12:02:43: Need to login and get new cookie
[DEBUG] 12:02:43: Login
[DEBUG] 12:02:43: Error : status=401
 

Posté(e)

Bonjour,

 

J'ai finalement réussi à avoir un accès en root, trouver le fichier system.properties et le modifier...

 

J'arrive à m'authentifier à l'UDM PRO sans souci en utilisant Postman:

 

389933464_Capturedcran2020-10-2621_11_51.thumb.png.7dc9056234305246c8f09f02271db6a8.png

 

Malgré tout la scène suivante me renvoie encore une erreur 401:

local credential = {username = "Fibaro", password = "XXXXXX"}
credential = json.encode(credential)

	local httpClient = net.HTTPClient()
	httpClient:request("https://192.168.0.254/api/auth/login", {
		success = function(response)
        print(json.encode(response.status))
		end,
		error = function(err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
            data = credential
         }
		  
	})

Auriez-vous une idée de ce qui cloche???

Posté(e)

Après avoir modifié le fichier le fichier system.properties il faut rebooter l’udm pro.


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)
Il y a 8 heures, nasp a dit :

Après avoir modifié le fichier le fichier system.properties il faut rebooter l’udm pro.


Envoyé de mon iPhone en utilisant Tapatalk

 

Déjà fait hélas...

Posté(e)

ALLELUIA !!!!! Ca y est, j'ai enfin réussi.

 

Pour ceux que cela intéresse donc sur un UDM-PRO:

- il faut activer la connection SSH dans le contrôleur 

- Se logger en "root" avec le mot de passe que vous avez choisi et accéder au fichier system.properties qui se trouve dans /data/unifi/data 

- et le modifier selon les consignes de @Lazer.

 

Il faut ensuite modifier un petit peu la scene de @Lazer

- pour le LOGIN : L'IP à utiliser est

 URL .. "/api/auth/login"

- dans les options de la requête HTTP pour le login, il faut rajouter: 

headers = {['Content-Type'] = 'application/json'},

 sinon erreur 401 systématique....

 

- dans la récupération du cookie, il faut supprimer la ligne:

                    

if jsonTable.meta and jsonTable.meta.rc and jsonTable.meta.rc == "ok" then

et en miroir:         

else
        Message("red", "Error : status = " .. tostring(response.status) .. " - rc = " .. (jsonTable.meta and jsonTable.meta.rc or "???") .. " - msg = " .. (jsonTable.meta and jsonTable.meta.msg or "???"))
end

qui ne correspondent plus au format de la réponse.
             

Dans GetDevices(): il faut modifier l'URL cible par :  

URL .. "/proxy/network/api/s/default/stat/sta"

 

Enfin, si besoin, il faut modifier le fichier system.properties. Pour cela:

- il faut activer la connection SSH dans les reglages de l'UDM PRO 

- Se logger en "root" avec le mot de passe que vous avez choisi et accéder au fichier system.properties qui se trouve dans /data/unifi/data 

- et le modifier selon les consignes de @Lazer.

 

 

Et tout roule chez moi ...

Merci à ceux qui m'ont aidé!!!!

  • Like 2
  • Thanks 1
Posté(e)

@PdB Merci pour tout ca. J'ai fais les modifications que tu as proposé.

 

Malgré la suppression de la ligne du cookie j'ai toujours cette erreur :

 

[DEBUG] 15:42:43: 27/10/2020 : Scene instance autostart
[DEBUG] 15:42:43: GetDevices
[DEBUG] 15:42:43: Need to login and get new cookie
[DEBUG] 15:42:43: Login
[DEBUG] 15:42:43: Error : status=401

Une idée ?

Posté(e)
Le 26/10/2020 à 22:17, PdB a dit :

Bonjour,

 

J'ai finalement réussi à avoir un accès en root, trouver le fichier system.properties et le modifier...

 

J'arrive à m'authentifier à l'UDM PRO sans souci en utilisant Postman:

 

389933464_Capturedcran2020-10-2621_11_51.thumb.png.7dc9056234305246c8f09f02271db6a8.png

 

Malgré tout la scène suivante me renvoie encore une erreur 401:


local credential = {username = "Fibaro", password = "XXXXXX"}
credential = json.encode(credential)

	local httpClient = net.HTTPClient()
	httpClient:request("https://192.168.0.254/api/auth/login", {
		success = function(response)
        print(json.encode(response.status))
		end,
		error = function(err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
            data = credential
         }
		  
	})

Auriez-vous une idée de ce qui cloche???

J'ai essayé ca aussi.

 

J'ai toujours mon erreur 401 :(

Posté(e)

@yoim As-tu modifié la scène de Lazer?

Dans la partie Login tu dois avoir ca:

 

--
-- Login function
--
function Login(command)

	Message("fuchsia", "Login")

	local httpClient = net.HTTPClient()
	if debug then
		Message("grey", URL .. "/api/login")
	end
	-- Login
	httpClient:request(URL .. "/api/auth/login", {
		success = function(response)
			if debug then
				Message("gray", json.encode(response))
			end
			if response.status == 200 then
				if response.data and response.data ~= "" then
					local jsonTable = json.decode(response.data)
						-- Get cookie
						if response.headers and response.headers['Set-Cookie'] then
							-- "Set-Cookie": "unifises=L1IADETuhsX6AwY44w72nCKftDOa1c1j; Path=\/; Secure; HttpOnly, csrf_token=b5y9pwpKD5dIcLqAxfHxUO2dQ6HUuvcL; Path=\/; Secure",
							if debug then
								Message("yellow", response.headers['Set-Cookie'])
							end
							-- Store cookie
							Cookie = response.headers['Set-Cookie']
							fibaro:setGlobal(VG_Unifi_Cookie, Cookie)
							-- Execute given function as argument
							if command and type(command) == "function" then
								setTimeout(function() command() end, 0)
							end
						else
							Message("red", "Error : missing Cookie in Response Headers")
						end
					else
					Message("red", "Error : empty response")
				end
			else
				Message("red", "Error : status=" .. tostring(response.status))
			end
		end,
		error = function(err)
			Message("red", 'httpClient:request() : Error : ' .. err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
			headers = {['Content-Type'] = 'application/json'},
			data = json.encode({username=username, password=password, strict=true})
		}
	})

end -- function

 

  • Like 1
×
×
  • Créer...