run 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #!/usr/bin/with-contenv bash
  2. set -e
  3. EMAIL=$LETSENCRYPT_EMAIL
  4. DOMAIN=$LETSENCRYPT_DOMAIN
  5. JITSI_INSTALLATION="DOCKER"
  6. JAAS_ENDPOINT="https://account-provisioning.cloudflare.jitsi.net/operations"
  7. CHALLENGE_DIR="/usr/share/jitsi-meet/.well-known"
  8. CHALLENGE_FILE="$CHALLENGE_DIR/jitsi-challenge.txt"
  9. SUPPORT_MSG="Reach out to JaaS support at https://jaas.8x8.vc/#components"
  10. JAAS_ACCOUNT_FILE="/config/jaas-account-created.txt"
  11. function stop_service() {
  12. s6-svc -O /var/run/s6/services/jaas-account
  13. exit 0
  14. }
  15. if [[ $DISABLE_HTTPS -ne 1 ]] && [[ $ENABLE_LETSENCRYPT -eq 1 ]] && [[ $ENABLE_JAAS_COMPONENTS -eq 1 ]] && [[ ! -z $EMAIL ]] && [[ ! -z $DOMAIN ]]; then
  16. if [ -f $JAAS_ACCOUNT_FILE ]; then
  17. echo "JaaS account already exists"
  18. stop_service
  19. fi
  20. KEEP_WAITING=true
  21. RETRIES=0
  22. MAX_TRIES=5
  23. SLEEP_INTERVAL=10
  24. # Waiting for nginx to start before creating the JaaS account
  25. while $KEEP_WAITING; do
  26. s6-svwait -u /var/run/s6/services/nginx
  27. NGINX_RESPONSE=$?
  28. if [ $NGINX_RESPONSE -eq 0 ]; then
  29. echo "Nginx started"
  30. KEEP_WAITING=false
  31. else
  32. RETRIES=$((RETRIES + 1))
  33. if [ $RETRIES -ge $MAX_TRIES ]; then
  34. echo "Nginx did not start, exiting..."
  35. KEEP_WAITING=false
  36. else
  37. echo "Waiting for nginx to start, retrying in $SLEEP_INTERVAL seconds... $RETRIES/$MAX_TRIES"
  38. sleep $SLEEP_INTERVAL
  39. fi
  40. fi
  41. done
  42. create_error=0
  43. create_data=$(curl -s -f -X 'POST' "${JAAS_ENDPOINT}" -H 'Content-Type: application/json' -H 'accept: */*' -d "{ \"domain\": \"${DOMAIN}\", \"email\": \"${EMAIL}\", \"jitsiInstallation\": \"${JITSI_INSTALLATION}\" }") || create_error=$?
  44. if [ ${create_error} -ne 0 ]; then
  45. echo "JaaS account creation failed. Status: ${create_error}, response: ${create_data}"
  46. stop_service
  47. fi
  48. echo "${create_data}"
  49. # Creating the challenge dir
  50. mkdir -p ${CHALLENGE_DIR}
  51. # Creating the challenge file
  52. echo "${create_data}" | jq -r .challenge > ${CHALLENGE_FILE}
  53. op_id=$(echo "${create_data}" | jq -r .operationId)
  54. ready_error=0
  55. ready_data=$(curl -s -f -X 'PUT' "${JAAS_ENDPOINT}/${op_id}/ready") || ready_error=$?
  56. if [ ${ready_error} -ne 0 ]; then
  57. echo "Jitsi domain validation failed. Status: ${ready_error}"
  58. echo "Response: "
  59. echo "${ready_data}" | jq -r
  60. echo "${SUPPORT_MSG}"
  61. echo
  62. stop_service
  63. fi
  64. SLEEP_TIME=0
  65. WAIT_BEFORE_CHECK=5
  66. TIMEOUT=60
  67. echo -n "Creating the JaaS account..."
  68. (while true; do
  69. provisioned_data=$(curl -s -f "${JAAS_ENDPOINT}/${op_id}")
  70. status=$(echo "${provisioned_data}" | jq -r .status)
  71. if [ "${status}" == "PROVISIONED" ]; then
  72. echo ""
  73. echo "=================="
  74. echo ""
  75. echo "A JaaS account was created. Please check your email for more details."
  76. echo ""
  77. echo "=================="
  78. # Creating the jaas-account file
  79. touch ${JAAS_ACCOUNT_FILE}
  80. stop_service
  81. elif [ "${status}" == "FAILED" ]; then
  82. echo ""
  83. echo "=================="
  84. echo ""
  85. echo "JaaS account creation failed:${provisioned_data}"
  86. echo ""
  87. echo "=================="
  88. stop_service
  89. fi
  90. if [ ${SLEEP_TIME} -ge ${TIMEOUT} ]; then
  91. echo ""
  92. echo "=================="
  93. echo ""
  94. echo "Timeout creating the JaaS account. ${SUPPORT_MSG}"
  95. echo ""
  96. echo "=================="
  97. stop_service
  98. fi
  99. echo -n "Waiting for the JaaS account to be created..."
  100. sleep ${WAIT_BEFORE_CHECK}
  101. SLEEP_TIME=$((SLEEP_TIME+WAIT_BEFORE_CHECK))
  102. done)
  103. rm ${CHALLENGE_FILE} || true
  104. fi
  105. stop_service