My favourite BitTorrent client Transmission supports bluetack-formatted blocklists. In computing, a blacklist or block list is a basic access control mechanism that allows everyone access, except for the members of the black list (i.e. list of denied accesses). Transmission utilizes a blocklist of known anti-P2P IPs, to prevent them from connecting and possibly interfering with transfers.
When you press the "Update Blocklist" button in the Transmission GUI, a new copy of blocklist is downloaded from a Transmission mirror that's updated twice daily. Since transmission-daemon on my headless server does not have such button I have to download the blocklist by hand, uncompress it, and place the uncompressed file in the daemon's blocklists folder.
Here's how to do it manually:
- First, make sure you have enabled blocklist support. Stop transmission-daemon, open file
/etc/transmission-daemon/settings.json, set"blocklist-enabled"property totrueand re-start the daemon. - Go to directory where transmission expects to find the blocklist, on my PPA install it's in
/var/lib/transmission-daemon/info/blocklists/:
# cd /var/lib/transmission-daemon/info/blocklists/
Here, files ending in ".bin" are the binary representations of bluetack files that Transmission generates for faster lookups. - Download gzip compressed blocklist file for Transmission:
# wget http://update.transmissionbt.com/level1.gz
- Unzip the file:
# gunzip level1.gz
You should now have a plain text, bluetack-formatted blocklist file calledlevel1. - Reload transmissions-daemon:
# /etc/init.d/transmission-daemon reload
Now you should see a smaller file appearing calledlevel1.bin. This a binary representation that Transmission generated for faster lookups by parsing our blocklist file. On start-up, Transmission will try to parse any non-".bin" file and generate a new blocklist from it, so you can have multiple blocklists just by copying new bluetack files into this directory.
update-blocklist:#!/bin/bash
# blocklist directory
BLOCKLISTDIR=/var/lib/transmission-daemon/info/blocklists
cd ${BLOCKLISTDIR}
if [ $? -eq 0 ]; then
if [ -f level1 ]; then
rm level1
fi
# if no blocklist file exist update blocklist
if [ ! -f level1 ]; then
wget -q -O level1.gz http://update.transmissionbt.com/level1.gz
# if download successful unzip it
if [ -f level1.gz ]; then
gunzip level1.gz
# if file extracted successfully reload transmission
if [ $? -eq 0 ]; then
chmod go+r level1
/etc/init.d/transmission-daemon reload
else
rm -f level1*
fi
fi
fi
cd - 2>&1 >/dev/null
fi
Then I made script executable by all using
chmod command:# chmod a+x update-blocklistNow depending on how frequently you want to update your blocklist you can place it either in
/etc/cron.daily, /etc/cron.weekly or /etc/cron.monthly directory. I felt that weekly update was frequent enough:mv update-blocklist /etc/cron.weekly/You're done, now cron will automatically download the latest blocklist for you and reload Transmission with it.