diff options
author | onefang | 2020-07-20 22:34:32 +1000 |
---|---|---|
committer | onefang | 2020-07-20 22:34:32 +1000 |
commit | c05d4ff4d1c5f5eb61b92fb7fff8f667aa0c9b40 (patch) | |
tree | 2c849638eceb1271106f17967c62a28d5e8edd63 | |
parent | Work around a problem with the STATUS files. (diff) | |
download | apt-panopticon-c05d4ff4d1c5f5eb61b92fb7fff8f667aa0c9b40.zip apt-panopticon-c05d4ff4d1c5f5eb61b92fb7fff8f667aa0c9b40.tar.gz apt-panopticon-c05d4ff4d1c5f5eb61b92fb7fff8f667aa0c9b40.tar.bz2 apt-panopticon-c05d4ff4d1c5f5eb61b92fb7fff8f667aa0c9b40.tar.xz |
If a thing is untested, mark it as so.
-rw-r--r-- | Report-web_3.html | 2 | ||||
-rw-r--r-- | Report-web_TABLE.html | 3 | ||||
-rw-r--r-- | apt-panopticommon.lua | 19 | ||||
-rwxr-xr-x | apt-panopticon-report-email-web.lua | 16 | ||||
-rwxr-xr-x | apt-panopticon.lua | 16 |
5 files changed, 49 insertions, 7 deletions
diff --git a/Report-web_3.html b/Report-web_3.html index 915bd56..632e6f4 100644 --- a/Report-web_3.html +++ b/Report-web_3.html | |||
@@ -1,6 +1,8 @@ | |||
1 | <p><b class="TTitem" title="This is a tooltip with an explanation in it.">Tooltips</b> are things that have an explanation tooltip, hover over them.</p> | 1 | <p><b class="TTitem" title="This is a tooltip with an explanation in it.">Tooltips</b> are things that have an explanation tooltip, hover over them.</p> |
2 | <p><font color='red'><b>FAILED</b></font> or <font color='lime'><b>OK</b></font> means the tested thing is supported for that mirror.</p> | 2 | <p><font color='red'><b>FAILED</b></font> or <font color='lime'><b>OK</b></font> means the tested thing is supported for that mirror.</p> |
3 | <p><font color='darkred'><b>FAILED*</b></font> or <font color='darkgreen'><b>OK*</b></font> means the tested thing is unsupported for that mirror, but might have been tested anyway.</p> | 3 | <p><font color='darkred'><b>FAILED*</b></font> or <font color='darkgreen'><b>OK*</b></font> means the tested thing is unsupported for that mirror, but might have been tested anyway.</p> |
4 | <p><font color='grey'><b>untested</b></font> or <font color='dimgrey'><b>untested*</b></font> means that the tested thing wasn't tested. It might not be relevant, or might have depended on other tests passing.</p> | ||
5 | <p>NOTE: Any mirror that doesn't redirect to a Debian mirror coz it is a Debian mirror itself, doesn't have the Protocol and Redirect tests run.</p> | ||
4 | <p><font color='aqua'><b>timeout</b></font> or <font color='blue'><b>timeout</b></font> means the mirror had some timeouts, and tests where not yet aborted. The darker colour means unsupported by the mirror, but tested anyway.</p> | 6 | <p><font color='aqua'><b>timeout</b></font> or <font color='blue'><b>timeout</b></font> means the mirror had some timeouts, and tests where not yet aborted. The darker colour means unsupported by the mirror, but tested anyway.</p> |
5 | <p><font color='aqua'><b>TIMEOUT</b></font> or <font color='blue'><b>TIMEOUT</b></font> means the mirror had too many timeouts, and tests where aborted, so there is no result for this test.</p> | 7 | <p><font color='aqua'><b>TIMEOUT</b></font> or <font color='blue'><b>TIMEOUT</b></font> means the mirror had too many timeouts, and tests where aborted, so there is no result for this test.</p> |
6 | <p>NOTE: timeouts may be due to a problem on the testing computer, it might be busy with other things, or be having it's own network problems.</p> | 8 | <p>NOTE: timeouts may be due to a problem on the testing computer, it might be busy with other things, or be having it's own network problems.</p> |
diff --git a/Report-web_TABLE.html b/Report-web_TABLE.html index f3fd5d5..6ee14f4 100644 --- a/Report-web_TABLE.html +++ b/Report-web_TABLE.html | |||
@@ -125,6 +125,9 @@ | |||
125 | <p>Also shown is the mirrors scheduled time between updates, with "m" meaning minutes and "h" meaning hours. | 125 | <p>Also shown is the mirrors scheduled time between updates, with "m" meaning minutes and "h" meaning hours. |
126 | If this is showing a WARNING, it's likely that the mirror hasn't updated yet, but is due to update after this test was run. | 126 | If this is showing a WARNING, it's likely that the mirror hasn't updated yet, but is due to update after this test was run. |
127 | </p> | 127 | </p> |
128 | <p> | ||
129 | pkgmaster.devuan.org is the master that the other mirrors sync to, so it's untested. | ||
130 | </p> | ||
128 | </div> | 131 | </div> |
129 | </div> | 132 | </div> |
130 | </th> | 133 | </th> |
diff --git a/apt-panopticommon.lua b/apt-panopticommon.lua index 52159dd..593fa32 100644 --- a/apt-panopticommon.lua +++ b/apt-panopticommon.lua | |||
@@ -435,13 +435,13 @@ local log = function(v, t, s, prot, test, host) | |||
435 | t = t .. "(" .. x .. ")" | 435 | t = t .. "(" .. x .. ")" |
436 | if "" ~= prot then | 436 | if "" ~= prot then |
437 | if "" == test then | 437 | if "" == test then |
438 | if nil == APT.results[prot] then APT.results[prot] = {errors = 0; warnings = 0; timeouts = 0} end | 438 | if nil == APT.results[prot] then APT.results[prot] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end |
439 | if v == 0 then APT.results[prot].errors = APT.results[prot].errors + 1 end | 439 | if v == 0 then APT.results[prot].errors = APT.results[prot].errors + 1 end |
440 | if v == 1 then APT.results[prot].warnings = APT.results[prot].warnings + 1 end | 440 | if v == 1 then APT.results[prot].warnings = APT.results[prot].warnings + 1 end |
441 | if v == 2 then APT.results[prot].timeouts = APT.results[prot].timeouts + 1 end | 441 | if v == 2 then APT.results[prot].timeouts = APT.results[prot].timeouts + 1 end |
442 | else | 442 | else |
443 | if nil == APT.results[prot] then APT.results[prot] = {errors = 0; warnings = 0; timeouts = 0} end | 443 | if nil == APT.results[prot] then APT.results[prot] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end |
444 | if nil == APT.results[prot][test] then APT.results[prot][test] = {errors = 0; warnings = 0; timeouts = 0} end | 444 | if nil == APT.results[prot][test] then APT.results[prot][test] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end |
445 | if v == 0 then APT.results[prot][test].errors = APT.results[prot][test].errors + 1 end | 445 | if v == 0 then APT.results[prot][test].errors = APT.results[prot][test].errors + 1 end |
446 | if v == 1 then APT.results[prot][test].warnings = APT.results[prot][test].warnings + 1 end | 446 | if v == 1 then APT.results[prot][test].warnings = APT.results[prot][test].warnings + 1 end |
447 | if v == 2 then APT.results[prot][test].timeouts = APT.results[prot][test].timeouts + 1 end | 447 | if v == 2 then APT.results[prot][test].timeouts = APT.results[prot][test].timeouts + 1 end |
@@ -496,6 +496,17 @@ APT.testing = function(t, host) | |||
496 | return false | 496 | return false |
497 | end | 497 | end |
498 | 498 | ||
499 | APT.tested = function(prot, test, host) | ||
500 | if "" == test then | ||
501 | if nil == APT.results[prot] then APT.results[prot] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end | ||
502 | APT.results[prot].tested = APT.results[prot].tested + 1; | ||
503 | else | ||
504 | if nil == APT.results[prot] then APT.results[prot] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end | ||
505 | if nil == APT.results[prot][test] then APT.results[prot][test] = {tested = 0; errors = 0; warnings = 0; timeouts = 0} end | ||
506 | APT.results[prot][test].tested = APT.results[prot][test].tested + 1; | ||
507 | end | ||
508 | end | ||
509 | |||
499 | APT.exe = function(c) | 510 | APT.exe = function(c) |
500 | local exe = {status = 0, result = '', log = true, cmd = c .. ' '} | 511 | local exe = {status = 0, result = '', log = true, cmd = c .. ' '} |
501 | 512 | ||
@@ -607,7 +618,7 @@ APT.plurals = function(e, w, t) | |||
607 | return result | 618 | return result |
608 | end | 619 | end |
609 | 620 | ||
610 | local typs = {'errors', 'warnings', 'timeouts'} | 621 | local typs = {'tested', 'errors', 'warnings', 'timeouts'} |
611 | APT.padResults = function(results) | 622 | APT.padResults = function(results) |
612 | local c = 0 | 623 | local c = 0 |
613 | if nil == results then results = {}; c = 999 end | 624 | if nil == results then results = {}; c = 999 end |
diff --git a/apt-panopticon-report-email-web.lua b/apt-panopticon-report-email-web.lua index a9852c1..b21ba8a 100755 --- a/apt-panopticon-report-email-web.lua +++ b/apt-panopticon-report-email-web.lua | |||
@@ -51,15 +51,18 @@ local status = function(hosts, host, results, typ) | |||
51 | local e = 0 | 51 | local e = 0 |
52 | local w = 0 | 52 | local w = 0 |
53 | local t = 0 | 53 | local t = 0 |
54 | local d = 0 | ||
54 | local s = nil ~= hosts[host].Protocols[typ] | 55 | local s = nil ~= hosts[host].Protocols[typ] |
55 | local to = results.timeout | 56 | local to = results.timeout |
56 | if not APT.search(APT.protocols, typ) then s = true end | 57 | if not APT.search(APT.protocols, typ) then s = true end |
57 | if nil ~= results[typ] then | 58 | if nil ~= results[typ] then |
59 | d = results[typ].tested | ||
58 | e = results[typ].errors | 60 | e = results[typ].errors |
59 | w = results[typ].warnings | 61 | w = results[typ].warnings |
60 | t = results[typ].timeouts | 62 | t = results[typ].timeouts |
61 | for k, v in pairs(results[typ]) do | 63 | for k, v in pairs(results[typ]) do |
62 | if ("table" == type(v)) and ('redirects' ~= k) then | 64 | if ("table" == type(v)) and ('redirects' ~= k) then |
65 | if 0 <= v.tested then d = d + v.tested else to = true end | ||
63 | if 0 <= v.errors then e = e + v.errors else to = true end | 66 | if 0 <= v.errors then e = e + v.errors else to = true end |
64 | if 0 <= v.warnings then w = w + v.warnings else to = true end | 67 | if 0 <= v.warnings then w = w + v.warnings else to = true end |
65 | if 0 <= v.timeouts then t = t + v.timeouts else to = true end | 68 | if 0 <= v.timeouts then t = t + v.timeouts else to = true end |
@@ -71,6 +74,7 @@ local status = function(hosts, host, results, typ) | |||
71 | for i, u in pairs(v) do | 74 | for i, u in pairs(v) do |
72 | if "table" == type(u) then | 75 | if "table" == type(u) then |
73 | if typ == i then | 76 | if typ == i then |
77 | if 0 <= u.tested then d = d + u.tested end | ||
74 | if 0 <= u.errors then e = e + u.errors end | 78 | if 0 <= u.errors then e = e + u.errors end |
75 | if 0 <= u.warnings then w = w + u.warnings end | 79 | if 0 <= u.warnings then w = w + u.warnings end |
76 | if 0 <= u.timeouts then t = t + u.timeouts end | 80 | if 0 <= u.timeouts then t = t + u.timeouts end |
@@ -111,7 +115,7 @@ local status = function(hosts, host, results, typ) | |||
111 | else | 115 | else |
112 | faulty = faulty .. host .. " (" .. typ .. ")\n" | 116 | faulty = faulty .. host .. " (" .. typ .. ")\n" |
113 | end | 117 | end |
114 | else | 118 | elseif 0 < d then |
115 | result = "OK" | 119 | result = "OK" |
116 | if not s then result = result .. "*" end | 120 | if not s then result = result .. "*" end |
117 | if APT.html then | 121 | if APT.html then |
@@ -121,6 +125,16 @@ local status = function(hosts, host, results, typ) | |||
121 | result = "<font color='darkgreen'><b>OK*</b></font>" | 125 | result = "<font color='darkgreen'><b>OK*</b></font>" |
122 | end | 126 | end |
123 | end | 127 | end |
128 | else | ||
129 | result = "untested" | ||
130 | if not s then result = result .. "*" end | ||
131 | if APT.html then | ||
132 | if s then | ||
133 | result = "<font color='grey'><b>untested</b></font>" | ||
134 | else | ||
135 | result = "<font color='dimgrey'><b>untested*</b></font>" | ||
136 | end | ||
137 | end | ||
124 | end | 138 | end |
125 | return result .. APT.plurals(e, w, t) | 139 | return result .. APT.plurals(e, w, t) |
126 | end | 140 | end |
diff --git a/apt-panopticon.lua b/apt-panopticon.lua index f166819..d8ee95b 100755 --- a/apt-panopticon.lua +++ b/apt-panopticon.lua | |||
@@ -290,6 +290,11 @@ checkHEAD = function (host, URL, r, retry, sanity) | |||
290 | IP .. ' ' .. '-o /dev/null -D results/"HEADERS_' .. fname .. '" ' .. | 290 | IP .. ' ' .. '-o /dev/null -D results/"HEADERS_' .. fname .. '" ' .. |
291 | hdr .. ' -w "#%{http_code} %{ssl_verify_result} %{url_effective}\\n" ' .. PU.scheme .. '://' .. host .. PU.path .. ' >>results/"STATUS_' .. fname .. '"' | 291 | hdr .. ' -w "#%{http_code} %{ssl_verify_result} %{url_effective}\\n" ' .. PU.scheme .. '://' .. host .. PU.path .. ' >>results/"STATUS_' .. fname .. '"' |
292 | ):Nice():log():Do().status | 292 | ):Nice():log():Do().status |
293 | if 0 < r then | ||
294 | APT.tested(PU.scheme, 'Redirects', host) | ||
295 | else | ||
296 | APT.tested(PU.scheme, '', host) | ||
297 | end | ||
293 | local code = "???" | 298 | local code = "???" |
294 | local cstr = "" | 299 | local cstr = "" |
295 | local location = nil | 300 | local location = nil |
@@ -359,14 +364,15 @@ checkHEAD = function (host, URL, r, retry, sanity) | |||
359 | if (pu.host == APT.options.roundRobin.value) and (nil ~= PU.path:find('merged/pool/DEVUAN/')) then | 364 | if (pu.host == APT.options.roundRobin.value) and (nil ~= PU.path:find('merged/pool/DEVUAN/')) then |
360 | E('DEVUAN packages must not be redirected to ' .. APT.options.roundRobin.value .. ' - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, 'Redirects', host) | 365 | E('DEVUAN packages must not be redirected to ' .. APT.options.roundRobin.value .. ' - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, 'Redirects', host) |
361 | end | 366 | end |
362 | 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. | 367 | if APT.testing("Protocol") then |
363 | if APT.testing("Protocol") then | 368 | 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. |
364 | if APT.options.roundRobin.value == host then -- Coz HTTPS shouldn't happen via the round robin. | 369 | if APT.options.roundRobin.value == host then -- Coz HTTPS shouldn't happen via the round robin. |
365 | E(spcd .. spcd .. "Protocol changed during redirect! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "Protocol", host) | 370 | E(spcd .. spcd .. "Protocol changed during redirect! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "Protocol", host) |
366 | end | 371 | end |
367 | W(spcd .. spcd .. "Protocol changed during redirect! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "Protocol", host) | 372 | W(spcd .. spcd .. "Protocol changed during redirect! " .. check .. " " .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, "Protocol", host) |
368 | else | 373 | else |
369 | end | 374 | end |
375 | APT.tested(PU.scheme, 'Protocol', host) | ||
370 | end | 376 | end |
371 | 377 | ||
372 | if location == URL then | 378 | if location == URL then |
@@ -402,6 +408,7 @@ checkHEAD = function (host, URL, r, retry, sanity) | |||
402 | I(spcd .. spcd .. "Now checking redirected host " .. u .. ' for ' .. APT.lnk(URL) .. arw .. APT.lnk(location), host) | 408 | I(spcd .. spcd .. "Now checking redirected host " .. u .. ' for ' .. APT.lnk(URL) .. arw .. APT.lnk(location), host) |
403 | APT.exe(downloadLock .. "REDIR-" .. check .. ".log.txt" .. " ./apt-panopticon.lua " .. extraArgs .. ' ' .. pu.host .. "/" .. path .. " " .. file):Nice():log():fork() | 409 | APT.exe(downloadLock .. "REDIR-" .. check .. ".log.txt" .. " ./apt-panopticon.lua " .. extraArgs .. ' ' .. pu.host .. "/" .. path .. " " .. file):Nice():log():fork() |
404 | D(spcd .. 'logging to ' .. APT.logName(pu.host, nil, file)[2]) | 410 | D(spcd .. 'logging to ' .. APT.logName(pu.host, nil, file)[2]) |
411 | APT.tested(PU.scheme, 'Redirects', host) | ||
405 | end | 412 | end |
406 | end | 413 | end |
407 | elseif nil ~= PU.path:find('merged/pool/DEBIAN-SECURITY/') then | 414 | elseif nil ~= PU.path:find('merged/pool/DEBIAN-SECURITY/') then |
@@ -417,6 +424,7 @@ local checkTimeouts = function(host, scheme, URL) | |||
417 | URL = URL:gsub("/", "///") | 424 | URL = URL:gsub("/", "///") |
418 | URL = URL:gsub("///", "/", 1) | 425 | URL = URL:gsub("///", "/", 1) |
419 | checkHEAD(host, scheme .. "://" .. URL, 0, 0, true) | 426 | checkHEAD(host, scheme .. "://" .. URL, 0, 0, true) |
427 | APT.tested(scheme, 'URLSanity', host) | ||
420 | end | 428 | end |
421 | if nil ~= cor then | 429 | if nil ~= cor then |
422 | D('*>* About to resume coroutine after checkHEAD(' .. host .. ' , ' .. scheme .. ' :// ' .. URL .. ')') | 430 | D('*>* About to resume coroutine after checkHEAD(' .. host .. ' , ' .. scheme .. ' :// ' .. URL .. ')') |
@@ -700,11 +708,13 @@ local parseDebs = function(host) | |||
700 | if sha ~= fsha:sub(2, -2) then E('Package SHA256 sum mismatch - results/' .. host .. "/merged/" .. p, 'http', 'Integrity', host) end | 708 | if sha ~= fsha:sub(2, -2) then E('Package SHA256 sum mismatch - results/' .. host .. "/merged/" .. p, 'http', 'Integrity', host) end |
701 | -- TODO - maybe check the PGP key, though packages are mostly not signed. | 709 | -- TODO - maybe check the PGP key, though packages are mostly not signed. |
702 | end | 710 | end |
711 | APT.tested('http', 'Integrity', host) | ||
703 | end | 712 | end |
704 | if APT.testing("Updated") then | 713 | if APT.testing("Updated") then |
705 | if sz ~= fsz:sub(2, -2) then | 714 | if sz ~= fsz:sub(2, -2) then |
706 | E('Package size mismatch for ' .. host .. "/merged/" .. p, 'http', 'Updated', host) | 715 | E('Package size mismatch for ' .. host .. "/merged/" .. p, 'http', 'Updated', host) |
707 | end | 716 | end |
717 | APT.tested('http', 'Updated', host) | ||
708 | end | 718 | end |
709 | os.execute('rm -f results/' .. host .. "/merged/" .. p) | 719 | os.execute('rm -f results/' .. host .. "/merged/" .. p) |
710 | else | 720 | else |
@@ -839,6 +849,7 @@ local parseRelease = function(host) | |||
839 | " results/" .. host .. "/merged/dists/" .. n .. '/' .. o:sub(1, -5)):Nice():noErr():log():Do().status | 849 | " results/" .. host .. "/merged/dists/" .. n .. '/' .. o:sub(1, -5)):Nice():noErr():log():Do().status |
840 | if 0 ~= status then E("GPG check failed for " .. host .. "/merged/dists/" .. n .. '/' .. o, "http", "Integrity", host) end | 850 | if 0 ~= status then E("GPG check failed for " .. host .. "/merged/dists/" .. n .. '/' .. o, "http", "Integrity", host) end |
841 | -- TODO - should check the PGP sig of InRelease as well. | 851 | -- TODO - should check the PGP sig of InRelease as well. |
852 | APT.tested('http', 'Integrity', host) | ||
842 | end | 853 | end |
843 | os.execute('rm results/' .. host .. '/merged/dists/' .. n .. '/' .. o) | 854 | os.execute('rm results/' .. host .. '/merged/dists/' .. n .. '/' .. o) |
844 | end | 855 | end |
@@ -885,6 +896,7 @@ local parseRelease = function(host) | |||
885 | else | 896 | else |
886 | updated = true | 897 | updated = true |
887 | end | 898 | end |
899 | APT.tested('http', 'Updated', host) | ||
888 | end | 900 | end |
889 | end | 901 | end |
890 | 902 | ||