aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--apt-panopticommon.lua14
-rwxr-xr-xapt-panopticon-report-email-web.lua7
-rwxr-xr-xapt-panopticon.lua4
-rw-r--r--explanations.html6
4 files changed, 23 insertions, 8 deletions
diff --git a/apt-panopticommon.lua b/apt-panopticommon.lua
index ca952d3..c03f817 100644
--- a/apt-panopticommon.lua
+++ b/apt-panopticommon.lua
@@ -4,7 +4,7 @@ local APT = {}
4APT.rrd = require 'rrd' 4APT.rrd = require 'rrd'
5 5
6APT.protocols = {"ftp", "http", "https", "rsync"} 6APT.protocols = {"ftp", "http", "https", "rsync"}
7APT.tests = {'raw', 'Integrity', 'Protocol', 'Updated', 'URLSanity', 'Speed'} 7APT.tests = {'raw', 'Integrity', 'Protocol', 'Redirects', 'Updated', 'URLSanity', 'Speed'}
8APT.releases = {"jessie", "ascii", "beowulf", "ceres"} 8APT.releases = {"jessie", "ascii", "beowulf", "ceres"}
9APT.subRels = {'backports', 'proposed-updates', 'security', 'updates'} 9APT.subRels = {'backports', 'proposed-updates', 'security', 'updates'}
10APT.notExist = 10APT.notExist =
@@ -65,6 +65,7 @@ APT.options =
65-- "rsync", 65-- "rsync",
66 "DNSRR", 66 "DNSRR",
67 "Protocol", 67 "Protocol",
68 "Redirects",
68 "URLSanity", 69 "URLSanity",
69 "Integrity", 70 "Integrity",
70 "Updated", 71 "Updated",
@@ -697,6 +698,9 @@ local DSIt = 'DS:IntegrityTimeouts:GAUGE:' .. hb .. ':0:U'
697local DSPe = 'DS:ProtocolErrors:GAUGE:' .. hb .. ':0:U' 698local DSPe = 'DS:ProtocolErrors:GAUGE:' .. hb .. ':0:U'
698local DSPw = 'DS:ProtocolWarnings:GAUGE:' .. hb .. ':0:U' 699local DSPw = 'DS:ProtocolWarnings:GAUGE:' .. hb .. ':0:U'
699local DSPt = 'DS:ProtocolTimeouts:GAUGE:' .. hb .. ':0:U' 700local DSPt = 'DS:ProtocolTimeouts:GAUGE:' .. hb .. ':0:U'
701local DSRe = 'DS:RedirectsErrors:GAUGE:' .. hb .. ':0:U'
702local DSRw = 'DS:RedirectsWarnings:GAUGE:' .. hb .. ':0:U'
703local DSRt = 'DS:RedirectsTimeouts:GAUGE:' .. hb .. ':0:U'
700local DSUe = 'DS:UpdatedErrors:GAUGE:' .. hb .. ':0:U' 704local DSUe = 'DS:UpdatedErrors:GAUGE:' .. hb .. ':0:U'
701local DSUw = 'DS:UpdatedWarnings:GAUGE:' .. hb .. ':0:U' 705local DSUw = 'DS:UpdatedWarnings:GAUGE:' .. hb .. ':0:U'
702local DSUt = 'DS:UpdatedTimeouts:GAUGE:' .. hb .. ':0:U' 706local DSUt = 'DS:UpdatedTimeouts:GAUGE:' .. hb .. ':0:U'
@@ -735,10 +739,11 @@ APT.createRRD = function(host, ip, o)
735 os.execute( 'mkdir -p rrd/' .. host .. '/' .. p:upper()) 739 os.execute( 'mkdir -p rrd/' .. host .. '/' .. p:upper())
736 if not APT.checkFile('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd') then 740 if not APT.checkFile('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd') then
737 D('Creating ' .. 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd') 741 D('Creating ' .. 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd')
738 APT.rrd.create( 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', '--start', start, '--step', step, DSIe, DSIw, DSIt, DSPe, DSPw, DSPt, DSUe, DSUw, DSUt, DSSe, DSSw, DSSt, 742 APT.rrd.create( 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', '--start', start, '--step', step,
743 DSIe, DSIw, DSIt, DSPe, DSPw, DSPt, DSRe, DSRw, DSRt, DSUe, DSUw, DSUt, DSSe, DSSw, DSSt,
739 RRAc0, RRAc1, RRAc2, RRAl0, RRAc3, RRAc4, RRAc5, RRAl1, RRAc6, RRAc7, RRAc8, RRAl2, RRAc9, RRAc10, RRAc11, RRAl3, RRAc12, RRAc13, RRAc14, RRAl4) 744 RRAc0, RRAc1, RRAc2, RRAl0, RRAc3, RRAc4, RRAc5, RRAl1, RRAc6, RRAc7, RRAc8, RRAl2, RRAc9, RRAc10, RRAc11, RRAl3, RRAc12, RRAc13, RRAc14, RRAl4)
740 -- Start them at 0 so the average has something to work on. 745 -- Start them at 0 so the average has something to work on.
741 APT.rrd.update( 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', (APT.now - 600) .. ':0:0:0:0:0:0:0:0:0:0:0:0') 746 APT.rrd.update( 'rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', (APT.now - 600) .. ':0:0:0:0:0:0:0:0:0:0:0:0:0:0:0')
742 end 747 end
743 end 748 end
744 os.execute( 'mkdir -p rrd/' .. host .. '/Speed') 749 os.execute( 'mkdir -p rrd/' .. host .. '/Speed')
@@ -757,10 +762,11 @@ APT.updateRRD = function(results, host, ip)
757 APT.rrd.update('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', APT.now .. ':' .. 762 APT.rrd.update('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', APT.now .. ':' ..
758 results[p]['Integrity'].errors .. ':' .. results[p]['Integrity'].warnings .. ':' .. results[p]['Integrity'].timeouts .. ':' .. 763 results[p]['Integrity'].errors .. ':' .. results[p]['Integrity'].warnings .. ':' .. results[p]['Integrity'].timeouts .. ':' ..
759 results[p]['Protocol'].errors .. ':' .. results[p]['Protocol'].warnings .. ':' .. results[p]['Protocol'].timeouts .. ':' .. 764 results[p]['Protocol'].errors .. ':' .. results[p]['Protocol'].warnings .. ':' .. results[p]['Protocol'].timeouts .. ':' ..
765 results[p]['Redirects'].errors .. ':' .. results[p]['Redirects'].warnings .. ':' .. results[p]['Redirects'].timeouts .. ':' ..
760 results[p]['Updated'].errors .. ':' .. results[p]['Updated'].warnings .. ':' .. results[p]['Updated'].timeouts .. ':' .. 766 results[p]['Updated'].errors .. ':' .. results[p]['Updated'].warnings .. ':' .. results[p]['Updated'].timeouts .. ':' ..
761 results[p]['URLSanity'].errors .. ':' .. results[p]['URLSanity'].warnings .. ':' .. results[p]['URLSanity'].timeouts) 767 results[p]['URLSanity'].errors .. ':' .. results[p]['URLSanity'].warnings .. ':' .. results[p]['URLSanity'].timeouts)
762 else 768 else
763 APT.rrd.update('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', APT.now .. ':U:U:U:U:U:U:U:U:U:U:U:U') 769 APT.rrd.update('rrd/' .. host .. '/' .. p:upper() .. '/Tests.rrd', APT.now .. ':U:U:U:U:U:U:U:U:U:U:U:U:U:U:U')
764 end 770 end
765 end 771 end
766 if nil ~= results.speed then 772 if nil ~= results.speed then
diff --git a/apt-panopticon-report-email-web.lua b/apt-panopticon-report-email-web.lua
index 05699ee..3365d78 100755
--- a/apt-panopticon-report-email-web.lua
+++ b/apt-panopticon-report-email-web.lua
@@ -212,7 +212,8 @@ end
212 212
213local makeTable = function(web, hosts) 213local makeTable = function(web, hosts)
214 web:write("<table>\n<tr><th></th><th>" .. lnk('FTP') .. "</th><th>" .. lnk('HTTP') .. "</th><th>" .. lnk('HTTPS') .. "</th><th>" .. lnk('RSYNC') .. "</th>" .. 214 web:write("<table>\n<tr><th></th><th>" .. lnk('FTP') .. "</th><th>" .. lnk('HTTP') .. "</th><th>" .. lnk('HTTPS') .. "</th><th>" .. lnk('RSYNC') .. "</th>" ..
215 "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" .. 215 "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('Redirects') ..
216 "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" ..
216 "<th colspan='2'>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th>" .. 217 "<th colspan='2'>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th>" ..
217 "<th colspan='2'>" .. lnk('Weekly statistics', 'Weekly') .. "</th><th>" .. lnk('Graphs') .. "</th></tr>\n") 218 "<th colspan='2'>" .. lnk('Weekly statistics', 'Weekly') .. "</th><th>" .. lnk('Graphs') .. "</th></tr>\n")
218 local bg = '' 219 local bg = ''
@@ -234,6 +235,7 @@ local makeTable = function(web, hosts)
234 local protocol = status(hosts, k, results, "Protocol") 235 local protocol = status(hosts, k, results, "Protocol")
235 local sanity = status(hosts, k, results, "URLSanity") 236 local sanity = status(hosts, k, results, "URLSanity")
236 local integrity = status(hosts, k, results, "Integrity") 237 local integrity = status(hosts, k, results, "Integrity")
238 local redirects = status(hosts, k, results, "Redirects")
237 local updated = status(hosts, k, results, "Updated") 239 local updated = status(hosts, k, results, "Updated")
238 local rate = v.Rate 240 local rate = v.Rate
239 local min = tonumber(results.speed.min) 241 local min = tonumber(results.speed.min)
@@ -295,7 +297,7 @@ local makeTable = function(web, hosts)
295 end 297 end
296 298
297 web:write("<td>" .. ftp .. "&nbsp;</td><td>" .. http .. "&nbsp;</td><td>" .. https .. "&nbsp;</td><td>" .. rsync .. "&nbsp;</td><td>" .. dns .. 299 web:write("<td>" .. ftp .. "&nbsp;</td><td>" .. http .. "&nbsp;</td><td>" .. https .. "&nbsp;</td><td>" .. rsync .. "&nbsp;</td><td>" .. dns ..
298 "&nbsp;</td><td>" .. protocol .. "&nbsp;</td><td>" .. sanity .. "&nbsp;</td><td>" .. integrity .. "&nbsp;</td>" .. '<td>' .. rate .. 300 "&nbsp;</td><td>" .. protocol .. "&nbsp;</td><td>" .. redirects .. "&nbsp;</td><td>" .. sanity .. "&nbsp;</td><td>" .. integrity .. "&nbsp;</td>" .. '<td>' .. rate ..
299 '</td><td>' .. updated .. '</td>&nbsp;' .. spd .. "&nbsp;" .. week .."&nbsp;<td>" .. graph .. "</td></tr>\n") 301 '</td><td>' .. updated .. '</td>&nbsp;' .. spd .. "&nbsp;" .. week .."&nbsp;<td>" .. graph .. "</td></tr>\n")
300 if "" ~= active then 302 if "" ~= active then
301 web:write("<tr><td style='background-color:dimgrey'>" .. active .. "</td></tr>\n") 303 web:write("<tr><td style='background-color:dimgrey'>" .. active .. "</td></tr>\n")
@@ -361,6 +363,7 @@ if nil == email then C("opening mirrors file - " .. e) else
361 local rsync = "[skip]" 363 local rsync = "[skip]"
362 local dns = DNSrrTest(APT.mirrors, k) 364 local dns = DNSrrTest(APT.mirrors, k)
363 local protocol = status(APT.mirrors, k, results, "Protocol") 365 local protocol = status(APT.mirrors, k, results, "Protocol")
366 local redirects = status(APT.mirrors, k, results, "Redirects")
364 local sanity = status(APT.mirrors, k, results, "URLSanity") 367 local sanity = status(APT.mirrors, k, results, "URLSanity")
365 local integrity = status(APT.mirrors, k, results, "Integrity") 368 local integrity = status(APT.mirrors, k, results, "Integrity")
366 local updated = status(APT.mirrors, k, results, "Updated") 369 local updated = status(APT.mirrors, k, results, "Updated")
diff --git a/apt-panopticon.lua b/apt-panopticon.lua
index 43eeccf..2237232 100755
--- a/apt-panopticon.lua
+++ b/apt-panopticon.lua
@@ -345,7 +345,7 @@ checkHEAD = function (host, URL, r, retry, sanity)
345 if nil ~= location then 345 if nil ~= location then
346 pu = url.parse(location, defaultURL) 346 pu = url.parse(location, defaultURL)
347 if (pu.host == APT.options.roundRobin.value) and (nil ~= PU.path:find('merged/pool/DEVUAN/')) then 347 if (pu.host == APT.options.roundRobin.value) and (nil ~= PU.path:find('merged/pool/DEVUAN/')) then
348 E('DEVUAN packages must not be redirected to ' .. APT.options.roundRobin.value .. ' - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, sanity, host) 348 E('DEVUAN packages must not be redirected to ' .. APT.options.roundRobin.value .. ' - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, 'Redirects', host)
349 end 349 end
350 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. 350 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.
351 if APT.testing("Protocol") then 351 if APT.testing("Protocol") then
@@ -393,7 +393,7 @@ checkHEAD = function (host, URL, r, retry, sanity)
393 end 393 end
394 end 394 end
395 elseif nil ~= PU.path:find('merged/pool/DEBIAN-SECURITY/') then 395 elseif nil ~= PU.path:find('merged/pool/DEBIAN-SECURITY/') then
396 W('DEBIAN-SECURITY packages must be redirected to a Debian mirror - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, sanity, host) 396 W('DEBIAN-SECURITY packages must be redirected to a Debian mirror - ' .. APT.lnk(URL) .. arw .. APT.lnk(location), PU.scheme, 'Redirects', host)
397 end 397 end
398 end 398 end
399end 399end
diff --git a/explanations.html b/explanations.html
index f4d11fa..7e2878d 100644
--- a/explanations.html
+++ b/explanations.html
@@ -41,6 +41,12 @@ The validity of the HTTPS certificate for each server is tested as well.
41The IPs are linked to the log for that specific IP when used via the DNS round robin, and is followed by the number of errors, warnings, or timeouts of any. 41The IPs are linked to the log for that specific IP when used via the DNS round robin, and is followed by the number of errors, warnings, or timeouts of any.
42</p> 42</p>
43 43
44<hr><h1 id="Redirects">Redirect tests</h1>
45<p>Mirrors that redirect /DEVUAN/ back out to deb.devuan.org is an ERROR. &nbsp;
46/DEBIAN-SECURITY/ packages must be redirected to a Debian mirror, specifically a mirror hosting Debian security updates. &nbsp;
47However, some Devuan mirrors might also be Debian mirrors, so this is just a WARNING.
48</p>
49
44<hr><h1 id="Protocol">Protocol tests</h1> 50<hr><h1 id="Protocol">Protocol tests</h1>
45<p>The Protocol test will give a warning if the protocol is changed during a redirect, HTTP -> HTTPS for example. &nbsp; 51<p>The Protocol test will give a warning if the protocol is changed during a redirect, HTTP -> HTTPS for example. &nbsp;
46While apt HTTPS transport is now the default in Beowulf / Buster, not everyone with an older release will have that installed, 52While apt HTTPS transport is now the default in Beowulf / Buster, not everyone with an older release will have that installed,