Download start.sh from Apache777/self: direct link, hf CLI and curl.
- Browser
- Download file 4.68 kB
-
https://huggingface.co/spaces/Apache777/self/resolve/main/start.sh
- Command line
-
hf download hf://spaces/Apache777/self/start.sh
-
curl -L -o start.sh https://huggingface.co/spaces/Apache777/self/resolve/main/start.sh
4.68 kB
| set -eu | |
| : "${PORT:=7860}" | |
| : "${SERVER_HOST:=0.0.0.0}" | |
| : "${SERVER_PORT:=$PORT}" | |
| : "${SERVER_MODE:=release}" | |
| : "${RUN_MODE:=standard}" | |
| : "${AUTO_SETUP:=true}" | |
| : "${TZ:=Asia/Shanghai}" | |
| : "${DATA_DIR:=/tmp/sub2api}" | |
| : "${BIN_DIR:=/tmp/sub2api/bin}" | |
| mkdir -p "$DATA_DIR" "$BIN_DIR" || true | |
| chmod 777 "$DATA_DIR" "$BIN_DIR" 2>/dev/null || true | |
| strip_quotes() { | |
| val="$1" | |
| case "$val" in | |
| "\""*"\"") val="${val#\"}"; val="${val%\"}" ;; | |
| esac | |
| case "$val" in | |
| "'"*"'") val="${val#'}"; val="${val%'}" ;; | |
| esac | |
| printf '%s' "$val" | |
| } | |
| url_decode() { | |
| printf '%b' "$(printf '%s' "$1" | sed 's/+/ /g; s/%/\\x/g')" | |
| } | |
| get_query_param() { | |
| query="$1" | |
| key="$2" | |
| if [ -z "$query" ]; then | |
| return 0 | |
| fi | |
| printf '%s' "$query" | tr '&' '\n' | awk -F= -v k="$key" '$1==k {print $2; exit}' | |
| } | |
| require_env() { | |
| name="$1" | |
| eval "val=\${$name:-}" | |
| if [ -z "$val" ]; then | |
| echo "ERROR: $name is required" >&2 | |
| exit 1 | |
| fi | |
| } | |
| parse_database_url() { | |
| url="$1" | |
| rest="${url#*://}" | |
| base="$rest" | |
| query="" | |
| if [ "$rest" != "${rest%%\?*}" ]; then | |
| base="${rest%%\?*}" | |
| query="${rest#*\?}" | |
| fi | |
| userinfo="${base%%@*}" | |
| hostport_db="${base#*@}" | |
| if [ "$hostport_db" = "$base" ]; then | |
| userinfo="" | |
| hostport_db="$base" | |
| fi | |
| hostport="${hostport_db%%/*}" | |
| dbname="${hostport_db#*/}" | |
| if [ "$dbname" = "$hostport_db" ]; then | |
| dbname="" | |
| fi | |
| user="" | |
| pass="" | |
| if [ -n "$userinfo" ]; then | |
| case "$userinfo" in | |
| *:*) | |
| user="${userinfo%%:*}" | |
| pass="${userinfo#*:}" | |
| ;; | |
| *) | |
| user="$userinfo" | |
| pass="" | |
| ;; | |
| esac | |
| fi | |
| host="${hostport%%:*}" | |
| port="${hostport#*:}" | |
| if [ "$port" = "$hostport" ]; then | |
| port="" | |
| fi | |
| [ -n "$user" ] && export DATABASE_USER="$(url_decode "$user")" | |
| [ -n "$pass" ] && export DATABASE_PASSWORD="$(url_decode "$pass")" | |
| [ -n "$host" ] && export DATABASE_HOST="$(url_decode "$host")" | |
| [ -n "$dbname" ] && export DATABASE_DBNAME="$(url_decode "$dbname")" | |
| [ -n "$port" ] && export DATABASE_PORT="$port" | |
| sslmode="$(get_query_param "$query" "sslmode")" | |
| if [ -n "$sslmode" ]; then | |
| export DATABASE_SSLMODE="$(url_decode "$sslmode")" | |
| else | |
| : "${DATABASE_SSLMODE:=require}" | |
| fi | |
| } | |
| parse_redis_url() { | |
| url="$1" | |
| scheme="${url%%://*}" | |
| rest="${url#*://}" | |
| base="$rest" | |
| query="" | |
| if [ "$rest" != "${rest%%\?*}" ]; then | |
| base="${rest%%\?*}" | |
| query="${rest#*\?}" | |
| fi | |
| userinfo="${base%%@*}" | |
| hostport_db="${base#*@}" | |
| if [ "$hostport_db" = "$base" ]; then | |
| userinfo="" | |
| hostport_db="$base" | |
| fi | |
| hostport="${hostport_db%%/*}" | |
| dbname="${hostport_db#*/}" | |
| if [ "$dbname" = "$hostport_db" ] || [ -z "$dbname" ]; then | |
| dbname="" | |
| fi | |
| pass="" | |
| if [ -n "$userinfo" ]; then | |
| case "$userinfo" in | |
| *:*) | |
| pass="${userinfo#*:}" | |
| ;; | |
| *) | |
| pass="" | |
| ;; | |
| esac | |
| fi | |
| host="${hostport%%:*}" | |
| port="${hostport#*:}" | |
| if [ "$port" = "$hostport" ]; then | |
| port="" | |
| fi | |
| [ -n "$host" ] && export REDIS_HOST="$(url_decode "$host")" | |
| [ -n "$port" ] && export REDIS_PORT="$port" | |
| [ -n "$pass" ] && export REDIS_PASSWORD="$(url_decode "$pass")" | |
| db_query="$(get_query_param "$query" "db")" | |
| if [ -n "$db_query" ]; then | |
| dbname="$db_query" | |
| fi | |
| [ -n "$dbname" ] && export REDIS_DB="$(url_decode "$dbname")" | |
| tls="false" | |
| tls_query="$(get_query_param "$query" "ssl")" | |
| if [ -z "$tls_query" ]; then | |
| tls_query="$(get_query_param "$query" "tls")" | |
| fi | |
| if [ -n "$tls_query" ]; then | |
| case "$(url_decode "$tls_query")" in | |
| 1|true|TRUE|True|yes|YES|on|ON) | |
| tls="true" | |
| ;; | |
| *) | |
| tls="false" | |
| ;; | |
| esac | |
| else | |
| if [ "$scheme" = "rediss" ]; then | |
| tls="true" | |
| fi | |
| fi | |
| export REDIS_ENABLE_TLS="$tls" | |
| } | |
| require_env DATABASE_URL | |
| require_env REDIS_URL | |
| DATABASE_URL="$(strip_quotes "$DATABASE_URL")" | |
| REDIS_URL="$(strip_quotes "$REDIS_URL")" | |
| export DATABASE_URL REDIS_URL | |
| parse_database_url "$DATABASE_URL" | |
| parse_redis_url "$REDIS_URL" | |
| : "${DATABASE_DBNAME:=sub2api}" | |
| : "${DATABASE_PORT:=5432}" | |
| : "${DATABASE_SSLMODE:=require}" | |
| : "${REDIS_PORT:=6379}" | |
| : "${REDIS_DB:=0}" | |
| require_env DATABASE_HOST | |
| require_env DATABASE_USER | |
| require_env DATABASE_PASSWORD | |
| require_env REDIS_HOST | |
| export PORT SERVER_HOST SERVER_PORT SERVER_MODE RUN_MODE AUTO_SETUP TZ DATA_DIR | |
| copy_and_exec() { | |
| src="$1" | |
| dst="$BIN_DIR/sub2api" | |
| cp "$src" "$dst" | |
| chmod +x "$dst" | |
| exec "$dst" | |
| } | |
| if [ -x /app/sub2api ]; then | |
| copy_and_exec /app/sub2api | |
| fi | |
| if command -v sub2api >/dev/null 2>&1; then | |
| copy_and_exec "$(command -v sub2api)" | |
| fi | |
| echo "ERROR: sub2api executable not found." >&2 | |
| ls -la /app >&2 || true | |
| ls -la / >&2 || true | |
| exit 1 | |