From 2b5eee601d0d6441b7ea3419033752e7b58febde Mon Sep 17 00:00:00 2001 From: Patrice Chalin Date: Sat, 5 Oct 2024 12:02:53 -0400 Subject: [PATCH] [docsy] Add external link checking, fix links, add cache --- .htmltest.yml | 40 ++ Makefile | 46 +- content/en/docs/project/_index.md | 2 +- layouts/partials/hooks/head-end.html | 4 +- package.json | 6 +- static/refcache.json | 734 +++++++++++++++++++++++++++ 6 files changed, 827 insertions(+), 5 deletions(-) create mode 100644 static/refcache.json diff --git a/.htmltest.yml b/.htmltest.yml index e8b6879..1a081df 100644 --- a/.htmltest.yml +++ b/.htmltest.yml @@ -1,5 +1,8 @@ +CacheExpires: 9000h # ~ 12 months DirectoryPath: public +TestFilesConcurrently: true CheckDoctype: false # Sadly, this is false only because of `static/google*.html` +CheckMailto: false IgnoreAltMissing: true # FIXME IgnoreDirectoryMissingTrailingSlash: true # FIXME IgnoreDirs: @@ -7,4 +10,41 @@ IgnoreEmptyHref: true # FIXME IgnoreInternalEmptyHash: true # FIXME IgnoreInternalURLs: # list of paths IgnoreURLs: # list of regexs of paths or URLs to be ignored + # Ignore Docsy-generated GitHub links for now + - ^https?://github\.com/.*?/.*?/(new|edit)/ # view-page, edit-source etc + + # TUF - ^/specification/ + - ^https://cse.google.com + + # FIXME: 4XXs reported by checker, which we ignore until we have time to fix them + # Get "https://events17.linuxfoundation.org/events/kubecon-and-cloudnativecon-north-america/program/schedule": x509: certificate is valid for *.cass.oregonstate.edu, not events17.linuxfoundation.org --- resources/news/index.html + - ^https://events17.linuxfoundation.org/events/kubecon-and-cloudnativecon-north-america/program/schedule + # Non-OK status: 403 --- resources/news/index.html + - ^https://schd.ws/hosted_files/linuxconcontainerconeurope2016/50/When%20the%20going%20gets%20tough%2C%20get%20TUF%20going%21%20Linuxcon%20EU.pdf + # Non-OK status: 403 --- resources/news/index.html + - ^https://www.forbes.com/sites/.../uptane-will-protect-your-connected-car-from-hackers + # Non-OK status: 403 --- resources/news/index.html + - ^https://www.tmcnet.com/usubmit/2019/05/28/8963021.htm + # Non-OK status: 404 --- community/adoptions/index.html + - ^https://github.com/bottlerocket-os/bottlerocket/tree/develop/sources/updater + # Non-OK status: 404 --- resources/news/index.html + - ^https://www.d2pmagazine.com/2020/04/02/6099/ + # Non-OK status: 404 --- resources/news/index.html + - ^https://www.just-auto.com/news/here-and-uptane-team-on-automotiveiot-security_id188912.aspx + # Non-OK status: 404 --- resources/news/index.html + - ^https://www.linuxfoundation.org/cloud-containers-virtualization/cncf-host-two-security-projects-notary-tuf-specification/ + # Non-OK status: 404 --- resources/news/index.html + - ^https://www.ustream.tv/recorded/64499822#t=1h54m0s + # Non-OK status: 503 --- resources/news/index.html + - ^https://www.airbiquity.com + # Non-OK status: 503 --- resources/news/index.html + - ^https://www.airbiquity.com/news/press-releases/airbiquity-bolsters-otamatictm-security-and-data-analytic-features-latest-over-air-ota-software-and-data-management-offering-aut + # Non-OK status: 503 --- resources/news/index.html + - ^https://www.airbiquity.com/news/press-releases/airbiquity-otamatic-named-2017-new-product-year-business-intelligence-group + # Non-OK status: 503 --- resources/news/index.html + - ^https://www.airbiquity.com/news/press-releases/airbiquity-otamatic-named-2017-new-product-year-business-intelligence-group + # request exceeded our ExternalTimeout --- docs/security/audits/index.html + - ^https://www.nccgroup.trust/globalassets/our-research/us/public-reports/2017/ncc-group-kolide-the-update-framework-security-assessment.pdf + # request exceeded our ExternalTimeout --- resources/news/index.html + - ^http://www.enterprisecloudnews.com/author.asp diff --git a/Makefile b/Makefile index 7a4aa11..dd61eeb 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,12 @@ +# Set REFCACHE to another value to disable htmltest refcache-file manipulation +REFCACHE?=refcache HTMLTEST_DIR=tmp HTMLTEST?=htmltest # Specify as make arg if different HTMLTEST_ARGS?=--skip-external +LINK_CACHE_FILE?=refcache.json +LINK_CACHE_FILE_DEST_DIR?=static +LINK_CACHE_FILE_SRC_DIR?=$(HTMLTEST_DIR)/.htmltest +OTEL_GEN_REPO?=../$(shell basename $(shell pwd)).g # Use $(HTMLTEST) in PATH, if available; otherwise, we'll get a copy ifeq (, $(shell which $(HTMLTEST))) @@ -10,7 +16,32 @@ GET_LINK_CHECKER_IF_NEEDED=get-link-checker endif endif -check-links: $(GET_LINK_CHECKER_IF_NEEDED) +default: + @echo "Make what? Target list:\n" + @make -rpn | grep '^[a-z]\S*:' | sed 's/://' | sort + +$(LINK_CACHE_FILE_SRC_DIR): + mkdir -p $(LINK_CACHE_FILE_SRC_DIR) + +refcache-restore: $(LINK_CACHE_FILE_SRC_DIR) +ifeq (refcache, $(REFCACHE)) + cp $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE) $(LINK_CACHE_FILE_SRC_DIR)/ +else + @echo "SKIPPING refcache-restore" +endif + +refcache-save: $(LINK_CACHE_FILE_SRC_DIR)/$(LINK_CACHE_FILE) +ifeq (refcache, $(REFCACHE)) + cp $(LINK_CACHE_FILE_SRC_DIR)/$(LINK_CACHE_FILE) $(LINK_CACHE_FILE_DEST_DIR)/ + npm run _prettier:any -- --write $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE) +else + @echo "SKIPPING refcache-save" +endif + +check-links: $(GET_LINK_CHECKER_IF_NEEDED) \ + refcache-restore check-links-only refcache-save + +check-links-only: $(HTMLTEST) $(HTMLTEST_ARGS) clean: @@ -19,3 +50,16 @@ clean: get-link-checker: rm -Rf $(HTMLTEST_DIR)/bin curl https://htmltest.wjdp.uk | bash -s -- -b $(HTMLTEST_DIR)/bin + +# For local development, create `public` either as a symlink to a given git repo +# (if it exists), or an empty git repo. This is for the purpose of tracking +# build changes. +public: + @if [ -e "$(OTEL_GEN_REPO)" ]; then \ + set -x; ln -s $(OTEL_GEN_REPO) public; \ + elif [ -z "$(CI)" ]; then \ + set -x; git init public; \ + fi + +ls-public: + if [ -e public ]; then ls -ld public; fi diff --git a/content/en/docs/project/_index.md b/content/en/docs/project/_index.md index e3bc3c2..2d64d9c 100644 --- a/content/en/docs/project/_index.md +++ b/content/en/docs/project/_index.md @@ -27,7 +27,7 @@ To learn how project decisions are made, and for a more detailed explanation of the project roles used below, see [Governance]. [contributed]: - https://github.com/theupdateframework/python-tuf/blob/develop/docs/AUTHORS.txt + https://github.com/theupdateframework/python-tuf/blob/develop/README.md#acknowledgements [Governance]: https://github.com/theupdateframework/specification/blob/master/GOVERNANCE.md [Specification]: /specification/latest diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html index 766d0fc..0997a9c 100644 --- a/layouts/partials/hooks/head-end.html +++ b/layouts/partials/hooks/head-end.html @@ -1 +1,3 @@ - +{{ with .Site.Params.gcs_engine_id -}} + +{{ end -}} diff --git a/package.json b/package.json index 6d5c0d3..9d2b76c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "_build": "npm run _hugo-dev --", "_check:format": "npx prettier --check .", "_check:links--warn": "npm run _check:links || (echo; echo 'WARNING: see link-checker output for issues.'; echo)", - "_check:links": "HTMLTEST_ARGS='--log-level 1 --skip-external' npm run __check:links", + "_check:links:internal": "npm run __check:links", + "_check:links": "HTMLTEST_ARGS='--log-level 1' npm run __check:links", "_diff:check": "git diff --name-only --exit-code", "_filename-error": "echo 'ERROR: the following files violate naming conventions; fix using: `npm run fix:filenames`'; echo; npm run -s _ls-bad-filenames; exit 1", "_filenames-to-kebab-case": "find assets content -name '*_*' ! -name '[_.]*' -exec sh -c 'mv \"$1\" \"${1//_/-}\"' _ {} \\;", @@ -15,13 +16,14 @@ "_hugo": "hugo --cleanDestinationDir", "_ls-bad-filenames": "find assets content -name '*_*' ! -name '[_.]*'", "_prepare:docsy": "cd themes/docsy && npm install", + "_prettier:any": "npx prettier --ignore-path ''", "_serve": "npm run _hugo-dev -- serve --minify --disableFastRender --renderToMemory", "build:preview": "npm run _hugo-dev -- --minify --baseURL \"${DEPLOY_PRIME_URL:-http://localhost}\"", "build:production": "npm run _hugo -- --minify", "build": "npm run _build --", "check:filenames": "test -z \"$(npm run -s _ls-bad-filenames)\" || npm run -s _filename-error", "check:format": "npm run _check:format || (echo '[help] Run: npm run fix:format'; exit 1)", - "check:links:all": "HTMLTEST_ARGS= npm run _check:links", + "check:links:internal": "npm run _check:links:internal", "check:links": "npm run _check:links", "clean": "rm -Rf public", "diff:check": "npm run _diff:check || (echo; echo 'WARNING: the files above have not been committed'; echo)", diff --git a/static/refcache.json b/static/refcache.json new file mode 100644 index 0000000..971c68b --- /dev/null +++ b/static/refcache.json @@ -0,0 +1,734 @@ +{ + "http://wiki.laptop.org/go/Canonical_JSON": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:26:20.609515-04:00" + }, + "https://beta.techcrunch.com/2017/10/24/the-cloud-native-computing-foundation-adds-two-security-projects-to-its-open-source-stable/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:16:15.048561-04:00" + }, + "https://blog.docker.com/2015/08/content-trust-docker-1-8": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:14:04.585974-04:00" + }, + "https://blog.fleetdm.com/fleet-3-10-0-released-with-agent-auto-updates-beta-f4dd61be001d": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:29:04.098187-04:00" + }, + "https://blog.mp3monster.org/2020/01/04/security-vulnerabilities-in-solution-deployment/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:38.256579-04:00" + }, + "https://cloud-native.slack.com/archives/C8NMD3QJ3": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:27:33.892418-04:00" + }, + "https://cncf.io": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:08:05.10939-04:00" + }, + "https://code.jquery.com/jquery-3.7.1.min.js": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:07:39.200773-04:00" + }, + "https://communityinviter.com/apps/cloud-native/cncf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:16.078746-04:00" + }, + "https://containerjournal.com/2017/10/24/cncf-adds-projects-better-secure-containers/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:16:26.457438-04:00" + }, + "https://creativecommons.org/licenses/by/4.0": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:08:32.069755-04:00" + }, + "https://debconf17.debconf.org/talks/153/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:12:36.398218-04:00" + }, + "https://devclass.com/2019/12/19/the-update-framework-becomes-ninth-project-to-graduate-cncf/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:15:00.785044-04:00" + }, + "https://devops.com/cncf-graduates-tuf-project-to-secure-software-updates/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:15:06.958212-04:00" + }, + "https://docs.automotivelinux.org/en/pike/#03_Architecture_Guides/02_Security_Blueprint/09_Update_%28Over_The_Air%29/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:28:37.688025-04:00" + }, + "https://docs.datadoghq.com/getting_started/integrations/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:49.225551-04:00" + }, + "https://en.wikipedia.org/wiki/Glob_(programming)": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:26:36.378625-04:00" + }, + "https://engineering.nyu.edu/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:54.335269-04:00" + }, + "https://engineering.nyu.edu/news/open-source-system-secure-software-updates-graduates-protect-leading-cloud-services": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:06.833386-04:00" + }, + "https://events.linuxfoundation.org/events/linuxcon-north-america/program/slides": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:32.041776-04:00" + }, + "https://foundries.io/insights/blog/2018/05/25/ota-part-1/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:29:09.490419-04:00" + }, + "https://fuchsia.dev/fuchsia-src/concepts/system/software_update_system": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:29:15.164794-04:00" + }, + "https://github.com/bottlerocket-os/bottlerocket/tree/develop/sources/updater": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:43:42.573372-04:00" + }, + "https://github.com/cnabio/cnab-spec/blob/cnab-security-1.0.0-ga/300-CNAB-security.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:28:48.404642-04:00" + }, + "https://github.com/cncf/foundation/blob/master/code-of-conduct.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:06.421963-04:00" + }, + "https://github.com/davedoesdev/dtuf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:30:22.807901-04:00" + }, + "https://github.com/docker/notary": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:54.18728-04:00" + }, + "https://github.com/heartsucker/rust-tuf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:30:28.445184-04:00" + }, + "https://github.com/joshuagl": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:35.769233-04:00" + }, + "https://github.com/justincappos": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:25.26779-04:00" + }, + "https://github.com/kolide/updater": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:29:33.106285-04:00" + }, + "https://github.com/lukpueh": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:46.288641-04:00" + }, + "https://github.com/mnm678": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:41.038515-04:00" + }, + "https://github.com/php-tuf/php-tuf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:30:17.151692-04:00" + }, + "https://github.com/sigstore/root-signing": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:29:44.324578-04:00" + }, + "https://github.com/theupdateframework": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:32.290759-04:00" + }, + "https://github.com/theupdateframework/community": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:21.453316-04:00" + }, + "https://github.com/theupdateframework/community/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:37.701138-04:00" + }, + "https://github.com/theupdateframework/community/blob/main/CONTRIBUTING.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:42.951945-04:00" + }, + "https://github.com/theupdateframework/go-tuf/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:11.131447-04:00" + }, + "https://github.com/theupdateframework/notary": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:29:38.684314-04:00" + }, + "https://github.com/theupdateframework/notary/blob/master/docs/resources/cure53_tuf_notary_audit_2018_08_07.pdf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:20:47.531754-04:00" + }, + "https://github.com/theupdateframework/notary/blob/master/docs/resources/ncc_docker_notary_audit_2015_07_31.pdf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:21:08.155489-04:00" + }, + "https://github.com/theupdateframework/python-tuf": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:05.548961-04:00" + }, + "https://github.com/theupdateframework/python-tuf/blob/develop/README.md#acknowledgements": { + "StatusCode": 200, + "LastSeen": "2024-10-05T12:00:02.764046-04:00" + }, + "https://github.com/theupdateframework/python-tuf/blob/develop/docs/AUTHORS.txt": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:43:42.602379-04:00" + }, + "https://github.com/theupdateframework/python-tuf/blob/develop/docs/MAINTAINERS.txt": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:00.930224-04:00" + }, + "https://github.com/theupdateframework/python-tuf/blob/v0.20.0/examples/repo_example/hashed_bin_delegation.py": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:21:50.149516-04:00" + }, + "https://github.com/theupdateframework/python-tuf/tree/develop/examples": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:11.076724-04:00" + }, + "https://github.com/theupdateframework/specification/blob/master/GOVERNANCE.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:11.698841-04:00" + }, + "https://github.com/theupdateframework/specification/blob/master/MAINTAINERS.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:55.547736-04:00" + }, + "https://github.com/theupdateframework/specification/blob/master/tuf-spec.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:26:26.092394-04:00" + }, + "https://github.com/theupdateframework/specification/issues": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:27:49.98459-04:00" + }, + "https://github.com/theupdateframework/taps": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:08.948351-04:00" + }, + "https://github.com/theupdateframework/taps/blob/master/tap1.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:09.262588-04:00" + }, + "https://github.com/theupdateframework/taps/blob/master/tap4.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:00.66814-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:26.869281-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/1a60f9e217196e19076edba9787f72019141277e": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:19.547637-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/54cca6ae06640ad10d184f806a98172781dcb9e8": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:21:13.701008-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/594a6ab705de31ac2b1475ad06f9f983d0b6979a": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:32.728605-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/638b8a1d81632df4c27553044a2e43e3f7abe7c4": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:20:26.362325-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/723e3323632abf6f52ecd44f25770e62bb523816": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:20:04.936087-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/8b0f6bba08eef217c6c7fadceb75a24a8341b84a": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:30.506069-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/8b69df3d004adafe2f29174da6635d22504343fc": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:09.404042-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/b11cefd08a89dab8a70c09711eeff1df7d3cae1c": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:28:11.25347-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/commit/e135c87230816424c13d2c50588e0301748577d3": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:23.56726-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/issues/new": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:03.913978-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/community/_index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:27:18.055472-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/community/adoptions/index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:28:21.867462-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/community/taps.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:28:00.475851-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/_index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:27.885825-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/contributing.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:21.550917-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/faq.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:21:24.236761-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/getting-started.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:24:54.882094-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/metadata.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:26:04.904014-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/overview.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:43.403181-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/project/_index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:53.456933-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/project/funding.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:24:39.162217-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/project/history.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:56.824613-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/project/timeline.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:24:18.129475-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/security/_index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:20:15.590438-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/security/audits.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:20:36.866851-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/docs/security/reporting.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:48.998688-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/resources/_index.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:48.185255-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/resources/news.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:34.295544-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/resources/publications.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:19.939302-04:00" + }, + "https://github.com/theupdateframework/theupdateframework.io/tree/docsy/content/en/resources/videos.md": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:41.444887-04:00" + }, + "https://github.com/theupdateframework/tuf-js": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:16.622615-04:00" + }, + "https://github.com/theupdateframework/tuf-on-ci/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:27.346866-04:00" + }, + "https://github.com/trishankatdatadog": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:30.527879-04:00" + }, + "https://goharbor.io/docs/2.0.0/working-with-projects/project-configuration/implementing-content-trust/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:29:27.54856-04:00" + }, + "https://groups.google.com/g/theupdateframework": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:10.615508-04:00" + }, + "https://ieee-isto.org/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:12:09.925728-04:00" + }, + "https://in-toto.io/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:43.949881-04:00" + }, + "https://it.slashdot.org/story/08/07/10/227220/package-managers-as-achilles-heel": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:14.188686-04:00" + }, + "https://lcccna2016.sched.org/event/7JWU/when-the-going-gets-tough-get-tuf-going-riyaz-faizullabhoy-docker": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:20.450794-04:00" + }, + "https://linuxconcontainerconeurope2016.sched.org/event/7oI1/software-update-security-when-the-going-gets-tough-get-tuf-going-riyaz-faizullabhoy-lily-guo-docker": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:12:58.232148-04:00" + }, + "https://lwn.net/Articles/628343/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:36.779059-04:00" + }, + "https://lwn.net/Articles/629426/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:46.993717-04:00" + }, + "https://lwn.net/Articles/794391/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:15:12.090388-04:00" + }, + "https://lwn.net/Articles/807777/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:55.143662-04:00" + }, + "https://mamba.readthedocs.io/en/latest/advanced_usage/artifacts_verification.html": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:30:05.830455-04:00" + }, + "https://news.ycombinator.com/item": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:52.425317-04:00" + }, + "https://nj1015.com/people-are-pretty-reluctant-to-embrace-self-driving-cars-survey-says/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:21.930772-04:00" + }, + "https://opam.ocaml.org/blog/Signing-the-opam-repository": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:30:11.597628-04:00" + }, + "https://pyfound.blogspot.com/2020/03/an-update-pypi-funded-work.html": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:27.339435-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/role1.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:26:46.664351-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/role2.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:26:51.824539-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/root.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:26:31.255606-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/snapshot.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:26:56.986426-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/targets.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:26:41.524954-04:00" + }, + "https://raw.githubusercontent.com/theupdateframework/tuf/develop/tests/repository_data/repository/metadata/timestamp.json": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:27:02.157132-04:00" + }, + "https://repository-service-tuf.readthedocs.io/en/stable/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:25:21.87881-04:00" + }, + "https://schd.ws/hosted_files/linuxconcontainerconeurope2016/50/When%20the%20going%20gets%20tough%2C%20get%20TUF%20going%21%20Linuxcon%20EU.pdf": { + "StatusCode": 403, + "LastSeen": "2024-10-05T11:44:03.271684-04:00" + }, + "https://slack.cncf.io/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:27:44.625878-04:00" + }, + "https://ssl.engineering.nyu.edu": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:18:50.236312-04:00" + }, + "https://ssl.engineering.nyu.edu/blog/2017-04-24-DockerCon": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:12:46.673137-04:00" + }, + "https://ssl.engineering.nyu.edu/personalpages/jcappos/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:18:45.151572-04:00" + }, + "https://techcrunch.com/2020/03/11/aws-launches-bottlerocket-a-linux-based-os-for-container-hosting/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:16.313667-04:00" + }, + "https://thenewstack.io/cncf-brings-security-cloud-native-stack-notary-tuf-adoption/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:16:46.618827-04:00" + }, + "https://thenewstack.io/docker-content-trust-can-run-containers-untrusted-networks/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:26.010471-04:00" + }, + "https://theupdateframework.io/papers/protect-community-repositories-nsdi2016.pdf": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:25:54.194721-04:00" + }, + "https://theupdateframework.readthedocs.io/en/latest/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:23:14.467303-04:00" + }, + "https://theupdateframework.readthedocs.io/en/latest/api/api-reference.html": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:22:05.785564-04:00" + }, + "https://titanous.com/posts/docker-insecurity": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:17:57.605795-04:00" + }, + "https://trdl.dev/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:29:49.815955-04:00" + }, + "https://uptane.github.io": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:12:41.518956-04:00" + }, + "https://uptane.github.io/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:21:55.225541-04:00" + }, + "https://uptane.github.io/papers/ieee-isto-6100.1.0.0.uptane-standard.html": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:33.111583-04:00" + }, + "https://us.pycon.org/2015/schedule/presentation/438/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:17:41.895061-04:00" + }, + "https://us.pycon.org/2016/schedule/presentation/2187/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:13:48.588503-04:00" + }, + "https://vimeo.com/88774074": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:08.318982-04:00" + }, + "https://www.airbiquity.com": { + "StatusCode": 503, + "LastSeen": "2024-10-05T11:43:42.415163-04:00" + }, + "https://www.airbiquity.com/news/press-releases/airbiquity-bolsters-otamatictm-security-and-data-analytic-features-latest-over-air-ota-software-and-data-management-offering-aut": { + "StatusCode": 503, + "LastSeen": "2024-10-05T11:44:34.663334-04:00" + }, + "https://www.airbiquity.com/news/press-releases/airbiquity-otamatic-named-2017-new-product-year-business-intelligence-group": { + "StatusCode": 503, + "LastSeen": "2024-10-05T11:44:39.80592-04:00" + }, + "https://www.autoconnectedcar.com/2018/08/automotive-cybersecurity-open-source-ota-crypto-market/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:15:46.348965-04:00" + }, + "https://www.automotivelinux.org/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:12:04.669754-04:00" + }, + "https://www.avnetwork.com/news/cloud-native-computing-foundation-announces-tuf-graduation": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:14:43.557465-04:00" + }, + "https://www.cncf.io": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:07:49.599321-04:00" + }, + "https://www.cncf.io/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:11:11.886807-04:00" + }, + "https://www.cncf.io/blog/2021/06/16/a-new-kind-of-trust-root/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:45.802449-04:00" + }, + "https://www.cncf.io/projects": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:07:54.723053-04:00" + }, + "https://www.csmonitor.com/World/Passcode/2017/0118/Are-software-updates-key-to-stopping-criminal-car-hacks": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:20.918367-04:00" + }, + "https://www.d2pmagazine.com/2020/04/02/6099/": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:44:08.638724-04:00" + }, + "https://www.datadoghq.com/blog/engineering/secure-publication-of-datadog-agent-integrations-with-tuf-and-in-toto": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:28:53.726942-04:00" + }, + "https://www.datadoghq.com/blog/engineering/secure-publication-of-datadog-agent-integrations-with-tuf-and-in-toto/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:38.61013-04:00" + }, + "https://www.docker.com/blog/signing-docker-official-images-using-openpubkey/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:29:54.95641-04:00" + }, + "https://www.esecurityplanet.com/applications/container-and-kubernetes-security.html": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:15:58.707726-04:00" + }, + "https://www.eweek.com/security/how-the-update-framework-improves-security-of-software-updates": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:16:58.86998-04:00" + }, + "https://www.eweek.com/security/how-the-update-framework-improves-software-distribution-security": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:15:52.521441-04:00" + }, + "https://www.forbes.com/sites/.../uptane-will-protect-your-connected-car-from-hackers": { + "StatusCode": 403, + "LastSeen": "2024-10-05T11:44:59.952861-04:00" + }, + "https://www.helpnetsecurity.com/2019/12/23/update-framework-linux-foundation/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:14:49.25069-04:00" + }, + "https://www.here.com/company/press-releases/en/2019-28-05": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:29:21.154364-04:00" + }, + "https://www.jointdevelopment.org/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:22.326278-04:00" + }, + "https://www.just-auto.com/news/here-and-uptane-team-on-automotiveiot-security_id188912.aspx": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:44:24.464653-04:00" + }, + "https://www.linux-magazine.com/Issues/2014/160/Security-Lessons-TUF": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:03.032666-04:00" + }, + "https://www.linuxfoundation.org": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:18:40.074709-04:00" + }, + "https://www.linuxfoundation.org/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:11:59.478413-04:00" + }, + "https://www.linuxfoundation.org/cloud-containers-virtualization/cncf-host-two-security-projects-notary-tuf-specification/": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:43:58.112029-04:00" + }, + "https://www.linuxfoundation.org/legal/privacy-policy": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:08:37.502115-04:00" + }, + "https://www.nsf.gov": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:19:17.301536-04:00" + }, + "https://www.podcastinit.com/episode-99-the-update-framework-with-justin-cappos/": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:17:09.8706-04:00" + }, + "https://www.popsci.com/top-security-innovations-2017": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:16:52.728977-04:00" + }, + "https://www.python.org/dev/peps/pep-0458/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:11:01.604845-04:00" + }, + "https://www.python.org/dev/peps/pep-0458/#in-the-event-of-a-key-compromise": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:21:39.739053-04:00" + }, + "https://www.python.org/dev/peps/pep-0458/#metadata-scalability": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:21:44.821519-04:00" + }, + "https://www.python.org/dev/peps/pep-0480/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:24:28.574094-04:00" + }, + "https://www.spglobal.com/marketintelligence/en/news-insights/trending/Xp9n6TEIEmSe8ho9d0jX_Q2": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:44:19.373128-04:00" + }, + "https://www.thedrive.com/tech/29120/top-ota-expert-shows-how-state-actors-hack-into-your-car-and-what-happens-next-people-will-die": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:15:17.930598-04:00" + }, + "https://www.tmcnet.com/usubmit/2019/05/28/8963021.htm": { + "StatusCode": 403, + "LastSeen": "2024-10-05T11:44:29.577708-04:00" + }, + "https://www.torproject.org/": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:24:07.521061-04:00" + }, + "https://www.traffictechnologytoday.com/news/mapping/here-technologies-joins-the-uptane-alliance-for-highly-secure-software-updates.html": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:15:30.078158-04:00" + }, + "https://www.usenix.org/conference/nsdi16": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:37.762912-04:00" + }, + "https://www.usenix.org/node/194973": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:13:43.377251-04:00" + }, + "https://www.ustream.tv/recorded/64499822#t=1h54m0s": { + "StatusCode": 404, + "LastSeen": "2024-10-05T11:45:05.574214-04:00" + }, + "https://www.well-typed.com/blog/2015/04/improving-hackage-security": { + "StatusCode": 206, + "LastSeen": "2024-10-05T11:30:00.588698-04:00" + }, + "https://www.youtube.com/embed/8sUqo36IVio": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:51.956767-04:00" + }, + "https://www.youtube.com/embed/Aryr0O6H_2U": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:07.488353-04:00" + }, + "https://www.youtube.com/embed/J0GkcToeDiM": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:17.943154-04:00" + }, + "https://www.youtube.com/embed/SNge7-t4JRE": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:12.761188-04:00" + }, + "https://www.youtube.com/embed/Xuk3BcluYxw": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:02.303006-04:00" + }, + "https://www.youtube.com/embed/Y9Yxst_-Cvg": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:09:57.135182-04:00" + }, + "https://www.youtube.com/watch": { + "StatusCode": 200, + "LastSeen": "2024-10-05T11:10:51.040299-04:00" + } +}