From 744de6aec254d3c1b22ce45756c6f7d9b7d1a093 Mon Sep 17 00:00:00 2001 From: Nikita Skryabin Date: Tue, 18 Feb 2025 09:45:49 +0300 Subject: [PATCH 1/4] chore(install.sh): replace rm command with find --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 119bade..6c702b9 100755 --- a/install.sh +++ b/install.sh @@ -97,7 +97,7 @@ main() { fi - rm -f $DOWNLOAD_DIR/podkop*.ipk $DOWNLOAD_DIR/luci-app-podkop*.ipk $DOWNLOAD_DIR/luci-i18n-podkop-ru*.ipk + find "$DOWNLOAD_DIR" -type f -name '*podkop*' -exec rm {} \; if [ "$IS_SHOULD_RESTART_NETWORK" ]; then printf "\033[32;1mRestart network\033[0m\n" @@ -429,4 +429,4 @@ sing_box() { fi } -main \ No newline at end of file +main From 6f997a6e73d5a59d319c03aeebc559a6e26332ad Mon Sep 17 00:00:00 2001 From: Nikita Skryabin Date: Tue, 18 Feb 2025 09:58:26 +0300 Subject: [PATCH 2/4] refactor(install.sh): improve download retry logic --- install.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 6c702b9..cb73e8e 100755 --- a/install.sh +++ b/install.sh @@ -47,23 +47,24 @@ main() { filename=$(basename "$url") filepath="$DOWNLOAD_DIR/$filename" + if [ -f "$filepath" ] && [ -s "$filepath" ]; then + echo "$filename has already been uploaded" + continue + fi + attempt=0 while [ $attempt -lt $COUNT ]; do - if [ -f "$filepath" ] && [ -s "$filepath" ]; then - echo "$filename has already been uploaded" - break - fi - echo "Download $filename (count $((attempt+1)))..." wget -q -O "$filepath" "$url" if [ -s "$filepath" ]; then echo "$filename successfully downloaded" + break else echo "Download error $filename. Retry..." rm -f "$filepath" + attempt=$((attempt+1)) fi - attempt=$((attempt+1)) done done @@ -96,7 +97,6 @@ main() { done fi - find "$DOWNLOAD_DIR" -type f -name '*podkop*' -exec rm {} \; if [ "$IS_SHOULD_RESTART_NETWORK" ]; then From ade2b844ec1f649f54f7f0e8ac9647454c2337d7 Mon Sep 17 00:00:00 2001 From: Nikita Skryabin Date: Tue, 18 Feb 2025 10:05:34 +0300 Subject: [PATCH 3/4] fix(init.d/podkop): change rm command to remove only *.lst files in /tmp/podkop directory --- podkop/files/etc/init.d/podkop | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/podkop/files/etc/init.d/podkop b/podkop/files/etc/init.d/podkop index 1b1040f..1a5ad3f 100755 --- a/podkop/files/etc/init.d/podkop +++ b/podkop/files/etc/init.d/podkop @@ -73,7 +73,7 @@ stop_service() { remove_cron_job dnsmasq_rm - rm -rf /tmp/podkop/* + rm -rf /tmp/podkop/*.lst log "Flush nft" if nft list table inet PodkopTable >/dev/null 2>&1; then @@ -1608,4 +1608,4 @@ show_config() { show_version() { local version=$(opkg info podkop | grep -m 1 "Version:" | cut -d' ' -f2) echo "$version" -} \ No newline at end of file +} From bd0e33781f863329b15431eea65c33f5fb5b4c2d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Feb 2025 12:06:33 +0300 Subject: [PATCH 4/4] fix(install): correct continue logic for existing package files --- install.sh | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/install.sh b/install.sh index cb73e8e..c43c362 100755 --- a/install.sh +++ b/install.sh @@ -43,31 +43,42 @@ main() { add_tunnel fi - wget -qO- "$REPO" | grep -o 'https://[^"[:space:]]*\.ipk' | while read -r url; do + download_success=0 + while read -r url; do filename=$(basename "$url") filepath="$DOWNLOAD_DIR/$filename" - + if [ -f "$filepath" ] && [ -s "$filepath" ]; then echo "$filename has already been uploaded" + download_success=1 continue fi - + attempt=0 while [ $attempt -lt $COUNT ]; do echo "Download $filename (count $((attempt+1)))..." - wget -q -O "$filepath" "$url" - - if [ -s "$filepath" ]; then - echo "$filename successfully downloaded" - break - else - echo "Download error $filename. Retry..." - rm -f "$filepath" - attempt=$((attempt+1)) + if wget -q -O "$filepath" "$url"; then + if [ -s "$filepath" ]; then + echo "$filename successfully downloaded" + download_success=1 + break + fi fi + echo "Download error $filename. Retry..." + rm -f "$filepath" + attempt=$((attempt+1)) done - done - + + if [ $attempt -eq $COUNT ]; then + echo "Failed to download $filename after $COUNT attempts" + fi + done < <(wget -qO- "$REPO" | grep -o 'https://[^"[:space:]]*\.ipk') + + if [ $download_success -eq 0 ]; then + echo "No packages were downloaded successfully" + exit 1 + fi + for pkg in podkop luci-app-podkop; do file=$(ls "$DOWNLOAD_DIR" | grep "^$pkg" | head -n 1) if [ -n "$file" ]; then