Added multiple IP checker endpoints

The logic for getting the IP address is not within the
"find_available_ip_endpoint" function in order to allow for proper error
handling. If "send_error_message" were called in the function, the
script would exit with no indication as to why.
This commit is contained in:
gloof11 2024-06-21 20:06:07 +09:00
parent 3a7dbab35c
commit 3ff04b8448

27
yams
View File

@ -29,6 +29,25 @@ send_error_message() {
exit 255 exit 255
} }
find_available_ip_endpoint() {
ip_endpoints=(
"https://ipinfo.io/ip"
"https://api.ipify.org"
"https://checkip.amazonaws.com"
"https://tnedi.me"
"https://api.myip.la"
"https://wtfismyip.com/text"
)
for ip in ${ip_endpoints[@]}; do
endpoint=$(curl -s "$ip")
if [ "$endpoint" != "" ]; then
echo $ip
break
fi
done
}
if [ "$option" == "--help" ]; then if [ "$option" == "--help" ]; then
help help
exit 0 exit 0
@ -53,14 +72,18 @@ fi
if [ "$option" == "check-vpn" ]; then if [ "$option" == "check-vpn" ]; then
echo "Getting your IP..." echo "Getting your IP..."
your_ip=$(curl -s https://ipinfo.io/ip) ip_endpoint=$(find_available_ip_endpoint)
if [ "$ip_endpoint" == "" ]; then
send_error_message "No available endpoint to get IP address!"
fi
your_ip=$(curl -s $ip_endpoint)
echo "$your_ip" echo "$your_ip"
echo "Your local IP country is $(curl -s https://am.i.mullvad.net/country)" echo "Your local IP country is $(curl -s https://am.i.mullvad.net/country)"
echo echo
echo echo
echo "Getting your qBittorrent IP..." echo "Getting your qBittorrent IP..."
qbittorrent_ip=$(docker exec qbittorrent sh -c 'curl -s https://ipinfo.io/ip'); qbittorrent_ip=$(docker exec qbittorrent sh -c "curl -s $ip_endpoint");
if [ -n "$qbittorrent_ip" ]; then if [ -n "$qbittorrent_ip" ]; then
echo "$qbittorrent_ip" echo "$qbittorrent_ip"
echo "Your country in qBittorrent is $(docker exec -it qbittorrent sh -c 'curl -s https://am.i.mullvad.net/country')" echo "Your country in qBittorrent is $(docker exec -it qbittorrent sh -c 'curl -s https://am.i.mullvad.net/country')"