Skip to content

Commit

Permalink
Implemented Teams hook
Browse files Browse the repository at this point in the history
  • Loading branch information
Jura committed Dec 22, 2024
1 parent c08c777 commit 66ef822
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 54 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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.
Expand All @@ -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.
2 changes: 2 additions & 0 deletions example_project_config/letsencrypt_drupal/config_undp.env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.)
Expand Down
101 changes: 53 additions & 48 deletions functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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()
Expand All @@ -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
}

0 comments on commit 66ef822

Please sign in to comment.