summaryrefslogtreecommitdiff
path: root/vkraus/services/disfluid.scm
diff options
context:
space:
mode:
Diffstat (limited to 'vkraus/services/disfluid.scm')
-rw-r--r--vkraus/services/disfluid.scm408
1 files changed, 32 insertions, 376 deletions
diff --git a/vkraus/services/disfluid.scm b/vkraus/services/disfluid.scm
index 21adca2..7dbcbb3 100644
--- a/vkraus/services/disfluid.scm
+++ b/vkraus/services/disfluid.scm
@@ -28,339 +28,37 @@
#: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))
- `(,(shepherd-service
- (provision (list (string->symbol (format #f "disfluid-~a" id))))
- (documentation (format #f "Run a Solid reverse proxy (~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")
- "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))
+ ((($ <disfluid-configuration>
+ disfluid ccs configuration port extra-options))
`(,(shepherd-service
- (provision (list (string->symbol (format #f "disfluid-~a" id))))
- (documentation (format #f "Run a full server (~a)" id))
+ (provision (list "disfluid"))
+ (documentation (format #f "Run disfluid"))
(requirement '(user-processes))
(modules '((gnu build shepherd)
(gnu system file-systems)))
@@ -377,33 +75,24 @@
(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)))
+ (prepare-directory "/var/lib/disfluid")
+ (prepare-directory "/var/cache/disfluid"))
(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
+ "-c" #$configuration
"-p" (with-output-to-string (lambda () (display #$port)))
- "-l" #$(format #f "server-~a.log" id)
- "-e" #$(format #f "server-~a.err" id)
+ "-l" "server.log"
+ "-e" "server.err"
#$@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)))))
+ '("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