>From fe0098082289a2350002da4e2438c41f6385b3e2 Mon Sep 17 00:00:00 2001 From: Amar Singh Date: Wed, 21 Oct 2020 02:02:02 +0530 Subject: [PATCH] guix publish: Provide server's signing key. Published at $(guix-publish-uri)/signing-key.pub Knock yourselves out! Best in industry. Signed-off-by: Amar Singh --- guix/scripts/publish.scm | 18 +++++++++++++++++- tests/publish.scm | 5 +++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index 4eaf961ab2..1741b93309 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson +;;; Copyright © 2020 by Amar M. Singh ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. @@ -686,6 +687,13 @@ to compress or decompress the log file; just return it as-is." (values (response-headers log) log) (not-found request)))) +(define (render-signing-key) + "Render signing key." + (let ((file %public-key-file)) + (values `((content-type . (text/plain (charset . "UTF-8"))) + (x-raw-file . ,file)) + file))) + (define (render-home-page request) "Render the home page." (values `((content-type . (text/html (charset . "UTF-8")))) @@ -699,7 +707,12 @@ to compress or decompress the log file; just return it as-is." (a (@ (href "https://guix.gnu.org/manual/en/html_node/Invoking-guix-publish.html")) (tt "guix publish")) - " speaking. Welcome!"))) + " speaking. Welcome!") + (p "Here is the " + (a (@ (href + "signing-key.pub")) + (tt "signing key")) + " for this server. Knock yourselves out!"))) port))))) (define (extract-narinfo-hash str) @@ -918,6 +931,9 @@ methods, return the applicable compression." ;; / ((or () ("index.html")) (render-home-page request)) + ;; guix signing-key + (("signing-key.pub") + (render-signing-key)) ;; /.narinfo (((= extract-narinfo-hash (? string? hash))) (if cache diff --git a/tests/publish.scm b/tests/publish.scm index 1c3b2785fb..13f667aa7e 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson +;;; Copyright © 2020 by Amar M. Singh ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. @@ -613,6 +614,10 @@ References: ~%" (let ((uri (publish-uri "/log/does-not-exist"))) (response-code (http-get uri)))) +(test-equal "/signing-key.pub" + 200 + (response-code (http-get (publish-uri "/signing-key.pub")))) + (test-equal "non-GET query" '(200 404) (let ((path (string-append "/" (store-path-hash-part %item) -- 2.28.0