Make SQL access to mailman3 configurable.
This commit is contained in:
parent
c7088e3f5d
commit
fde185ff6f
3 changed files with 51 additions and 14 deletions
|
@ -20,3 +20,12 @@ summary-mailto rada@brmlab.cz
|
|||
|
||||
# DokuWiki base directory
|
||||
dokuwiki /var/www
|
||||
|
||||
# New mailman 3.x
|
||||
mailman-version 3
|
||||
|
||||
# Use direct SQL access
|
||||
mailman3-sql 1
|
||||
|
||||
# The path to SQLite3 DB file
|
||||
mailman3-sql-path /var/lib/mailman3/data/mailman.db
|
||||
|
|
|
@ -40,6 +40,8 @@
|
|||
*mailman2-bin*
|
||||
*mailman-version*
|
||||
*mailman3-bin*
|
||||
*mailman3-sql*
|
||||
*mailman3-sql-path*
|
||||
|
||||
load-configuration!
|
||||
)
|
||||
|
@ -105,6 +107,15 @@
|
|||
;; %hackerbase ALL=(list) NOPASSWD:/usr/lib/mailman3/bin/mailman
|
||||
(define =mailman3-bin= "sudo -u list /usr/lib/mailman3/bin/mailman")
|
||||
|
||||
;; A string is the default, gets converted to boolean at the end of
|
||||
;; loading configuration
|
||||
(define *mailman3-sql* (make-parameter #f))
|
||||
(define =mailman3-sql= "0")
|
||||
|
||||
;; The path to SQLite3 DB file
|
||||
(define *mailman3-sql-path* (make-parameter #f))
|
||||
(define =mailman3-sql-path= "mailman.db")
|
||||
|
||||
(define (load-single-configuration! fname)
|
||||
(when (file-exists? fname)
|
||||
(let loop ((lines (read-lines (open-input-file fname))))
|
||||
|
@ -146,6 +157,14 @@
|
|||
((mailman3)
|
||||
(when (not (*mailman3-bin*))
|
||||
(*mailman3-bin* v)))
|
||||
((mailman3-sql)
|
||||
;; Gets to be string? - convert to boolean at the
|
||||
;; end of loading!
|
||||
(when (not (*mailman3-sql*))
|
||||
(*mailman3-sql* v)))
|
||||
((mailman3-sql-path)
|
||||
(when (not (*mailman3-sql-path*))
|
||||
(*mailman3-sql-path* v)))
|
||||
)))
|
||||
(loop (cdr lines)))))))
|
||||
|
||||
|
@ -177,6 +196,11 @@
|
|||
(when (not (*mailman-version*))
|
||||
(*mailman-version* =mailman-version=))
|
||||
(when (not (*mailman3-bin*))
|
||||
(*mailman3-bin* =mailman3-bin=)))
|
||||
(*mailman3-bin* =mailman3-bin=))
|
||||
(when (not (*mailman3-sql*))
|
||||
(*mailman3-sql* =mailman3-sql=))
|
||||
(*mailman3-sql* (not (equal? (*mailman3-sql*) "0")))
|
||||
(when (not (*mailman3-sql-path*))
|
||||
(*mailman3-sql-path* =mailman3-sql-path=)))
|
||||
|
||||
)
|
||||
|
|
|
@ -71,22 +71,26 @@
|
|||
|
||||
;; Returns the list of available lists
|
||||
(define (list-mailman3-lists)
|
||||
(filter
|
||||
identity
|
||||
(map (lambda (line)
|
||||
(let ((sline (string-split line "@")))
|
||||
(if (null? sline)
|
||||
#f
|
||||
(car sline))))
|
||||
(get-mailman3-output-lines "lists" "-q"))))
|
||||
(if (*mailman3-sql*)
|
||||
(list-mailman3-sql-lists)
|
||||
(filter
|
||||
identity
|
||||
(map (lambda (line)
|
||||
(let ((sline (string-split line "@")))
|
||||
(if (null? sline)
|
||||
#f
|
||||
(car sline))))
|
||||
(get-mailman3-output-lines "lists" "-q")))))
|
||||
|
||||
;; Returns the list of members of given list
|
||||
(define (list-mailman3-list-members lst)
|
||||
(sort
|
||||
(get-mailman3-output-lines "members"
|
||||
(format "~A@brmlab.cz" lst)
|
||||
"-e")
|
||||
string-ci<?))
|
||||
(if (*mailman3-sql*)
|
||||
(list-mailman3-sql-list-members lst)
|
||||
(sort
|
||||
(get-mailman3-output-lines "members"
|
||||
(format "~A@brmlab.cz" lst)
|
||||
"-e")
|
||||
string-ci<?)))
|
||||
|
||||
;; Adds given email
|
||||
(define (add-email-to-mailman3-list lst email)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue