From 1a332d0597f8f5413dabad7c0cdce5f35a669f52 Mon Sep 17 00:00:00 2001
From: Rasmus Dahlberg <rasmus@rgdd.se>
Date: Mon, 3 Apr 2023 00:16:15 +0200
Subject: Add drafty measurement script

---
 scripts/measure.sh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100755 scripts/measure.sh

(limited to 'scripts')

diff --git a/scripts/measure.sh b/scripts/measure.sh
new file mode 100755
index 0000000..ee05442
--- /dev/null
+++ b/scripts/measure.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+#
+# A script that performs a single onion-grab measurement with Mullvad VPN.
+#
+# Don't forget to shuffle the input file before running, and to document how the
+# system is configured.  E.g., systemd-resolved is disabled, /etc/resolv.conf
+# lists 8.8.8.8 and 8.8.4.4, output of uname -a and sysctl -a is ..., etc.
+#
+
+relay=se-sto-wg-001
+limit=1450
+num_workers=10000
+input_file=/path/to/input/file
+timeout_s=30
+response_max_mib=64
+metrics_interval=1h
+
+out_dir=data/$(date +%Y%m%d-%H%M%S)
+mullvad_wait_s=5
+
+set -eu
+function main() {
+	num_sites=$(wc -l $input_file | cut -d' ' -f1)
+	debug "relay=$relay"
+	debug "limit=${limit}"
+	debug "num_workers=$num_workers"
+	debug "input_file=$input_file ($num_sites sites)"
+	debug "timeout_s=$timeout_s"
+	debug "response_max_mib=$response_max_mib"
+	debug "out_dir=$out_dir"
+	debug "mullvad_wait_s=$mullvad_wait_s"
+
+	mkdir -p "$out_dir"
+	stdout_file=$out_dir/$relay-l$limit.stdout
+	stderr_file=$out_dir/$relay-l$limit.stderr
+	info "storing results in $out_dir"
+
+	now=$(date +%s)
+	runtime_s=$(( $num_sites / $limit ))
+	wait_onion_grab_s=$(( $timeout_s * 2 ))
+	estimated_done=$(( $now + $runtime_s + $mullvad_wait_s + $wait_onion_grab_s ))
+	debug "estimated done? approximately $(date -d @$estimated_done +"%Y-%m-%d %H:%M:%S %Z")"
+
+	mullvad disconnect >/dev/null
+	mullvad relay set hostname $relay >/dev/null
+	mullvad connect >/dev/null
+	sleep $mullvad_wait_s
+
+	ip=$(curl -s https://ifconfig.me)
+	info "starting measurement from relay $relay ($ip)"
+	debug "view progress with \"tail -f $stderr_file\""
+
+	onion-grab\
+	     	-i "$input_file"\
+		-w "$num_workers"\
+		-l "$limit"\
+		-r "$response_max_mib"\
+		-t "$timeout_s"s\
+		-m "$metrics_interval"\
+		>"$stdout_file" 2>"$stderr_file"
+
+	./digest.py\
+		-v info\
+		-i "$stdout_file"\
+		-o "$out_dir/$relay-l$limit-onion-all.txt"\
+		-d "$out_dir/$relay-l$limit-domain-all.txt"
+}
+
+function debug() { echo "$(date +"%Y-%m-%d %H:%M:%S %Z") [DEBU] $@" >&2; }
+function info()  { echo "$(date +"%Y-%m-%d %H:%M:%S %Z") [INFO] $@" >&2; }
+
+main $@
-- 
cgit v1.2.3