| #!/bin/sh |
| |
| # Get the S3 URL containing all of the MQTT5 testing environment variables passed in to the bash script |
| testing_env_bucket=$1 |
| region=$2 |
| |
| # Make sure we have something: |
| if [ "${testing_env_bucket}" != "" ] && [ "${region}" != "" ]; then |
| echo "S3 bucket for environment variables found and region" |
| else |
| echo "Could not get S3 bucket for environment variables and/or region." |
| echo "You need to run this script and pass the S3 URL of the file containing" |
| echo "all of the environment variables to set, as well as the secrets for certificates and private keys" |
| echo "" |
| echo "Example: mqtt5_test_setup.sh s3://<bucket>/<file> <region>" |
| echo "" |
| echo "When finished, run 'cleanup' to remove the files downloaded:" |
| echo "" |
| echo "Example: mqtt5_test_setup.sh s3://<bucket>/<file> cleanup" |
| echo "" |
| return 1 |
| fi |
| |
| # Is this just a request to clean up? |
| # NOTE: This blindly assumes there is a environment_files.txt file |
| if [ "${region}" != "cleanup" ]; then |
| sleep 0.1 # we have to do something to do an else... |
| else |
| echo "Undoing environment variables" |
| unset $(grep -v '^#' ${PWD}/environment_files.txt | xargs | cut -d "=" -f 1) |
| unset AWS_TEST_MQTT5_CERTIFICATE_FILE |
| unset AWS_TEST_MQTT5_KEY_FILE |
| unset AWS_TEST_MQTT5_IOT_CERTIFICATE_PATH |
| unset AWS_TEST_MQTT5_IOT_KEY_PATH |
| |
| echo "Cleaning up resources..." |
| rm "${PWD}/environment_files.txt" |
| rm "${PWD}/crt_certificate.pem" |
| rm "${PWD}/crt_privatekey.pem" |
| rm "${PWD}/iot_certificate.pem" |
| rm "${PWD}/iot_privatekey.pem" |
| |
| echo "Success!" |
| return 0 |
| fi |
| |
| # Get the file from S3 |
| aws s3 cp ${testing_env_bucket} ${PWD}/environment_files.txt |
| testing_env_file=$( cat environment_files.txt ) |
| # Make sure we have data of some form |
| if [ "${testing_env_file}" != "" ]; then |
| echo "Environment variables secret found" |
| else |
| echo "Could not get environment variables from secrets!" |
| return 1 |
| fi |
| |
| # Make all the variables in mqtt5_environment_variables.txt exported |
| # so we can run MQTT5 tests |
| export $(grep -v '^#' environment_files.txt | xargs) |
| |
| # CRT/non-builder certificate and key processing |
| # Get the certificate and key secrets (dumps straight to a file) |
| crt_cert_file=$(aws secretsmanager get-secret-value --secret-id "${AWS_TEST_MQTT5_CERTIFICATE_FILE_SECRET}" --query "SecretString" --region ${region} | cut -f2 -d":" | cut -f2 -d\") && echo -e "$crt_cert_file" > ${PWD}/crt_certificate.pem |
| crt_key_file=$(aws secretsmanager get-secret-value --secret-id "${AWS_TEST_MQTT5_KEY_FILE_SECRET}" --query "SecretString" --region ${region} | cut -f2 -d":" | cut -f2 -d\") && echo -e "$crt_key_file" > ${PWD}/crt_privatekey.pem |
| # Does the certificate file have data? If not, then abort! |
| if [ "${crt_cert_file}" != "" ]; then |
| echo "CRT Certificate secret found" |
| else |
| echo "Could not get CRT certificate from secrets!" |
| |
| # Clean up... |
| unset $(grep -v '^#' environment_files.txt | xargs | cut -d "=" -f 1) |
| rm "${PWD}/environment_files.txt" |
| rm "${PWD}/crt_certificate.pem" |
| rm "${PWD}/crt_privatekey.pem" |
| |
| return 1 |
| fi |
| # Does the private key file have data? If not, then abort! |
| if [ "${crt_key_file}" != "" ]; then |
| echo "CRT Private key secret found" |
| else |
| echo "Could not get CRT private key from secrets!" |
| |
| # Clean up... |
| unset $(grep -v '^#' environment_files.txt | xargs | cut -d "=" -f 1) |
| rm "${PWD}/environment_files.txt" |
| rm "${PWD}/crt_certificate.pem" |
| rm "${PWD}/crt_privatekey.pem" |
| |
| return 1 |
| fi |
| # Set the certificate and key paths (absolute paths for best compatbility) |
| export AWS_TEST_MQTT5_CERTIFICATE_FILE="${PWD}/crt_certificate.pem" |
| export AWS_TEST_MQTT5_KEY_FILE="${PWD}/crt_privatekey.pem" |
| |
| |
| # IoT/Builder certificate and key processing |
| # Get the certificate and key secrets (dumps straight to a file) |
| iot_cert_file=$(aws secretsmanager get-secret-value --secret-id "${AWS_TEST_MQTT5_IOT_CERTIFICATE_PATH_SECRET}" --query "SecretString" --region ${region} | cut -f2 -d":" | cut -f2 -d\") && echo -e "$iot_cert_file" > ./iot_certificate.pem |
| iot_key_file=$(aws secretsmanager get-secret-value --secret-id "${AWS_TEST_MQTT5_IOT_KEY_PATH_SECRET}" --query "SecretString" --region ${region} | cut -f2 -d":" | cut -f2 -d\") && echo -e "$iot_key_file" > ./iot_privatekey.pem |
| |
| # Does the certificate file have data? If not, then abort! |
| if [ "${iot_cert_file}" != "" ]; then |
| echo "IoT Certificate secret found" |
| else |
| echo "Could not get IoT certificate from secrets!" |
| |
| # Clean up... |
| unset $(grep -v '^#' environment_files.txt | xargs | cut -d "=" -f 1) |
| unset AWS_TEST_MQTT5_CERTIFICATE_FILE |
| unset AWS_TEST_MQTT5_KEY_FILE |
| rm "${PWD}/environment_files.txt" |
| rm "${PWD}/crt_certificate.pem" |
| rm "${PWD}/crt_privatekey.pem" |
| rm "${PWD}/iot_certificate.pem" |
| rm "${PWD}/iot_privatekey.pem" |
| |
| return 1 |
| fi |
| # Does the private key file have data? If not, then abort! |
| if [ "${iot_key_file}" != "" ]; then |
| echo "IoT Private key secret found" |
| else |
| echo "Could not get IoT private key from secrets!" |
| |
| # Clean up... |
| unset $(grep -v '^#' environment_files.txt | xargs | cut -d "=" -f 1) |
| unset AWS_TEST_MQTT5_CERTIFICATE_FILE |
| unset AWS_TEST_MQTT5_KEY_FILE |
| rm "${PWD}/environment_files.txt" |
| rm "${PWD}/crt_certificate.pem" |
| rm "${PWD}/crt_privatekey.pem" |
| rm "${PWD}/iot_certificate.pem" |
| rm "${PWD}/iot_privatekey.pem" |
| |
| return 1 |
| fi |
| |
| # Set IoT certificate and key paths |
| export AWS_TEST_MQTT5_IOT_CERTIFICATE_PATH="${PWD}/iot_certificate.pem" |
| export AWS_TEST_MQTT5_IOT_KEY_PATH="${PWD}/iot_privatekey.pem" |
| |
| # Everything is set and ready |
| echo "Success: Environment variables set!" |
| return 0 |