File size: 5,383 Bytes
0fe5e35 a38895d 0fe5e35 8e497e1 a38895d 0fe5e35 a38895d 414eef2 602a98a 414eef2 e5e540f 0fe5e35 a38895d 414eef2 a38895d 0fe5e35 a38895d 0fe5e35 a38895d e5e540f a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 0fe5e35 a38895d 260d193 a38895d 260d193 a38895d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | #!/bin/sh
set -eu
if [ -z "${PROXY_PATH:-}" ]; then
PROXY_PATH="/"
fi
case "${PROXY_PATH}" in
/*) ;;
*) PROXY_PATH="/${PROXY_PATH}" ;;
esac
CONFIG_PATH="${CONFIG_PATH:-/data/config.yaml}"
AUTH_DIR="${AUTH_DIR:-/data/auth}"
mkdir -p "$(dirname "${CONFIG_PATH}")" "${AUTH_DIR}"
if [ -n "${CONFIG_CONTENT_B64:-}" ]; then
echo "Writing config from CONFIG_CONTENT_B64 to ${CONFIG_PATH}"
echo "${CONFIG_CONTENT_B64}" | base64 -d > "${CONFIG_PATH}"
elif [ -n "${CONFIG_CONTENT:-}" ]; then
echo "Writing config from CONFIG_CONTENT to ${CONFIG_PATH}"
printf '%s\n' "${CONFIG_CONTENT}" > "${CONFIG_PATH}"
fi
if [ ! -f "${CONFIG_PATH}" ]; then
for candidate in \
/app/config.yaml \
/app/config.yml \
/CLIProxyAPI/config.yaml \
/CLIProxyAPI/config.yml \
/CLIProxyAPI/config.example.yaml \
/CLIProxyAPI/config.example.yml \
/CLIProxyAPI/config.sample.yaml \
/CLIProxyAPI/config.sample.yml \
/CLIProxyAPI/config.template.yaml \
/CLIProxyAPI/config.template.yml; do
if [ -f "${candidate}" ]; then
echo "Copying default config from ${candidate} to ${CONFIG_PATH}"
cp "${candidate}" "${CONFIG_PATH}"
break
fi
done
fi
if [ -n "${CLI_PROXY_KEY:-}" ]; then
if [ -z "${MANAGEMENT_KEY:-}" ]; then
MANAGEMENT_KEY="${CLI_PROXY_KEY}"
fi
if [ -z "${API_KEYS:-}" ]; then
API_KEYS="${CLI_PROXY_KEY}"
fi
fi
if [ -f "${CONFIG_PATH}" ]; then
if [ -n "${MANAGEMENT_KEY:-}" ]; then
MGMT_ESCAPED="$(printf '%s' "${MANAGEMENT_KEY}" | sed 's/[\\/&]/\\&/g')"
if grep -q '^[[:space:]]*secret-key:' "${CONFIG_PATH}"; then
sed -i "s|^\([[:space:]]*secret-key:\).*|\1 \"${MGMT_ESCAPED}\"|" "${CONFIG_PATH}"
fi
fi
if [ -n "${API_KEYS:-}" ]; then
TMP_CONFIG="${CONFIG_PATH}.tmp"
awk -v keys="${API_KEYS}" '
BEGIN {
n=split(keys, arr, /[ ,]+/);
in_api=0;
found=0;
}
function emit_keys() {
print "api-keys:";
for (i=1; i<=n; i++) {
if (length(arr[i]) > 0) {
print " - \"" arr[i] "\"";
}
}
}
{
if (in_api) {
if ($0 ~ /^[[:space:]]*-/) {
next;
} else {
in_api=0;
}
}
if ($0 ~ /^api-keys:[[:space:]]*$/) {
emit_keys();
in_api=1;
found=1;
next;
}
print $0;
}
END {
if (!found) {
emit_keys();
}
}
' "${CONFIG_PATH}" > "${TMP_CONFIG}" && mv "${TMP_CONFIG}" "${CONFIG_PATH}"
fi
fi
if [ -f "${CONFIG_PATH}" ]; then
ln -sf "${CONFIG_PATH}" /CLIProxyAPI/config.yaml
elif [ -f "/CLIProxyAPI/config.yaml" ]; then
echo "Using existing /CLIProxyAPI/config.yaml"
else
echo "No config file found. Set CONFIG_CONTENT or mount CONFIG_PATH."
fi
if [ -e /root/.cli-proxy-api ] && [ ! -L /root/.cli-proxy-api ]; then
rm -rf /root/.cli-proxy-api
fi
ln -sfn "${AUTH_DIR}" /root/.cli-proxy-api
NGINX_CONF_DIR="/etc/nginx/conf.d"
if [ -d "/etc/nginx/http.d" ]; then
NGINX_CONF_DIR="/etc/nginx/http.d"
fi
if [ -z "${MANAGEMENT_KEY:-}" ] && [ -f "${CONFIG_PATH}" ]; then
MGMT_KEY_LINE="$(sed -n 's/^[[:space:]]*secret-key[[:space:]]*:[[:space:]]*//p' "${CONFIG_PATH}" | head -n 1)"
MGMT_KEY_LINE="$(printf '%s' "${MGMT_KEY_LINE}" | sed 's/[[:space:]]*$//')"
MANAGEMENT_KEY="${MGMT_KEY_LINE#\"}"
MANAGEMENT_KEY="${MANAGEMENT_KEY%\"}"
MANAGEMENT_KEY="${MANAGEMENT_KEY#\'}"
MANAGEMENT_KEY="${MANAGEMENT_KEY%\'}"
export MANAGEMENT_KEY
fi
export PROXY_PATH CLI_PROXY_HOST CLI_PROXY_PORT PORT MANAGEMENT_KEY
envsubst '${PORT} ${CLI_PROXY_HOST} ${CLI_PROXY_PORT} ${MANAGEMENT_KEY}' \
< /etc/nginx/templates/default.conf.template \
> "${NGINX_CONF_DIR}/default.conf"
detect_cmd() {
if [ -n "${CLI_PROXY_CMD:-}" ]; then
echo "${CLI_PROXY_CMD}"
return 0
fi
if [ -x "/docker-entrypoint.sh" ]; then
echo "/docker-entrypoint.sh"
return 0
fi
if [ -x "/entrypoint.sh" ]; then
echo "/entrypoint.sh"
return 0
fi
if [ -x "/CLIProxyAPI/cli-proxy-api" ]; then
echo "/CLIProxyAPI/cli-proxy-api"
return 0
fi
if [ -x "/CLIProxyAPI/start.sh" ]; then
echo "/CLIProxyAPI/start.sh"
return 0
fi
if [ -x "/CLIProxyAPI/run.sh" ]; then
echo "/CLIProxyAPI/run.sh"
return 0
fi
if [ -x "/CLIProxyAPI/CLIProxyAPI" ]; then
echo "/CLIProxyAPI/CLIProxyAPI"
return 0
fi
if [ -f "/CLIProxyAPI/main.py" ]; then
echo "python /CLIProxyAPI/main.py"
return 0
fi
if [ -f "/CLIProxyAPI/app.py" ]; then
echo "python /CLIProxyAPI/app.py"
return 0
fi
if [ -f "/CLIProxyAPI/server.py" ]; then
echo "python /CLIProxyAPI/server.py"
return 0
fi
if [ -f "/CLIProxyAPI/index.js" ]; then
echo "node /CLIProxyAPI/index.js"
return 0
fi
if [ -f "/CLIProxyAPI/package.json" ]; then
echo "npm start --prefix /CLIProxyAPI"
return 0
fi
return 1
}
if [ "$#" -gt 0 ]; then
echo "Starting CLIProxyAPI from base CMD: $*"
"$@" &
else
CLI_CMD="$(detect_cmd || true)"
if [ -z "${CLI_CMD}" ]; then
echo "Cannot detect how to start CLIProxyAPI."
echo "Set CLI_PROXY_CMD in Space Variables to the correct launch command."
exit 1
fi
echo "Starting CLIProxyAPI: ${CLI_CMD}"
sh -c "${CLI_CMD}" &
fi
echo "Starting nginx on port ${PORT}, proxy path ${PROXY_PATH}"
exec nginx -g 'daemon off;'
|