1
1
#! /usr/bin/env bash
2
2
set -eo pipefail
3
3
[[ $DOKKU_TRACE ]] && set -x
4
+ source " $PLUGIN_AVAILABLE_PATH /config/functions"
5
+ source " $PLUGIN_AVAILABLE_PATH /nginx-vhosts/functions"
4
6
5
7
nginx_stream_build_config () {
6
8
local APP=" $1 "
7
9
local STREAM_TEMPLATE_NAME=" stream.conf.sigil"
8
10
local STREAM_TEMPLATE=" $PLUGIN_AVAILABLE_PATH /nginx-stream/templates/$STREAM_TEMPLATE_NAME "
9
11
local SCHEME=tcp
10
- if [[ " $( plugn trigger proxy-is-enabled " $APP " ) " == " true" ]]; then
11
- local DOKKU_PROXY_PORT_MAP=$( config_get " $APP " DOKKU_PROXY_PORT_MAP)
12
-
13
-
14
- local PORT_MAP PROXY_PORT_MAP
15
- for PORT_MAP in $DOKKU_PROXY_PORT_MAP ; do
16
- local PROXY_SCHEME=" $( awk -F ' :' ' { print $1 }' <<< " $PORT_MAP" ) "
17
- if [[ " $PROXY_SCHEME " == " tcp" ]]; then
18
- local PROXY_PORT_MAP+=" $PORT_MAP "
19
- fi
20
- done
21
- local PROXY_PORT_MAP=" $( echo " $PROXY_PORT_MAP " | xargs) "
22
-
23
- local STREAM_BUILD_CONFIG_TMP_WORK_DIR=$( mktemp -d " /tmp/dokku-${DOKKU_PID} -${FUNCNAME[0]} .XXXXXX" )
24
- local STREAM_CONF=$( mktemp --tmpdir=" ${STREAM_BUILD_CONFIG_TMP_WORK_DIR} " " stream.conf.XXXXXX" )
25
-
26
- local SIGIL_PARAMS=(-f " $STREAM_TEMPLATE " APP=" $APP "
27
- DOKKU_APP_LISTEN_IP=" $DOKKU_APP_LISTEN_IP "
28
- PROXY_PORT_MAP=" $PROXY_PORT_MAP " )
29
- echo " -----> Configuring NGINX Stream plugin"
30
- sigil " ${SIGIL_PARAMS[@]} " | cat -s > " $STREAM_CONF "
31
- mv " $STREAM_CONF " " $DOKKU_ROOT /$APP /stream.conf"
32
-
33
- else
12
+ if [[ " $( plugn trigger proxy-is-enabled " $APP " ) " != " true" ]]; then
34
13
dokku_log_fail " Enable proxy for this to work"
14
+ exit 0
35
15
fi
36
- }
16
+ local DOKKU_PROXY_PORT_MAP= $( config_get " $APP " DOKKU_PROXY_PORT_MAP )
37
17
38
- Upstream ports....
18
+
19
+ local PORT_MAP PROXY_PORT_MAP
20
+ for PORT_MAP in $DOKKU_PROXY_PORT_MAP ; do
21
+ local PROXY_SCHEME=" $( awk -F ' :' ' { print $1 }' <<< " $PORT_MAP" ) "
22
+ if [[ " $PROXY_SCHEME " == " tcp" ]]; then
23
+ local PROXY_PORT_MAP+=" $PORT_MAP "
24
+ fi
25
+ done
26
+ local PROXY_PORT_MAP=" $( echo " $PROXY_PORT_MAP " | xargs) "
27
+
28
+ local PROXY_UPSTREAM_PORTS
29
+ for PORT_MAP in $PROXY_PORT_MAP ; do
30
+ local PROXY_UPSTREAM_PORT=" $( awk -F ' :' ' { print $3 }' <<< " $PORT_MAP" ) "
31
+ if [[ " $( is_val_in_list " $PROXY_UPSTREAM_PORT " " $PROXY_UPSTREAM_PORTS " " " ) " == " false" ]]; then
32
+ local PROXY_UPSTREAM_PORTS+=" $PROXY_UPSTREAM_PORT "
33
+ fi
34
+ done
35
+ local PROXY_UPSTREAM_PORTS=" $( echo " $PROXY_UPSTREAM_PORTS " | xargs) "
36
+
37
+ local STREAM_BUILD_CONFIG_TMP_WORK_DIR=$( mktemp -d " /tmp/dokku-${DOKKU_PID} -${FUNCNAME[0]} .XXXXXX" )
38
+ local STREAM_CONF=$( mktemp --tmpdir=" ${STREAM_BUILD_CONFIG_TMP_WORK_DIR} " " stream.conf.XXXXXX" )
39
+
40
+ local SIGIL_PARAMS=(-f " $STREAM_TEMPLATE " APP=" $APP "
41
+ DOKKU_APP_LISTEN_IP=" $DOKKU_APP_LISTEN_IP "
42
+ PROXY_PORT_MAP=" $PROXY_PORT_MAP " )
43
+
44
+ local DOKKU_SCALE_FILE=" $DOKKU_ROOT /$APP /DOKKU_SCALE"
45
+ while read -r line || [[ -n " $line " ]]; do
46
+ [[ " $line " =~ ^# .* ]] && continue
47
+ line= " $( strip_inline_comments " $line " ) "
48
+ PROC_TYPE= ${line%% =* }
49
+ LISTENERS= " $( plugn trigger network-get-listeners " $APP " " $PROC_TYPE " | xargs) "
50
+ UPP_PROC_TYPE= " ${PROC_TYPE^^} "
51
+ UPP_PROC_TYPE= " ${UPP_PROC_TYPE// -/ _} "
52
+ SIGIL_PARAMS+= ( " DOKKU_APP_${UPP_PROC_TYPE} _LISTENERS=$LISTENERS " )
53
+ done < " $DOKKU_SCALE_FILE "
54
+
55
+ echo " -----> Configuring NGINX Stream plugin"
56
+ sigil " ${SIGIL_PARAMS[@]} " | cat -s > " $STREAM_CONF "
57
+ mv " $STREAM_CONF " " $DOKKU_ROOT /$APP /stream.conf"
58
+ validate_nginx && restart_nginx > /dev/null
59
+ }
0 commit comments