diff --git a/auto_COVID_SAfe_checkin.sh b/auto_COVID_SAfe_checkin.sh new file mode 100755 index 0000000..311b33b --- /dev/null +++ b/auto_COVID_SAfe_checkin.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Uncomment & put your mobile verification token here (unless you have it set as a global variable): +#COVID_API_TOKEN="" + +# To get your COVID_API_TOKEN, fill in your number and run this command: +#curl 'https://api.sa.gov.au/covid-venue-checkin/v1/begin-mobile-verification?mobileNumber=61400000000' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://checkin.covid-19.sa.gov.au/' -H 'Origin: https://checkin.covid-19.sa.gov.au' -H 'Connection: keep-alive' +# You will receive a verification code by SMS. Fill it in here along with your mobile number and you will get your COVID_API_TOKEN: +#curl 'https://api.sa.gov.au/covid-venue-checkin/v1/complete-mobile-verification?mobileNumber=61400000000&verificationCode=000000' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://checkin.covid-19.sa.gov.au/' -H 'Origin: https://checkin.covid-19.sa.gov.au' -H 'Connection: keep-alive' + +# IDK, figure this out yourself. You can find all the important data in the the venue QR code. +JSON_PAYLOAD='{"firstName":"","lastName":"","planId":"","businessName":"","businessAddress":null}' + +############################### END USER CONFIGS ############################### + + +# File used to store the last check-in time +status_file="$HOME/.covid-safe-last-check-in" + + +# ANSI escape colour codes +COLOUR_ERROR='\e[97m\e[41m\e[1m\e[5m' # Flashing bold white text on a red background +COLOUR_SUCCESS='\e[97m\e[42m' # White text, green background +COLOUR_END='\033[0m' # Reset ANSI colours to default + +function displaytime { # Stolen from here: https://unix.stackexchange.com/a/27014 + local T=$1 + local D=$((T/60/60/24)) + local H=$((T/60/60%24)) + local M=$((T/60%60)) + local S=$((T%60)) + (( $D > 0 )) && printf '%d days ' $D + (( $H > 0 )) && printf '%d hours ' $H + (( $M > 0 )) && printf '%d minutes ' $M + (( $D > 0 || $H > 0 || $M > 0 )) && printf 'and ' + printf '%d seconds' $S +} + +if [ -z ${COVID_API_TOKEN+x} ]; then + printf "${COLOUR_ERROR}No COVID_API_TOKEN supplied${COLOUR_END}" + exit 1 +fi + +if [ ! -f "$status_file" ]; then + printf "Status file doesn't exist, creating it now." + touch --date=@0 "$status_file" +fi + +last_checkin=$(stat -c %Y "$status_file") +time_since_last_checkin=$(( $(date +%s) - $last_checkin )) + +printf "Last checkin-in was " ; displaytime $time_since_last_checkin ; printf " ago.\n" + + +if [ $time_since_last_checkin -gt 18000 ]; then # 5 hours between check-ins + if [ ! -z ${SSH_CONNECTION+x} ]; then # Don't check-in if SSH session + printf "${COLOUR_ERROR}You are connected via SSH. You will not be checked-in.${COLOUR_END}\n" + exit 1 + fi + + curl 'https://api.sa.gov.au/covid-venue-checkin/v1/checkin' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Referer: https://checkin.covid-19.sa.gov.au/' -H 'Content-Type: application/json;charset=utf-8' -H "Authorization: Bearer $COVID_API_TOKEN" -H 'Origin: https://checkin.covid-19.sa.gov.au' -H 'Connection: keep-alive' --data-raw "$JSON_PAYLOAD" + exit=$? + if [ "$exit" -eq 0 ]; then + printf "${COLOUR_SUCCESS}Successfully checked-in${COLOUR_END}\n" + touch "$status_file" + else + printf "${COLOUR_ERROR}[Error][Error][Error][Error][Error][Error]${COLOUR_END}\n" + fi +fi