diff options
author | onefang | 2019-11-13 23:48:42 +1000 |
---|---|---|
committer | onefang | 2019-11-13 23:48:42 +1000 |
commit | f5476bd4cf1e54487b4b902778048cf219838234 (patch) | |
tree | 889dc8a53a16e0fdfc337b7ccd9b92dc0bb42bef | |
parent | Also make links for top level logs. (diff) | |
download | apt-panopticon-f5476bd4cf1e54487b4b902778048cf219838234.zip apt-panopticon-f5476bd4cf1e54487b4b902778048cf219838234.tar.gz apt-panopticon-f5476bd4cf1e54487b4b902778048cf219838234.tar.bz2 apt-panopticon-f5476bd4cf1e54487b4b902778048cf219838234.tar.xz |
Count the errors / warnings in the log files, and mention them on the web page.
Diffstat (limited to '')
-rwxr-xr-x | apt-panopticon-report-web.lua | 99 |
1 files changed, 56 insertions, 43 deletions
diff --git a/apt-panopticon-report-web.lua b/apt-panopticon-report-web.lua index 5968972..35c61dc 100755 --- a/apt-panopticon-report-web.lua +++ b/apt-panopticon-report-web.lua | |||
@@ -74,6 +74,25 @@ dumpTableHTMLSub = function (table, space) | |||
74 | return r | 74 | return r |
75 | end | 75 | end |
76 | 76 | ||
77 | local plurals = function(e, w) | ||
78 | local result = "" | ||
79 | if 1 == e then | ||
80 | result = e .. " <font color='red'><b>error</b></font>" | ||
81 | elseif e ~= 0 then | ||
82 | result = e .. " <font color='red'><b>errors</b></font>" | ||
83 | end | ||
84 | if 0 < w then | ||
85 | if 0 < e then result = result .. ", " end | ||
86 | if 1 == w then | ||
87 | result = result .. w .. " <font color='yellow'><b>warning</b></font>" | ||
88 | else | ||
89 | result = result .. w .. " <font color='yellow'><b>warnings</b></font>" | ||
90 | end | ||
91 | end | ||
92 | if "" ~= result then result = " (" .. result .. ")" end | ||
93 | return result | ||
94 | end | ||
95 | |||
77 | local results = {} | 96 | local results = {} |
78 | 97 | ||
79 | local log = function(v, t, s, prot, test, host) | 98 | local log = function(v, t, s, prot, test, host) |
@@ -131,27 +150,13 @@ local status = function(host, results, typ) | |||
131 | end | 150 | end |
132 | end | 151 | end |
133 | 152 | ||
134 | if 0 < e then result = e .. " <font color='red'><b>errors</b></font>" end | 153 | if 0 < e then |
135 | if 1 == e then result = e .. " <font color='red'><b>error</b></font>" end | 154 | result = "[<font color='red'><b>FAILED</b></font>]" |
136 | if 0 < w then | 155 | faulty = faulty .. host .. " (" .. typ .. ")<br>\n" |
137 | if 0 < e then result = result .. ", " end | 156 | else |
138 | if 1 == w then | 157 | result = "[<font color='green'><b>OK</b></font>]" |
139 | result = result .. w .. " <font color='yellow'><b>warning</b></font>" | ||
140 | else | ||
141 | result = result .. w .. " <font color='yellow'><b>warnings</b></font>" | ||
142 | end | ||
143 | end | ||
144 | if "[OK]" ~= result then | ||
145 | if 0 < e then | ||
146 | result = "[<font color='red'><b>FAILED</b></font>] (" .. result .. ")" | ||
147 | faulty = faulty .. host .. " (" .. typ .. ")<br>\n" | ||
148 | elseif 0 < w then | ||
149 | result = "[<font color='green'><b>OK</b></font>] (" .. result .. ")" | ||
150 | else | ||
151 | result = "[<font color='green'><b>OK</b></font>]" | ||
152 | end | ||
153 | end | 158 | end |
154 | return result | 159 | return result .. plurals(e, w) |
155 | end | 160 | end |
156 | 161 | ||
157 | local collate = function(host, ip, results) | 162 | local collate = function(host, ip, results) |
@@ -188,6 +193,31 @@ end | |||
188 | local mirrors = loadfile("results/mirrors.lua")() | 193 | local mirrors = loadfile("results/mirrors.lua")() |
189 | local m = {} | 194 | local m = {} |
190 | 195 | ||
196 | local logCount = function(domain, ip) | ||
197 | local nm = "LOG_" .. domain | ||
198 | local log = "" | ||
199 | local extra = "" | ||
200 | if nil ~= ip then nm = nm .. "_" .. ip end | ||
201 | nm = nm .. ".html" | ||
202 | local rfile, e = io.open("results/" .. nm, "r") | ||
203 | if nil ~= rfile then | ||
204 | local errors = 0 | ||
205 | local warnings = 0 | ||
206 | for l in rfile:lines() do | ||
207 | if nil ~= l:match("><b>ERROR ") then errors = errors + 1 end | ||
208 | if nil ~= l:match("><b>WARNING ") then warnings = warnings + 1 end | ||
209 | end | ||
210 | rfile:close() | ||
211 | if nil == ip then | ||
212 | log = "<a href='" .. nm .. "'>" .. domain .. "</a>" | ||
213 | else | ||
214 | log = "<a href='" .. nm .. "'>" .. ip .. "</a>" | ||
215 | end | ||
216 | log = log .. plurals(errors, warnings) | ||
217 | end | ||
218 | return log | ||
219 | end | ||
220 | |||
191 | local file, e = io.open("results/Report-web.html", "w+") | 221 | local file, e = io.open("results/Report-web.html", "w+") |
192 | if nil == file then C("opening mirrors file - " .. e) else | 222 | if nil == file then C("opening mirrors file - " .. e) else |
193 | file:write( "<html><head><title>apt-panopticon results</title>\n" .. | 223 | file:write( "<html><head><title>apt-panopticon results</title>\n" .. |
@@ -229,12 +259,7 @@ if nil == file then C("opening mirrors file - " .. e) else | |||
229 | for k, v in pairs(mirrors) do | 259 | for k, v in pairs(mirrors) do |
230 | local log = k | 260 | local log = k |
231 | local n = {} | 261 | local n = {} |
232 | local nm = "LOG_" .. k .. ".html" | 262 | log = logCount(k) |
233 | local rfile, e = io.open("results/" .. nm, "r") | ||
234 | if nil ~= rfile then | ||
235 | rfile:close() | ||
236 | log = "<a href='" .. nm .. "'>" .. k .. "</a>" | ||
237 | end | ||
238 | mirrors[k].Protocols = nil | 263 | mirrors[k].Protocols = nil |
239 | mirrors[k].FQDN = nil | 264 | mirrors[k].FQDN = nil |
240 | mirrors[k].Active = nil | 265 | mirrors[k].Active = nil |
@@ -246,30 +271,18 @@ if nil == file then C("opening mirrors file - " .. e) else | |||
246 | if type(w) == "table" then | 271 | if type(w) == "table" then |
247 | n[l] = {} | 272 | n[l] = {} |
248 | for i, u in pairs(w) do | 273 | for i, u in pairs(w) do |
249 | local nm = "LOG_" .. k .. "_" .. i .. ".html" | 274 | local log = logCount(k, i) |
250 | local rfile, e = io.open("results/" .. nm, "r") | 275 | if "" == log then n[l] = u else n[log] = u end |
251 | if nil ~= rfile then | ||
252 | rfile:close() | ||
253 | n[l]["<a href='" .. nm .. "'>" .. i .. "</a>"] = u | ||
254 | else | ||
255 | n[l][i] = u | ||
256 | end | ||
257 | end | 276 | end |
258 | else | 277 | else |
259 | local nm = "LOG_" .. k .. "_" .. l .. ".html" | 278 | local log = logCount(k, l) |
260 | local rfile, e = io.open("results/" .. nm, "r") | 279 | if "" == log then n[l] = w else n[log] = w end |
261 | if nil ~= rfile then | ||
262 | rfile:close() | ||
263 | n["<a href='" .. nm .. "'>" .. l .. "</a>"] = w | ||
264 | else | ||
265 | n[l] = w | ||
266 | end | ||
267 | end | 280 | end |
268 | end | 281 | end |
269 | m[log .. " DNS entries -"] = n | 282 | m[log .. " DNS entries -"] = n |
270 | end | 283 | end |
271 | file:write( "<p>This lists each mirror, and the DNS entries for that mirror. " .. | 284 | file:write( "<p>This lists each mirror, and the DNS entries for that mirror. " .. |
272 | "The links point to the log files for each FDQN / IP combination that was checked. " .. | 285 | "The links point to the log files for " .. logCount("apt-panopticon") .. " for each FDQN / IP combination that was checked. " .. |
273 | "If a mirror has a CNAME, that CNAME is listed along with that CNAMEs DNS entries. " .. | 286 | "If a mirror has a CNAME, that CNAME is listed along with that CNAMEs DNS entries. " .. |
274 | "deb.devuan.org is the DNS round robin, which points to the mirrors that are part of the DNS-RR. " .. | 287 | "deb.devuan.org is the DNS round robin, which points to the mirrors that are part of the DNS-RR. " .. |
275 | "pkgmaster.devuan.org is the master mirror, all the others sync to it. " .. | 288 | "pkgmaster.devuan.org is the master mirror, all the others sync to it. " .. |