Matthias Andreas Benkard | b382b10 | 2021-01-02 15:32:21 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # Reading container IDs |
| 4 | # Wrapping as array to ensure trimmed content when calling $NGINX etc. |
| 5 | NGINX=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"nginx-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " ")) |
| 6 | DOVECOT=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"dovecot-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " ")) |
| 7 | POSTFIX=($(curl --silent --insecure https://dockerapi/containers/json | jq -r ".[] | {name: .Config.Labels[\"com.docker.compose.service\"], project: .Config.Labels[\"com.docker.compose.project\"], id: .Id}" | jq -rc "select( .name | tostring | contains(\"postfix-mailcow\")) | select( .project | tostring | contains(\"${COMPOSE_PROJECT_NAME,,}\")) | .id" | tr "\n" " ")) |
| 8 | |
| 9 | reload_nginx(){ |
| 10 | echo "Reloading Nginx..." |
| 11 | NGINX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${NGINX}/exec -d '{"cmd":"reload", "task":"nginx"}' --silent -H 'Content-type: application/json' | jq -r .type) |
| 12 | [[ ${NGINX_RELOAD_RET} != 'success' ]] && { echo "Could not reload Nginx, restarting container..."; restart_container ${NGINX} ; } |
| 13 | } |
| 14 | |
| 15 | reload_dovecot(){ |
| 16 | echo "Reloading Dovecot..." |
| 17 | DOVECOT_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${DOVECOT}/exec -d '{"cmd":"reload", "task":"dovecot"}' --silent -H 'Content-type: application/json' | jq -r .type) |
| 18 | [[ ${DOVECOT_RELOAD_RET} != 'success' ]] && { echo "Could not reload Dovecot, restarting container..."; restart_container ${DOVECOT} ; } |
| 19 | } |
| 20 | |
| 21 | reload_postfix(){ |
| 22 | echo "Reloading Postfix..." |
| 23 | POSTFIX_RELOAD_RET=$(curl -X POST --insecure https://dockerapi/containers/${POSTFIX}/exec -d '{"cmd":"reload", "task":"postfix"}' --silent -H 'Content-type: application/json' | jq -r .type) |
| 24 | [[ ${POSTFIX_RELOAD_RET} != 'success' ]] && { echo "Could not reload Postfix, restarting container..."; restart_container ${POSTFIX} ; } |
| 25 | } |
| 26 | |
| 27 | restart_container(){ |
| 28 | for container in $*; do |
| 29 | echo "Restarting ${container}..." |
| 30 | C_REST_OUT=$(curl -X POST --insecure https://dockerapi/containers/${container}/restart --silent | jq -r '.msg') |
| 31 | echo "${C_REST_OUT}" |
| 32 | done |
| 33 | } |
| 34 | |
| 35 | if [[ "${CERT_AMOUNT_CHANGED}" == "1" ]]; then |
| 36 | restart_container ${NGINX} |
| 37 | restart_container ${DOVECOT} |
| 38 | restart_container ${POSTFIX} |
| 39 | else |
| 40 | reload_nginx |
| 41 | #reload_dovecot |
| 42 | restart_container ${DOVECOT} |
| 43 | #reload_postfix |
| 44 | restart_container ${POSTFIX} |
| 45 | fi |