diff options
-rw-r--r-- | apt-panopticommon.lua | 2 | ||||
-rwxr-xr-x | apt-panopticon-report-email-web.lua | 61 |
2 files changed, 34 insertions, 29 deletions
diff --git a/apt-panopticommon.lua b/apt-panopticommon.lua index 24e6d08..71e9a9c 100644 --- a/apt-panopticommon.lua +++ b/apt-panopticommon.lua | |||
@@ -487,7 +487,7 @@ APT.plurals = function(e, w, t) | |||
487 | end | 487 | end |
488 | if ("" ~= result) and APT.html then result = "<font color='blue'><b>" .. result .. "</b></font>" end | 488 | if ("" ~= result) and APT.html then result = "<font color='blue'><b>" .. result .. "</b></font>" end |
489 | end | 489 | end |
490 | if "" ~= result then result = " (" .. result .. ")" end | 490 | if "" ~= result then result = " " .. result end |
491 | return result | 491 | return result |
492 | end | 492 | end |
493 | 493 | ||
diff --git a/apt-panopticon-report-email-web.lua b/apt-panopticon-report-email-web.lua index 60d1b49..079c4cc 100755 --- a/apt-panopticon-report-email-web.lua +++ b/apt-panopticon-report-email-web.lua | |||
@@ -81,13 +81,13 @@ local status = function(hosts, host, results, typ) | |||
81 | end | 81 | end |
82 | 82 | ||
83 | if to then | 83 | if to then |
84 | result = "[TIMEOUT" | 84 | result = "TIMEOUT" |
85 | if not s then result = result .. "*" end | 85 | if not s then result = result .. "*" end |
86 | if APT.html then | 86 | if APT.html then |
87 | if s then | 87 | if s then |
88 | result = "[<font color='blue'><b>TIMEOUT</b></font>" | 88 | result = "<font color='blue'><b>TIMEOUT</b></font>" |
89 | else | 89 | else |
90 | result = "[<font color='darkblue'><b>TIMEOUT*</b></font>" | 90 | result = "<font color='darkblue'><b>TIMEOUT*</b></font>" |
91 | end | 91 | end |
92 | end | 92 | end |
93 | if APT.html then | 93 | if APT.html then |
@@ -96,13 +96,13 @@ local status = function(hosts, host, results, typ) | |||
96 | faulty = faulty .. host .. " (" .. typ .. ")\n" | 96 | faulty = faulty .. host .. " (" .. typ .. ")\n" |
97 | end | 97 | end |
98 | elseif 0 < e then | 98 | elseif 0 < e then |
99 | result = "[FAILED" | 99 | result = "FAILED" |
100 | if not s then result = result .. "*" end | 100 | if not s then result = result .. "*" end |
101 | if APT.html then | 101 | if APT.html then |
102 | if s then | 102 | if s then |
103 | result = "[<font color='red'><b>FAILED</b></font>" | 103 | result = "<font color='red'><b>FAILED</b></font>" |
104 | else | 104 | else |
105 | result = "[<font color='darkred'><b>FAILED*</b></font>" | 105 | result = "<font color='darkred'><b>FAILED*</b></font>" |
106 | end | 106 | end |
107 | end | 107 | end |
108 | if APT.html then | 108 | if APT.html then |
@@ -111,17 +111,17 @@ local status = function(hosts, host, results, typ) | |||
111 | faulty = faulty .. host .. " (" .. typ .. ")\n" | 111 | faulty = faulty .. host .. " (" .. typ .. ")\n" |
112 | end | 112 | end |
113 | else | 113 | else |
114 | result = "[OK" | 114 | result = "OK" |
115 | if not s then result = result .. "*" end | 115 | if not s then result = result .. "*" end |
116 | if APT.html then | 116 | if APT.html then |
117 | if s then | 117 | if s then |
118 | result = "[<font color='lime'><b>OK</b></font>" | 118 | result = "<font color='lime'><b>OK</b></font>" |
119 | else | 119 | else |
120 | result = "[<font color='darkgreen'><b>OK*</b></font>" | 120 | result = "<font color='darkgreen'><b>OK*</b></font>" |
121 | end | 121 | end |
122 | end | 122 | end |
123 | end | 123 | end |
124 | return result .. APT.plurals(e, w, t) .. "]" | 124 | return result .. APT.plurals(e, w, t) |
125 | end | 125 | end |
126 | 126 | ||
127 | local m = {} | 127 | local m = {} |
@@ -345,38 +345,41 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
345 | "The links in the table and DNS list go to the detailed testing logs.</p>\n\n" .. | 345 | "The links in the table and DNS list go to the detailed testing logs.</p>\n\n" .. |
346 | "<hr>\n<h2>==== package mirror status " .. os.date("!%F %H:%M") .. " GMT ====</h2>\n" .. | 346 | "<hr>\n<h2>==== package mirror status " .. os.date("!%F %H:%M") .. " GMT ====</h2>\n" .. |
347 | 347 | ||
348 | "<p>[<font color='red'><b>FAILED</b></font>] or [<font color='lime'><b>OK</b></font>]" .. | 348 | "<p><font color='red'><b>FAILED</b></font> or <font color='lime'><b>OK</b></font>" .. |
349 | " means the tested thing is supported for that mirror.</p>\n" .. | 349 | " means the tested thing is supported for that mirror.</p>\n" .. |
350 | "<p>[<font color='darkred'><b>FAILED*</b></font>] or [<font color='darkgreen'><b>OK*</b></font>]" .. | 350 | "<p><font color='darkred'><b>FAILED*</b></font> or <font color='darkgreen'><b>OK*</b></font>" .. |
351 | " means the tested thing is unsupported for that mirror, but might have been tested anyway.</p>\n" .. | 351 | " means the tested thing is unsupported for that mirror, but might have been tested anyway.</p>\n" .. |
352 | "<p>[<font color='blue'><b>timeout</b></font>] or [<font color='darkblue'><b>timeout</b></font>]" .. | 352 | "<p><font color='blue'><b>timeout</b></font> or <font color='darkblue'><b>timeout</b></font>" .. |
353 | " means the mirror had some timeouts, and tests where not yet aborted. The darker colour means unsupported by the mirror, but tested anyway.</p>" .. | 353 | " means the mirror had some timeouts, and tests where not yet aborted. The darker colour means unsupported by the mirror, but tested anyway.</p>" .. |
354 | "<p>[<font color='blue'><b>TIMEOUT</b></font>] or [<font color='darkblue'><b>TIMEOUT</b></font>]" .. | 354 | "<p><font color='blue'><b>TIMEOUT</b></font> or <font color='darkblue'><b>TIMEOUT</b></font>" .. |
355 | " means the mirror had too many timeouts, and tests where aborted, so there is no result for this test.</p>" .. | 355 | " means the mirror had too many timeouts, and tests where aborted, so there is no result for this test.</p>" .. |
356 | "<p>NOTE: timeouts may be due to a problem on the testing computer.</p>" .. | 356 | "<p>NOTE: timeouts may be due to a problem on the testing computer.</p>" .. |
357 | "<p>The DNS round robin (DNS-RR) column shows the IPs for that mirror, or [<font color='grey'><b>no</b></font>] if it isn't part of the DNS-RR. " .. | 357 | "<p>The DNS round robin (DNS-RR) column shows the IPs for that mirror, or <font color='grey'><b>no</b></font> if it isn't part of the DNS-RR. " .. |
358 | "The IPs link to the testing log for that IP accessed via the DNS-RR. " .. | 358 | "The IPs link to the testing log for that IP accessed via the DNS-RR. " .. |
359 | "deb.devuan.org is the DNS-RR itself, so it doesn't get tested directly.</p>\n" .. | 359 | "deb.devuan.org is the DNS-RR itself, so it doesn't get tested directly.</p>\n" .. |
360 | "<p>The time in the Updated column is how often the mirror updates itself.</p>" .. | 360 | "<p>The time in the Updated column is how often the mirror updates itself.</p>" .. |
361 | "<p>Mirrors with a <font style='background-color:dimgrey'>grey background</font> are not active (though may be usable as part of the DNS-RR).</p>\n" .. | 361 | "<p>Mirrors with a <font style='background-color:dimgrey'>grey background</font> are not active (though may be usable as part of the DNS-RR).</p>\n" .. |
362 | "<p>[<font color='grey'><b>skip</b></font>] means that the test hasn't been written yet.</p>\n" .. | 362 | "<p><font color='grey'><b>skip</b></font> means that the test hasn't been written yet.</p>\n" .. |
363 | "<table>\n<tr><th></th><th>" .. lnk('FTP') .. "</th><th>" .. lnk('HTTP') .. "</th><th>" .. lnk('HTTPS') .. "</th><th>" .. lnk('RSYNC') .. "</th>" .. | 363 | "<table>\n<tr><th></th><th>" .. lnk('FTP') .. "</th><th>" .. lnk('HTTP') .. "</th><th>" .. lnk('HTTPS') .. "</th><th>" .. lnk('RSYNC') .. "</th>" .. |
364 | "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" .. | 364 | "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" .. |
365 | "<th>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th></tr>\n" | 365 | "<th>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th></tr>\n" |
366 | ) | 366 | ) |
367 | |||
368 | local bg = '' | ||
367 | for k, v in APT.orderedPairs(APT.mirrors) do | 369 | for k, v in APT.orderedPairs(APT.mirrors) do |
368 | local results = APT.collateAll(APT.mirrors, 'results', k) | 370 | local results = APT.collateAll(APT.mirrors, 'results', k) |
371 | if '' == bg then bg = " style='background-color:#111111'" else bg = '' end | ||
369 | local active = "" | 372 | local active = "" |
370 | if "yes" == v.Active then | 373 | if "yes" == v.Active then |
371 | web:write(" <tr><th>" .. k .. "</th> ") | 374 | web:write(" <tr" .. bg .. "><th>" .. k .. "</th> ") |
372 | else | 375 | else |
373 | if nil == v.Active then active = 'nil' else active = v.Active end | 376 | if nil == v.Active then active = 'nil' else active = v.Active end |
374 | web:write(" <tr style='background-color:dimgrey'><th>" .. k .. "</th> ") | 377 | web:write(" <tr style='background-color:dimgrey'><th>" .. k .. "</th> ") |
375 | end | 378 | end |
376 | local ftp = "[<font color='grey'><b>skip</b></font>]" | 379 | local ftp = "<font color='grey'><b>skip</b></font>" |
377 | local http = status(APT.mirrors, k, results, "http") | 380 | local http = status(APT.mirrors, k, results, "http") |
378 | local https = status(APT.mirrors, k, results, "https") | 381 | local https = status(APT.mirrors, k, results, "https") |
379 | local rsync = "[<font color='grey'><b>skip</b></font>]" | 382 | local rsync = "<font color='grey'><b>skip</b></font>" |
380 | local dns = "" | 383 | local dns = "" |
381 | local protocol = status(APT.mirrors, k, results, "Protocol") | 384 | local protocol = status(APT.mirrors, k, results, "Protocol") |
382 | local sanity = status(APT.mirrors, k, results, "URLSanity") | 385 | local sanity = status(APT.mirrors, k, results, "URLSanity") |
@@ -386,7 +389,7 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
386 | if nil ~= rate then updated = updated .. ' ' .. rate end | 389 | if nil ~= rate then updated = updated .. ' ' .. rate end |
387 | local min = tonumber(results.speed.min) | 390 | local min = tonumber(results.speed.min) |
388 | local max = tonumber(results.speed.max) | 391 | local max = tonumber(results.speed.max) |
389 | local spd = '' | 392 | local spd = '<td></td><td></td>' |
390 | 393 | ||
391 | -- DNS-RR test. | 394 | -- DNS-RR test. |
392 | if ("deb.devuan.org" ~= k) and (nil ~= APT.mirrors["deb.devuan.org"]) then | 395 | if ("deb.devuan.org" ~= k) and (nil ~= APT.mirrors["deb.devuan.org"]) then |
@@ -417,12 +420,12 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
417 | end | 420 | end |
418 | end | 421 | end |
419 | end | 422 | end |
420 | if "" == dns then dns = "[<font color='grey'><b>no</b></font>]" end | 423 | if "" == dns then dns = "<font color='grey'><b>no</b></font>" end |
421 | 424 | ||
422 | if 0 == max then | 425 | if 0 == max then |
423 | spd = '<td></td><td></td>' | 426 | spd = '<td></td><td></td>' |
424 | else | 427 | else |
425 | spd = string.format('<td align="right">%d -></td><td align="right">%d</td>', min, max) | 428 | spd = string.format('<td align="right">%d -</td><td align="right">%d</td>', min, max) |
426 | end | 429 | end |
427 | end | 430 | end |
428 | 431 | ||
@@ -476,6 +479,7 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
476 | results = {} | 479 | results = {} |
477 | m = {} | 480 | m = {} |
478 | faulty = "" | 481 | faulty = "" |
482 | bg = '' | ||
479 | web:write( "<hr>\n<h2>==== Debian mirror status ====</h2>\n" .. | 483 | web:write( "<hr>\n<h2>==== Debian mirror status ====</h2>\n" .. |
480 | "<p>NOTE - This is not fully probing the Debian mirrors, we just collect some data from any redirects to other servers. " .. | 484 | "<p>NOTE - This is not fully probing the Debian mirrors, we just collect some data from any redirects to other servers. " .. |
481 | "So this isn't a full set of tests.   Basically we don't know the shape of the Debian mirror infrastructure.</p>\n" .. | 485 | "So this isn't a full set of tests.   Basically we don't know the shape of the Debian mirror infrastructure.</p>\n" .. |
@@ -485,18 +489,19 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
485 | "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" .. | 489 | "<th>" .. lnk('DNS round robin', 'DNS-RR') .. "</th><th>" .. lnk('Protocol') .. "</th><th>" .. lnk('URL sanity', 'URL-Sanity') .. "</th><th>" .. lnk('Integrity') .. "</th>" .. |
486 | "<th>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th></tr>\n") | 490 | "<th>" .. lnk('Updated') .. "</th><th colspan='2'>" .. lnk('Speed range', 'Speed') .. "</th></tr>\n") |
487 | for k, v in APT.orderedPairs(APT.debians) do | 491 | for k, v in APT.orderedPairs(APT.debians) do |
492 | if '' == bg then bg = " style='background-color:#111111'" else bg = '' end | ||
488 | local results = APT.collateAll(APT.debians, 'results', k) | 493 | local results = APT.collateAll(APT.debians, 'results', k) |
489 | local active = "" | 494 | local active = "" |
490 | if "yes" == v.Active then | 495 | if "yes" == v.Active then |
491 | web:write(" <tr><th>" .. k .. "</th> ") | 496 | web:write(" <tr " .. bg .. "><th>" .. k .. "</th> ") |
492 | else | 497 | else |
493 | if nil == v.Active then active = 'nil' else active = v.Active end | 498 | if nil == v.Active then active = 'nil' else active = v.Active end |
494 | web:write(" <tr style='background-color:dimgrey'><th>" .. k .. "</th> ") | 499 | web:write(" <tr style='background-color:dimgrey'><th>" .. k .. "</th> ") |
495 | end | 500 | end |
496 | local ftp = "[<font color='grey'><b>skip</b></font>]" | 501 | local ftp = "<font color='grey'><b>skip</b></font>" |
497 | local http = status(APT.debians, k, results, "http") | 502 | local http = status(APT.debians, k, results, "http") |
498 | local https = status(APT.debians, k, results, "https") | 503 | local https = status(APT.debians, k, results, "https") |
499 | local rsync = "[<font color='grey'><b>skip</b></font>]" | 504 | local rsync = "<font color='grey'><b>skip</b></font>" |
500 | local dns = "" | 505 | local dns = "" |
501 | local protocol = status(APT.debians, k, results, "Protocol") | 506 | local protocol = status(APT.debians, k, results, "Protocol") |
502 | local sanity = status(APT.debians, k, results, "URLSanity") | 507 | local sanity = status(APT.debians, k, results, "URLSanity") |
@@ -506,7 +511,7 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
506 | if nil ~= rate then updated = updated .. ' ' .. rate end | 511 | if nil ~= rate then updated = updated .. ' ' .. rate end |
507 | local min = tonumber(results.speed.min) | 512 | local min = tonumber(results.speed.min) |
508 | local max = tonumber(results.speed.max) | 513 | local max = tonumber(results.speed.max) |
509 | local spd = '' | 514 | local spd = '<td></td><td></td>' |
510 | 515 | ||
511 | -- DNS-RR test. | 516 | -- DNS-RR test. |
512 | if ("deb.devuan.org" ~= k) and (nil ~= APT.debians["deb.devuan.org"]) then | 517 | if ("deb.devuan.org" ~= k) and (nil ~= APT.debians["deb.devuan.org"]) then |
@@ -537,12 +542,12 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
537 | end | 542 | end |
538 | end | 543 | end |
539 | end | 544 | end |
540 | if "" == dns then dns = "[<font color='grey'><b>no</b></font>]" end | 545 | if "" == dns then dns = "<font color='grey'><b>no</b></font>" end |
541 | 546 | ||
542 | if 0 == max then | 547 | if 0 == max then |
543 | spd = '<td></td><td></td>' | 548 | spd = '<td></td><td></td>' |
544 | else | 549 | else |
545 | spd = string.format('<td align="right">%d -></td><td align="right">%d</td>', min, max) | 550 | spd = string.format('<td align="right">%d -</td><td align="right">%d</td>', min, max) |
546 | end | 551 | end |
547 | end | 552 | end |
548 | 553 | ||