aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/apt-panopticon.lua
diff options
context:
space:
mode:
authoronefang2019-12-31 00:26:08 +1000
committeronefang2019-12-31 00:26:08 +1000
commitc0551dd8cf8d777f3138265f9d8aee916da63ae9 (patch)
treee49170542612ceaf56b099e9d0863a9a6715a88f /apt-panopticon.lua
parentDon't follow the rabbit down the rabbit hole if we are just doing low bandwid... (diff)
downloadapt-panopticon-c0551dd8cf8d777f3138265f9d8aee916da63ae9.zip
apt-panopticon-c0551dd8cf8d777f3138265f9d8aee916da63ae9.tar.gz
apt-panopticon-c0551dd8cf8d777f3138265f9d8aee916da63ae9.tar.bz2
apt-panopticon-c0551dd8cf8d777f3138265f9d8aee916da63ae9.tar.xz
Check redirects we must do, and ones we must not, and more avoiding the rabbit hole.
Diffstat (limited to 'apt-panopticon.lua')
-rwxr-xr-xapt-panopticon.lua17
1 files changed, 14 insertions, 3 deletions
diff --git a/apt-panopticon.lua b/apt-panopticon.lua
index d71ab1d..ede6b6b 100755
--- a/apt-panopticon.lua
+++ b/apt-panopticon.lua
@@ -348,8 +348,11 @@ checkHEAD = function (host, URL, r, retry, sanity)
348 end 348 end
349 I(spcd .. spcd .. code .. " " .. cstr .. ". " .. check .. " " .. APT.lnk(URL), host) 349 I(spcd .. spcd .. code .. " " .. cstr .. ". " .. check .. " " .. APT.lnk(URL), host)
350-- timeouts = timeouts - 1 -- Backoff the timeouts count if we managed to get through. 350-- timeouts = timeouts - 1 -- Backoff the timeouts count if we managed to get through.
351 if (1 <= APT.options.bandwidth.value) and (nil ~= location) then 351 if nil ~= location then
352 pu = url.parse(location, defaultURL) 352 pu = url.parse(location, defaultURL)
353 if (pu.host == APT.options.roundRobin.value) and (nil ~= PU.path:find('merged/pool/DEVUAN/')) then
354 E('DEVUAN packages must not be redirected to ' .. APT.options.roundRobin.value .. ' - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, sanity, host)
355 end
353 if ('http' == location:sub(1, 4)) and (pu.scheme ~= PU.scheme) then -- Sometimes a location sans scheme is returned, this is not a protocol change. 356 if ('http' == location:sub(1, 4)) and (pu.scheme ~= PU.scheme) then -- Sometimes a location sans scheme is returned, this is not a protocol change.
354 if APT.testing("Protocol") then 357 if APT.testing("Protocol") then
355 if APT.options.roundRobin.value == host then -- Coz HTTPS shouldn't happen via the round robin. 358 if APT.options.roundRobin.value == host then -- Coz HTTPS shouldn't happen via the round robin.
@@ -364,10 +367,16 @@ checkHEAD = function (host, URL, r, retry, sanity)
364 E(spcd .. spcd .. "Redirect loop! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "", host) 367 E(spcd .. spcd .. "Redirect loop! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "", host)
365 elseif nil == pu.host then 368 elseif nil == pu.host then
366 I(spcd .. spcd .. "Relative redirect. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host) 369 I(spcd .. spcd .. "Relative redirect. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host)
367 checkHEAD(host, PU.scheme .. "://" .. PU.host .. location, r + 1, retry, '' ~= sanity) 370 if 1 <= APT.options.bandwidth.value then checkHEAD(host, PU.scheme .. "://" .. PU.host .. location, r + 1, retry, '' ~= sanity) end
368 elseif (PU.host == pu.host) or (host == pu.host) then 371 elseif (PU.host == pu.host) or (host == pu.host) then
372 if PU.host ~= host then
373 local t = pu.host
374 pu.host = PU.host
375 location = url.build(pu)
376 pu.host = t
377 end
369 I(spcd .. spcd .. "Redirect to same host. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host) 378 I(spcd .. spcd .. "Redirect to same host. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host)
370 checkHEAD(pu.host, location, r + 1, retry, '' ~= sanity) 379 if 1 <= APT.options.bandwidth.value then checkHEAD(host, location, r + 1, retry, '' ~= sanity) end
371 else 380 else
372 I(spcd .. spcd .. "Redirect to different host. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host) 381 I(spcd .. spcd .. "Redirect to different host. " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), host)
373 if 1 <= APT.options.bandwidth.value then 382 if 1 <= APT.options.bandwidth.value then
@@ -389,6 +398,8 @@ checkHEAD = function (host, URL, r, retry, sanity)
389 D(spcd .. 'logging to ' .. APT.logName(pu.host, nil, file)[2]) 398 D(spcd .. 'logging to ' .. APT.logName(pu.host, nil, file)[2])
390 end 399 end
391 end 400 end
401 elseif nil ~= PU.path:find('merged/pool/DEBIAN-SECURITY/') then
402 W('DEBIAN-SECURITY packages must be redirected to a Debian mirror - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, sanity, host)
392 end 403 end
393 end 404 end
394end 405end