Use color variables instead of escape codes (#2565)

This commit is contained in:
Casper 2022-05-10 17:50:33 +02:00 committed by GitHub
parent 66949604a2
commit 372e3fe35e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 88 additions and 78 deletions

View file

@ -7,24 +7,24 @@ DATABASE='/tmp/docker-mailserver/postfix-virtual.cf'
function __usage function __usage
{ {
printf "\e[35mADDALIAS\e[31m(\e[93m8\e[31m) printf '%s' "${PURPLE}ADDALIAS${RED}(${YELLOW}8${RED})
\e[38;5;214mNAME\e[39m ${ORANGE}NAME${RESET}
addalias - add an email alias for an existing user addalias - add an email alias for an existing user
\e[38;5;214mSYNOPSIS\e[39m ${ORANGE}SYNOPSIS${RESET}
./setup.sh alias add <EMAIL ADDRESS> <RECIPIENT> ./setup.sh alias add <EMAIL ADDRESS> <RECIPIENT>
\e[38;5;214mOPTIONS\e[39m ${ORANGE}OPTIONS${RESET}
\e[94mGeneric Program Information\e[39m ${BLUE}Generic Program Information${RESET}
help Print the usage information. help Print the usage information.
\e[38;5;214mEXAMPLES\e[39m ${ORANGE}EXAMPLES${RESET}
\e[37m./setup.sh alias add alias-for-me@domain.tld admin@domain.tld\e[39m ${LWHITE}./setup.sh alias add alias-for-me@domain.tld admin@domain.tld${RESET}
Add the alias alias-for-me@doamin.tld for the existing user Add the alias alias-for-me@doamin.tld for the existing user
admin@domain.tld. admin@domain.tld.
\e[38;5;214mEXIT STATUS\e[39m ${ORANGE}EXIT STATUS${RESET}
Exit status is 0 if command was successful. If wrong arguments are provided Exit status is 0 if command was successful. If wrong arguments are provided
or arguments contain errors, the script will exit early with exit status 1. or arguments contain errors, the script will exit early with exit status 1.

View file

@ -9,24 +9,24 @@ DATABASE='/tmp/docker-mailserver/postfix-accounts.cf'
function __usage function __usage
{ {
printf "\e[35mADDMAILUSER\e[31m(\e[93m8\e[31m) printf '%s' "${PURPLE}ADDMAILUSER${RED}(${YELLOW}8${RED})
\e[38;5;214mNAME\e[39m ${ORANGE}NAME${RESET}
addmailuser - add an email address (i.e. a user) addmailuser - add an email address (i.e. a user)
\e[38;5;214mSYNOPSIS\e[39m ${ORANGE}SYNOPSIS${RESET}
./setup.sh email add <EMAIL ADDRESS> [<PASSWORD>] ./setup.sh email add <EMAIL ADDRESS> [<PASSWORD>]
\e[38;5;214mOPTIONS\e[39m ${ORANGE}OPTIONS${RESET}
\e[94mGeneric Program Information\e[39m ${BLUE}Generic Program Information${RESET}
help Print the usage information. help Print the usage information.
\e[38;5;214mEXAMPLES\e[39m ${ORANGE}EXAMPLES${RESET}
\e[37m./setup.sh email add test@domain.tld\e[39m ${LWHITE}./setup.sh email add test@domain.tld${RESET}
Add the email account test@domain.tld. You will be prompted Add the email account test@domain.tld. You will be prompted
to input a password afterwards since no password was supplied. to input a password afterwards since no password was supplied.
\e[38;5;214mEXIT STATUS\e[39m ${ORANGE}EXIT STATUS${RESET}
Exit status is 0 if command was successful. If wrong arguments are provided Exit status is 0 if command was successful. If wrong arguments are provided
or arguments contain errors, the script will exit early with exit status 1. or arguments contain errors, the script will exit early with exit status 1.

View file

@ -7,19 +7,19 @@ DATABASE='/tmp/docker-mailserver/postfix-relaymap.cf'
function __usage function __usage
{ {
printf "\e[35mADDRELAYHOST\e[31m(\e[93m8\e[31m) printf '%s' "${PURPLE}ADDRELAYHOST${RED}(${YELLOW}8${RED})
\e[38;5;214mNAME\e[39m ${ORANGE}NAME${RESET}
addrelayhost - add an relay host addrelayhost - add an relay host
\e[38;5;214mSYNOPSIS\e[39m ${ORANGE}SYNOPSIS${RESET}
./setup.sh relay add-domain <DOMAIN> <HOST> [<PORT>] ./setup.sh relay add-domain <DOMAIN> <HOST> [<PORT>]
\e[38;5;214mOPTIONS\e[39m ${ORANGE}OPTIONS${RESET}
\e[94mGeneric Program Information\e[39m ${BLUE}Generic Program Information${RESET}
help Print the usage information. help Print the usage information.
\e[38;5;214mEXIT STATUS\e[39m ${ORANGE}EXIT STATUS${RESET}
Exit status is 0 if command was successful. If wrong arguments are provided Exit status is 0 if command was successful. If wrong arguments are provided
or arguments contain errors, the script will exit early with exit status 1. or arguments contain errors, the script will exit early with exit status 1.

View file

@ -15,34 +15,34 @@ MAILDEL='false'
function __usage function __usage
{ {
echo -e "\e[35mDELMAILUSER\e[31m(\e[93m8\e[31m) printf '%s' "${PURPLE}DELMAILUSER${RED}(${YELLOW}8${RED})
\e[38;5;214mNAME\e[39m ${ORANGE}NAME${RESET}
delmailuser - delete a user and related data delmailuser - delete a user and related data
\e[38;5;214mSYNOPSIS\e[39m ${ORANGE}SYNOPSIS${RESET}
./setup.sh email del [ OPTIONS ] { <MAIL ADDRESS> [<MAIL ADDRESS>\e[31m...\e[39m] \e[31m|\e[39m help } ./setup.sh email del [ OPTIONS ] { <MAIL ADDRESS> [<MAIL ADDRESS>${RED}...${RESET}] ${RED}|${RESET} help }
\e[38;5;214mDESCRIPTION\e[39m ${ORANGE}DESCRIPTION${RESET}
Delete a mail user, aliases, quotas and mail data. Delete a mail user, aliases, quotas and mail data.
\e[38;5;214mOPTIONS\e[39m ${ORANGE}OPTIONS${RESET}
-y -y
Indicate that \e[1mall mail data\e[22m is to be deleted without another prompt. Indicate that ${LWHITE}all mail data${RESET} is to be deleted without another prompt.
-h -h
Show this help dialogue. Show this help dialogue.
\e[38;5;214mEXAMPLES\e[39m ${ORANGE}EXAMPLES${RESET}
\e[37m./setup.sh email del woohoo@some-domain.org\e[39m ${LWHITE}./setup.sh email del woohoo@some-domain.org${RESET}
Delete the mail user, quotas and aliases, but ask Delete the mail user, quotas and aliases, but ask
again whether mailbox data should be deleted. again whether mailbox data should be deleted.
\e[37m./setup.sh email del -y test@domain.com test@domain.com\e[39m ${LWHITE}./setup.sh email del -y test@domain.com test@domain.com${RESET}
Delete all mail data for the users 'test' and do not Delete all mail data for the users 'test' and do not
prompt to ask if all mail data should be deleted. prompt to ask if all mail data should be deleted.
\e[38;5;214mEXIT STATUS\e[39m ${ORANGE}EXIT STATUS${RESET}
Exit status is 0 if command was successful, and 1 if there was an error. Exit status is 0 if command was successful, and 1 if there was an error.
" "
} }

View file

@ -9,42 +9,42 @@ DOMAINS=
function __usage function __usage
{ {
printf "\e[35mOPEN-DKIM\e[31m(\e[93m8\e[31m) printf '%s' "${PURPLE}OPEN-DKIM${RED}(${YELLOW}8${RED})
\e[38;5;214mNAME\e[39m ${ORANGE}NAME${RESET}
open-dkim - configure DomainKeys Identified Mail (DKIM) open-dkim - configure DomainKeys Identified Mail (DKIM)
\e[38;5;214mSYNOPSIS\e[39m ${ORANGE}SYNOPSIS${RESET}
./setup.sh config dkim [ OPTIONS\e[31m...\e[39m ] ./setup.sh config dkim [ OPTIONS${RED}...${RESET} ]
\e[38;5;214mDESCRIPTION\e[39m ${ORANGE}DESCRIPTION${RESET}
Configures DKIM keys. OPTIONS can be used to configure a more complex setup. Configures DKIM keys. OPTIONS can be used to configure a more complex setup.
LDAP setups require these options. LDAP setups require these options.
\e[38;5;214mOPTIONS\e[39m ${ORANGE}OPTIONS${RESET}
\e[94mGeneric Program Information\e[39m ${BLUE}Generic Program Information${RESET}
help Print the usage information. help Print the usage information.
\e[94mConfiguration adjustments\e[39m ${BLUE}Configuration adjustments${RESET}
keysize Set the size of the keys to be generated. Possible are 1024, 2024 and 4096 (default). keysize Set the size of the keys to be generated. Possible are 1024, 2024 and 4096 (default).
selector Set a manual selector (default is 'mail') for the key. (\e[96mATTENTION\e[39m: NOT IMPLEMENTED YET!) selector Set a manual selector (default is 'mail') for the key. (${LCYAN}ATTENTION${RESET}: NOT IMPLEMENTED YET!)
domain Provide the domain(s) for which keys are to be generated. domain Provide the domain(s) for which keys are to be generated.
\e[38;5;214mEXAMPLES\e[39m ${ORANGE}EXAMPLES${RESET}
\e[37m./setup.sh config dkim keysize 2048\e[39m ${LWHITE}./setup.sh config dkim keysize 2048${RESET}
Creates keys of length 2048 bit in a default setup where domains are obtained from Creates keys of length 2048 bit in a default setup where domains are obtained from
your accounts. your accounts.
\e[37m./setup.sh config dkim keysize 2048 selector 2021-dkim\e[39m ${LWHITE}./setup.sh config dkim keysize 2048 selector 2021-dkim${RESET}
Creates keys of length 2048 bit in a default setup where domains are obtained from Creates keys of length 2048 bit in a default setup where domains are obtained from
your accounts. The DKIM selector used is '2021-dkim'. your accounts. The DKIM selector used is '2021-dkim'.
\e[37m./setup.sh config dkim keysize 2048 selector 2021-dkim domain 'whoami.com,whoareyou.org'\e[39m ${LWHITE}./setup.sh config dkim keysize 2048 selector 2021-dkim domain 'whoami.com,whoareyou.org'${RESET}
Appropriate for an LDAP setup. Creates keys of length 2048 bit in a default setup Appropriate for an LDAP setup. Creates keys of length 2048 bit in a default setup
where domains are obtained from your accounts. The DKIM selector used is '2021-dkim'. where domains are obtained from your accounts. The DKIM selector used is '2021-dkim'.
The domains for which DKIM keys are generated are 'whoami.com' and 'whoareyou.org'. The domains for which DKIM keys are generated are 'whoami.com' and 'whoareyou.org'.
\e[38;5;214mEXIT STATUS\e[39m ${ORANGE}EXIT STATUS${RESET}
Exit status is 0 if command was successful. If wrong arguments are provided or arguments contain Exit status is 0 if command was successful. If wrong arguments are provided or arguments contain
errors, the script will exit early with exit status 2. errors, the script will exit early with exit status 2.

View file

@ -4,20 +4,13 @@ SCRIPT='setup'
set -euE -o pipefail set -euE -o pipefail
# shellcheck source=../scripts/helpers/index.sh
source /usr/local/bin/helpers/index.sh
function _usage function _usage
{ {
local WHITE="\e[37m"
local RED="\e[31m"
local PURPLE="\e[35m"
local YELLOW="\e[93m"
local ORANGE="\e[38;5;214m"
local CYAN="\e[96m"
local BLUE="\e[34m"
local LBLUE="\e[94m"
local RESET="\e[0m"
# shellcheck disable=SC2059 # shellcheck disable=SC2059
printf "${PURPLE}SETUP${RED}(${YELLOW}1${RED}) printf '%s' "${PURPLE}SETUP${RED}(${YELLOW}1${RED})
${ORANGE}NAME${RESET} ${ORANGE}NAME${RESET}
${SCRIPT:-${0}} - 'docker-mailserver' Administration & Configuration script ${SCRIPT:-${0}} - 'docker-mailserver' Administration & Configuration script
@ -35,12 +28,12 @@ ${ORANGE}DESCRIPTION${RESET}
If it cannot find a running 'docker-mailserver' container, it will attempt to run one using If it cannot find a running 'docker-mailserver' container, it will attempt to run one using
any available tags which include 'label=org.opencontainers.image.title=\"docker-mailserver\"' any available tags which include 'label=org.opencontainers.image.title=\"docker-mailserver\"'
and then run the necessary commands. If the tag for the container is not found, this script and then run the necessary commands. If the tag for the container is not found, this script
will pull the '${WHITE}:latest${RESET}' tag of '${WHITE}docker.io/mailserver/docker-mailserver${RESET}'. will pull the '${LWHITE}:latest${RESET}' tag of '${LWHITE}docker.io/mailserver/docker-mailserver${RESET}'.
This tag refers to the latest release, see the tagging convention in the README under: This tag refers to the latest release, see the tagging convention in the README under:
${BLUE}https://github.com/docker-mailserver/docker-mailserver/blob/master/README.md${RESET} ${BLUE}https://github.com/docker-mailserver/docker-mailserver/blob/master/README.md${RESET}
You will be able to see detailed information about the script you're invoking and their You will be able to see detailed information about the script you're invoking and their
arguments by appending '${WHITE}help${RESET}' after your command. Currently, this does not work with all scripts. arguments by appending '${LWHITE}help${RESET}' after your command. Currently, this does not work with all scripts.
${RED}[${ORANGE}SUB${RED}]${ORANGE}COMMANDS${RESET} ${RED}[${ORANGE}SUB${RED}]${ORANGE}COMMANDS${RESET}
${LBLUE}COMMAND${RESET} email ${RED}:=${RESET} ${LBLUE}COMMAND${RESET} email ${RED}:=${RESET}
@ -84,16 +77,16 @@ ${RED}[${ORANGE}SUB${RED}]${ORANGE}COMMANDS${RESET}
${0} debug ${CYAN}show-mail-logs${RESET} ${0} debug ${CYAN}show-mail-logs${RESET}
${ORANGE}EXAMPLES${RESET} ${ORANGE}EXAMPLES${RESET}
${WHITE}./setup.sh email add test@example.com${RESET} ${LWHITE}./setup.sh email add test@example.com${RESET}
Add the email account ${WHITE}test@example.com${RESET}. You will be prompted Add the email account ${LWHITE}test@example.com${RESET}. You will be prompted
to input a password afterwards since no password was supplied. to input a password afterwards since no password was supplied.
${WHITE}./setup.sh config dkim keysize 2048 domain 'example.com,not-example.com'${RESET} ${LWHITE}./setup.sh config dkim keysize 2048 domain 'example.com,not-example.com'${RESET}
Creates keys of length 2048 but in an LDAP setup where domains are not known to Creates keys of length 2048 but in an LDAP setup where domains are not known to
Postfix by default, so you need to provide them yourself in a comma-separated list. Postfix by default, so you need to provide them yourself in a comma-separated list.
${WHITE}./setup.sh config dkim help${RESET} ${LWHITE}./setup.sh config dkim help${RESET}
This will provide you with a detailed explanation on how to use the ${WHITE} This will provide you with a detailed explanation on how to use the ${LWHITE}
config dkim${RESET} command, showing what arguments can be passed and what they do. config dkim${RESET} command, showing what arguments can be passed and what they do.
" "

View file

@ -1,11 +1,28 @@
#! /bin/bash #! /bin/bash
LOG_RESET='\e[0m' # shellcheck disable=SC2291 # Quote repeated spaces to avoid them collapsing into one.
LOG_LGRAY='\e[37m' # shellcheck disable=SC2034 # VAR appears unused.
LOG_LBLUE='\e[94m'
LOG_BLUE='\e[34m' # Color variables for global usage
LOG_LYELLOW='\e[93m' RED=$(echo -ne '\e[0;31m')
LOG_RED='\e[91m' GREEN=$(echo -ne '\e[0;32m')
YELLOW=$(echo -ne '\e[0;33m')
BLUE=$(echo -ne '\e[0;34m')
PURPLE=$(echo -ne '\e[0;35m')
CYAN=$(echo -ne '\e[0;36m')
WHITE=$(echo -ne '\e[0;37m')
# Light/bold variants
LRED=$(echo -ne '\e[1;31m')
LGREEN=$(echo -ne '\e[1;32m')
LYELLOW=$(echo -ne '\e[1;33m')
LBLUE=$(echo -ne '\e[1;34m')
LPURPLE=$(echo -ne '\e[1;35m')
LCYAN=$(echo -ne '\e[1;36m')
LWHITE=$(echo -ne '\e[1;37m')
ORANGE=$(echo -ne '\e[38;5;214m')
RESET=$(echo -ne '\e[0m')
# ### DMS Logging Functionality # ### DMS Logging Functionality
# #
@ -40,7 +57,7 @@ function _log
fi fi
local MESSAGE LEVEL_AS_INT LOG_LEVEL_FALLBACK local MESSAGE LEVEL_AS_INT LOG_LEVEL_FALLBACK
MESSAGE="${LOG_RESET}[" MESSAGE="${RESET}["
if [[ -e /etc/dms-settings ]] if [[ -e /etc/dms-settings ]]
then then
@ -61,27 +78,27 @@ function _log
case "${1}" in case "${1}" in
( 'trace' ) ( 'trace' )
[[ ${LEVEL_AS_INT} -ge 5 ]] || return 0 [[ ${LEVEL_AS_INT} -ge 5 ]] || return 0
MESSAGE+=" ${LOG_LGRAY}TRACE " MESSAGE+=" ${LGRAY}TRACE "
;; ;;
( 'debug' ) ( 'debug' )
[[ ${LEVEL_AS_INT} -ge 4 ]] || return 0 [[ ${LEVEL_AS_INT} -ge 4 ]] || return 0
MESSAGE+=" ${LOG_LBLUE}DEBUG " MESSAGE+=" ${LBLUE}DEBUG "
;; ;;
( 'info' ) ( 'info' )
[[ ${LEVEL_AS_INT} -ge 3 ]] || return 0 [[ ${LEVEL_AS_INT} -ge 3 ]] || return 0
MESSAGE+=" ${LOG_BLUE}INF " MESSAGE+=" ${BLUE}INF "
;; ;;
( 'warn' ) ( 'warn' )
[[ ${LEVEL_AS_INT} -ge 2 ]] || return 0 [[ ${LEVEL_AS_INT} -ge 2 ]] || return 0
MESSAGE+=" ${LOG_LYELLOW}WARNING " MESSAGE+=" ${LYELLOW}WARNING "
;; ;;
( 'error' ) ( 'error' )
[[ ${LEVEL_AS_INT} -ge 1 ]] || return 0 [[ ${LEVEL_AS_INT} -ge 1 ]] || return 0
MESSAGE+=" ${LOG_RED}ERROR " ;; MESSAGE+=" ${RED}ERROR " ;;
( * ) ( * )
echo "Call to '_log' with invalid log level argument '${1}'" >&2 echo "Call to '_log' with invalid log level argument '${1}'" >&2
@ -89,7 +106,7 @@ function _log
;; ;;
esac esac
MESSAGE+="${LOG_RESET}] ${2}" MESSAGE+="${RESET}] ${2}"
if [[ ${1} =~ ^(warn|error)$ ]] if [[ ${1} =~ ^(warn|error)$ ]]
then then