From a9804b2f9cbd756cc1502d1b8ab251403860a387 Mon Sep 17 00:00:00 2001 From: billz Date: Sun, 2 Feb 2025 03:08:35 -0800 Subject: [PATCH] Update _get_release() w/ API rate limit and undefined release var check --- installers/raspbian.sh | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/installers/raspbian.sh b/installers/raspbian.sh index 863c57e7..46129966 100755 --- a/installers/raspbian.sh +++ b/installers/raspbian.sh @@ -235,11 +235,25 @@ function _display_welcome() { # Fetch latest release from GitHub or RaspAP Installer API function _get_release() { - readonly RASPAP_LATEST=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' ) + local response + local host="api.github.com" + response=$(curl -s "https://$host/repos/$repo/releases/latest") + + if echo "$response" | grep -q '"API rate limit exceeded"'; then + _install_status 1 "GitHub API rate limit exceeded. Try again later or use a GitHub token." + return 1 + fi + readonly RASPAP_LATEST=$(echo "$response" | grep -Po '"tag_name": "\K.*?(?=")') + + if [ -z "$RASPAP_LATEST" ]; then + _install_status 1 "Failed to fetch latest release. Check network connectivity." + return 1 + fi + if [ "$insiders" == 1 ]; then repo="RaspAP/raspap-insiders" repo_common="RaspAP/raspap-webgui" - readonly RASPAP_INSIDERS_LATEST=$(curl -s "https://api.raspap.com/repos/RaspAP/raspap-insiders/releases/latest/" | grep -Po '"tag_name": "\K.*?(?=")' ) + readonly RASPAP_INSIDERS_LATEST=$(curl -s "https://api.raspap.com/repos/RaspAP/raspap-insiders/releases/latest/" | grep -Po '"tag_name": "\K.*?(?=")') readonly RASPAP_RELEASE="${RASPAP_INSIDERS_LATEST} Insiders" else readonly RASPAP_RELEASE="${RASPAP_LATEST}" @@ -273,6 +287,7 @@ function _install_status() { esac } +# Checks connectivity to github.com function _check_internet() { component="Install" _install_log "Checking internet connectivity..."