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 base directory
|
||||||
dokuwiki /var/www
|
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*
|
*mailman2-bin*
|
||||||
*mailman-version*
|
*mailman-version*
|
||||||
*mailman3-bin*
|
*mailman3-bin*
|
||||||
|
*mailman3-sql*
|
||||||
|
*mailman3-sql-path*
|
||||||
|
|
||||||
load-configuration!
|
load-configuration!
|
||||||
)
|
)
|
||||||
|
@ -105,6 +107,15 @@
|
||||||
;; %hackerbase ALL=(list) NOPASSWD:/usr/lib/mailman3/bin/mailman
|
;; %hackerbase ALL=(list) NOPASSWD:/usr/lib/mailman3/bin/mailman
|
||||||
(define =mailman3-bin= "sudo -u list /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)
|
(define (load-single-configuration! fname)
|
||||||
(when (file-exists? fname)
|
(when (file-exists? fname)
|
||||||
(let loop ((lines (read-lines (open-input-file fname))))
|
(let loop ((lines (read-lines (open-input-file fname))))
|
||||||
|
@ -146,6 +157,14 @@
|
||||||
((mailman3)
|
((mailman3)
|
||||||
(when (not (*mailman3-bin*))
|
(when (not (*mailman3-bin*))
|
||||||
(*mailman3-bin* v)))
|
(*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)))))))
|
(loop (cdr lines)))))))
|
||||||
|
|
||||||
|
@ -177,6 +196,11 @@
|
||||||
(when (not (*mailman-version*))
|
(when (not (*mailman-version*))
|
||||||
(*mailman-version* =mailman-version=))
|
(*mailman-version* =mailman-version=))
|
||||||
(when (not (*mailman3-bin*))
|
(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
|
;; Returns the list of available lists
|
||||||
(define (list-mailman3-lists)
|
(define (list-mailman3-lists)
|
||||||
(filter
|
(if (*mailman3-sql*)
|
||||||
identity
|
(list-mailman3-sql-lists)
|
||||||
(map (lambda (line)
|
(filter
|
||||||
(let ((sline (string-split line "@")))
|
identity
|
||||||
(if (null? sline)
|
(map (lambda (line)
|
||||||
#f
|
(let ((sline (string-split line "@")))
|
||||||
(car sline))))
|
(if (null? sline)
|
||||||
(get-mailman3-output-lines "lists" "-q"))))
|
#f
|
||||||
|
(car sline))))
|
||||||
|
(get-mailman3-output-lines "lists" "-q")))))
|
||||||
|
|
||||||
;; Returns the list of members of given list
|
;; Returns the list of members of given list
|
||||||
(define (list-mailman3-list-members lst)
|
(define (list-mailman3-list-members lst)
|
||||||
(sort
|
(if (*mailman3-sql*)
|
||||||
(get-mailman3-output-lines "members"
|
(list-mailman3-sql-list-members lst)
|
||||||
(format "~A@brmlab.cz" lst)
|
(sort
|
||||||
"-e")
|
(get-mailman3-output-lines "members"
|
||||||
string-ci<?))
|
(format "~A@brmlab.cz" lst)
|
||||||
|
"-e")
|
||||||
|
string-ci<?)))
|
||||||
|
|
||||||
;; Adds given email
|
;; Adds given email
|
||||||
(define (add-email-to-mailman3-list lst email)
|
(define (add-email-to-mailman3-list lst email)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue