From bd12a4ee261dbe407c4b1921a5a811ef46aec9e7 Mon Sep 17 00:00:00 2001 From: Matthew Saunders Brown Date: Thu, 11 Feb 2021 15:07:44 -0800 Subject: [PATCH] alias del works --- bin/vmail-aliases-del.sh | 47 +++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/bin/vmail-aliases-del.sh b/bin/vmail-aliases-del.sh index 8a3b04f..244fbc5 100755 --- a/bin/vmail-aliases-del.sh +++ b/bin/vmail-aliases-del.sh @@ -42,10 +42,6 @@ while getopts "achs" opt; do esac done -dbcmd="mysql --defaults-extra-file=$MYSQL_CONNECTION_INFO_FILE" -dbcmdopts="-e" -dbquery="SELECT vm_aliases.alias, vm_mboxes.mbox, vm_domains.domain FROM vm_aliases, vm_mboxes, vm_domains WHERE vm_aliases.mbox_id = vm_mboxes.id AND vm_mboxes.domain_id = vm_domains.id" - # check for and set alias search term(s) if [ -n "$1" ]; then if [ $1 == "-h" ]; then @@ -57,38 +53,35 @@ if [ -n "$1" ]; then alias=${searchterm%@*} domain=${searchterm##*@} if ! vmail::validate_domain $domain; then - echo "ERROR: $searchterm is not a valid email address." + echo "ERROR: $domain is not a valid domain name." exit 1 fi - elif vmail::validate_domain $searchterm; then - domain=$searchterm else - echo "ERROR: $searchterm is not a valid search term." + echo "ERROR: $searchterm is not a valid email alias." help fi fi fi - - # build query -if [ -n "$domain" ]; then - # add specific domain - dbquery="$dbquery AND vm_domains.domain='$domain'" - if [ -n "$localpart" ]; then - # search for specific alias or mbox - if [ -n "$aliassearch" ]; then - # search for specific alias address - dbquery="$dbquery AND vm_aliases.alias='$localpart'" - else - # search for all aliases for specific email address - dbquery="$dbquery AND vm_mboxes.mbox='$localpart'" - fi - fi +dbcmd="mysql --defaults-extra-file=$MYSQL_CONNECTION_INFO_FILE" +dbcmdopts="-s -r -N -e" + +# get aliases id which also works to confirm alias exists +dbquery="SELECT vm_aliases.id FROM vm_aliases, vm_mboxes, vm_domains WHERE vm_aliases.alias='$alias' AND vm_aliases.mbox_id=vm_mboxes.id AND vm_mboxes.domain_id=vm_domains.id AND vm_domains.domain='$domain'" +vm_aliases_id=`$dbcmd $dbcmdopts "$dbquery"` + +if [ -z "$vm_aliases_id" ]; then + echo "ERROR: Alias $searchterm does not exist." + exit 1 +elif [ "$vm_aliases_id" -gt '0' ]; then + dbquery="DELETE FROM vm_aliases WHERE vm_aliases.id='$vm_aliases_id'" + eval $dbcmd $dbcmdopts "\"$dbquery\"" + echo "SUCCESS: Alias $searchterm removed from system." + exit 0 +else + echo "ERROR: System error querying vmail database" + exit 1 fi -# set order by -dbquery="$dbquery ORDER BY vm_domains.domain, vm_mboxes.mbox, vm_aliases.alias;"; -# execute mysql query -eval $dbcmd $dbcmdopts "\"$dbquery\"" $cvs