aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-12-02 13:28:39 +0100
committerChristopher Baines <mail@cbaines.net>2019-12-02 13:28:39 +0100
commit332f43e52697305361eb0f9e5e2e438daba8e209 (patch)
tree5f8faad7c97d1d48178e58c2112b0aa8bfce7030
parenta8f1304d1d66a82bed01df63b9b9e207cf5be021 (diff)
downloaddata-service-332f43e52697305361eb0f9e5e2e438daba8e209.tar
data-service-332f43e52697305361eb0f9e5e2e438daba8e209.tar.gz
Add a page for each signing key
-rw-r--r--Makefile.am1
-rw-r--r--guix-data-service/model/nar.scm12
-rw-r--r--guix-data-service/web/build-server/controller.scm10
-rw-r--r--guix-data-service/web/build-server/html.scm34
-rw-r--r--guix-data-service/web/view/html.scm1
5 files changed, 58 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 5bf9570..954b4b9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -100,6 +100,7 @@ SOURCES = \
guix-data-service/web/build/controller.scm \
guix-data-service/web/build/html.scm \
guix-data-service/web/build-server/controller.scm \
+ guix-data-service/web/build-server/html.scm \
guix-data-service/web/jobs/controller.scm \
guix-data-service/web/jobs/html.scm \
guix-data-service/web/query-parameters.scm \
diff --git a/guix-data-service/model/nar.scm b/guix-data-service/model/nar.scm
index 0898ae4..d511658 100644
--- a/guix-data-service/model/nar.scm
+++ b/guix-data-service/model/nar.scm
@@ -10,6 +10,7 @@
#:use-module (guix scripts substitute)
#:use-module (guix-data-service model utils)
#:export (select-outputs-for-successful-builds-without-known-nar-entries
+ select-signing-key
record-narinfo-details-and-return-ids))
@@ -245,3 +246,14 @@ LIMIT 1500"))
(map car (exec-query conn query (list (number->string
build-server-id)))))
+
+(define (select-signing-key conn id)
+ (define query
+ "
+SELECT sexp_json
+FROM narinfo_signature_public_keys
+WHERE id = $1")
+
+ (match (exec-query conn query (list (number->string id)))
+ (((sexp_json))
+ (json-string->scm sexp_json))))
diff --git a/guix-data-service/web/build-server/controller.scm b/guix-data-service/web/build-server/controller.scm
index 3141043..4ac84dd 100644
--- a/guix-data-service/web/build-server/controller.scm
+++ b/guix-data-service/web/build-server/controller.scm
@@ -26,8 +26,10 @@
#:use-module (guix-data-service jobs load-new-guix-revision)
#:use-module (guix-data-service model build)
#:use-module (guix-data-service model build-status)
+ #:use-module (guix-data-service model nar)
#:use-module (guix-data-service model build-server-token-seed)
#:use-module (guix-data-service web jobs html)
+ #:use-module (guix-data-service web build-server html)
#:export (build-server-controller))
(define (handle-build-event-submission parsed-query-parameters
@@ -125,6 +127,11 @@
'((error . "error"))
#:code 403)))))
+(define (handle-signing-key-request conn id)
+ (render-html
+ #:sxml (view-signing-key
+ (select-signing-key conn id))))
+
(define (build-server-controller request
method-and-path-components
mime-types
@@ -142,4 +149,7 @@
body
conn
secret-key-base)))
+ (('GET "build-server" "signing-key" id)
+ (handle-signing-key-request conn
+ (string->number id)))
(_ #f)))
diff --git a/guix-data-service/web/build-server/html.scm b/guix-data-service/web/build-server/html.scm
new file mode 100644
index 0000000..9bb70eb
--- /dev/null
+++ b/guix-data-service/web/build-server/html.scm
@@ -0,0 +1,34 @@
+;;; Guix Data Service -- Information about Guix over time
+;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
+;;;
+;;; This program is free software: you can redistribute it and/or
+;;; modify it under the terms of the GNU Affero General Public License
+;;; as published by the Free Software Foundation, either version 3 of
+;;; the License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public
+;;; License along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+(define-module (guix-data-service web build-server html)
+ #:use-module (guix-data-service web view html)
+ #:use-module (guix-data-service web html-utils)
+ #:export (view-signing-key))
+
+(define (view-signing-key sexp)
+ (layout
+ #:body
+ `(,(header)
+ (div
+ (@ (class "container"))
+ (div
+ (@ (class "row"))
+ (div
+ (@ (class "col-sm-12"))
+ (h2 "Signing key")
+ ,(sexp-div sexp)))))))
diff --git a/guix-data-service/web/view/html.scm b/guix-data-service/web/view/html.scm
index e3afb08..2b0b484 100644
--- a/guix-data-service/web/view/html.scm
+++ b/guix-data-service/web/view/html.scm
@@ -21,6 +21,7 @@
#:use-module (guix-data-service config)
#:use-module (guix-data-service web query-parameters)
#:use-module (guix-data-service web util)
+ #:use-module (guix-data-service web html-utils)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)