mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
70 lines
1.8 KiB
Bash
Executable file
70 lines
1.8 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# shellcheck source=../scripts/helpers/index.sh
|
|
source /usr/local/bin/helpers/index.sh
|
|
|
|
function _main() {
|
|
_require_n_parameters_or_print_usage 1 "${@}"
|
|
|
|
local MAIL_ACCOUNT="${1}"
|
|
shift
|
|
local QUOTA="${*}"
|
|
|
|
_validate_parameters
|
|
_manage_dovecot_quota_update "${MAIL_ACCOUNT}" "${QUOTA}"
|
|
}
|
|
|
|
function __usage() {
|
|
printf '%s' "${PURPLE}setquota${RED}(${YELLOW}8${RED})
|
|
|
|
${ORANGE}USAGE${RESET}
|
|
./setup.sh quota set <MAIL ACCOUNT> [<QUOTA>]
|
|
|
|
${ORANGE}OPTIONS${RESET}
|
|
${BLUE}Generic Program Information${RESET}
|
|
help Print the usage information.
|
|
|
|
${ORANGE}DESCRIPTION${RESET}
|
|
Set a quota (storage limit) for an existing mail account.
|
|
|
|
The quota value is in bytes. You may use a unit suffix for convenience,
|
|
such as 10M for 10 MebiBytes (MiB). A value of 0 opts out of enforcing quota.
|
|
|
|
${ORANGE}EXAMPLES${RESET}
|
|
${LWHITE}./setup.sh quota set user@example.com 5G${RESET}
|
|
The account 'user@example.com' is restricted to a 5GiB storage limit.
|
|
|
|
${ORANGE}EXIT STATUS${RESET}
|
|
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.
|
|
|
|
"
|
|
}
|
|
|
|
function _validate_parameters() {
|
|
# MAIL_ACCOUNT
|
|
_arg_expect_mail_account
|
|
_account_should_already_exist
|
|
|
|
# QUOTA
|
|
_quota_request_if_missing
|
|
_quota_unit_is_valid
|
|
}
|
|
|
|
function _quota_request_if_missing() {
|
|
if [[ -z ${QUOTA} ]]; then
|
|
read -r -p 'Enter quota (e.g. 10M): ' QUOTA
|
|
echo
|
|
[[ -z "${QUOTA}" ]] && _exit_with_error 'Quota must not be empty (use 0 for unlimited quota)'
|
|
fi
|
|
}
|
|
|
|
function _quota_unit_is_valid() {
|
|
if ! grep -qE "^([0-9]+(B|k|M|G|T)|0)\$" <<< "${QUOTA}"; then
|
|
__usage
|
|
_exit_with_error 'Invalid quota format. e.g. 302M (B (byte), k (kilobyte), M (megabyte), G (gigabyte) or T (terabyte))'
|
|
fi
|
|
}
|
|
|
|
_main "${@}"
|