This commit is contained in:
Jean-François GUILLAUME 2021-11-02 09:07:30 +01:00
parent 5c1dfeb662
commit 9ade8e1e6d
GPG key ID: 38751DAE145EFB5A

View file

@ -1,5 +1,10 @@
(define-module (glicid services openldap) (define-module (glicid services openldap)
#:use-module (glicid packages openldap) #:use-module (glicid packages openldap)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (guix)
#:use-module (guix records)
#:use-module (ice-9 match)
#: export ( #: export (
openldap-configuration openldap-configuration
openldap-configuration? openldap-configuration?
@ -7,69 +12,69 @@
) )
) )
(define-record-type* <openldap-configuration> (define-record-type* <openldap-configuration>
openldap-configuration make-openldap-configuration openldap-configuration make-openldap-configuration
openldap-configuration? openldap-configuration?
(openldap openldap-configuration-openldap ;<package> (openldap openldap-configuration-openldap ;<package>
(default openldap-glicid) (default openldap-glicid)
)
(arguments openldap-configuration-arguments ;list of strings
(default '())
)
(logflags openldap-configuration-logflags ;number
(default "0")
)
(log-file openldap-configuration-log-file ; string
(default "/var/log/slapd.log")
)
(pid-file openldap-configuration-pid-file ; string
(default "/var/run/openldap/slapd.pid")
)
(config-file openldap-configuration-config-file ; string
(default %default-slapd.conf)
)
(schema-dir openldap-configuration-schema-dir ; string
(default '())
)
) )
(define %default-slapd.conf (arguments openldap-configuration-arguments ;list of strings
(plain-file "slapd.conf" " (default '())
# Empty file for test )
")) (logflags openldap-configuration-logflags ;number
(define schema_dir (local-file "ldap_schema" #:recursive? #t)) (default "0")
(define openldap-shepherd-service )
(match-lambda (log-file openldap-configuration-log-file ; string
(($ <openldap-configuration> openldap arguments logflags log-file pid-file config-file schema-dir) (default "/var/log/slapd.log")
(list )
(shepherd-service (pid-file openldap-configuration-pid-file ; string
(provision '(slapd) ) (default "/var/run/openldap/slapd.pid")
(documentation "Run openldap.") )
(requirement '(user-processes)) (config-file openldap-configuration-config-file ; string
(respawn? #f) (default %default-slapd.conf)
(start #~(make-forkexec-constructor )
(list (schema-dir openldap-configuration-schema-dir ; string
#$(file-append openldap-glicid "/libexec/slapd") (default '())
"-h 'ldap:/// ldaps:///'" )
"-d" #$logflags )
"-f" #$config-file (define %default-slapd.conf
) (plain-file "slapd.conf" "
#:pid-file #$pid-file # Empty file for test
)) "))
(stop #~(make-kill-destructor)) (define schema_dir (local-file "ldap_schema" #:recursive? #t))
) (define openldap-shepherd-service
(match-lambda
(($ <openldap-configuration> openldap arguments logflags log-file pid-file config-file schema-dir)
(list
(shepherd-service
(provision '(slapd) )
(documentation "Run openldap.")
(requirement '(user-processes))
(respawn? #f)
(start #~(make-forkexec-constructor
(list
#$(file-append openldap-glicid "/libexec/slapd")
"-h 'ldap:/// ldaps:///'"
"-d" #$logflags
"-f" #$config-file
)
#:pid-file #$pid-file
))
(stop #~(make-kill-destructor))
) )
) )
) )
) )
(define openldap-service-type )
(service-type (name 'slapd) (define openldap-service-type
(extensions (service-type (name 'slapd)
(list ( (extensions
service-extension (list (
shepherd-root-service-type service-extension
openldap-shepherd-service shepherd-root-service-type
)) openldap-shepherd-service
) ))
(description "Run @uref{https://www.openldap.org, Openldap} community developped LDAP software.")
) )
(description "Run @uref{https://www.openldap.org, Openldap} community developped LDAP software.")
) )
)