diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-10-17 14:52:14 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-10-21 09:45:14 +0200 |
commit | 1dc4802d231bf4083d387a6db0765730075cc752 (patch) | |
tree | 1dde8889f49ebeb7652d89bd1af8428480532201 /guix/vkraus/services/disfluid.scm | |
parent | 7debf052567f50d2c2510d80405069e53b0971bf (diff) |
Use the endpoint API
Diffstat (limited to 'guix/vkraus/services/disfluid.scm')
-rw-r--r-- | guix/vkraus/services/disfluid.scm | 450 |
1 files changed, 53 insertions, 397 deletions
diff --git a/guix/vkraus/services/disfluid.scm b/guix/vkraus/services/disfluid.scm index 21adca2..66a13fe 100644 --- a/guix/vkraus/services/disfluid.scm +++ b/guix/vkraus/services/disfluid.scm @@ -28,382 +28,71 @@ #:use-module (ice-9 match) #:use-module (ice-9 optargs)) -(define-record-type* <disfluid-issuer-configuration> - disfluid-issuer-configuration - make-disfluid-issuer-configuration - disfluid-issuer-configuration? - (disfluid disfluid-issuer-configuration-disfluid - (default disfluid)) +(define-record-type* <disfluid-configuration> + disfluid-configuration + make-disfluid-configuration + disfluid-configuration? + (disfluid disfluid-configuration-disfluid + (default disfluid)) (complete-corresponding-source - disfluid-issuer-configuration-complete-corresponding-source) - (issuer disfluid-issuer-configuration-issuer) - (key-file disfluid-issuer-configuration-key-file) - (subject disfluid-issuer-configuration-subject) - (encrypted-password-file disfluid-issuer-configuration-encrypted-password-file) - (jwks-uri disfluid-issuer-configuration-jwks-uri) - (authorization-endpoint-uri - disfluid-issuer-configuration-authorization-endpoint-uri) - (token-endpoint-uri - disfluid-issuer-configuration-token-endpoint-uri) + disfluid-configuration-complete-corresponding-source) + (configuration disfluid-configuration-configuration) (port disfluid-issuer-configuration-port (default 8088)) (extra-options disfluid-issuer-configuration-extra-options (default '()))) -(define-record-type* <disfluid-reverse-proxy-configuration> - disfluid-reverse-proxy-configuration - make-disfluid-reverse-proxy-configuration - disfluid-reverse-proxy-configuration? - (disfluid disfluid-reverse-proxy-configuration-disfluid - (default disfluid)) - (complete-corresponding-source - disfluid-reverse-proxy-configuration-complete-corresponding-source) - (port disfluid-reverse-proxy-port (default 8090)) - (inbound-uri disfluid-reverse-proxy-configuration-inbound-uri) - (outbound-uri disfluid-reverse-proxy-configuration-outbound-uri) - (header disfluid-reverse-proxy-configuration-header - (default "XXX-Agent")) - (extra-options - disfluid-reverse-proxy-extra-options - (default '()))) - -(define-record-type* <disfluid-hello-configuration> - disfluid-hello-configuration - make-disfluid-hello-configuration - disfluid-hello-configuration? - (disfluid disfluid-hello-configuration-disfluid - (default disfluid)) - (complete-corresponding-source - disfluid-hello-configuration-complete-corresponding-source) - (port disfluid-hello-configuration-port (default 8089)) - (extra-options - disfluid-hello-configuration-extra-options - (default '()))) - -(define-record-type* <disfluid-client-service-configuration> - disfluid-client-service-configuration - make-disfluid-client-service-configuration - disfluid-client-service-configuration? - (disfluid disfluid-client-service-configuration-disfluid - (default disfluid)) - (complete-corresponding-source - disfluid-client-service-configuration-complete-corresponding-source) - (client-id disfluid-client-service-configuration-client-id) - (redirect-uri disfluid-client-service-configuration-redirect-uri) - (client-name disfluid-client-service-configuration-client-name (default "Example Solid App")) - (client-uri disfluid-client-service-configuration-client-uri (default "https://webid-oidc.planete-kraus.eu/Running-a-client.html#Running-a-client")) - (port disfluid-client-service-configuration-port (default 8088)) - (extra-options - disfluid-client-service-configuration-extra-options - (default '()))) - -(define-record-type* <disfluid-server-configuration> - disfluid-server-configuration - make-disfluid-server-configuration - disfluid-server-configuration? - (disfluid disfluid-server-configuration-disfluid - (default disfluid)) - (complete-corresponding-source - disfluid-server-configuration-complete-corresponding-source) - (server-name disfluid-server-configuration-server-name) - (key-file disfluid-server-configuration-key-file) - (subject disfluid-server-configuration-subject) - (encrypted-password-file disfluid-server-configuration-encrypted-password-file) - (jwks-uri disfluid-server-configuration-jwks-uri) - (authorization-endpoint-uri - disfluid-server-configuration-authorization-endpoint-uri) - (token-endpoint-uri - disfluid-server-configuration-token-endpoint-uri) - (port disfluid-server-configuration-port (default 8088)) - (extra-options - disfluid-issuer-configuration-extra-options - (default '()))) - -(export <disfluid-issuer-configuration> - disfluid-issuer-configuration - make-disfluid-issuer-configuration - disfluid-issuer-configuration? - disfluid-issuer-configuration-disfluid - disfluid-issuer-configuration-complete-corresponding-source - disfluid-issuer-configuration-issuer - disfluid-issuer-configuration-key-file - disfluid-issuer-configuration-subject - disfluid-issuer-configuration-encrypted-password-file - disfluid-issuer-configuration-jwks-uri - disfluid-issuer-configuration-authorization-endpoint-uri - disfluid-issuer-configuration-token-endpoint-uri +(export <disfluid-configuration> + disfluid-configuration + make-disfluid-configuration + disfluid-configuration? + disfluid-configuration-disfluid + disfluid-configuration-complete-corresponding-source + disfluid-configuration-configuration disfluid-issuer-configuration-port - disfluid-issuer-configuration-extra-options - <disfluid-reverse-proxy-configuration> - disfluid-reverse-proxy-configuration - make-disfluid-reverse-proxy-configuration - disfluid-reverse-proxy-configuration? - disfluid-reverse-proxy-configuration-disfluid - disfluid-reverse-proxy-configuration-complete-corresponding-source - disfluid-reverse-proxy-configuration-port - disfluid-reverse-proxy-configuration-inbound-uri - disfluid-reverse-proxy-configuration-outbound-uri - disfluid-reverse-proxy-configuration-header - disfluid-reverse-proxy-configuration-extra-options - <disfluid-hello-configuration> - disfluid-hello-configuration - make-disfluid-hello-configuration - disfluid-hello-configuration? - disfluid-hello-configuration-disfluid - disfluid-hello-configuration-complete-corresponding-source - disfluid-hello-configuration-port - disfluid-hello-configuration-extra-options - <disfluid-client-service-configuration> - disfluid-client-service-configuration - make-disfluid-client-service-configuration - disfluid-client-service-configuration? - disfluid-client-service-configuration-disfluid - disfluid-client-service-configuration-complete-corresponding-source - disfluid-client-service-configuration-client-id - disfluid-client-service-configuration-redirect-uri - disfluid-client-service-configuration-client-name - disfluid-client-service-configuration-client-uri - disfluid-client-service-configuration-port - disfluid-client-service-configuration-extra-options - <disfluid-server-configuration> - disfluid-server-configuration - make-disfluid-server-configuration - disfluid-server-configuration? - disfluid-server-configuration-disfluid - disfluid-server-configuration-complete-corresponding-source - disfluid-server-configuration-server-name - disfluid-server-configuration-key-file - disfluid-server-configuration-subject - disfluid-server-configuration-encrypted-password-file - disfluid-server-configuration-jwks-uri - disfluid-server-configuration-authorization-endpoint-uri - disfluid-server-configuration-token-endpoint-uri - disfluid-server-configuration-port - disfluid-server-configuration-extra-options) + disfluid-issuer-configuration-extra-options) (define configuration->shepherd-service (match-lambda - ((id . ($ <disfluid-issuer-configuration> - disfluid ccs issuer key-file subject encrypted-password-file jwks-uri - authorization-endpoint-uri token-endpoint-uri port extra-options)) - `(,(shepherd-service - (provision (list (string->symbol (format #f "disfluid-~a" id)))) - (documentation (format #f "Run a Solid identity provider (~a)" id)) - (requirement '(user-processes)) - (modules '((gnu build shepherd) - (gnu system file-systems))) - (start - (with-imported-modules - (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - #~(begin - (let* ((user (getpwnam "disfluid")) - (prepare-directory - (lambda (dir) - (mkdir-p dir) - (chown dir (passwd:uid user) (passwd:gid user)) - (chmod dir #o700)))) - (prepare-directory "/var/log/disfluid") - (prepare-directory #$(format #f "/var/lib/disfluid/~a" id)) - (prepare-directory #$(format #f "/var/cache/disfluid/~a" id))) - (make-forkexec-constructor - (list - (string-append #$disfluid "/bin/disfluid") - "identity-provider" - "-S" #$ccs - "-n" #$issuer - "-k" #$key-file - "-s" #$subject - "-W" #$encrypted-password-file - "-j" #$jwks-uri - "-a" #$authorization-endpoint-uri - "-t" #$token-endpoint-uri - "-p" (with-output-to-string (lambda () (display #$port))) - "-l" #$(format #f "issuer-~a.log" id) - "-e" #$(format #f "issuer-~a.err" id) - #$@extra-options) - #:user "disfluid" - #:group "disfluid" - #:directory "/var/log/disfluid" - #:environment-variables - '(#$(format #f "XDG_DATA_HOME=/var/lib/disfluid/~a" id) - #$(format #f "XDG_CACHE_HOME=/var/cache/disfluid/~a" id)))))) - (stop #~(make-kill-destructor))))) - ((id . ($ <disfluid-reverse-proxy-configuration> - disfluid ccs port inbound-uri outbound-uri header extra-options)) + (($ <disfluid-configuration> + disfluid ccs configuration port extra-options) `(,(shepherd-service - (provision (list (string->symbol (format #f "disfluid-~a" id)))) - (documentation (format #f "Run a Solid reverse proxy (~a)" id)) + (provision (list 'disfluid)) + (documentation (format #f "Run disfluid")) (requirement '(user-processes)) (modules '((gnu build shepherd) (gnu system file-systems))) (start (with-imported-modules - (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - #~(begin - (let* ((user (getpwnam "disfluid")) - (prepare-directory - (lambda (dir) - (mkdir-p dir) - (chown dir (passwd:uid user) (passwd:gid user)) - (chmod dir #o700)))) - (prepare-directory "/var/log/disfluid") - (prepare-directory #$(format #f "/var/lib/disfluid/~a" id)) - (prepare-directory #$(format #f "/var/cache/disfluid/~a" id))) - (make-forkexec-constructor - (list - (string-append #$disfluid "/bin/disfluid") - "reverse-proxy" - "-S" #$ccs - "-p" (with-output-to-string (lambda () (display #$port))) - "-n" #$inbound-uri - "-b" #$outbound-uri - "-H" #$header - "-l" #$(format #f "reverse-proxy-~a.log" id) - "-e" #$(format #f "reverse-proxy-~a.err" id) - #$@extra-options) - #:user "disfluid" - #:group "disfluid" - #:directory "/var/log/disfluid" - #:environment-variables - '(#$(format #f "XDG_DATA_HOME=/var/lib/disfluid/~a" id) - #$(format #f "XDG_CACHE_HOME=/var/cache/disfluid/~a" id)))))) - (stop #~(make-kill-destructor))))) - ((id . ($ <disfluid-hello-configuration> - disfluid ccs port extra-options)) - `(,(shepherd-service - (provision (list (string->symbol (format #f "disfluid-~a" id)))) - (documentation (format #f "Run a demonstration Solid server (~a)" id)) - (requirement '(user-processes)) - (modules '((gnu build shepherd) - (gnu system file-systems))) - (start - (with-imported-modules - (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - #~(begin - (let* ((user (getpwnam "disfluid")) - (prepare-directory - (lambda (dir) - (mkdir-p dir) - (chown dir (passwd:uid user) (passwd:gid user)) - (chmod dir #o700)))) - (prepare-directory "/var/log/disfluid") - (prepare-directory #$(format #f "/var/lib/disfluid/~a" id)) - (prepare-directory #$(format #f "/var/cache/disfluid/~a" id))) - (make-forkexec-constructor - (list - (string-append #$disfluid "/bin/disfluid-hello") - "-S" #$ccs - "-p" (with-output-to-string (lambda () (display #$port))) - "-l" #$(format #f "hello-~a.log" id) - "-e" #$(format #f "hello-~a.err" id) - #$@extra-options) - #:user "disfluid" - #:group "disfluid" - #:directory "/var/log/disfluid" - #:environment-variables - '(#$(format #f "XDG_DATA_HOME=/var/lib/disfluid/~a" id) - #$(format #f "XDG_CACHE_HOME=/var/cache/disfluid/~a" id)))))) - (stop #~(make-kill-destructor))))) - ((id . ($ <disfluid-client-service-configuration> - disfluid ccs client-id redirect-uri client-name client-uri port - extra-options)) - `(,(shepherd-service - (provision (list (string->symbol (format #f "disfluid-~a" id)))) - (documentation (format #f "Serve the public page for an application (~a)" id)) - (requirement '(user-processes)) - (modules '((gnu build shepherd) - (gnu system file-systems))) - (start - (with-imported-modules - (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - #~(begin - (let* ((user (getpwnam "disfluid")) - (prepare-directory - (lambda (dir) - (mkdir-p dir) - (chown dir (passwd:uid user) (passwd:gid user)) - (chmod dir #o700)))) - (prepare-directory "/var/log/disfluid") - (prepare-directory #$(format #f "/var/lib/disfluid/~a" id)) - (prepare-directory #$(format #f "/var/cache/disfluid/~a" id))) - (make-forkexec-constructor - (list - (string-append #$disfluid "/bin/disfluid") - "client-service" - "-S" #$ccs - "-c" #$client-id - "-r" #$redirect-uri - "-C" #$client-name - "-u" #$client-uri - "-p" (with-output-to-string (lambda () (display #$port))) - "-l" #$(format #f "client-service-~a.log" id) - "-e" #$(format #f "client-service-~a.err" id) - #$@extra-options) - #:user "disfluid" - #:group "disfluid" - #:directory "/var/log/disfluid" - #:environment-variables - '(#$(format #f "XDG_DATA_HOME=/var/lib/disfluid/~a" id) - #$(format #f "XDG_CACHE_HOME=/var/cache/disfluid/~a" id)))))) - (stop #~(make-kill-destructor))))) - ((id . ($ <disfluid-server-configuration> - disfluid ccs server-name key-file subject encrypted-password-file jwks-uri - authorization-endpoint-uri token-endpoint-uri port - extra-options)) - `(,(shepherd-service - (provision (list (string->symbol (format #f "disfluid-~a" id)))) - (documentation (format #f "Run a full server (~a)" id)) - (requirement '(user-processes)) - (modules '((gnu build shepherd) - (gnu system file-systems))) - (start - (with-imported-modules - (source-module-closure - '((gnu build shepherd) - (gnu system file-systems))) - #~(begin - (let* ((user (getpwnam "disfluid")) - (prepare-directory - (lambda (dir) - (mkdir-p dir) - (chown dir (passwd:uid user) (passwd:gid user)) - (chmod dir #o700)))) - (prepare-directory "/var/log/disfluid") - (prepare-directory #$(format #f "/var/lib/disfluid/~a" id)) - (prepare-directory #$(format #f "/var/cache/disfluid/~a" id))) - (make-forkexec-constructor - (list - (string-append #$disfluid "/bin/disfluid") - "server" - "-S" #$ccs - "-n" #$server-name - "-k" #$key-file - "-s" #$subject - "-W" #$encrypted-password-file - "-j" #$jwks-uri - "-a" #$authorization-endpoint-uri - "-t" #$token-endpoint-uri - "-p" (with-output-to-string (lambda () (display #$port))) - "-l" #$(format #f "server-~a.log" id) - "-e" #$(format #f "server-~a.err" id) - #$@extra-options) - #:user "disfluid" - #:group "disfluid" - #:directory "/var/log/disfluid" - #:environment-variables - '(#$(format #f "XDG_DATA_HOME=/var/lib/disfluid/~a" id) - #$(format #f "XDG_CACHE_HOME=/var/cache/disfluid/~a" id)))))) - (stop #~(make-kill-destructor))))) - ((items ...) - (apply append (map configuration->shepherd-service items))))) + (source-module-closure + '((gnu build shepherd) + (gnu system file-systems))) + #~(begin + (let* ((user (getpwnam "disfluid")) + (prepare-directory + (lambda (dir) + (mkdir-p dir) + (chown dir (passwd:uid user) (passwd:gid user)) + (chmod dir #o700)))) + (prepare-directory "/var/log/disfluid") + (prepare-directory "/var/lib/disfluid") + (prepare-directory "/var/cache/disfluid")) + (make-forkexec-constructor + (list + (string-append #$disfluid "/bin/disfluid") + "-S" #$ccs + "-c" #$configuration + "-p" (with-output-to-string (lambda () (display #$port))) + "-l" "server.log" + "-e" "server.err" + #$@extra-options) + #:user "disfluid" + #:group "disfluid" + #:directory "/var/log/disfluid" + #:environment-variables + '("XDG_DATA_HOME=/var/lib/disfluid" + "XDG_CACHE_HOME=/var/cache/disfluid"))))) + (stop #~(make-kill-destructor))))))) (define %disfluid-accounts (list (user-group (name "disfluid") @@ -418,48 +107,15 @@ (define configuration->log-rotation (match-lambda - ((id . ($ <disfluid-issuer-configuration>)) - `(,(log-rotation - (frequency 'daily) - (files - (map (lambda (ext) - (format #f "/var/log/disfluid/issuer-~a.~a" id ext)) - '("log err"))) - (options '("sharedscripts" "storedir /var/log/disfluid"))))) - ((id . ($ <disfluid-reverse-proxy-configuration>)) - `(,(log-rotation - (frequency 'daily) - (files - (map (lambda (ext) - (format #f "/var/log/disfluid/reverse-proxy-~a.~a" id ext)) - '("log err"))) - (options '("sharedscripts" "storedir /var/log/disfluid"))))) - ((id . ($ <disfluid-hello-configuration>)) - `(,(log-rotation - (frequency 'daily) - (files - (map (lambda (ext) - (format #f "/var/log/disfluid/hello-~a.~a" id ext)) - '("log err"))) - (options '("sharedscripts" "storedir /var/log/disfluid"))))) - ((id . ($ <disfluid-client-service-configuration>)) - `(,(log-rotation - (frequency 'daily) - (files - (map (lambda (ext) - (format #f "/var/log/disfluid/client-service-~a.~a" id ext)) - '("log err"))) - (options '("sharedscripts" "storedir /var/log/disfluid"))))) - ((id . ($ <disfluid-server-configuration>)) + (($ <disfluid-configuration> + disfluid ccs configuration port extra-options) `(,(log-rotation (frequency 'daily) (files (map (lambda (ext) - (format #f "/var/log/disfluid/server-~a.~a" id ext)) + (format #f "/var/log/disfluid/server.~a" ext)) '("log err"))) - (options '("sharedscripts" "storedir /var/log/disfluid"))))) - ((items ...) - (apply append (map configuration->log-rotation items))))) + (options '("sharedscripts" "storedir /var/log/disfluid"))))))) (define-public disfluid-service-type (service-type |