diff options
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | Report-web_2.html | 5 | ||||
| -rw-r--r-- | apt-panopticommon.lua | 44 | ||||
| -rwxr-xr-x | apt-panopticon-report-email-web.lua | 12 | ||||
| -rwxr-xr-x | apt-panopticon.lua | 28 | ||||
| -rwxr-xr-x | update_apt-panopticon | 8 |
6 files changed, 74 insertions, 29 deletions
| @@ -29,11 +29,11 @@ The details of that are yet to be determined. | |||
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | You can get the source code from [https://sledjhamr.org/cgit/apt-panopticon/](https://sledjhamr.org/cgit/apt-panopticon/) (main repo) | 31 | You can get the source code from [https://sledjhamr.org/cgit/apt-panopticon/](https://sledjhamr.org/cgit/apt-panopticon/) (main repo) |
| 32 | and [https://git.devuan.dev/onefang/apt-panopticon](https://git.devuan.dev/onefang/apt-panopticon) (Devuan repo). | 32 | and [https://git.devuan.org/onefang/apt-panopticon](https://git.devuan.org/onefang/apt-panopticon) (Devuan repo). |
| 33 | You can get the cgp graphing source code from [https://sledjhamr.org/cgit/apt-panopticon_cgp/]() (main repo) | 33 | You can get the cgp graphing source code from [https://sledjhamr.org/cgit/apt-panopticon_cgp/]() (main repo) |
| 34 | and [https://git.devuan.dev/onefang/apt-panopticon_cgp](https://git.devuan.dev/onefang/apt-panopticon_cgp) (Devuan repo). | 34 | and [https://git.devuan.org/onefang/apt-panopticon_cgp](https://git.devuan.org/onefang/apt-panopticon_cgp) (Devuan repo). |
| 35 | 35 | ||
| 36 | The issue tracker is at [https://sledjhamr.org/mantisbt/project_page.php?project_id=13](https://sledjhamr.org/mantisbt/project_page.php?project_id=13) | 36 | The issue tracker is at [https://sledjhamr.org/TODO/apt-panopticon/index.HTML](https://sledjhamr.org/TODO/apt-panopticon/index.HTML) |
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | Installation. | 39 | Installation. |
diff --git a/Report-web_2.html b/Report-web_2.html index 592e8c6..2882179 100644 --- a/Report-web_2.html +++ b/Report-web_2.html | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | <p><font style='background-color:red; color:black'>EXPERIMENTAL CODE - double check all results you see here, and read the logs if it's important.</font></p> | 1 | <p><font style='background-color:red; color:black'>EXPERIMENTAL CODE - double check all results you see here, and read the logs if it's important.</font></p> |
| 2 | <p>The full list of Devuan package mirrors is available at the URL: <a href='https://pkgmaster.devuan.org/mirror_list.txt'>https://pkgmaster.devuan.org/mirror_list.txt</a></p> | 2 | <p>The full list of Devuan package mirrors is available at the URL: <a href='https://pkgmaster.devuan.org/mirror_list.txt'>https://pkgmaster.devuan.org/mirror_list.txt</a></p> |
| 3 | <p>Due to the nature of the tests, some errors or warnings will be counted several times. The links in the table and DNS list go to the detailed testing logs.</p> | 3 | <p>Due to the nature of the tests, some errors or warnings will be counted several times. There will be some duplication.</p> |
| 4 | <p>Due to the nature of the tests, some errors or warnings will be counted several times. There will be some duplication.</p> | ||
| 5 | <p>Due to the nature of the tests, some errors or warnings will be counted several times. There will be some duplication.</p> | ||
| 6 | <p>The links in the table and DNS list go to the detailed testing logs.</p> | ||
| 4 | 7 | ||
| 5 | <hr> | 8 | <hr> |
diff --git a/apt-panopticommon.lua b/apt-panopticommon.lua index e31c22f..1507ae9 100644 --- a/apt-panopticommon.lua +++ b/apt-panopticommon.lua | |||
| @@ -8,13 +8,14 @@ APT.version = '0.3 alpha' | |||
| 8 | APT.protocols = {"ftp", "http", "https", "rsync"} | 8 | APT.protocols = {"ftp", "http", "https", "rsync"} |
| 9 | APT.tests = {'raw', 'Integrity', 'Protocol', 'Redirects', 'Updated', 'URLSanity', 'Speed'} | 9 | APT.tests = {'raw', 'Integrity', 'Protocol', 'Redirects', 'Updated', 'URLSanity', 'Speed'} |
| 10 | --APT.releases = {"jessie", "ascii", "beowulf", "chimaera", "daedalus", "ceres"} | 10 | --APT.releases = {"jessie", "ascii", "beowulf", "chimaera", "daedalus", "ceres"} |
| 11 | APT.releases = {"beowulf","chimaera", "daedalus", "excalibur", "ceres"} | 11 | APT.releases = {"chimaera", "daedalus", "excalibur", "freia", "ceres"} |
| 12 | APT.subRels = {'backports', 'proposed-updates', 'security', 'updates'} | 12 | APT.subRels = {'backports', 'proposed-updates', 'security', 'updates'} |
| 13 | APT.notExist = | 13 | APT.notExist = |
| 14 | { | 14 | { |
| 15 | 'excalibur-backports', | 15 | 'chimaera-backports', |
| 16 | 'excalibur-security', | 16 | -- 'excalibur-backports', |
| 17 | 'excalibur-updates', | 17 | -- 'excalibur-security', |
| 18 | -- 'excalibur-updates', | ||
| 18 | 'ceres-backports', -- These will never exist, it's our code name for the testing suite. | 19 | 'ceres-backports', -- These will never exist, it's our code name for the testing suite. |
| 19 | 'ceres-proposed-updates', | 20 | 'ceres-proposed-updates', |
| 20 | 'ceres-updates', | 21 | 'ceres-updates', |
| @@ -84,13 +85,13 @@ APT.options = | |||
| 84 | { | 85 | { |
| 85 | typ = "number", | 86 | typ = "number", |
| 86 | help = "", | 87 | help = "", |
| 87 | value = 240, | 88 | value = 180, |
| 88 | }, | 89 | }, |
| 89 | timeout = | 90 | timeout = |
| 90 | { | 91 | { |
| 91 | typ = "number", | 92 | typ = "number", |
| 92 | help = "", | 93 | help = "", |
| 93 | value = 5, | 94 | value = 42, |
| 94 | }, | 95 | }, |
| 95 | timeouts = | 96 | timeouts = |
| 96 | { | 97 | { |
| @@ -501,6 +502,8 @@ APT.readCmd = function(cmd) | |||
| 501 | table.insert(result, l) | 502 | table.insert(result, l) |
| 502 | end | 503 | end |
| 503 | end | 504 | end |
| 505 | -- While this does return the same things as os.execute(), it's just as useless. | ||
| 506 | output:close() | ||
| 504 | return result | 507 | return result |
| 505 | end | 508 | end |
| 506 | 509 | ||
| @@ -548,9 +551,9 @@ APT.exe = function(c) | |||
| 548 | -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well. | 551 | -- timeout returns a status of - command status if --preserve-status; "128+9" (actually 137) if --kill-after ends up being done; 124 if it had to TERM; command status if all went well. |
| 549 | -- --kill-after means "send KILL after TERM fails. | 552 | -- --kill-after means "send KILL after TERM fails. |
| 550 | if nil == c then | 553 | if nil == c then |
| 551 | self.cmd = 'timeout --kill-after=10.0 --foreground 42.0s ' .. self.cmd | 554 | self.cmd = 'timeout --kill-after=10.0s --foreground 42.0s ' .. self.cmd |
| 552 | else | 555 | else |
| 553 | self.cmd = 'timeout --kill-after=10.0 --foreground ' .. c .. ' ' .. self.cmd | 556 | self.cmd = 'timeout --kill-after=10.0s --foreground ' .. c .. ' ' .. self.cmd |
| 554 | end | 557 | end |
| 555 | return self | 558 | return self |
| 556 | end | 559 | end |
| @@ -590,8 +593,9 @@ APT.exe = function(c) | |||
| 590 | I'm getting 7168 or 0. No idea what the fuck that is. | 593 | I'm getting 7168 or 0. No idea what the fuck that is. |
| 591 | local ok, rslt, status = os.execute(s) | 594 | local ok, rslt, status = os.execute(s) |
| 592 | ]] | 595 | ]] |
| 596 | |||
| 593 | local f = APT.readCmd(self.cmd, 'r') | 597 | local f = APT.readCmd(self.cmd, 'r') |
| 594 | -- The last line will be the command's returned status, collect everything else in result. | 598 | -- The last line will be the command's returned status, collect everything else in result. |
| 595 | self.status = '' -- Otherwise the result starts with 0. | 599 | self.status = '' -- Otherwise the result starts with 0. |
| 596 | self.result = '\n' | 600 | self.result = '\n' |
| 597 | for i,l in ipairs(f) do | 601 | for i,l in ipairs(f) do |
| @@ -608,6 +612,28 @@ APT.exe = function(c) | |||
| 608 | E("status |" .. self.status .. '| ' .. self.command) | 612 | E("status |" .. self.status .. '| ' .. self.command) |
| 609 | end | 613 | end |
| 610 | end | 614 | end |
| 615 | |||
| 616 | --[[ While this is more reliable, it breaks stuff that's likely making assumptions that match the old way. | ||
| 617 | TODO - fix it later. | ||
| 618 | local f = APT.readCmd(self.cmd .. '; echo "$?"', 'r') | ||
| 619 | -- The last line will be the command's returned status, collect everything else in result. | ||
| 620 | self.status = tonumber(f[#f]) | ||
| 621 | f[#f] = nil | ||
| 622 | self.result = '\n' | ||
| 623 | for i,l in ipairs(f) do | ||
| 624 | self.result = self.result .. l .. "\n" | ||
| 625 | end | ||
| 626 | if (137 == self.status) or (124 == self.status) then | ||
| 627 | print("timeout killed " .. self.status .. ' ' .. self.command) | ||
| 628 | print('ERROR ' .. "timeout killed " .. self.status .. ' ' .. self.command) | ||
| 629 | elseif (nil == self.status) then | ||
| 630 | print("status |" .. "NIL" .. '| ' .. self.command) | ||
| 631 | E("status |" .. "NIL" .. '| ' .. self.command) | ||
| 632 | elseif (0 ~= self.status) then | ||
| 633 | -- print("status |" .. self.status .. '| ' .. self.command) | ||
| 634 | E("status |" .. self.status .. '| ' .. self.command) | ||
| 635 | end | ||
| 636 | ]] | ||
| 611 | return self | 637 | return self |
| 612 | end | 638 | end |
| 613 | function exe:fork(host) | 639 | function exe:fork(host) |
diff --git a/apt-panopticon-report-email-web.lua b/apt-panopticon-report-email-web.lua index 2a13975..de63274 100755 --- a/apt-panopticon-report-email-web.lua +++ b/apt-panopticon-report-email-web.lua | |||
| @@ -444,7 +444,9 @@ if nil == email then C("opening mirrors file - " .. e) else | |||
| 444 | "The full results of the mirror checking is available at the URLs:\n\n" .. | 444 | "The full results of the mirror checking is available at the URLs:\n\n" .. |
| 445 | " https://borta.devuan.dev/apt-panopticon/results/Report-web.html\n (updated once every hour)\n" .. | 445 | " https://borta.devuan.dev/apt-panopticon/results/Report-web.html\n (updated once every hour)\n" .. |
| 446 | " https://sledjhamr.org/apt-panopticon/results/Report-web.html\n (updated once every ten minutes)\n\n" .. | 446 | " https://sledjhamr.org/apt-panopticon/results/Report-web.html\n (updated once every ten minutes)\n\n" .. |
| 447 | "Due to the nature of the tests, some errors or warnings will be \ncounted several times. " .. | 447 | "Due to the nature of the tests, some errors or warnings will be \ncounted several times. There will be some duplication.\n\n" .. |
| 448 | "Due to the nature of the tests, some errors or warnings will be \ncounted several times. There will be some duplication.\n\n" .. | ||
| 449 | "Due to the nature of the tests, some errors or warnings will be \ncounted several times. There will be some duplication.\n\n" .. | ||
| 448 | "Refer to the logs on the web page for details.\n\n" .. | 450 | "Refer to the logs on the web page for details.\n\n" .. |
| 449 | "Please see below the current status of the Devuan Package Mirror \nnetwork:\n\n" .. | 451 | "Please see below the current status of the Devuan Package Mirror \nnetwork:\n\n" .. |
| 450 | "==== package mirror status " .. os.date("!%F %H:%M") .. " GMT ====\n" .. | 452 | "==== package mirror status " .. os.date("!%F %H:%M") .. " GMT ====\n" .. |
| @@ -484,9 +486,9 @@ if nil == email then C("opening mirrors file - " .. e) else | |||
| 484 | "* This means that this protocol isn't actually supported, but the test was run ayway.\n\n" .. | 486 | "* This means that this protocol isn't actually supported, but the test was run ayway.\n\n" .. |
| 485 | "Thanks for your precious help in ensuring that Devuan GNU+Linux \nremains a universal, stable, dependable, free operating system.\n\n" .. | 487 | "Thanks for your precious help in ensuring that Devuan GNU+Linux \nremains a universal, stable, dependable, free operating system.\n\n" .. |
| 486 | "You can get the source code from https://sledjhamr.org/cgit/apt-panopticon/about/ (main repo)\n" .. | 488 | "You can get the source code from https://sledjhamr.org/cgit/apt-panopticon/about/ (main repo)\n" .. |
| 487 | "and from https://git.devuan.dev/onefang/apt-panopticon' (Devuan repo).\n" .. | 489 | "and from https://git.devuan.org/onefang/apt-panopticon' (Devuan repo).\n" .. |
| 488 | "You can get the cgp graphing source code from https://sledjhamr.org/cgit/apt-panopticon_cgp/about/ (main repo)\n" .. | 490 | "You can get the cgp graphing source code from https://sledjhamr.org/cgit/apt-panopticon_cgp/about/ (main repo)\n" .. |
| 489 | "and https://git.devuan.dev/onefang/apt-panopticon_cgp (Devuan repo)\n\n" .. | 491 | "and https://git.devuan.org/onefang/apt-panopticon_cgp (Devuan repo)\n\n" .. |
| 490 | "Love\n\n" .. | 492 | "Love\n\n" .. |
| 491 | "The Dev1Devs\n\n") | 493 | "The Dev1Devs\n\n") |
| 492 | email:close() | 494 | email:close() |
| @@ -621,9 +623,9 @@ if nil == web then C("opening mirrors file - " .. e) else | |||
| 621 | web:write( "<hr>\n<hr>\n<p>The <a href='Report-email.txt'>email report</a>. " .. | 623 | web:write( "<hr>\n<hr>\n<p>The <a href='Report-email.txt'>email report</a>. " .. |
| 622 | "All <a href='../results'>the logs and other output</a>. " .. | 624 | "All <a href='../results'>the logs and other output</a>. " .. |
| 623 | "You can get the <a href='https://sledjhamr.org/cgit/apt-panopticon/about/'>source code here (main repo)</a>" .. | 625 | "You can get the <a href='https://sledjhamr.org/cgit/apt-panopticon/about/'>source code here (main repo)</a>" .. |
| 624 | "and <a href='https://git.devuan.dev/onefang/apt-panopticon'>here (Devuan repo)</a>. " .. | 626 | "and <a href='https://git.devuan.org/onefang/apt-panopticon'>here (Devuan repo)</a>. " .. |
| 625 | "You can get the cgp graphing <a href='https://sledjhamr.org/cgit/apt-panopticon_cgp/about/'>source code here (main repo)</a>" .. | 627 | "You can get the cgp graphing <a href='https://sledjhamr.org/cgit/apt-panopticon_cgp/about/'>source code here (main repo)</a>" .. |
| 626 | "and <a href='https://git.devuan.dev/onefang/apt-panopticon_cgp'>here (Devuan repo)</a>.</p>\n" | 628 | "and <a href='https://git.devuan.org/onefang/apt-panopticon_cgp'>here (Devuan repo)</a>.</p>\n" |
| 627 | ) | 629 | ) |
| 628 | local whn = APT.exe('TZ="GMT" ls -dl1 --time-style="+%s" results/stamp | cut -d " " -f 6-6'):Do().result:sub(2, -2) | 630 | local whn = APT.exe('TZ="GMT" ls -dl1 --time-style="+%s" results/stamp | cut -d " " -f 6-6'):Do().result:sub(2, -2) |
| 629 | web:write( "<p>This run took " .. (os.time() - tonumber("0" .. whn)) .. " seconds.     apt-panopticon version " .. APT.version .. " </p>" .. | 631 | web:write( "<p>This run took " .. (os.time() - tonumber("0" .. whn)) .. " seconds.     apt-panopticon version " .. APT.version .. " </p>" .. |
diff --git a/apt-panopticon.lua b/apt-panopticon.lua index 5658d48..3c990c6 100755 --- a/apt-panopticon.lua +++ b/apt-panopticon.lua | |||
| @@ -21,7 +21,7 @@ local releaseFiles = | |||
| 21 | "Release.gpg", -- | 21 | "Release.gpg", -- |
| 22 | -- "InRelease", -- 3.7 MB | 22 | -- "InRelease", -- 3.7 MB |
| 23 | -- "main/binary-all/Packages.xz", -- 2.6 GB for all that changed recently. | 23 | -- "main/binary-all/Packages.xz", -- 2.6 GB for all that changed recently. |
| 24 | -- Contents files. -- 3.3 GB | 24 | -- Contents files. -- 3.3 GB |
| 25 | -- "main/Contents-all.xz", | 25 | -- "main/Contents-all.xz", |
| 26 | -- "main/Contents-amd64.xz", | 26 | -- "main/Contents-amd64.xz", |
| 27 | -- "main/Contents-arm64.xz", | 27 | -- "main/Contents-arm64.xz", |
| @@ -36,15 +36,16 @@ local notExist = | |||
| 36 | local referenceDebs = | 36 | local referenceDebs = |
| 37 | { | 37 | { |
| 38 | -- Debian package. | 38 | -- Debian package. |
| 39 | "merged/pool/DEBIAN/main/d/debian-keyring/debian-keyring_2024.03.24_all.deb", | 39 | "merged/pool/DEBIAN/main/d/debian-keyring/debian-keyring_2025.07.26_all.deb", |
| 40 | -- Debian security package. NOTE this one should always be redirected? | 40 | -- Debian security package. NOTE this one should always be redirected? |
| 41 | "merged/pool/DEBIAN-SECURITY/updates/main/a/apt/apt-transport-https_1.8.2.2_all.deb", | 41 | "merged/pool/DEBIAN-SECURITY/updates/main/e/exim4/exim4_4.96-15+deb12u7_all.deb", |
| 42 | } | 42 | } |
| 43 | local referenceDevs = | 43 | local referenceDevs = |
| 44 | { | 44 | { |
| 45 | -- Devuan package. NOTE this one should not get redirected, but that's more a warning than an error. | 45 | -- Devuan package. NOTE this one should not get redirected, but that's more a warning than an error. |
| 46 | "merged/pool/DEVUAN/main/d/devuan-keyring/devuan-keyring_2023.10.07_all.deb", -- Devuan keeps changing this since the key expiry incident. | 46 | "merged/pool/DEVUAN/main/d/devuan-keyring/devuan-keyring_2025.08.09_all.deb", -- Devuan keeps changing this since the key expiry incident. |
| 47 | "merged/pool/DEVUAN/main/b/base-files/base-files_13.2devuan1_all.deb", | 47 | -- Hmmm used to be _all, but it was split to the individual archs. Seems pointless, each one is the same size as the previous all. |
| 48 | "merged/pool/DEVUAN/main/b/base-files/base-files_14devuan1_amd64.deb", | ||
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | local keyring = "/usr/share/keyrings/devuan-archive-keyring.gpg" | 51 | local keyring = "/usr/share/keyrings/devuan-archive-keyring.gpg" |
| @@ -276,7 +277,11 @@ checkHEAD = function (host, URL, r, retry, sanity) | |||
| 276 | if "http" == PU.scheme then | 277 | if "http" == PU.scheme then |
| 277 | hdr = '-H "Host: ' .. host .. '"' | 278 | hdr = '-H "Host: ' .. host .. '"' |
| 278 | end | 279 | end |
| 279 | IP = '--connect-to "' .. pu.host .. '::' .. PU.host .. ':"' | 280 | if '-6' == APT.IPv46 then |
| 281 | IP = '--connect-to "' .. pu.host .. '::[' .. PU.host .. ']:"' | ||
| 282 | else | ||
| 283 | IP = '--connect-to "' .. pu.host .. '::' .. PU.host .. ':"' | ||
| 284 | end | ||
| 280 | fname = host .. "_" .. pu.host .. '_' .. PU.host .. "_" .. PU.path:gsub("/", "_") .. ".txt" | 285 | fname = host .. "_" .. pu.host .. '_' .. PU.host .. "_" .. PU.path:gsub("/", "_") .. ".txt" |
| 281 | end | 286 | end |
| 282 | os.execute('rm -f results/HEADERS_' .. fname .. ' 2>/dev/null; rm -f results/STATUS_' .. fname .. ' 2>/dev/null; touch results/STATUS_' .. fname) | 287 | os.execute('rm -f results/HEADERS_' .. fname .. ' 2>/dev/null; rm -f results/STATUS_' .. fname .. ' 2>/dev/null; touch results/STATUS_' .. fname) |
| @@ -307,6 +312,10 @@ checkHEAD = function (host, URL, r, retry, sanity) | |||
| 307 | if "https" == PU.scheme and APT.options.roundRobin.value == host then | 312 | if "https" == PU.scheme and APT.options.roundRobin.value == host then |
| 308 | I(spcd .. "Not testing " .. APT.lnk(URL) .. " mirrors wont have the correct HTTPS certificate for the round robin.", host) | 313 | I(spcd .. "Not testing " .. APT.lnk(URL) .. " mirrors wont have the correct HTTPS certificate for the round robin.", host) |
| 309 | return | 314 | return |
| 315 | -- TODO - For some odd reason, sometimes one of these is nil. Dig deeper to figure out why. | ||
| 316 | elseif "https" == PU.scheme and (APT.mirrors[host] ~= nil) and (APT.mirrors[host].Protocols ~= nil) and (not APT.mirrors[host].Protocols.https) then | ||
| 317 | I(spcd .. "Not testing " .. APT.lnk(URL) .. " host doesn't support HTTPS.", host) | ||
| 318 | return | ||
| 310 | else | 319 | else |
| 311 | I(spcd .. check .. " " .. APT.lnk(URL), host) | 320 | I(spcd .. check .. " " .. APT.lnk(URL), host) |
| 312 | end | 321 | end |
| @@ -624,6 +633,10 @@ end | |||
| 624 | 633 | ||
| 625 | 634 | ||
| 626 | local validateURL = function(m) | 635 | local validateURL = function(m) |
| 636 | if "http://" == m.BaseURL:sub(1, 7) then | ||
| 637 | W("HTTP at beginning of BaseURL in mirror_list.txt! " .. m.BaseURL, "", "", m.FQDN) | ||
| 638 | m.BaseURL = m.BaseURL:sub(1, -2) | ||
| 639 | end | ||
| 627 | if " " == m.BaseURL:sub(-1, -1) then | 640 | if " " == m.BaseURL:sub(-1, -1) then |
| 628 | W("space at end of BaseURL in mirror_list.txt! " .. m.BaseURL, "", "", m.FQDN) | 641 | W("space at end of BaseURL in mirror_list.txt! " .. m.BaseURL, "", "", m.FQDN) |
| 629 | m.BaseURL = m.BaseURL:sub(1, -2) | 642 | m.BaseURL = m.BaseURL:sub(1, -2) |
| @@ -636,7 +649,7 @@ local validateURL = function(m) | |||
| 636 | if nil == p.path then p.path = '' end | 649 | if nil == p.path then p.path = '' end |
| 637 | if nil ~= p.port then p.authority = authority .. ':' .. p.port end | 650 | if nil ~= p.port then p.authority = authority .. ':' .. p.port end |
| 638 | if nil == m.FQDN then W("Something wrong in FQDN from mirror_list.txt! nil", "", "", p.authority) else | 651 | if nil == m.FQDN then W("Something wrong in FQDN from mirror_list.txt! nil", "", "", p.authority) else |
| 639 | if m.FQDN ~= p.authority then W("Something wrong in FDQN from mirror_list.txt! " .. m.FDQN, "", "", p.authority) end | 652 | if m.FQDN ~= p.authority then W("Something wrong in FQDN from mirror_list.txt! " .. m.FQDN, "", "", p.authority) end |
| 640 | end | 653 | end |
| 641 | if nil == m.BaseURL then W("Something wrong in BaseURL from mirror_list.txt! nil", "", "", p.authority) else | 654 | if nil == m.BaseURL then W("Something wrong in BaseURL from mirror_list.txt! nil", "", "", p.authority) else |
| 642 | if m.BaseURL ~= (p.authority .. p.path) then W("Something wrong in BaseURL from mirror_list.txt! " .. m.BaseURL, "", "", p.authority) end | 655 | if m.BaseURL ~= (p.authority .. p.path) then W("Something wrong in BaseURL from mirror_list.txt! " .. m.BaseURL, "", "", p.authority) end |
| @@ -1158,6 +1171,7 @@ if 0 < #arg then | |||
| 1158 | checkFiles(pu.host, pu.host, pu.path:sub(1, -1), file); | 1171 | checkFiles(pu.host, pu.host, pu.path:sub(1, -1), file); |
| 1159 | end | 1172 | end |
| 1160 | else | 1173 | else |
| 1174 | if "-6" == APT.IPv46 then arg[2] = '[' .. arg[2] .. ']' end | ||
| 1161 | checkHost(pu.host, pu.host, pu.path, arg[2], arg[3]) | 1175 | checkHost(pu.host, pu.host, pu.path, arg[2], arg[3]) |
| 1162 | end | 1176 | end |
| 1163 | 1177 | ||
diff --git a/update_apt-panopticon b/update_apt-panopticon index dde18a5..384ebdb 100755 --- a/update_apt-panopticon +++ b/update_apt-panopticon | |||
| @@ -6,12 +6,12 @@ PANOPATH="/var/www/html/apt-panopticon" | |||
| 6 | cd ${PANOPATH}/apt-panopticon_cgp | 6 | cd ${PANOPATH}/apt-panopticon_cgp |
| 7 | if [ -d .git ] ; then | 7 | if [ -d .git ] ; then |
| 8 | git pull > /dev/null | 8 | git pull > /dev/null |
| 9 | chown -R www-data:www-data * | 9 | chown -hR www-data:www-data * |
| 10 | fi | 10 | fi |
| 11 | cd ${PANOPATH}/apt-panopticon | 11 | cd ${PANOPATH}/apt-panopticon |
| 12 | if [ -d .git ] ; then | 12 | if [ -d .git ] ; then |
| 13 | git pull > /dev/null | 13 | git pull > /dev/null |
| 14 | chown -R www-data:www-data * | 14 | chown -hR www-data:www-data * |
| 15 | fi | 15 | fi |
| 16 | 16 | ||
| 17 | # Check if the lock file still exists. | 17 | # Check if the lock file still exists. |
| @@ -42,14 +42,14 @@ if [ "z" != "z${KEEPDAYS}" ] ; then | |||
| 42 | fi | 42 | fi |
| 43 | 43 | ||
| 44 | rm ../results; ln -s apt-panopticon/results_old ../results | 44 | rm ../results; ln -s apt-panopticon/results_old ../results |
| 45 | flock -n apt-panopticon.lock ionice -c3 nice -n 19 timeout --kill-after=20.0 --foreground 8.5m ./apt-panopticon.lua && rm apt-panopticon.lock | 45 | flock -n apt-panopticon.lock ionice -c3 nice -n 19 timeout --kill-after=20.0s --foreground 8.5m ./apt-panopticon.lua && rm apt-panopticon.lock |
| 46 | if [ -f apt-panopticon.lock ] ; then | 46 | if [ -f apt-panopticon.lock ] ; then |
| 47 | echo "apt-panopticon timed out." | 47 | echo "apt-panopticon timed out." |
| 48 | ./laggers | 48 | ./laggers |
| 49 | fi | 49 | fi |
| 50 | rm ../results; ln -s apt-panopticon/results ../results | 50 | rm ../results; ln -s apt-panopticon/results ../results |
| 51 | 51 | ||
| 52 | chown -R www-data:www-data * | 52 | chown -hR www-data:www-data * |
| 53 | 53 | ||
| 54 | # Clean up any mess left over from THIS failed run. | 54 | # Clean up any mess left over from THIS failed run. |
| 55 | find results_* -maxdepth 2 ! -name "pkgmaster.devuan.org" -name "*.*" -type d -print0 | xargs -0rt /bin/rm -fr | 55 | find results_* -maxdepth 2 ! -name "pkgmaster.devuan.org" -name "*.*" -type d -print0 | xargs -0rt /bin/rm -fr |
