run 3.4 KB

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