#!/usr/bin/env bash ######################################################### # Config ######################################################### FIX_SCRIPT_LOCATION="/usr/bin/xxpritunl-fix" ######################################################### # Helpers ######################################################### function check_root() { if [ "$EUID" -ne 0 ]; then echo "This script must be run as root!" exit 1 fi } function add_cron() { if grep -q "bash ${FIX_SCRIPT_LOCATION}" /etc/crontab; then echo "Cron job already exists. Skipping..." else echo "Adding cron job..." echo "*/5 * * * bash ${FIX_SCRIPT_LOCATION}" >> /etc/crontab fi } function write_script() { cat <<"EOF" > "$FIX_SCRIPT_LOCATION" #!/usr/bin/env bash function verify_curl() { if [[ "$2" == *"$1"* ]]; then echo "Site is up" return 0 else echo "Site is down. Reissuing SSL and restarting service..." pritunl reset-ssl-cert systemctl restart pritunl return 1 fi } function verify_service() { local _service="$1" echo "Checking if service $_service is running..." if [ "$(systemctl is-active "$_service")" == "active" ]; then echo "Service $_service is running" return 0 else echo "Service $_service is not running. Restarting service..." systemctl restart "$_service" return 1 fi } verify_service "pritunl" verify_service "mongod" verify_curl "login-backdrop" "$(curl -s -k -L https://localhost)" echo "All done." exit 0 EOF } ######################################################### # Main ######################################################### check_root write_script add_cron