Skip to content

Instantly share code, notes, and snippets.

@olbat
Last active August 16, 2023 11:05
Show Gist options
  • Save olbat/1047463799ab8e617c36698825420bc9 to your computer and use it in GitHub Desktop.
Save olbat/1047463799ab8e617c36698825420bc9 to your computer and use it in GitHub Desktop.
Synology DonwloadStation blocklist update script
#!/bin/bash
set -euo pipefail
BLOCKLIST_URL='https://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz'
BLOCKLIST_FILE=/var/packages/DownloadStation/etc/download/blocklists/level1
echo "Clean old blocklist"
rm -f $(dirname $BLOCKLIST_FILE)/*
echo "Download new blocklist"
curl -sSLf --retry 10 --retry-delay 60 --max-time 30 "$BLOCKLIST_URL" \
| gzip -cd - \
| sed -e '/^\s*#/d' -e '/^\s*$/d' \
> $BLOCKLIST_FILE
# patch configuration & service files that might be overwritten after a package update:
# - enable blocklists in transmissiond config file
# - prevent this config file to be deleted by the service's startup script
echo "Patch service files"
sed -i /var/packages/DownloadStation/etc/download/settings.json \
-e 's/\(^\s*"blocklist-enabled"\s*:\)[^,]*/\1 true/' \
-e 's/\(^\s*"blocklist-url"\s*:\)[^,]*/\1 ""/'
sed -i /var/packages/DownloadStation/scripts/start-stop-status \
-e 's|\(^\s*rm .\+/settings.json\s*$\)|#\1|'
echo "Restart DownloadStation"
#synoservicectl --restart pkgctl-DownloadStation
/var/packages/DownloadStation/target/scripts/S25download.sh restart
echo "Verify that the blocklist file was loaded by transmissiond"
sleep 10 # wait for transmissiond to finish starting up
[ -s "$BLOCKLIST_FILE".bin ] \
|| { echo "Missing bin file: blocklist was not loaded by transmissiond"; exit 1; }
# transmissiond logfile: /var/services/download/transmissiond.log
@olbat
Copy link
Author

olbat commented Jun 13, 2022

Again, it looks that you all have an issue with the script's runtime environment.
Please make sure that the script is executable and being run with a user that has the relevant access.

@redking974
Copy link

Don't remember if script was loaded directly from the scheduler or via .sh but if 2nd case it have been chmod. And root in my case and case of @nexttoyou.
No issue from the other script where I found your comment.
Regards.

@olbat
Copy link
Author

olbat commented Jun 23, 2022

Just look at the script, every single paths are fully qualified. The script doesn't assume that you run it from a specific directory. Again it's just a matter of runtime environment and user permissions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment