Spaces:
Runtime error
Runtime error
| # | |
| # Calculate UV_THREADPOOL_SIZE based on number of CPUs | |
| # | |
| # Try to get CPU count using Node.js, fallback to 1 if it fails | |
| cpus=$(node -e "const os = require('os'); console.log(os.cpus().length);" 2>/dev/null) || cpus=1 | |
| # Make sure cpus is a number, default to 1 if not | |
| case $cpus in | |
| ''|*[!0-9]*) cpus=1 ;; | |
| esac | |
| uv_threadpool_size=$(($cpus * 2)) | |
| # Check if uv_threadpool_size is less than 4 (default), set it to 4 if it is | |
| if [ "$uv_threadpool_size" -lt 4 ]; then | |
| uv_threadpool_size=4 | |
| fi | |
| # Set UV_THREADPOOL_SIZE as an environment variable | |
| export UV_THREADPOOL_SIZE="${UV_THREADPOOL_SIZE:-$uv_threadpool_size}" | |
| # | |
| # Handle API key hashing | |
| # | |
| # Save WHATSAPP_API_KEY or WAHA_API_KEY in a variable (WHATSAPP_API_KEY has priority) | |
| if [ -n "$WHATSAPP_API_KEY" ]; then | |
| key="$WHATSAPP_API_KEY" | |
| elif [ -n "$WAHA_API_KEY" ]; then | |
| key="$WAHA_API_KEY" | |
| fi | |
| # Unset both environment variables | |
| unset WHATSAPP_API_KEY | |
| unset WAHA_API_KEY | |
| # Process the key if it exists | |
| if [ -n "$key" ]; then | |
| # Check if key is already hashed | |
| if echo "$key" | grep -q "^sha512:"; then | |
| # If already hashed, use it as is | |
| export WAHA_API_KEY="$key" | |
| else | |
| # Display warning about using plain text API key | |
| echo "⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️" | |
| echo "WARNING: Plain text API key detected. Converting to hashed format for security." | |
| echo "For better security, use WAHA_API_KEY=sha512:{SHA512_HASH_FOR_YOUR_API_KEY}" | |
| echo "⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️" | |
| # Hash the key using sha512sum | |
| HASHED_KEY=$(echo -n "$key" | sha512sum | awk '{print $1}') | |
| export WAHA_API_KEY="sha512:$HASHED_KEY" | |
| fi | |
| fi | |
| # | |
| # xvfb-run | |
| # | |
| USE_XVFB=false | |
| # Check WAHA_RUN_XVFB parameter - only test for "false" case, treat all others as True | |
| if [ "$WAHA_RUN_XVFB" = "false" ] || [ "$WAHA_RUN_XVFB" = "False" ] || [ "$WAHA_RUN_XVFB" = "0" ]; then | |
| # Explicitly disabled by user | |
| echo "WAHA_RUN_XVFB value: $WAHA_RUN_XVFB - xvfb is disabled" | |
| USE_XVFB=false | |
| else | |
| # Check engine and run test if it's WEBJS or not specified | |
| if [ -z "$WHATSAPP_DEFAULT_ENGINE" ] || [ "$WHATSAPP_DEFAULT_ENGINE" = "WEBJS" ]; then | |
| # Try to run xvfb-run with a test command | |
| if xvfb-run --auto-servernum echo "xvfb-run is working!"; then | |
| USE_XVFB=true | |
| else | |
| echo "xvfb-run test failed, do not run it" | |
| USE_XVFB=false | |
| fi | |
| fi | |
| fi | |
| # | |
| # Start your application using node with exec to ensure proper signal handling | |
| # | |
| if [ "$USE_XVFB" = "true" ]; then | |
| echo "Executing node with xvfb-run..." | |
| exec xvfb-run --auto-servernum node dist/main | |
| else | |
| echo "Executing node without xvfb-run..." | |
| exec node dist/main | |
| fi | |