Skip to content

Commit fe2f1dd

Browse files
committed
Added crowdsec openresty bouncer, isolated to a plugin install only if enabled.
1 parent 1a76f4e commit fe2f1dd

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/with-contenv bash
2+
# shellcheck shell=bash
3+
4+
set -e # Exit immediately if a command exits with a non-zero status.
5+
6+
log() {
7+
echo "[cont-init.d] $(basename $0): $*"
8+
}
9+
10+
CROWDSEC_OPENRESTY_BOUNCER_VERSION=${CROWDSEC_BOUNCER_VERSION}
11+
CROWDSEC_OPENRESTY_BOUNCER_URL=https://github.com/crowdsecurity/cs-openresty-bouncer/releases/download/v${CROWDSEC_OPENRESTY_BOUNCER_VERSION:=0.1.1}/crowdsec-openresty-bouncer.tgz
12+
13+
if [ "${CROWDSEC_BOUNCER}" == "1" ]; then
14+
#Create required folders if they don't exist
15+
mkdir -p /tmp/crowdsec/ /data/crowdsec/templates /data/crowdsec/static_package
16+
#Download the Crowdsec Openresty Bouncer if a static package is not found, this is useful for testing new versions or if we don't want to update
17+
if [ -f /data/crowdsec/static_package/crowdsec-openresty-bouncer.tgz ]; then
18+
tar -xf /data/crowdsec/static_package/crowdsec-openresty-bouncer.tgz --strip=1 -C /tmp/crowdsec/
19+
else
20+
wget ${CROWDSEC_OPENRESTY_BOUNCER_URL} -O /tmp/crowdsec-openresty-bouncer.tgz
21+
tar -xf /tmp/crowdsec-openresty-bouncer.tgz --strip=1 -C /tmp/crowdsec/
22+
rm /tmp/crowdsec-openresty-bouncer.tgz
23+
fi
24+
25+
# Manually Deploy Crowdsec Openresty Bouncer, this will be done by the install.sh script in crowdsec-openresty-bouncer in future.
26+
#https://github.com/crowdsecurity/cs-openresty-bouncer/pull/18
27+
if grep 'docker' /tmp/crowdsec/install.sh; then
28+
cd /tmp/crowdsec && bash ./install.sh --NGINX_CONF_DIR=/etc/nginx/conf.d --LIB_PATH=/etc/nginx/lualib --CONFIG_PATH=/data/crowdsec --DATA_PATH=/data/crowdsec --docker
29+
else
30+
echo "Deploy Crowdsec Openresty Bouncer manually.."
31+
echo "Patching crowdsec_openresty.conf.."
32+
#this will be handled by the installer but due to the current manual process this has to happen.
33+
sed -i 's|/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf|/data/crowdsec/crowdsec-openresty-bouncer.conf|' /tmp/crowdsec/openresty/crowdsec_openresty.conf
34+
sed -i 's|/usr/local/openresty/lualib/plugins/crowdsec|/etc/nginx/lualib/plugins/crowdsec|' /tmp/crowdsec/openresty/crowdsec_openresty.conf
35+
sed -i 's|${SSL_CERTS_PATH}|/etc/ssl/certs/ca-certificates.crt|' /tmp/crowdsec/openresty/crowdsec_openresty.conf
36+
sed -i 's|resolver local=on ipv6=off;||' /tmp/crowdsec/openresty/crowdsec_openresty.conf
37+
echo "Deploy crowdsec_openresty.conf.."
38+
cp /tmp/crowdsec/openresty/crowdsec_openresty.conf /etc/nginx/conf.d/
39+
echo "Deploy lau files.."
40+
cp -r /tmp/crowdsec/lua/lib/* /etc/nginx/lualib/
41+
if [ -f /data/crowdsec/crowdsec-openresty-bouncer.conf ]; then
42+
echo "Patch crowdsec-openresty-bouncer.conf .."
43+
sed "s/=.*//g" /data/crowdsec/crowdsec-openresty-bouncer.conf > /tmp/crowdsec.conf.raw
44+
sed "s/=.*//g" /tmp/crowdsec/config/config_example.conf > /tmp/config_example.conf.raw
45+
if grep -vf /tmp/crowdsec.conf.raw /tmp/config_example.conf.raw ; then
46+
grep -vf /tmp/crowdsec.conf.raw /tmp/config_example.conf.raw > /tmp/config_example.newvals
47+
cp /data/crowdsec/crowdsec-openresty-bouncer.conf /data/crowdsec/crowdsec-openresty-bouncer.conf.bak
48+
grep -f /tmp/config_example.newvals /tmp/crowdsec/config/config_example.conf >> /data/crowdsec/crowdsec-openresty-bouncer.conf
49+
fi
50+
else
51+
echo "Deploy new crowdsec-openresty-bouncer.conf .."
52+
cp /tmp/crowdsec/config/config_example.conf /data/crowdsec/crowdsec-openresty-bouncer.conf
53+
54+
fi
55+
echo "Deploy Templates .."
56+
sed -i 's|/var/lib/crowdsec/lua/templates|/data/crowdsec/templates|' /data/crowdsec/crowdsec-openresty-bouncer.conf
57+
cp -r /tmp/crowdsec/templates/* /data/crowdsec/templates/
58+
fi
59+
60+
[ -n "${CROWDSEC_APIKEY}" ] && sed -i 's|API_KEY=.*|API_KEY='${CROWDSEC_APIKEY}'|' /data/crowdsec/crowdsec-openresty-bouncer.conf
61+
[ -n "${CROWDSEC_HOSTNAME}" ] && sed -i 's|API_URL=.*|API_URL='${CROWDSEC_HOSTNAME}'|' /data/crowdsec/crowdsec-openresty-bouncer.conf
62+
fi
63+
exit 0

0 commit comments

Comments
 (0)