#!/bin/bash
# Build: @build@
set -e

SETUP_DIR="/app/setup"
CONFIG_DIR="${SETUP_DIR}/config"
BURPUI="https://burpui.ziirish.me/builds/burp-ui.dev.tar.gz"

echo "deb http://ziirish.info/repos/debian/jessie zi-latest main" >/etc/apt/sources.list.d/ziirish.list
wget https://ziirish.info/repos/debian.gpg -O- | apt-key add -

# initial cleanup
cd /burp-ui
for x in $(cat .gitignore)
do
  find . -iname "$x" | xargs rm -rf
done
rm -rf .git
rm -rf .gitignore

cd

apt-get remove -y python-cffi
apt-get update
apt-get install -y libssl-dev burp-client

# Install burp-ui
pip install --upgrade pip
pip install "requests[security]"
pip install --upgrade cffi
cd /burp-ui
pip install -r requirements.txt
python setup.py install
pip install ujson
pip install gevent
pip install redis
pip install Flask-Session
pip install Flask-SQLAlchemy
pip install Flask-Migrate
pip install celery

# Create burp-ui User
useradd -r -m -d /var/lib/burpui -c 'Burp-UI daemon user' -u 5337 burpui

mkdir -p /var/log/gunicorn
chown -R burpui: /var/log/gunicorn

# configure supervisord log rotation
cat > /etc/logrotate.d/supervisord <<EOF
/var/log/supervisor/*.log {
  weekly
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  copytruncate
}
EOF

# configure gunicorn log rotation
cat > /etc/logrotate.d/gunicorn <<EOF
/var/log/gunicorn/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  copytruncate
}
EOF

# configure supervisord to start crond
cat > /etc/supervisor/conf.d/cron.conf <<EOF
[program:cron]
priority=20
directory=/tmp
command=/usr/sbin/cron -f
user=root
autostart=false
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
EOF

# configure celery worker                                                       
cat > /etc/supervisor/conf.d/bui-celery.conf <<EOF
[program:bui-celery]
priority=20
directory=/tmp
command=/usr/local/bin/bui-celery --beat -s /var/lib/burpui/celerybeat-schedule
user=burpui
autostart=false
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
EOF

cp ${CONFIG_DIR}/gunicorn.d/burp-ui /etc/gunicorn.d/burp-ui

# this is used in case nothing is monted on /etc/burp
mkdir -p /etc/burp/clientconfdir
cp ${CONFIG_DIR}/burp-ui/burpui.cfg /etc/burp/burpui.cfg

cat ${CONFIG_DIR}/burp/burp.conf >/etc/burp/burp.conf
cat ${CONFIG_DIR}/burp/burp-server.conf >/etc/burp/burp-server.conf
rm -rf /etc/burp/clientconfdir/*
echo "password = abcdefgh" >/etc/burp/clientconfdir/agent

chown -R burpui: /etc/burp

# cleanup
apt-get clean
apt-get autoclean
apt-get -y autoremove
rm -rf /var/lib/apt/lists/*
