Fix OPDS: add auth token to URL and hot-update in-memory servers
- Append ?token= auth param to OPDS catalog URL - Replace any existing stale Bookhoard entry (with or without token) - Hot-update OPDS plugin's in-memory servers table so catalog appears immediately without restarting KOReader
This commit is contained in:
@@ -578,28 +578,49 @@ function Bookhoard:startRegistrationPoll()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Bookhoard:setupOPDS()
|
function Bookhoard:setupOPDS()
|
||||||
if not self.settings.server_url or not self.settings.device_id then
|
if not self.settings.server_url or not self.settings.device_id
|
||||||
|
or not self.settings.auth_token then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local opds_url = self.settings.server_url
|
local opds_base_url = self.settings.server_url
|
||||||
.. "/opds/devices/" .. self.settings.device_id .. "/catalog"
|
.. "/opds/devices/" .. self.settings.device_id .. "/catalog"
|
||||||
|
local opds_url = opds_base_url .. "?token=" .. self.settings.auth_token
|
||||||
|
|
||||||
local opds_settings_file = DataStorage:getSettingsDir() .. "/opds.lua"
|
local opds_settings_file = DataStorage:getSettingsDir() .. "/opds.lua"
|
||||||
local opds_settings = LuaSettings:open(opds_settings_file)
|
local opds_settings = LuaSettings:open(opds_settings_file)
|
||||||
local servers = opds_settings:readSetting("servers", {})
|
local servers = opds_settings:readSetting("servers", {})
|
||||||
|
|
||||||
for _, server in ipairs(servers) do
|
local found = false
|
||||||
if server.url == opds_url then
|
for i, server in ipairs(servers) do
|
||||||
return true
|
if server.url and (
|
||||||
|
server.url == opds_url
|
||||||
|
or server.url == opds_base_url
|
||||||
|
or server.url:startswith(opds_base_url .. "?")
|
||||||
|
) then
|
||||||
|
servers[i] = {
|
||||||
|
title = "Bookhoard",
|
||||||
|
url = opds_url,
|
||||||
|
}
|
||||||
|
found = true
|
||||||
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(servers, {
|
if not found then
|
||||||
title = "Bookhoard",
|
table.insert(servers, {
|
||||||
url = opds_url,
|
title = "Bookhoard",
|
||||||
})
|
url = opds_url,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
opds_settings:saveSetting("servers", servers)
|
opds_settings:saveSetting("servers", servers)
|
||||||
opds_settings:flush()
|
opds_settings:flush()
|
||||||
|
|
||||||
|
if self.ui.opds then
|
||||||
|
self.ui.opds.servers = servers
|
||||||
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user