-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathstart.sh
More file actions
85 lines (68 loc) · 2.31 KB
/
Copy pathstart.sh
File metadata and controls
85 lines (68 loc) · 2.31 KB
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
#!/bin/bash
set -euo pipefail
fail() {
echo "ERROR: $*" >&2
exit 1
}
if [ -n "${VARNISH_START:-}" ]; then
if [ -n "${VARNISH_LISTEN:-}" ] || [ -n "${VARNISH_VCL:-}" ] || [ -n "${VARNISH_STORAGE:-}" ] || [ -n "${VARNISH_EXTRA_ARGS:-}" ] || [ -n "${VARNISH_BACKEND_HOST:-}" ] || [ -n "${VARNISH_BACKEND_PORT:-}" ] || [ -n "${VARNISH_BACKEND_PROBE_PATH:-}" ]; then
fail "VARNISH_START cannot be combined with VARNISH_LISTEN, VARNISH_VCL, VARNISH_STORAGE, VARNISH_EXTRA_ARGS, or VARNISH_BACKEND_*"
fi
exec /bin/bash -lc "${VARNISH_START}"
fi
listen="${VARNISH_LISTEN:-0.0.0.0:80}"
vcl_path="${VARNISH_VCL:-/etc/varnish/default.vcl}"
storage="${VARNISH_STORAGE:-malloc,1g}"
extra_args="${VARNISH_EXTRA_ARGS:-}"
backend_host="${VARNISH_BACKEND_HOST:-}"
backend_port="${VARNISH_BACKEND_PORT:-}"
backend_probe_path="${VARNISH_BACKEND_PROBE_PATH:-}"
if [ -n "${backend_host}${backend_port}${backend_probe_path}" ]; then
if [ "${vcl_path}" != "/etc/varnish/default.vcl" ]; then
fail "VARNISH_BACKEND_* requires VARNISH_VCL to be /etc/varnish/default.vcl"
fi
VARNISH_BACKEND_HOST="${backend_host:-127.0.0.1}" \
VARNISH_BACKEND_PORT="${backend_port:-8080}" \
VARNISH_BACKEND_PROBE_PATH="${backend_probe_path:-/}" \
/usr/local/bin/render-vcl /etc/varnish/backend.vcl
fi
listen_host="${listen%:*}"
listen_port="${listen##*:}"
if [ -z "${listen_host}" ] || [ -z "${listen_port}" ]; then
fail "Invalid VARNISH_LISTEN '${listen}'; expected host:port"
fi
case "${listen_port}" in
''|*[!0-9]*)
fail "Invalid VARNISH_LISTEN '${listen}'; expected numeric port"
;;
esac
if [ "${listen_port}" -lt 1 ] || [ "${listen_port}" -gt 65535 ]; then
fail "Invalid VARNISH_LISTEN '${listen}'; expected port between 1 and 65535"
fi
if [ ! -f "${vcl_path}" ]; then
fail "Invalid VARNISH_VCL '${vcl_path}'; file does not exist"
fi
case "${storage}" in
*,*)
storage_backend="${storage%%,*}"
storage_size="${storage#*,}"
;;
*)
fail "Invalid VARNISH_STORAGE '${storage}'; expected backend,size"
;;
esac
if [ -z "${storage_backend}" ] || [ -z "${storage_size}" ]; then
fail "Invalid VARNISH_STORAGE '${storage}'; expected backend,size"
fi
args=(
/usr/sbin/varnishd
-F
-f "${vcl_path}"
-a "${listen}"
-s "${storage}"
)
if [ -n "${extra_args}" ]; then
read -r -a extra_words <<< "${extra_args}"
args+=("${extra_words[@]}")
fi
exec "${args[@]}"