63 lines
2 KiB
Bash
63 lines
2 KiB
Bash
|
#!/bin/bash
|
||
|
set -x
|
||
|
|
||
|
echo "## ELASTICSEARCH"
|
||
|
echo "Setting permissions..."
|
||
|
chmod g+rwx -R /usr/share/elasticsearch/data/
|
||
|
chgrp 0 -R /usr/share/elasticsearch/data/
|
||
|
|
||
|
echo "## NGINX"
|
||
|
echo "Checking nginx certs..."
|
||
|
cd /etc/nginx/ssl/
|
||
|
if [ ! -f "/etc/nginx/ssl/kibana.crt" ] || [ ! -f "/etc/nginx/ssl/kibana.key" ]; then
|
||
|
echo "No certs found. Generating..."
|
||
|
openssl req -x509 -nodes -days 365 -newkey rsa:3072 -keyout kibana.key -out kibana.crt \
|
||
|
-subj "/CN=parsedmarc" -addext "subjectAltName=DNS:parsedmarc"
|
||
|
echo "Certs generated."
|
||
|
fi
|
||
|
|
||
|
echo "## KIBANA"
|
||
|
if [ ! -f /etc/parsedmarc/kibana_export.ndjson ]; then
|
||
|
# trigger empty file to trigger below update logic.
|
||
|
touch /etc/parsedmarc/kibana_export.ndjson
|
||
|
fi
|
||
|
echo "Downloading dashboard from GitHub..."
|
||
|
rm /etc/parsedmarc/kibana_export.ndjson.tmp
|
||
|
curl https://raw.githubusercontent.com/domainaware/parsedmarc/master/kibana/export.ndjson \
|
||
|
-o /etc/parsedmarc/kibana_export.ndjson.tmp
|
||
|
if [ ${?} -ne 0 ]; then
|
||
|
echo "Downloading kibana export failed."
|
||
|
else
|
||
|
fileNew=$(wc -c "/etc/parsedmarc/kibana_export.ndjson.tmp") # always use quoted var
|
||
|
fileOld=$(wc -c "/etc/parsedmarc/kibana_export.ndjson")
|
||
|
|
||
|
if [ $fileNew -eq $fileOld ]; then
|
||
|
echo "File size is the same. Not proceeding."
|
||
|
else
|
||
|
echo "File size is different... updating..."
|
||
|
|
||
|
while ! curl -s -f -I http://kibana:5601 >/dev/null; do
|
||
|
echo "Kibana not responding... waiting 5 secs..."
|
||
|
sleep 5
|
||
|
done
|
||
|
|
||
|
echo "Kibana responded. Waiting 10s, then proceeding with dashboard update..."
|
||
|
sleep 10
|
||
|
rm /etc/parsedmarc/kibana_export.ndjson
|
||
|
mv /etc/parsedmarc/kibana_export.ndjson.tmp /etc/parsedmarc/kibana_export.ndjson
|
||
|
RES=$(curl -X POST http://kibana:5601/api/saved_objects/_import?overwrite=true \
|
||
|
-H "kbn-xsrf: true" --form file=@/etc/parsedmarc/kibana_export.ndjson)
|
||
|
echo "Result: $RES"
|
||
|
if [ ${?} -ne 0 ]; then
|
||
|
echo "[!!!] Import might have failed. Manual check recommended."
|
||
|
fi
|
||
|
echo "Importing done."
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
sleep 3
|
||
|
# Create empty file to let other containers know that we're ready.
|
||
|
touch /ready
|
||
|
sleep infinity # or while true; do sleep 86400; done
|
||
|
exit 0
|