Compatibility fixes for BWAuths on FreeBSD 10
I'm attempting to run BWAuth scanner code in a FreeBSD 10 jail as a test to see if it will work at all on FreeBSD 10. This assumes you've used ezjail to make a jailed machine - I used a jail behind a NAT for ease of use. The ezjail steps are out of scope but should be around three commands if NAT or a public IP is already assigned to your box.
First - we need to install some packages:
pkg install bash python27 py27-virtualenv py27-sqlite3 py27-sqlite3 sqlite3 py27-sqlite3dbm sqlite pkg install automake libevent2 gmake openssl
I suggest the following patch:
diff --git a/NetworkScanners/BwAuthority/setup.sh b/NetworkScanners/BwAuthority/setup.sh
index 15ad931..d184060 100755
--- a/NetworkScanners/BwAuthority/setup.sh
+++ b/NetworkScanners/BwAuthority/setup.sh
@@ -1,4 +1,6 @@
-#!/bin/bash -e
+#!/usr/bin/env bash
+set -e
+set -x
SCANNER_DIR=$(dirname "$0")
SCANNER_DIR=$(readlink -f "$SCANNER_DIR")
@@ -35,7 +37,7 @@ then
git checkout release-0.2.6
./autogen.sh
./configure --disable-asciidoc
- make -j4
+ make
popd
fi
@@ -53,8 +55,8 @@ peep install -r $SCANNER_DIR/requirements.txt
# 6. Prepare cron script
cp cron.sh cron-mine.sh
-echo -e "45 0-23 * * * $SCANNER_DIR/cron-mine.sh" | crontab
-echo -e "@reboot $SCANNER_DIR/run_scan.sh\n`crontab -l`" | crontab
+echo -e "45 0-23 * * * $SCANNER_DIR/cron-mine.sh" | crontab -
+echo -e "@reboot $SCANNER_DIR/run_scan.sh\n`crontab -l`" | crontab -
echo "Prepared crontab. Current crontab: "
crontab -l
Then run everything as an unpriv user:
git clone https://git.torproject.org/torflow.git
cd torflow/NetworkScanners/BwAuthority
./setup.sh
If Tor fails to build, we'll see the following:
$ ./setup.sh
/usr/home/builder/torflow /usr/home/builder/torflow/NetworkScanners/BwAuthority
/usr/home/builder/torflow/NetworkScanners/BwAuthority
/usr/home/builder /usr/home/builder/torflow/NetworkScanners/BwAuthority
fatal: destination path 'tor' already exists and is not an empty directory.
Just remove Tor and ensure you have proper build deps:
rm -rf ../../../tor
If Tor fails to build:
--- src/or/src_or_libtor_testing_a-onion_ntor.o ---
CC src/or/src_or_libtor_testing_a-onion_ntor.o
--- src/or/src_or_libtor_testing_a-config_codedigest.o ---
CC src/or/src_or_libtor_testing_a-config_codedigest.o
src/or/config_codedigest.c:10:10: fatal error: 'or_sha1.i' file not found
#include "or_sha1.i"
^
1 error generated.
*** [src/or/src_or_libtor_testing_a-config_codedigest.o] Error code 1
make[1]: stopped in /usr/home/builder/tor
1 error
make[1]: stopped in /usr/home/builder/tor
*** [all] Error code 2
make: stopped in /usr/home/builder/tor
1 error
make: stopped in /usr/home/builder/tor
The above error means that make was running with -j4
- please apply the above patch and try again.
In file included from src/module.c:24:
src/connection.h:33:10: fatal error: 'sqlite3.h' file not found
#include "sqlite3.h"
^
1 error generated.
error: command 'cc' failed with exit status 1
This means you need to tell cc where to find sqlite3.h
export CPPFLAGS=-I/usr/local/include
Run setup.sh again - it may error out like so:
crontab: usage error: file name must be specified for replace
usage: crontab [-u user] file
crontab [-u user] { -e | -l | -r }
This means you didn't apply the above patch for crontab (on BSD it expects {{{-}} or a file name but not an empty string, I guess).
cd torflow/NetworkScanners/BwAuthority
export CPPFLAGS=-I/usr/local/include
./setup.sh
The patch adds -e
and -x
which makes debugging easier - -x
could be removed.
It looks like it may even work:
$ ./run_scan.sh
Waiting for 60 seconds to refresh tors...
Jun 09 20:28:31.505 [notice] Tor v0.2.6.8 (git-41db4bffd69f7de9) running on FreeBSD with Libevent 2.0.22-stable, OpenSSL 1.0.2a and Zlib 1.2.8.
Jun 09 20:28:31.505 [notice] Tor v0.2.6.8 (git-41db4bffd69f7de9) running on FreeBSD with Libevent 2.0.22-stable, OpenSSL 1.0.2a and Zlib 1.2.8.
Jun 09 20:28:31.505 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Jun 09 20:28:31.505 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Jun 09 20:28:31.505 [notice] Read configuration file "/usr/home/builder/torflow/NetworkScanners/BwAuthority/./data/tor.1/torrc".
Jun 09 20:28:31.505 [notice] Read configuration file "/usr/home/builder/torflow/NetworkScanners/BwAuthority/./data/tor.2/torrc".
Jun 09 20:28:31.513 [notice] Opening Socks listener on 127.0.0.1:9120
Jun 09 20:28:31.513 [notice] Opening Socks listener on 127.0.0.1:9110
Jun 09 20:28:31.513 [notice] Opening Control listener on 127.0.0.1:9121
Jun 09 20:28:31.513 [notice] Opening Control listener on 127.0.0.1:9111
Jun 09 20:28:31.513 [warn] Fixing permissions on directory ./data/tor.2
Jun 09 20:28:31.513 [warn] Fixing permissions on directory ./data/tor.1