mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 09:45:31 +00:00
The Dockerfile works when run locally. The GitHub action plumbing may or not work in this state.
119 lines
No EOL
2.4 KiB
Bash
Executable file
119 lines
No EOL
2.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# IPv6 is unfortunately disabled by default in Docker
|
|
# (see sysctl net.ipv6.conf.lo.disable_ipv6)
|
|
|
|
set -e
|
|
|
|
# Install programs and build dependencies
|
|
|
|
if command -v sudo; then
|
|
SUDO="sudo "
|
|
else
|
|
SUDO=""
|
|
fi
|
|
|
|
$SUDO apt-get update
|
|
$SUDO apt-get install -y cmake libssl-dev screen rtorrent mktorrent
|
|
|
|
rtorrent -h
|
|
|
|
# Build and start tracker
|
|
|
|
if [[ -z "${GITHUB_WORKSPACE}" ]]; then
|
|
cd "$HOME"
|
|
|
|
git clone https://github.com/greatest-ape/aquatic.git
|
|
|
|
cd aquatic
|
|
else
|
|
cd "$GITHUB_WORKSPACE"
|
|
fi
|
|
|
|
cargo build --bin aquatic
|
|
|
|
echo "log_level = 'debug'
|
|
|
|
[network]
|
|
address = '127.0.0.1:3000'" > http.toml
|
|
./target/debug/aquatic http -c http.toml &
|
|
|
|
echo "[network]
|
|
address = '127.0.0.1:3000'" > udp.toml
|
|
screen -dmS aquatic-udp ./target/debug/aquatic udp -c udp.toml
|
|
|
|
# Setup directories
|
|
|
|
cd "$HOME"
|
|
|
|
mkdir seed
|
|
mkdir leech
|
|
mkdir torrents
|
|
|
|
# Create torrents
|
|
|
|
echo "http-test-ipv4" > seed/http-test-ipv4
|
|
echo "udp-test-ipv4" > seed/udp-test-ipv4
|
|
|
|
mktorrent -p -o "torrents/http-ipv4.torrent" -a "http://127.0.0.1:3000/announce" "seed/http-test-ipv4"
|
|
mktorrent -p -o "torrents/udp-ipv4.torrent" -a "udp://127.0.0.1:3000" "seed/udp-test-ipv4"
|
|
|
|
cp -r torrents torrents-seed
|
|
cp -r torrents torrents-leech
|
|
|
|
# Start seeding client
|
|
|
|
echo "directory.default.set = $HOME/seed
|
|
schedule2 = watch_directory,5,5,load.start=$HOME/torrents-seed/*.torrent" > ~/.rtorrent.rc
|
|
|
|
echo "Starting seeding client"
|
|
screen -dmS rtorrent-seed rtorrent
|
|
|
|
sleep 10 # Give seeding rtorrent time to load its config file
|
|
|
|
# Start leeching client
|
|
|
|
echo "directory.default.set = $HOME/leech
|
|
schedule2 = watch_directory,5,5,load.start=$HOME/torrents-leech/*.torrent" > ~/.rtorrent.rc
|
|
|
|
echo "Starting leeching client.."
|
|
screen -dmS rtorrent-leech rtorrent
|
|
|
|
# Check for completion
|
|
|
|
HTTP_IPv4="Failed"
|
|
UDP_IPv4="Failed"
|
|
|
|
i="0"
|
|
|
|
echo "Watching for finished files.."
|
|
|
|
while [ $i -lt 300 ]
|
|
do
|
|
if test -f "leech/http-test-ipv4"; then
|
|
if grep -q "http-test-ipv4" "leech/http-test-ipv4"; then
|
|
HTTP_IPv4="Ok"
|
|
fi
|
|
fi
|
|
if test -f "leech/udp-test-ipv4"; then
|
|
if grep -q "udp-test-ipv4" "leech/udp-test-ipv4"; then
|
|
UDP_IPv4="Ok"
|
|
fi
|
|
fi
|
|
|
|
if [ "$HTTP_IPv4" = "Ok" ] && [ "$UDP_IPv4" = "Ok" ]; then
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
i=$[$i+1]
|
|
done
|
|
|
|
echo "Waited for $i seconds"
|
|
|
|
echo "::set-output name=http_ipv4::$HTTP_IPv4"
|
|
echo "::set-output name=udp_ipv4::$UDP_IPv4"
|
|
|
|
if [ "$HTTP_IPv4" != "Ok" ] || [ "$UDP_IPv4" != "Ok" ]; then
|
|
exit 1
|
|
fi |