dc942e6f27
This adds a -whitelist option to specify subnet ranges from which peers that connect are whitelisted. In addition, there is a -whitebind option which works like -bind, except peers connecting to it are also whitelisted (allowing a separate listen port for trusted connections). Being whitelisted has two effects (for now): * They are immune to DoS disconnection/banning. * Transactions they broadcast (which are valid) are always relayed, even if they were already in the mempool. This means that a node can function as a gateway for a local network, and that rebroadcasts from the local network will work as expected. Whitelisting replaces the magic exemption localhost had for DoS disconnection (local addresses are still never banned, though), which implied hidden service connects (from a localhost Tor node) were incorrectly immune to DoS disconnection as well. This old behaviour is removed for that reason, but can be restored using -whitelist=127.0.0.1 or -whitelist=::1 can be specified. -whitebind is safer to use in case non-trusted localhost connections are expected (like hidden services).
33 lines
1.1 KiB
Bash
Executable File
33 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (c) 2013 The Bitcoin Core developers
|
|
# Distributed under the MIT/X11 software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
#
|
|
DATADIR="@abs_top_builddir@/.bitcoin"
|
|
rm -rf "$DATADIR"
|
|
mkdir -p "$DATADIR"/regtest
|
|
touch "$DATADIR/regtest/debug.log"
|
|
tail -q -n 1 -F "$DATADIR/regtest/debug.log" | grep -m 1 -q "Done loading" &
|
|
WAITER=$!
|
|
PORT=`expr $BASHPID + 10000`
|
|
"@abs_top_builddir@/src/bitcoind@EXEEXT@" -connect=0.0.0.0 -datadir="$DATADIR" -rpcuser=user -rpcpassword=pass -listen -keypool=3 -debug -debug=net -logtimestamps -port=$PORT -whitelist=127.0.0.1 -regtest -rpcport=`expr $PORT + 1` &
|
|
BITCOIND=$!
|
|
|
|
#Install a watchdog.
|
|
(sleep 10 && kill -0 $WAITER 2>/dev/null && kill -9 $BITCOIND $$)&
|
|
wait $WAITER
|
|
|
|
if [ -n "$TIMEOUT" ]; then
|
|
timeout "$TIMEOUT"s "$@" $PORT
|
|
RETURN=$?
|
|
else
|
|
"$@" $PORT
|
|
RETURN=$?
|
|
fi
|
|
|
|
(sleep 15 && kill -0 $BITCOIND 2>/dev/null && kill -9 $BITCOIND $$)&
|
|
kill $BITCOIND && wait $BITCOIND
|
|
|
|
# timeout returns 124 on timeout, otherwise the return value of the child
|
|
exit $RETURN
|