This project is archived. Its data is read-only.

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
Assignee Loading
Time tracking Loading