summarylogtreecommitdiffstats
path: root/update-tracker
blob: 89e9d5a06c139b0862c18ecb89600b83c6b44a6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/bash -e

# If we find aria2 config, and $ARIA2CD_TRACKER_COMMAND is set,
# we use its output as value of `bt-tracker` in aria2 config.
# It should generate a comma seperated string, see man page of aria2 for more info.
# Do nothing if no aria2 config or $ARIA2CD_TRACKER_COMMAND is not set.
# WARNING: This script will be executed with root permission and no restriction when running as system service.
# Set $ARIA2CD_TRACKER_COMMAND wisely to prevent unexpected damage to your system.

declare ARIA2C_CONF conf="${1:-aria2.conf}"
if [[ "$1" == "${1#/}" ]]
then
    declare directory
    for directory in "$HOME/.aria2" "${XDG_CONFIG_HOME:-$HOME/.config}/aria2"
    do
        if [[ -e "$directory/$conf" ]]
        then
            ARIA2C_CONF="$directory/$conf"
            break
        fi
    done
    if [[ -z "$ARIA2C_CONF" ]]
    then
        echo "Unable to find aria2c config file."
        exit 1
    fi
else
    ARIA2C_CONF="$1"
fi
unset conf directory
readonly ARIA2C_CONF

if [[ -e "$ARIA2C_CONF" ]]
then
    echo "Found aria2c config: $ARIA2C_CONF."
    if [[ -n "$ARIA2CD_TRACKER_COMMAND" ]]
    then
        if grep -q "^bt-tracker=.*" "$ARIA2C_CONF"
        then
            echo "Replacing bt-tracker with tracker generated by \`$ARIA2CD_TRACKER_COMMAND\`..."
            declare sed_script
            sed_script="$(mktemp)"
            (
                echo -n "s@^bt-tracker=.*@bt-tracker="
                $ARIA2CD_TRACKER_COMMAND
                echo "@;"
            ) | tr -d "\n" > "$sed_script"
            sed -i -f "$sed_script" "$ARIA2C_CONF"
        else
            echo "No bt-tracker is set, skip updating..."
        fi
    else
        echo "No \$ARIA2CD_TRACKER_COMMAND set, skip updating..."
    fi
else
    echo "No such config $ARIA2C_CONF."
    exit 1
fi