|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -m |
| 4 | + |
| 5 | +cd $(dirname $0) |
| 6 | + |
| 7 | +if [[ -f ".env" ]]; then |
| 8 | + export $(egrep -v '^#' .env | xargs) |
| 9 | +fi |
| 10 | + |
| 11 | +if [[ ! -f "laravel-echo-server.json" ]]; then |
| 12 | + # |
| 13 | + # CONFIGURATION PARAMETERS |
| 14 | + # |
| 15 | + LARAVEL_ECHO_SERVER_DEBUG=${LARAVEL_ECHO_SERVER_DEBUG:-false} |
| 16 | + LARAVEL_ECHO_SERVER_AUTH_HOST=${LARAVEL_ECHO_SERVER_AUTH_HOST:-http://localhost} |
| 17 | + LARAVEL_ECHO_AUTH_ENDPOINT=${LARAVEL_ECHO_AUTH_ENDPOINT:-/broadcasting/auth} |
| 18 | + |
| 19 | + RAND_CLIENT_ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) |
| 20 | + RAND_CLIENT_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) |
| 21 | + CLIENT_APP_ID=${CLIENT_APP_ID:-$RAND_CLIENT_ID} |
| 22 | + CLIENT_APP_KEY=${CLIENT_APP_KEY:-$RAND_CLIENT_KEY} |
| 23 | + |
| 24 | + DATABASE=${DATABASE:-sqlite} |
| 25 | + |
| 26 | + if [[ -z "${LARAVEL_ECHO_SERVER_REDIS_HOST}" && "${LARAVEL_ECHO_SERVER_REDIS_HOST}" != "" ]]; then |
| 27 | + DATABASE=redis |
| 28 | + LARAVEL_ECHO_SERVER_REDIS_PORT=${LARAVEL_ECHO_SERVER_REDIS_PORT:-6379} |
| 29 | + DATABASE_CMD="del(.databaseConfig.sqlite) | .databaseConfig.redis.host=\"${LARAVEL_ECHO_SERVER_REDIS_HOST}\" | .databaseConfig.redis.port=${LARAVEL_ECHO_SERVER_REDIS_PORT}" |
| 30 | + if [[ -n "${LARAVEL_ECHO_SERVER_REDIS_PASSWORD}" ]]; then |
| 31 | + DATABASE_CMD="${DATABASE_CMD} | .databaseConfig.redis.options.password=\"${LARAVEL_ECHO_SERVER_REDIS_PASSWORD}\"" |
| 32 | + fi |
| 33 | + if [[ -n "${LARAVEL_ECHO_SERVER_REDIS_DB}" ]]; then |
| 34 | + DATABASE_CMD="${DATABASE_CMD} | .databaseConfig.redis.options.db=${LARAVEL_ECHO_SERVER_REDIS_DB}" |
| 35 | + fi |
| 36 | + else |
| 37 | + sqlite3 server.sqlite "create table aTable(field1 int); drop table aTable;" |
| 38 | + DATABASE_CMD='del(.databaseConfig.redis) | .subscribers.redis=false' |
| 39 | + fi |
| 40 | + |
| 41 | + LARAVEL_ECHO_SERVER_HOST=${LARAVEL_ECHO_SERVER_HOST:-0.0.0.0} |
| 42 | + LARAVEL_ECHO_SERVER_PORT=${LARAVEL_ECHO_SERVER_PORT:-6001} |
| 43 | + LARAVEL_ECHO_SERVER_PROTO=${LARAVEL_ECHO_SERVER_PROTO:-http} |
| 44 | + LARAVEL_ECHO_ALLOW_ORIGIN=${LARAVEL_ECHO_ALLOW_ORIGIN:-*} |
| 45 | + |
| 46 | + LARAVEL_ECHO_SERVER_SSL_CERT=${LARAVEL_ECHO_SERVER_SSL_CERT:-} |
| 47 | + LARAVEL_ECHO_SERVER_SSL_KEY=${LARAVEL_ECHO_SERVER_SSL_KEY:-} |
| 48 | + LARAVEL_ECHO_SERVER_SSL_CHAIN=${LARAVEL_ECHO_SERVER_SSL_CHAIN:-} |
| 49 | + |
| 50 | + # |
| 51 | + # CONFIGURATION MODIFIERS |
| 52 | + # |
| 53 | + jq -r ".authHost=\"$LARAVEL_ECHO_SERVER_AUTH_HOST\" | .authEndpoint=\"$LARAVEL_ECHO_AUTH_ENDPOINT\" | |
| 54 | + .clients[0].appId=\"$CLIENT_APP_ID\" | .clients[0].key=\"$CLIENT_APP_KEY\" | |
| 55 | + .database=\"$DATABASE\" | $DATABASE_CMD | |
| 56 | + .devMode=$LARAVEL_ECHO_SERVER_DEBUG | .host=\"$LARAVEL_ECHO_SERVER_HOST\" | .port=\"$LARAVEL_ECHO_SERVER_PORT\" | .protocol=\"$LARAVEL_ECHO_SERVER_PROTO\" | |
| 57 | + .sslCertPath=\"$LARAVEL_ECHO_SERVER_SSL_CERT\" | .sslKeyPath=\"$LARAVEL_ECHO_SERVER_SSL_KEY\" | .sslCertChainPath=\"$LARAVEL_ECHO_SERVER_SSL_CHAIN\" | |
| 58 | + .apiOriginAllow.allowOrigin=\"$LARAVEL_ECHO_ALLOW_ORIGIN\"" json.tmpl > laravel-echo-server.json |
| 59 | + |
| 60 | + echo " " |
| 61 | + echo "=======================================================" |
| 62 | + echo " CONFIGURATION DETAILS" |
| 63 | + echo "=======================================================" |
| 64 | + echo " " |
| 65 | + echo " App ID : ${CLIENT_APP_ID}" |
| 66 | + echo " App Key : ${CLIENT_APP_KEY}" |
| 67 | + echo " Auth : ${LARAVEL_ECHO_SERVER_AUTH_HOST}${LARAVEL_ECHO_AUTH_ENDPOINT}" |
| 68 | + echo " " |
| 69 | + echo "=======================================================" |
| 70 | + echo " https://github.com/tlaverdure/laravel-echo-server" |
| 71 | + echo " " |
| 72 | + echo " " |
| 73 | +fi |
| 74 | + |
| 75 | +if [[ "$LARAVEL_ECHO_SERVER_DEBUG" == true ]]; then |
| 76 | + export NPM_CONFIG_LOGLEVEL=info |
| 77 | +fi |
| 78 | + |
| 79 | +# Start the server |
| 80 | +if lsof -Pi :6001 -sTCP:LISTEN -t >/dev/null; then |
| 81 | + exec "$@" |
| 82 | +else |
| 83 | + laravel-echo-server start |
| 84 | +fi |
0 commit comments