mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2025-10-23 15:11:08 +00:00
fix: Correct URL handling and improve key retrieval logic in HTTP vault
This commit is contained in:
@@ -30,7 +30,7 @@ class HTTP(Vault):
|
|||||||
api_mode: "query" for query parameters or "json" for JSON API
|
api_mode: "query" for query parameters or "json" for JSON API
|
||||||
"""
|
"""
|
||||||
super().__init__(name)
|
super().__init__(name)
|
||||||
self.url = host.rstrip("/")
|
self.url = host
|
||||||
self.password = password
|
self.password = password
|
||||||
self.username = username
|
self.username = username
|
||||||
self.api_mode = api_mode.lower()
|
self.api_mode = api_mode.lower()
|
||||||
@@ -88,21 +88,23 @@ class HTTP(Vault):
|
|||||||
|
|
||||||
if self.api_mode == "json":
|
if self.api_mode == "json":
|
||||||
try:
|
try:
|
||||||
title = getattr(self, "current_title", None)
|
params = {
|
||||||
response = self.request(
|
|
||||||
"GetKey",
|
|
||||||
{
|
|
||||||
"kid": kid,
|
"kid": kid,
|
||||||
"service": service.lower(),
|
"service": service.lower(),
|
||||||
"title": title,
|
}
|
||||||
},
|
|
||||||
)
|
response = self.request("GetKey", params)
|
||||||
if response.get("status") == "not_found":
|
if response.get("status") == "not_found":
|
||||||
return None
|
return None
|
||||||
keys = response.get("keys", [])
|
keys = response.get("keys", [])
|
||||||
for key_entry in keys:
|
for key_entry in keys:
|
||||||
if key_entry["kid"] == kid:
|
if isinstance(key_entry, str) and ":" in key_entry:
|
||||||
return key_entry["key"]
|
entry_kid, entry_key = key_entry.split(":", 1)
|
||||||
|
if entry_kid == kid:
|
||||||
|
return entry_key
|
||||||
|
elif isinstance(key_entry, dict):
|
||||||
|
if key_entry.get("kid") == kid:
|
||||||
|
return key_entry.get("key")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Failed to get key ({e.__class__.__name__}: {e})")
|
print(f"Failed to get key ({e.__class__.__name__}: {e})")
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user