Files
ezmlm-management/ezmlm-manage.sh

147 lines
5.2 KiB
Bash
Executable File

#!/bin/bash
########################################################################
# Copyright (C) 2015 Max Mehl <mail@mehl.mx>
########################################################################
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
#
# Interactive script to manage the most used functions of ezmlm-idx.
# Tested on an uberspace.de account.
#
########################################################################
if [ -z "$1" -o "$1" = "--help" ]; then
echo "Usage: $0 <name of list> <directory of list> <.qmail file of list> <domain of list>"
exit 1
fi
LISTNAME=$1
LISTDIR=$2
LISTQMAIL=$3
LISTDOM=$4
echo "> Name of list: $LISTNAME"
echo "> Directory of list: $LISTDIR"
echo "> .qmail file of list: $LISTQMAIL"
echo "> Domain of list: $LISTDOM"
echo "Correct? Enter to continue, Ctrl+C to quit"
read END
helptext() {
echo "Available options:"
echo " +-------------------------------------+"
echo " | h - Print this help |"
echo " | q - Quit |"
echo " | e - Edit ezmlm options |"
echo " | s - Add subscriber |"
echo " | S - Delete subscriber |"
echo " | l - List all subscribers/mods/owner |"
echo " | o - List/Set owner |"
echo " | m - Add moderator |"
echo " | c - Create ezmlm list |"
echo " | d - Delete ezmlm list |"
echo "+--------------------------------------+"
}
helptext
while :
do
#tput clear # Schirm loeschen und Menuetext ausgeben
echo -n "What to do? h for help: "
read INPUT
case $INPUT in
h) helptext
echo "";;
q) echo "Bye!" && exit 1
echo "";;
e) read -p "Please type the desired parameters and arguments. man ezmlm-make for full list of options: " PARS
ezmlm-make -+ $PARS $LISTDIR $LISTQMAIL $LISTNAME $LISTDOM
unset PARS
echo "";;
s) read -p "Email-address(es) of subscriber(s) to add (if multiple addresses, use space to separate): " SUBMAIL
ezmlm-sub $LISTDIR $SUBMAIL
echo "Added $SUBMAIL to $LISTNAME"
unset SUBMAIL
echo "";;
S) read -p "Email-address(es) of subscriber(s) to delete (if multiple addresses, use space to separate): " SUBMAIL
ezmlm-unsub $LISTDIR $SUBMAIL
echo "Unsubscribed $SUBMAIL from $LISTNAME"
unset SUBMAIL
echo "";;
l) echo "All subscribers:" && ezmlm-list $LISTDIR && echo ""
echo "All moderators (ignore T in front of address):" && cat $LISTDIR/mod/subscribers/* && echo -e "\n"
echo "Owner:" && cat $LISTDIR/owner
echo "";;
o) echo "The current owner is: " && cat $LISTDIR/owner
read -p "Would you change the list's owner? [y/n]: " YN
if [ "$YN" = "y" ]; then
read -p "Insert the new owner's email address: " OWNER
ezmlm-make -+ -5 $OWNER $LISTDIR $LISTQMAIL $LISTNAME $LISTDOM
echo "$OWNER is the new owner of $LISTNAME"
else
echo "Owner not changed."
fi
unset YN OWNER
echo "";;
m) read -p "Insert the new moderator's address: " MOD
ezmlm-sub $LISTDIR mod $MOD
echo "$MOD is now a moderator of $LISTNAME"
unset MOD
echo "";;
c) echo "The list will be created with following options you gave with the start of the script:"
echo "> Name of list: $LISTNAME"
echo "> Directory of list: $LISTDIR"
echo "> .qmail file of list: $LISTQMAIL"
echo "> Domain of list: $LISTDOM"
read -p "Are they correct? Type any key to continue, type n to change them separately." YN
if [ "$YN" = "n" ]; then
read -p "> Name of list: " LISTNAME
read -p "> Directory of list: " LISTDIR
read -p "> .qmail file of list: " LISTQMAIL
read -p "> Domain of list: " LISTDOM
else
echo "Options not changed."
fi
PARS="-s -u -f -C /etc/ezmlm/de"
echo "Following parameters will be used for list's creation: $PARS"
read -p "Should they be used? Type any key to continue, type n to change them. man ezmlm-make for all options: " YN
if [ "$YN" = "n" ]; then
read -p "Insert the disired parameters: " PARS
echo "New parameters for list's creation are: $PARS"
else
echo "Parameters not changed."
fi
ezmlm-make $PARS $LISTDIR $LISTQMAIL $LISTNAME $LISTDOM
echo "$LISTNAME has been successfully created."
unset YN PARS
echo "";;
d) read -p "Should the list $LISTNAME really be deleted? .qmail files and the whole directory will be lost after this action! Type y to delete the list." YN
if [ "$YN" = y ]; then
rm $LISTQMAIL
rm $LISTQMAIL-*
rm -rf $LISTDIR
else
echo "Nothing has been deleted."
fi
unset YN
echo "";;
*) echo "Wrong input. Try again!"
echo "";;
esac
done