Transmission

Transmission(Edit)

The torrent downloading tool, some useful notes.

Auto Antivirus checkup(Edit)

From https://forum.transmissionbt.com/viewtopic.php?t=15665 , this can save some lives! Well built, easy to use.

#!/bin/bash
#####
# This script scans completed Transmission downloads for viruses using ClamAV
# ClamAV: http://www.clamav.net
# Transmission BitTorrent: https://trac.transmissionbt.com/wiki/Scripts
#
# To use:
#   * Set script as executable : chmod +x clam-transmission.sh
#   * Edit transmission settings (settings.json) and set the following:
#      script-torrent-done-enabled: true,
#      script-torrent-done-filename: /path/to/script/clam-transmission.sh,   
#   * Set variables below according to comments
#
# Thanks -- borrowed heavily from https://gist.github.com/bulljit/1087570
#####

### Set below vars to match your settings. ###

## ClamAV settings ##
# Existing dir to copy infected files
QUARANTINE=/PATH/TO/QUARANTINE/DIR

## Transmission daemon settings ##
HOST=localhost
PORT=9091
USER=YOUR_USER_NAME
PASS=YOUR_PASSWORD

function clean_up {
   rm $FILE_LIST
   rm $AV_LOG
}
trap clean_up EXIT

# Obtain a list of files for the completed torrent
FILE_LIST=$(mktemp)
AV_LOG=$(mktemp)
FILES=$(transmission-remote $HOST:$PORT --auth=$USER:$PASS -t $TR_TORRENT_ID -S -f | tail -n +4 | cut -c 35-)
echo "$FILES" > "$FILE_LIST"

# Scan list of files and move infected files to quarantine
cd "$TR_TORRENT_DIR/"
clamscan -vf $FILE_LIST --move=$QUARANTINE -l $AV_LOG
AV_RET=$?
echo -e "\n\n----------- LIST OF FILES -----------\n$FILES" >> $AV_LOG

# Take appropriate action
case $AV_RET in
0)
   # No virus found.
   # Doing nothing, leaving placeholder.
   ;;
1)
   # Virus was found
   cat "$AV_LOG" > "$TR_TORRENT_DIR/INFECTED_$TR_TORRENT_NAME.log"
   logger -p auth.warn -t VIRUS FOUND "A virus was detected in $TR_TORRENT_NAME"
   ;;
2)
   # Error occurred while scanning
   cat "$AV_LOG" > "$TR_TORRENT_DIR/SCAN_ERROR_$TR_TORRENT_NAME.log"
   logger -p auth.err -t transmission-clamav "An error occurred while scanning $TR_TORRENT_NAME"
   ;;
*)
   # Unknown error
   cat "$AV_LOG" > "$TR_TORRENT_DIR/UNKNOWN_ERROR_$TR_TORRENT_NAME.log"
   echo -e "\nUnknown return value : $AV_RET" >> "$TR_TORRENT_DIR/UNKNOWN_ERROR_$TR_TORRENT_NAME.log"
   logger -p auth.err -t transmission-clamav "Unknown return value from scanning $TR_TORRENT_NAME : $AV_RET"
   ;;
esac
exit 0