diff --git a/README.md b/README.md index e2b8cfa..16c2645 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Forked and adpated from https://github.com/morpht/letsencrypt_drupal +Forked and adapted from https://github.com/morpht/letsencrypt_drupal # Let's Encrypt Drupal @@ -20,14 +20,14 @@ Wrapper script for https://github.com/dehydrated-io/dehydrated opinionated towar * [If] There **already is** certificate generated by this script. * It will check the validity of the certificate. * [If] The certificate is valid and not near the expiration date. - * Post to Slack that everything is all right. + * Post to Slack/Teams that everything is all right. * [If] The certificate is about to expire. * Renew the certificate. - * Post to Slack that everything is all right. + * Post to Slack/Teams that everything is all right. * (Altering the list of domains in project repository results in generating new certificate.) * Upload new certificate to Acquia. * Activate the certificate. - * Post the results to Slack + * Post the results to Slack/Teams ## Requirements @@ -60,7 +60,7 @@ These steps are for `prod` environment of PROJECT on Acquia Cloud. Can be easily * First domain will be set as Common name * Others are set as SANs * Edit `letsencrypt_drupal/config_undp.env.sh` - * Slack is optional. If you don't want to use it, just set `$SLACK_WEBHOOK_URL` to empty string. + * Slack/Teams is optional. If you don't want to use it, just set `$SLACK_WEBHOOK_URL` to empty string. * Get your webhook url here: https://my.slack.com/services/new/incoming-webhook/ * Set the webhook url and target channel variables. * Certificate deployment is optional. @@ -87,4 +87,4 @@ These steps are for `prod` environment of PROJECT on Acquia Cloud. Can be easily * Command: `/home/undp/letsencrypt_drupal/letsencrypt_drupal.sh undp 01live &>> /var/log/sites/${AH_SITE_NAME}/logs/$(hostname -s)/letsencrypt_drupal.log` * Command frequency `0 7 * * 1` ( https://crontab.guru/#0_7_*_*_1 ) * It's good idea to run the command on Acquia manually first time to check if all is OK. -* First script run will post results/instructions to Slack. +* First script run will post results/instructions to Slack/Teams. diff --git a/example_project_config/letsencrypt_drupal/config_undp.env.sh b/example_project_config/letsencrypt_drupal/config_undp.env.sh index de343f7..a9e9846 100644 --- a/example_project_config/letsencrypt_drupal/config_undp.env.sh +++ b/example_project_config/letsencrypt_drupal/config_undp.env.sh @@ -5,6 +5,8 @@ SLACK_WEBHOOK_URL='https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX' SLACK_CHANNEL='CHANNEL-NAME' +TEAMS_WEBHOOK_URL='' + # UUID of target environment for cert deploy. # Easiest to get from URL in Acquia Cloud UI. See https://cloudapi-docs.acquia.com/#/Environments/getEnvironment # (Second uuid in URL when looking at specific environment.) diff --git a/functions.sh b/functions.sh index 8680e58..9bed10b 100644 --- a/functions.sh +++ b/functions.sh @@ -17,9 +17,9 @@ TMP_DIR=/tmp/letsencrypt_drupal FILE_BASECONFIG=${TMP_DIR}/baseconfig # Detect core version -DRUPAL_VERSION="12" -if grep -q -r -i --include Drupal.php "const version" ${PROJECT_ROOT}; then DRUPAL_VERSION="8"; fi -if grep -q -r -i --include bootstrap.inc "define('VERSION', '" ${PROJECT_ROOT}; then DRUPAL_VERSION="7"; fi +DRUPAL_VERSION="" +# if grep -q -r -i --include Drupal.php "const version" ${PROJECT_ROOT}; then DRUPAL_VERSION="8"; fi +# if grep -q -r -i --include bootstrap.inc "define('VERSION', '" ${PROJECT_ROOT}; then DRUPAL_VERSION="7"; fi # Load all variables provided by the project. . ${FILE_CONFIG} @@ -50,8 +50,13 @@ slackpost() escapedText=$(echo $TEXT | sed 's/"/\"/g' | sed "s/'/\'/g") json="{\"channel\": \"$SLACK_CHANNEL\", \"username\":\"$USERNAME\", \"icon_emoji\":\"ghost\", \"attachments\":[{\"color\":\"$COLOR\" , \"text\": \"$escapedText\"}]}" curl -s -d "payload=$json" "$SLACK_WEBHOOK_URL" || logline "Failed to send message to slack: ${USERNAME}: ${TEXT}" + elif [[ ! -z "$TEAMS_WEBHOOK_URL" ]]; then + # https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook?tabs=newteams%2Cjavascript + escapedText=$(echo $TEXT | sed 's/"/\"/g' | sed "s/'/\'/g") + json "{\"type\": \"message\", \"attachments\": [{\"contentType\": \"application/vnd.microsoft.card.adaptive\",\"contentUrl\": null,\"content\": {\"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\": \"AdaptiveCard\",\"version\": \"1.2\",\"body\": [{\"type\": \"TextBlock\",\"text\": \"$escapedText\"}]}}]}" + curl -s -d -H "Content-Type: application/json" "$json" "$TEAMS_WEBHOOK_URL" || logline "Failed to send message to Teams: ${USERNAME}: ${TEXT}" else - logline "No Slack: ${USERNAME}: ${TEXT}" + logline "No Slack/Teams: ${USERNAME}: ${TEXT}" fi } @@ -80,35 +85,35 @@ drush_set_challenge() DOMAIN="${3}" TOKEN_VALUE="${4}" - if [[ "${DRUPAL_VERSION}" == "7" ]]; then - echo "EXECUTING: drush8 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" - drush8 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge - echo "EXECUTING: drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge - - echo "EXECUTING: drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge.${DOMAIN} \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge.${DOMAIN} - - elif [[ "${DRUPAL_VERSION}" == "8" ]]; then - echo "EXECUTING: drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" - drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge - echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - - echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - - elif [[ "${DRUPAL_VERSION}" == "9" ]]; then - echo "EXECUTING: drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" - drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge - echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - - echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - - else - echo "EXECUTING: drush ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" - drush ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge - echo "EXECUTING: drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - - echo "EXECUTING: drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" - echo "$TOKEN_VALUE" | drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - - fi + # if [[ "${DRUPAL_VERSION}" == "7" ]]; then + # echo "EXECUTING: drush8 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" + # drush8 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge + # echo "EXECUTING: drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge - + # echo "EXECUTING: drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge.${DOMAIN} \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush8 ${DRUSH_ALIAS} vset -y --uri=${DOMAIN} letsencrypt_challenge.${DOMAIN} - + # elif [[ "${DRUPAL_VERSION}" == "8" ]]; then + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" + # drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - + # elif [[ "${DRUPAL_VERSION}" == "9" ]]; then + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" + # drush9 ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" + # echo "$TOKEN_VALUE" | drush9 ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - + # else + echo "EXECUTING: drush ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge" + drush ${DRUSH_ALIAS} en -y --uri=${DOMAIN} letsencrypt_challenge + echo "EXECUTING: drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge \"${TOKEN_VALUE}\"" + echo "$TOKEN_VALUE" | drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge - + echo "EXECUTING: drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} \"${TOKEN_VALUE}\"" + echo "$TOKEN_VALUE" | drush ${DRUSH_ALIAS} sset -y --uri=${DOMAIN} letsencrypt_challenge.challenge.${DOMAIN} - + # fi } drush_clean_challenge() @@ -117,19 +122,19 @@ drush_clean_challenge() DRUPAL_VERSION="${2}" DOMAIN="${3}" - if [[ "${DRUPAL_VERSION}" == "7" ]]; then - echo "EXECUTING: drush8 ${DRUSH_ALIAS} dis -y --uri=${DOMAIN} letsencrypt_challenge" - drush8 ${DRUSH_ALIAS} dis -y --uri=${DOMAIN} letsencrypt_challenge - echo "EXECUTING: drush8 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" - drush8 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge - elif [[ "${DRUPAL_VERSION}" == "8" ]]; then - echo "EXECUTING: drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" - drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge - elif [[ "${DRUPAL_VERSION}" == "9" ]]; then - echo "EXECUTING: drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" - drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge - else - echo "EXECUTING: drush ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" - drush ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge - fi + # if [[ "${DRUPAL_VERSION}" == "7" ]]; then + # echo "EXECUTING: drush8 ${DRUSH_ALIAS} dis -y --uri=${DOMAIN} letsencrypt_challenge" + # drush8 ${DRUSH_ALIAS} dis -y --uri=${DOMAIN} letsencrypt_challenge + # echo "EXECUTING: drush8 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" + # drush8 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge + # elif [[ "${DRUPAL_VERSION}" == "8" ]]; then + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" + # drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge + # elif [[ "${DRUPAL_VERSION}" == "9" ]]; then + # echo "EXECUTING: drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" + # drush9 ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge + # else + echo "EXECUTING: drush ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge" + drush ${DRUSH_ALIAS} pmu -y --uri=${DOMAIN} letsencrypt_challenge + # fi }