[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#638145: marked as done (bittorrent: Should Operate as a Background System Service)



Your message dated Fri, 18 Oct 2019 04:23:38 +0000
with message-id <E1iLJne-000Co3-DG@fasolo.debian.org>
and subject line Bug#936210: Removed package(s) from unstable
has caused the Debian Bug report #638145,
regarding bittorrent: Should Operate as a Background System Service
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
638145: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638145
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Subject: bittorrent: Should operate as a background system service
Package: bittorrent
Version: 3.4.2-11.3
Severity: normal
Tags: patch

*** Please type your report below this line ***
Dear BitTorrent maintainers,

It's not currently possible to run a BitTorrent tracker as a system
service, like Apache, SSH, or other services.  It would be awesome if
that was possible, because you could configure a host to automatically
serve files as a tracker whenever it was restarted.

So, I wrote the attached patch to allow BitTorrent to function as a
system service.  The "bittorrent-tracker" file is the script that
starts and stops the tracker service and also allows you to create
torrents by placing the files in an /incoming/ directory.  The
"bittorrent-tracker.conf" file contains all the configuration options
required by the service.

Don't know if this is too Debian-specific to be upstreamable, but I'd
appreciate your help either way.

Thanks,
Nick

#! /bin/sh
#
### BEGIN INIT INFO
# Provides:          bittorrent
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop BitTorrent tracker
### END INIT INFO
#

# originally derived from: http://www.idealog.us/2005/04/howto_install_a.html

#
# startup code
#

CONFIGFILE="/etc/bittorrent-tracker.conf"

set -e
set -u

. /lib/lsb/init-functions

if [ -e $CONFIGFILE ]
then
    . $CONFIGFILE
fi

# handle partial uninstallation
test -f $TRACK || exit 0

if [ $BTENABLED != 1 ]
then
    log_failure_msg "Starting ${TRACKDESC}" "$TRACKNAME"
    log_progress_msg "${TRACKDESC} is disabled."
    log_progress_msg "\n Edit ${CONFIGFILE} to enable"
    log_end_msg 0
    exit 1
fi

#
# utility functions
#

while_sleep () {
    # usage: while_sleep (time)
    I=0
    while [ $I -lt $1 ]
    do
        sleep 1
        I=$(($I + 1))
        log_progress_msg "."
    done
}

start() {
    # Start the Tracker as well as a seed for all the .torrents

    log_daemon_msg "Starting ${TRACKDESC}" "$(basename $TRACKNAME)"
    start-stop-daemon --oknodo -S -b -c $USER -d $FILESDIR -x $TRACK -- $OPTIONS
    log_end_msg 0

    start_seeding
}

stop() {
    # Stop the Tracker and the seeder

    log_daemon_msg "Stopping ${TRACKDESC}" "$(basename $TRACKNAME)"
    start-stop-daemon --oknodo -K -q -R 30 -n $TRACKNAME
    log_end_msg 0

    stop_seeding
}

start_seeding() {
    # Start the seeder.

    log_daemon_msg "Starting ${SEEDDESC} in ${SLEEP} seconds" \
        "$(basename $SEEDNAME)"
    (sleep $SLEEP && start-stop-daemon --oknodo -S -b -c $USER -d $FILESDIR \
        -x $SEED -- $TORRENTSDIR --ip `$MYIP`)&
    log_end_msg 0
}

stop_seeding() {
    # Stop the seeder.

    log_daemon_msg "Stopping ${SEEDDESC}" "$(basename $SEEDNAME)"
    start-stop-daemon --oknodo -K -q -R 30 -n "$SEEDNAME"
    log_end_msg 0
}

restart_seeding() {
    # Restart the seeder.

    stop_seeding
    start_seeding
}

make() {
    # Create torrent, move to TORRENTSDIR. 
    # Move file from FILESINCOMING to FILESDIR.
    # usage: (filename)

    basename="$(basename $1)"
    torrent="$1.torrent"

    cd "$FILESINCOMING"

    if [ ! -e "${FILESINCOMING}/$basename" ]
    then
        log_failure_msg "$1 must be in ${FILESINCOMING}"
        exit 1
    fi

    start-stop-daemon --oknodo -S -b -c $USER -d "$FILESINCOMING" -x $MAKETORRENT -- "$1" "${SERVER}/announce"

    # sleep until we produce a torrent.
    while [ ! -e "$torrent" ]
    do
        sleep 1
        log_progress_msg "."
    done

    mv "$1" "${FILESDIR}/"
    mv "$torrent" "${TORRENTSDIR}/"
}

#
# normal (procedural) script execution below.
#

mkdir -p "$FILESDIR" "$FILESINCOMING" "$TORRENTSDIR"
chown $USER "$FILEROOT" "$FILESDIR" "$FILESINCOMING" "$TORRENTSDIR"

case "${1}" in
    start)
        start
        ;;

    stop)
        stop
        ;;

    restart)
        stop
        start
        ;;

    restart-seeding)
        restart_seeding
        ;;

    make-all)
        # Move each file from FILESINCOMING to FILESDIR. Create torrent.
        # Move torrent to TORRENTSDIR.
        log_daemon_msg "Making torrents for files in $FILESINCOMING" \
            "$(basename $MAKETORRENT)"

        for file in "$FILESINCOMING"/*
        do
            if [ `basename "$file"` = "." ]; then
                continue;
            fi

            make "$file"
        done
        log_end_msg 0

        if [ `$SEEDING` ]
        then
            restart_seeding
        fi
        ;;

    make)
        log_daemon_msg "Making torrent file for $2" "$(basename $MAKETORRENT)"
        make "$2"
        log_end_msg 0

        if [ `$SEEDING` ]
        then
            restart_seeding
        fi
        ;;

    *)
        # Echo usage information
        echo "Usage: $0 {start|stop|restart|restart-seeding|make-all|" \
            "make [filename]}" >&2
        exit 1
        ;;

# All is good with the world.  Exit kindly.
esac

exit 0
# This file contains bittorrent-tracker configuration.

# 0 = disabled
# 1 = enabled
BTENABLED=1

#
# server config
#

PORT=6969
SERVER="http://tracker.example.com:${PORT}";

#
# important file locations
#

# the sharing root
FILEROOT="/var/bittorrent-tracker"

# the directory where BitTorrent distributes files from
FILESDIR="${FILEROOT}/files"

# the directory where incoming files are made into torrents, then
# moved to the share directory above
FILESINCOMING="${FILEROOT}/incoming"

# the directory where users can get the torrents via http from their
# browser.  Serve this over HTTP!
TORRENTSDIR="${FILEROOT}/torrents"

# the database's state file
DFILE="${FILEROOT}/dstate"

# logfiles!
LOGFILE=/var/log/bittorrent-tracker.log

# You probably shouldn't touch options below here.
# You probably shouldn't touch options below here.
# You probably shouldn't touch options below here.

TRACKDESC="BitTorrent Tracker"
SEEDDESC="BitTorrent Seed"
USER="bittorrent-tracker"

#
# executables
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
# optional, can be commented out.
PATH=$PATH:/usr/local/bin

TRACK=/usr/bin/bttrack
TRACKNAME=$(basename $TRACK)
MAKETORRENT=/usr/bin/btmakemetafile
SEED=/usr/bin/btlaunchmany
SEEDNAME=$(basename $SEED)
SEEDING="pgrep -U $USER $SEEDNAME"

# Sleep for X seconds to make sure the tracker starts before the seed
# does.
SLEEP=5

OPTIONS="--dfile ${DFILE} --port ${PORT} --logfile ${LOGFILE} --allowed_dir ${TORRENTSDIR}"
MYIP="/usr/local/bin/ip-external"
-- System Information:
Debian Release: 6.0.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages bittorrent depends on:
ii  lsb-base                3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip
ii  python                  2.6.6-3+squeeze6 interactive high-level object-orie
ii  python-support          1.0.10           automated rebuilding support for P

Versions of packages bittorrent recommends:
ii  mime-support                  3.48-1     MIME files 'mime.types' & 'mailcap

Versions of packages bittorrent suggests:
pn  bittorrent-gui                <none>     (no description available)

-- no debconf information

-- 
GPG: 0x4C682009 | 084E D805 31D8 5391 1D27  0DE1 9780 FD4D 4C68 2009

--- End Message ---
--- Begin Message ---
Version: 3.4.2-12+rm

Dear submitter,

as the package bittorrent has just been removed from the Debian archive
unstable we hereby close the associated bug reports.  We are sorry
that we couldn't deal with your issue properly.

For details on the removal, please see https://bugs.debian.org/936210

The version of this package that was in Debian prior to this removal
can still be found using http://snapshot.debian.org/.

This message was generated automatically; if you believe that there is
a problem with it please contact the archive administrators by mailing
ftpmaster@ftp-master.debian.org.

Debian distribution maintenance software
pp.
Scott Kitterman (the ftpmaster behind the curtain)

--- End Message ---

Reply to: