Import ezmlm-idx 0.40
[ezmlm] / ezmlm-glconf.sh
CommitLineData
f8beb284
MW
1# above should be a definition of EZPATH and the /bin/sh line
2# automatically added at build time.
3#########################################################################
4# Script to build ezmlm-request config file for the global interface
5# Lists are presented in alphabetical order and digest lists are
6# directly after the main list. Digest list info is only that
7# they are digest of the main list. If the -n switch is used,
8# the current number of subscribers is added to the info text.
9#
10# Usage: ezmlm-glconf [-n] dotdir [dotdir1 ...] > config
11# where ``dotdir'' is the directory where the users .qmail files
12# reside (usually ``~''), and ``config'' is the config file for
13# ezmlm-request servicing the global interface.
14#
15# Note: This config file will provide info on all lists available
16# and allow ``which'' for all lists. You may want to edit the
17# output before using it.
18##########################################################################
19
20# Change if you change the name of the command
21NAME='ezmlm-glconf'
22
23# Info text used for list-digest
24DIGTXT='Digest of'
25# ``subscribers'' for stating subscriber number
26SUBTXT='subscribers'
27# Info text if dir/text/info doesn't exist/is not readable
28INFOTXT='No information available'
29
30# Set full path if you use the script as root or if the commands
31# are not in your path.
32HEAD='head'
33TAIL='tail'
34CAT='cat'
35CUT='cut'
36GREP='grep'
37ECHO='echo'
38LS='ls'
39SORT='sort'
40SED='sed'
41WC='wc'
42
43# Nothing more to configure
44##########################################################################
45
46SUB=''
47EZLIST="${EZPATH}/ezmlm-list"
48FATAL="${NAME}: fatal: "
49WARN="${NAME}: warning: "
50USAGE="${NAME} [-n] dotdir [dotdir1 ...] > config"
51
52if [ "$1" = "-n" ]; then
53 shift
54 if [ ! -x "${EZLIST}" ]; then
55 echo "${WARN} ezmlm-list not found. Edit ezmlm binary path."
56 else
57 SUB='yes'
58 fi
59fi
60
61if [ -z "$1" ]; then
62 ${ECHO} "$USAGE"
63 exit 100
64fi
65
66
67(
68while [ -n "$1" ]; do
69 for i in `${LS} $1/.qmail-*-return-default` ; do
70 INFO=''
71 # get list directory
72 if [ -r "$i" ] ; then
73 DIR=`${TAIL} -1 "$i" | ${CUT} -d\' -f2`
74 # only dir that exists
75 if [ -d "$DIR" ] ; then
76 INFOFN="${DIR}/text/info"
77 if [ -r "${INFOFN}" ]; then
78 INFO=`${HEAD} -1 ${INFOFN}`
79 else
80 INFO="$INFOTXT"
81 ${ECHO} "$WARN No info for list in $DIR" 1>&2
82 fi
83
84 OUTLOCAL=`${CAT} $DIR/outlocal`
85 OUTHOST=`${CAT} $DIR/outhost`
86 if [ -z "$SUB" ]; then
87 SUBN=''
88 else
89 NO=`${EZLIST} ${DIR} | ${WC} -l |${SED} 's/ //g'`
90 SUBN=" (${NO} ${SUBTXT})"
91 fi
92 ${ECHO} "$i" | ${GREP} 'digest-return' >/dev/null && \
93 { INFO="${DIGTXT} $OUTLOCAL@$OUTHOST."; \
94 OUTLOCAL="${OUTLOCAL}~digest" ; }
95 ${ECHO} "$OUTLOCAL@$OUTHOST:$DIR:${INFO}${SUBN}"
96 else
97 ${ECHO} "$WARN $DIR not readable - list ignored" 1>&2
98 fi
99 else
100 ${ECHO} "$WARN $i ignored: doesn't point to readable file" 1>&2
101 fi
102 done ;
103 shift
104done;
105) | ${SORT} | ${SED} 's/~digest@/-digest@/'
106 # list-digest after list
107 # "~"-cludge needed to get order right