#!/usr/bin/env bash

mkdir -p app/certs
openssl genrsa -out app/certs/cert.key 2048
openssl req -new -key app/certs/cert.key -out app/certs/cert.csr -subj "/C=/ST=/L=/O=/OU=/CN=/emailAddress="
openssl x509 -req -days 365 -in app/certs/cert.csr -signkey app/certs/cert.key -out app/certs/cert.crt

LOCATION="$(pwd)"

cat << EOF > $LOCATION/app/.env
# Environment variables
WOL_SECRET_KEY="changethis"
WOL_USER_PASS="changethat"
REDIS_URL="redis://localhost:6379/0"
DEVICE_MAC="00:00:00:00:00:00"
DEVICE_IP="192.168.0.0"
DEVICE_IFACE="eth0"
EOF

cat << EOF > /etc/systemd/system/wolServer.service
[Unit]
Description=wol-server
After=network.target
[Service]
Type=simple
StandardOutput=journal
StandardError=journal
SyslogIdentifier=%n
User=root
Group=root
WorkingDirectory=$LOCATION/app
EnvironmentFile=$LOCATION/app/.env
ExecStart=$LOCATION/app/wolServer
LimitNOFILE=20000
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF

ARCH="$(uname -m)"
LATEST_RELEASE="$(curl -s https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases/latest | jq -r '.tag_name')"

if [ "$ARCH" = "x86_64" ]; then
  wget -O app/wolServer https://git.konsthol.eu/konsthol/WOL-Ly/releases/download/"$LATEST_RELEASE"/wolServer-x86_64
elif [ "$ARCH" = "aarch64" ]; then
  wget -O app/wolServer https://git.konsthol.eu/konsthol/WOL-Ly/releases/download/"$LATEST_RELEASE"/wolServer-arm
fi

chmod +x app/wolServer

systemctl daemon-reload
systemctl enable --now wolServer.service
