voacap - Added validation for longitude values

This commit is contained in:
thetechprepper
2025-08-24 08:40:00 -07:00
parent da944abdda
commit 6c77261d6f
@@ -4,7 +4,7 @@
# Date : 23 May 2023
# Updated : 24 August 2025
# Purpose : Offline HF prediction using voacapl
#set -e
set -e
set -o pipefail
trap 'last_command=$current_command; current_command=$BASH_COMMAND' DEBUG
trap 'echo -e "${RED}\"${last_command}\" command failed with exit code $?.${NC}"' ERR
@@ -81,6 +81,32 @@ validate_latitude() {
fi
}
validate_longitude() {
local lon="$1"
if [[ -z "$lon" ]]; then
echo -e "${RED}Longitude can't be an empty value${NC}" >&2
return 1
fi
if ! [[ "$lon" =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then
echo -e "${RED}Longitude must be a number${NC}" >&2
return 1
fi
local lonf
lonf=$(printf "%.10f" "$lon" 2>/dev/null) || {
echo -e "${RED}Error converting longitude ${NC}" >&2
return 1
}
# Check range: -180 <= lat <= 1800
if (( $(echo "$lon < -180" | bc -l) )) || (( $(echo "$lon > 180" | bc -l) )); then
echo -e "${RED}Longitude must be in range between -180 and 180 degrees${NC}" >&2
return 1
fi
}
ET_SSN="${HOME}/.local/share/emcomm-tools/voacap/ssn.txt"
if [[ ! -e ${ET_SSN} ]]; then
echo -e "${RED}Sunspot number file not available:${WHITE}${ET_SSN}${NC}"
@@ -189,6 +215,7 @@ fi
read TL TK <<< "$result"
validate_latitude "$TL" || exit 1
validate_longitude "$TK" || exit 1
TL1=$( awk -v n1=$TL -v n2=90 -v n3=-90 'BEGIN {if (n1<n3 || n1>n2) printf ("%s", "a"); else printf ("%.2f", n1);}' )
@@ -216,6 +243,7 @@ fi
read RL RK <<< "$result"
validate_latitude "$RL" || exit 1
validate_longitude "$RK" || exit 1
RL1=$( awk -v n1=$RL -v n2=90 -v n3=-90 'BEGIN {if (n1<n3 || n1>n2) printf ("%s", "a"); else printf ("%.2f", n1);}' )