Merge branch 'master' of gitlab.inria.fr:qdufour/donar

This commit is contained in:
Quentin 2020-02-04 18:44:27 +01:00
commit 32690a5d82
42 changed files with 733 additions and 384 deletions

17
QUICK_XP.txt Normal file
View file

@ -0,0 +1,17 @@
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
wget https://gitlab.inria.fr/qdufour/donar/raw/master/scripts/Makefile
wget https://gitlab.inria.fr/qdufour/donar/raw/master/scripts/run-3
chmod +x run-3
docker login registry.gitlab.inria.fr
docker pull registry.gitlab.inria.fr/qdufour/donar
make ...

View file

@ -690,11 +690,7 @@ jan_tor_analysis:
jan_battle_normal: jan_battle_normal:
./run-3 \ ./run-3 \
8,jan_battle_normal. \ 32,jan_battle_normal. \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
@ -703,22 +699,10 @@ jan_battle_normal:
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
@ -727,14 +711,6 @@ jan_battle_normal:
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
@ -743,90 +719,46 @@ jan_battle_normal:
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12. \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16, \ tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_16. \ tor2 -f /etc/torrc_guard_12.
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16.
jan_battle_hardened: jan_battle_hardened:
./run-3 \ ./run-3 \
8,jan_battle_hardened. \ 32,jan_battle_hardened. \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
orig-client 135000 40 172, \ orig-client 135000 40 172, \
@ -835,22 +767,10 @@ jan_battle_hardened:
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \ dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
@ -859,14 +779,6 @@ jan_battle_hardened:
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \ orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
orig-server 135000 40 172, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
dup2-server 135000 40 172 2, \ dup2-server 135000 40 172 2, \
@ -875,14 +787,6 @@ jan_battle_hardened:
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ lightning-server 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
@ -902,22 +806,6 @@ jan_battle_hardened:
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2. \ tor3 -f /etc/torrc_guard_2. \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
@ -934,6 +822,180 @@ jan_battle_hardened:
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2.
jan_battle_light:
./run-3 \
32,jan_battle_light. \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
orig-client 135000 40 172, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
dup2-client 135000 40 172 2, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \
orig-server-single 135000 40 172, \
orig-server-single 135000 40 172, \
orig-server-single 135000 40 172, \
orig-server-single 135000 40 172, \
dup2-server-single 135000 40 172 2, \
dup2-server-single 135000 40 172 2, \
dup2-server-single 135000 40 172 2, \
dup2-server-single 135000 40 172 2, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12. \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12, \
tor2 -f /etc/torrc_single_hop_12.
jan_dcall_normal:
./run-3 \
32,jan_dcall_normal. \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-dup2-client 2 352, \
dcall-dup2-client 2 352, \
dcall-dup2-client 2 352, \
dcall-dup2-client 2 352, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176. \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-dup2-server 2 352, \
dcall-dup2-server 2 352, \
dcall-dup2-server 2 352, \
dcall-dup2-server 2 352, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 213, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 176. \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12. \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12, \
tor2 -f /etc/torrc_guard_12.
jan_dcall_hardened:
./run-3 \
32,jan_dcall_hardened. \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-simple-client 1 360, \
dcall-dup2-client 2 360, \
dcall-dup2-client 2 360, \
dcall-dup2-client 2 360, \
dcall-dup2-client 2 360, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311. \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-simple-server 1 360, \
dcall-dup2-server 2 360, \
dcall-dup2-server 2 360, \
dcall-dup2-server 2 360, \
dcall-dup2-server 2 360, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-server 12 fast_count=3!tick_tock=1!measlat=0!window=2000 360, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311, \
dcall-lightning-server 12 fast_count=3!tick_tock=0!measlat=0!window=2000 311. \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
@ -949,139 +1011,88 @@ jan_battle_hardened:
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2. \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2, \ tor3 -f /etc/torrc_guard_2, \
tor3 -f /etc/torrc_guard_2. tor3 -f /etc/torrc_guard_2.
jan_battle_light: jan_dcall_light:
./run-3 \ ./run-3 \
8,jan_battle_light. \ 32,jan_dcall_light. \
orig-client 135000 40 172, \ dcall-simple-client 1 360, \
orig-client 135000 40 172, \ dcall-simple-client 1 360, \
orig-client 135000 40 172, \ dcall-simple-client 1 360, \
orig-client 135000 40 172, \ dcall-simple-client 1 360, \
orig-client 135000 40 172, \ dcall-dup2-client 2 355, \
orig-client 135000 40 172, \ dcall-dup2-client 2 355, \
orig-client 135000 40 172, \ dcall-dup2-client 2 355, \
orig-client 135000 40 172, \ dcall-dup2-client 2 355, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
dup2-client 135000 40 172 2, \ dcall-lightning-client 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153. \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-simple-server-single 1 360, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-simple-server-single 1 360, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-simple-server-single 1 360, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-simple-server-single 1 360, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-dup2-server-single 2 355, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-dup2-server-single 2 355, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-dup2-server-single 2 355, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ dcall-dup2-server-single 2 355, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=1!measlat=0!window=2000 198, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ dcall-lightning-server-single 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153, \
lightning-client 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \ dcall-lightning-server-single 12 fast_count=3!tick_tock=0!measlat=0!window=2000 153. \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
orig-server-single 135000 40 172, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12, \
dup2-server-single 135000 40 172 2, \ tor2 -f /etc/torrc_guard_12. \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=1!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000, \ tor2 -f /etc/torrc_single_hop_12, \
lightning-server-single 135000 40 172 12 fast_count=3!tick_tock=0!measlat=1!window=2000. \ tor2 -f /etc/torrc_single_hop_12.
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16, \
tor2 -f /etc/torrc_guard_16. \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16, \
tor2 -f /etc/torrc_single_hop_16.

View file

@ -0,0 +1,20 @@
#!/bin/bash
mkdir -p $3/{log,shared,res}
donar \
-a dup2 \
-c \
-o $3/shared/onion_services.pub \
-l $1 \
-e 5000 \
-r 5000 \
> $3/log/client-donar-stdout.log 2> $3/log/client-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d $3/log/client-dcall-gstreamer.log \
> $3/log/client-dcall-stdout.log 2> $3/log/client-dcall-stderr.log

View file

@ -0,0 +1,20 @@
#!/bin/bash
mkdir -p $3/{log,shared}
cd $3/shared
donar \
-a dup2 \
-s \
-l $1 \
-e 5000 \
-r 5000 \
> ../log/server-donar-stdout.log 2> ../log/server-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -0,0 +1,21 @@
#!/bin/bash
mkdir -p $3/{log,shared}
cd $3/shared
donar \
-a dup2 \
-s \
-n \
-l $1 \
-e 5000 \
-r 5000 \
> ../log/server-donar-stdout.log 2> ../log/server-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -13,8 +13,9 @@ donar \
dcall \ dcall \
-t filesrc \ -t filesrc \
-a /assets/i_have_a_dream.mp3 \ -a file:///assets/i_have_a_dream.mp3 \
-s fakesink \ -s fakesink \
-b 127.0.0.1 \
-l $3 \ -l $3 \
-d $4/log/server-dcall-gstreamer.log \ -d $4/log/client-dcall-gstreamer.log \
> $4/log/client-dcall-stdout.log 2> $4/log/client-dcall-stderr.log > $4/log/client-dcall-stdout.log 2> $4/log/client-dcall-stderr.log

View file

@ -13,8 +13,9 @@ donar \
dcall \ dcall \
-t filesrc \ -t filesrc \
-a /assets/i_have_a_dream.mp3 \ -a file:///assets/i_have_a_dream.mp3 \
-s fakesink \ -s fakesink \
-b 127.0.0.1 \
-l $3 \ -l $3 \
-d ../log/server-dcall-gstreamer.log \ -d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log > ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -0,0 +1,22 @@
#!/bin/bash
mkdir -p $4/{log,shared}
cd $4/shared
donar \
-a lightning \
-s \
-n \
-l $1 \
-p $2 \
-e 5000 \
-r 5000 \
> ../log/server-donar-stdout.log 2> ../log/server-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $3 \
-d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -0,0 +1,20 @@
#!/bin/bash
mkdir -p $3/{log,shared,res}
donar \
-a naive \
-c \
-o $3/shared/onion_services.pub \
-l $1 \
-e 5000 \
-r 5000 \
> $3/log/client-donar-stdout.log 2> $3/log/client-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d $3/log/client-dcall-gstreamer.log \
> $3/log/client-dcall-stdout.log 2> $3/log/client-dcall-stderr.log

View file

@ -0,0 +1,20 @@
#!/bin/bash
mkdir -p $3/{log,shared}
cd $3/shared
donar \
-a naive \
-s \
-l $1 \
-e 5000 \
-r 5000 \
> ../log/server-donar-stdout.log 2> ../log/server-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -0,0 +1,21 @@
#!/bin/bash
mkdir -p $3/{log,shared}
cd $3/shared
donar \
-a naive \
-s \
-n \
-l $1 \
-e 5000 \
-r 5000 \
> ../log/server-donar-stdout.log 2> ../log/server-donar-stderr.log &
dcall \
-t filesrc \
-a file:///assets/i_have_a_dream.mp3 \
-s fakesink \
-b 127.0.0.1 \
-l $2 \
-d ../log/server-dcall-gstreamer.log \
> ../log/server-dcall-stdout.log 2> ../log/server-dcall-stderr.log

View file

@ -25,8 +25,11 @@ def compute_dropped(s):
s['current']['missing'].append((start, s['current']['npkt'], 1+s['current']['npkt']-start)) s['current']['missing'].append((start, s['current']['npkt'], 1+s['current']['npkt']-start))
t = s['current']['missing'] t = s['current']['missing']
t = filter(lambda p: (lambda start, stop, diff: start != 0)(*p), t) # Don't consider first 10 seconds are links are still being connected
t = filter(lambda p: (lambda start, stop, diff: start > 250)(*p), t)
# Below 1 second continuous drop, don't consider the call dropped
t = filter(lambda p: (lambda start, stop, diff: diff > 25)(*p), t) t = filter(lambda p: (lambda start, stop, diff: diff > 25)(*p), t)
# Don't consider the last drop as it is already parsed elsewhere
t = filter(lambda p: (lambda start, stop, diff: stop != s['current']['npkt'])(*p), t) t = filter(lambda p: (lambda start, stop, diff: stop != s['current']['npkt'])(*p), t)
t = [x for x in t] t = [x for x in t]
if len(t) > 0: if len(t) > 0:

View file

@ -39,6 +39,7 @@ done
echo ":: Bootstrap" echo ":: Bootstrap"
echo "Create output folder..." echo "Create output folder..."
docker pull registry.gitlab.inria.fr/qdufour/donar
docker run \ docker run \
--rm \ --rm \
--user root \ --user root \

View file

@ -77,7 +77,7 @@ struct light_ctx {
int16_t local_stats[MAX_LINKS]; int16_t local_stats[MAX_LINKS];
struct timing_entry historic[HISTORIC_SIZE]; struct timing_entry historic[HISTORIC_SIZE];
struct link_status status[MAX_LINKS]; struct link_status status[MAX_LINKS];
uint8_t used; uint8_t active;
uint64_t pkt_rcv_id; uint64_t pkt_rcv_id;
uint64_t pkt_sent_id; uint64_t pkt_sent_id;
uint64_t uniq_pkt_sent_id; uint64_t uniq_pkt_sent_id;
@ -119,6 +119,7 @@ void algo_lightning_init(struct evt_core_ctx* ctx, struct algo_ctx* app_ctx, str
lightc->pkt_sent_id = 1; lightc->pkt_sent_id = 1;
lightc->uniq_pkt_sent_id = 1; lightc->uniq_pkt_sent_id = 1;
lightc->disable_scheduler = 0; lightc->disable_scheduler = 0;
lightc->active = 0;
lightc->sched_strat = SCHEDULE_BOTH; lightc->sched_strat = SCHEDULE_BOTH;
uint64_t window = 2000; uint64_t window = 2000;
@ -142,9 +143,8 @@ void algo_lightning_init(struct evt_core_ctx* ctx, struct algo_ctx* app_ctx, str
for (int i = 0; i < lightc->sent_past_links; i++) for (int i = 0; i < lightc->sent_past_links; i++)
lightc->prev_links[i] = UINT8_MAX; lightc->prev_links[i] = UINT8_MAX;
lightc->used = lightc->fast_count * 2;
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
lightc->status[i].used = i < lightc->used ? LINK_SLOW : LINK_NOT_USED; lightc->status[i].used = LINK_NOT_USED;
} }
union abstract_packet m; union abstract_packet m;
@ -294,12 +294,14 @@ int algo_lightning_on_stream(struct evt_core_ctx* ctx, struct evt_core_fdinfo* f
int compare_stat_entry_max(const void *a, const void *b) { int compare_stat_entry_max(const void *a, const void *b) {
const struct stat_entry *sea = a, *seb = b; const struct stat_entry *sea = a, *seb = b;
if (sea->ooo == -1) return 1; int ra = sea->ooo;
if (seb->ooo == -1) return -1; int rb = seb->ooo;
return sea->ooo - seb->ooo; if (ra < 0) ra = INT16_MAX + -ra;
if (rb < 0) rb = INT16_MAX + -rb;
return ra - rb;
} }
void algo_lightning_update_stats (struct light_ctx *lightc) { void algo_lightning_update_stats (struct light_ctx *lightc, struct evt_core_ctx* ctx) {
struct timespec now, not_before = {0}, temp_time; struct timespec now, not_before = {0}, temp_time;
set_now(&now); set_now(&now);
timespec_diff (&now, &lightc->window, &not_before); timespec_diff (&now, &lightc->window, &not_before);
@ -319,22 +321,19 @@ void algo_lightning_update_stats (struct light_ctx *lightc) {
int64_t delta = 0; int64_t delta = 0;
switch (lightc->historic[i].state) { switch (lightc->historic[i].state) {
case IN_ORDER: case IN_ORDER:
lightc->stats[l].ooo += delta; delta = 0;
lightc->stats[l].meas_occ += 1;
break; break;
case OOO_ONGOING: case OOO_ONGOING:
timespec_diff(&now, &lightc->historic[i].detected_at, &temp_time); timespec_diff(&now, &lightc->historic[i].detected_at, &temp_time);
delta = timespec_get_unit (&temp_time, MILISEC); delta = timespec_get_unit (&temp_time, MILISEC);
lightc->stats[l].ooo += delta;
lightc->stats[l].meas_occ += 1;
break; break;
case OOO_DONE: case OOO_DONE:
timespec_diff(&lightc->historic[i].finished_at, &lightc->historic[i].detected_at, &temp_time); timespec_diff(&lightc->historic[i].finished_at, &lightc->historic[i].detected_at, &temp_time);
delta = timespec_get_unit (&temp_time, MILISEC); delta = timespec_get_unit (&temp_time, MILISEC);
lightc->stats[l].ooo += delta;
lightc->stats[l].meas_occ += 1;
break; break;
} }
lightc->stats[l].ooo += delta;
lightc->stats[l].meas_occ += 1;
if (lightc->explain) printf("(stats.compute) packet=%ld, link=%d, status=%s, delta=%ld\n", lightc->historic[i].pkt_id, l, ooo_state_str[lightc->historic[i].state], delta); if (lightc->explain) printf("(stats.compute) packet=%ld, link=%d, status=%s, delta=%ld\n", lightc->historic[i].pkt_id, l, ooo_state_str[lightc->historic[i].state], delta);
lightc->stats[l].link_id = l; lightc->stats[l].link_id = l;
@ -348,17 +347,18 @@ void algo_lightning_update_stats (struct light_ctx *lightc) {
// Compute average // Compute average
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
if (lightc->stats[i].meas_occ <= 0) continue; if (lightc->stats[i].meas_occ <= 0) lightc->stats[i].ooo = -1;
lightc->stats[i].ooo = lightc->stats[i].ooo / lightc->stats[i].meas_occ; else lightc->stats[i].ooo = lightc->stats[i].ooo / lightc->stats[i].meas_occ;
lightc->local_stats[i] = lightc->stats[i].ooo;
} }
// Set my local stats + merge remote stats // Set my local stats + merge remote stats
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
lightc->local_stats[i] = lightc->stats[i].ooo;
/* AVG */ /* AVG */
if (lightc->remote_stats[i] == -1) continue; if (lightc->remote_stats[i] < 0) continue;
if (lightc->stats[i].ooo == -1) lightc->stats[i].ooo = lightc->remote_stats[i]; if (lightc->stats[i].ooo < 0) lightc->stats[i].ooo = lightc->remote_stats[i];
else lightc->stats[i].ooo = (lightc->remote_stats[i] + lightc->stats[i].ooo) / 2; else lightc->stats[i].ooo = (lightc->remote_stats[i] + lightc->stats[i].ooo) / 2;
/* MAX /* MAX
@ -368,6 +368,14 @@ void algo_lightning_update_stats (struct light_ctx *lightc) {
} */ } */
} }
// Disable broken links
char url[256];
for (int i = 0; i < lightc->total_links; i++) {
sprintf(url, "tcp:write:127.0.0.1:%d", 7500 + i);
struct evt_core_fdinfo *to_fdinfo = evt_core_get_from_url (ctx, url);
if (to_fdinfo == NULL) lightc->stats[i].ooo = -2;
}
// Sort // Sort
if (!lightc->disable_scheduler) { if (!lightc->disable_scheduler) {
qsort(lightc->stats, lightc->total_links, sizeof(struct stat_entry), compare_stat_entry_max); qsort(lightc->stats, lightc->total_links, sizeof(struct stat_entry), compare_stat_entry_max);
@ -384,12 +392,18 @@ int send_message(struct evt_core_ctx* ctx, struct buffer_packet* bp) {
struct algo_ctx* app_ctx = cat->app_ctx; struct algo_ctx* app_ctx = cat->app_ctx;
struct light_ctx* lightc = app_ctx->misc; struct light_ctx* lightc = app_ctx->misc;
if (lightc->selected_link >= lightc->total_links) return 0; if (lightc->selected_link >= lightc->total_links) {
fprintf(stderr, "[algo_lightning] PACKET DROPPED! Selected link id %d is greater than the total number of links %d\n", lightc->selected_link, lightc->total_links);
return 0;
}
set_now(&lightc->status[lightc->selected_link].last); set_now(&lightc->status[lightc->selected_link].last);
sprintf(url, "tcp:write:127.0.0.1:%d", 7500 + lightc->selected_link); sprintf(url, "tcp:write:127.0.0.1:%d", 7500 + lightc->selected_link);
struct evt_core_fdinfo *to_fdinfo = evt_core_get_from_url (ctx, url); struct evt_core_fdinfo *to_fdinfo = evt_core_get_from_url (ctx, url);
if (to_fdinfo == NULL) return 0; if (to_fdinfo == NULL) {
fprintf(stderr, "[algo_lightning] PACKET DROPPED! We don't have any entry for %s currently\n", url);
return 0;
}
struct buffer_packet* bp_dup = dup_buffer_tow (&app_ctx->br, bp, to_fdinfo); struct buffer_packet* bp_dup = dup_buffer_tow (&app_ctx->br, bp, to_fdinfo);
@ -452,16 +466,17 @@ void algo_lightning_update_used(struct light_ctx *lightc, struct timespec *now)
timespec_diff(now, &lightc->window, &not_before); timespec_diff(now, &lightc->window, &not_before);
if (timespec_gt(&lightc->last_update_used, &not_before)) return; if (timespec_gt(&lightc->last_update_used, &not_before)) return;
int used_to_not = 0, not_to_used = 0; int used_to_not = -1, not_to_used = -1;
int64_t max_ooo = 0; int64_t max_ooo = 0;
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
if (lightc->status[lightc->stats[i].link_id].used == LINK_FAST || lightc->status[lightc->stats[i].link_id].used == LINK_SLOW) { if (lightc->status[lightc->stats[i].link_id].used == LINK_FAST || lightc->status[lightc->stats[i].link_id].used == LINK_SLOW) {
int64_t retained_ooo = lightc->stats[i].ooo == -1 ? INT64_MAX : lightc->stats[i].ooo; int64_t retained_ooo = lightc->stats[i].ooo < 0 ? INT64_MAX : lightc->stats[i].ooo;
if (retained_ooo >= max_ooo) { if (retained_ooo >= max_ooo) {
max_ooo = retained_ooo; max_ooo = retained_ooo;
used_to_not = lightc->stats[i].link_id; used_to_not = lightc->stats[i].link_id;
} }
} else { } else {
if (lightc->stats[i].ooo == -2) continue;
if (timespec_lt(&lightc->status[lightc->stats[i].link_id].last, &oldest)) { if (timespec_lt(&lightc->status[lightc->stats[i].link_id].last, &oldest)) {
oldest = lightc->status[lightc->stats[i].link_id].last; oldest = lightc->status[lightc->stats[i].link_id].last;
not_to_used = lightc->stats[i].link_id; not_to_used = lightc->stats[i].link_id;
@ -469,27 +484,20 @@ void algo_lightning_update_used(struct light_ctx *lightc, struct timespec *now)
} }
} }
// Do we have a good link not used?
/*for (int i = 0; i < lightc->used; i++) {
if (lightc->status[lightc->stats[i].link_id].used == LINK_NOT_USED) {
not_to_used = lightc->stats[i].link_id;
break;
}
}*/
// Swap them // Swap them
//printf("Link %d will be disabled, %d will be enabled\n", used_to_not, not_to_used); //printf("Link %d will be disabled, %d will be enabled\n", used_to_not, not_to_used);
if (used_to_not < 0 || not_to_used < 0) return;
lightc->status[used_to_not].used = LINK_NOT_USED; lightc->status[used_to_not].used = LINK_NOT_USED;
lightc->status[not_to_used].used = LINK_SLOW; lightc->status[not_to_used].used = LINK_SLOW;
lightc->last_update_used = *now; lightc->last_update_used = *now;
} }
void algo_lightning_link_cat(struct light_ctx *lightc) { void algo_lightning_link_cat(struct light_ctx *lightc, int cur_fast_count) {
uint8_t used = 0; uint8_t used = 0;
//printf("---\n"); //printf("---\n");
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
if (lightc->status[lightc->stats[i].link_id].used != LINK_NOT_USED) { if (lightc->status[lightc->stats[i].link_id].used != LINK_NOT_USED) {
if (used < lightc->fast_count) lightc->status[lightc->stats[i].link_id].used = LINK_FAST; if (used < cur_fast_count) lightc->status[lightc->stats[i].link_id].used = LINK_FAST;
else lightc->status[lightc->stats[i].link_id].used = LINK_SLOW; else lightc->status[lightc->stats[i].link_id].used = LINK_SLOW;
used++; used++;
} }
@ -507,15 +515,34 @@ int algo_lightning_on_datagram(struct evt_core_ctx* ctx, struct evt_core_fdinfo*
// Pad packet // Pad packet
algo_lightning_pad (ctx, fdinfo, bp); algo_lightning_pad (ctx, fdinfo, bp);
// Compute stats // Prepare links
algo_lightning_update_stats(lightc); algo_lightning_update_stats(lightc, ctx);
// Adapt tags quantity to active links
struct evt_core_cat *cat = evt_core_get_from_cat (ctx, "tcp-write");
int target_to_use = lightc->fast_count*2 < cat->socklist->len ? lightc->fast_count*2 : cat->socklist->len;
int diff = target_to_use - ((int) lightc->active);
for (int i = 0; i < lightc->total_links && diff > 0; i++) {
if (lightc->status[lightc->stats[i].link_id].used != LINK_NOT_USED) continue;
lightc->status[lightc->stats[i].link_id].used = LINK_SLOW;
diff--;
}
for (int i = lightc->total_links-1; i >= 0 && diff < 0; i--) {
if (lightc->status[lightc->stats[i].link_id].used == LINK_NOT_USED) continue;
lightc->status[lightc->stats[i].link_id].used = LINK_NOT_USED;
diff++;
}
lightc->active = target_to_use;
// Update link tags
algo_lightning_update_used(lightc, &now); algo_lightning_update_used(lightc, &now);
algo_lightning_link_cat(lightc); algo_lightning_link_cat(lightc, target_to_use/2);
if (ctx->verbose > 1) { if (ctx->verbose > 1) {
printf("after sort: "); printf("link ranking (%d fast links, %d total links)\nposition | port | score | class \n", target_to_use/2, target_to_use);
for (int i = 0; i < lightc->total_links; i++) { for (int i = 0; i < lightc->total_links; i++) {
printf("%d (%ld), ", lightc->stats[i].link_id, lightc->stats[i].ooo); printf("%8d | %4d | %9ld | %9s \n", i, lightc->stats[i].link_id+7500, lightc->stats[i].ooo, link_cat_str[lightc->status[lightc->stats[i].link_id].used]);
} }
printf("\n"); printf("\n");
} }
@ -526,7 +553,7 @@ int algo_lightning_on_datagram(struct evt_core_ctx* ctx, struct evt_core_fdinfo*
if (lightc->sched_strat == SCHEDULE_BOTH || lightc->sched_strat == SCHEDULE_FAST) { if (lightc->sched_strat == SCHEDULE_BOTH || lightc->sched_strat == SCHEDULE_FAST) {
sel_link_last = now; sel_link_last = now;
lightc->selected_link = UINT8_MAX; lightc->selected_link = UINT8_MAX;
for (int i = 0, j = 0; i < lightc->total_links && j < lightc->fast_count; i++) { for (int i = 0; i < lightc->total_links; i++) {
if (lightc->status[lightc->stats[i].link_id].used != LINK_FAST) continue; if (lightc->status[lightc->stats[i].link_id].used != LINK_FAST) continue;
if (timespec_lt (&lightc->status[lightc->stats[i].link_id].last, &sel_link_last)) { if (timespec_lt (&lightc->status[lightc->stats[i].link_id].last, &sel_link_last)) {
lightc->selected_link = lightc->stats[i].link_id; lightc->selected_link = lightc->stats[i].link_id;

View file

@ -49,6 +49,11 @@ int algo_naive_on_datagram(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdi
} }
int algo_naive_on_err(struct evt_core_ctx *ctx, struct evt_core_fdinfo *fdinfo) { int algo_naive_on_err(struct evt_core_ctx *ctx, struct evt_core_fdinfo *fdinfo) {
struct algo_ctx* app_ctx = fdinfo->cat->app_ctx;
if (strcmp("tcp-read", fdinfo->cat->name) == 0 || strcmp("tcp-write", fdinfo->cat->name) == 0)
return app_ctx->ap.sr(ctx, fdinfo);
fprintf(stderr, "%s is not eligible for a reconnect\n", fdinfo->url);
// We do nothing // We do nothing
return 1; return 1;
} }

View file

@ -12,9 +12,10 @@ struct dcall_elements {
GstElement *pipeline; GstElement *pipeline;
GstElement *rx_tap, *rx_jitterbuffer, *rx_depay, *rx_opusdec, *rx_resample, *rx_echocancel, *rx_pulse, *rx_fakesink; GstElement *rx_tap, *rx_jitterbuffer, *rx_depay, *rx_opusdec, *rx_resample, *rx_echocancel, *rx_pulse, *rx_fakesink;
GstElement *tx_pulse, *tx_filesrc, *tx_mpegaudioparse, *tx_mpgaudiodec, *tx_audioconvert, *tx_echocancel, *tx_queue, *tx_resample, *tx_opusenc, *tx_pay, *tx_sink; GstElement *tx_pulse, *tx_filesrc, *tx_mpegaudioparse, *tx_mpgaudiodec, *tx_audioconvert, *tx_echocancel, *tx_queue, *tx_resample, *tx_opusenc, *tx_pay, *tx_sink;
char *remote_host, *audio_tap, *audio_sink, *audio_file, *gstreamer_log_path; char *local_host, *remote_host, *audio_tap, *audio_sink, *audio_file, *gstreamer_log_path;
int remote_port, latency; int remote_port, local_port, latency;
guint64 grtppktlost; guint64 grtppktlost;
GMainLoop *loop;
}; };
int create_rx_chain(struct dcall_elements* de) { int create_rx_chain(struct dcall_elements* de) {
@ -32,8 +33,8 @@ int create_rx_chain(struct dcall_elements* de) {
return -1; return -1;
} }
g_object_set(G_OBJECT (de->rx_tap), "port", 5000, NULL); g_object_set(G_OBJECT (de->rx_tap), "port", de->local_port, NULL);
//g_object_set(G_OBJECT (rx_tap), "address", "127.0.0.1", NULL); g_object_set(G_OBJECT (de->rx_tap), "address", de->local_host, NULL);
g_object_set(G_OBJECT (de->rx_tap), "caps", gst_caps_new_simple("application/x-rtp", "media", G_TYPE_STRING, "audio", NULL), NULL); g_object_set(G_OBJECT (de->rx_tap), "caps", gst_caps_new_simple("application/x-rtp", "media", G_TYPE_STRING, "audio", NULL), NULL);
g_object_set(G_OBJECT (de->rx_jitterbuffer), "do-lost", TRUE, NULL); g_object_set(G_OBJECT (de->rx_jitterbuffer), "do-lost", TRUE, NULL);
@ -65,9 +66,56 @@ int create_rx_chain(struct dcall_elements* de) {
return 0; return 0;
} }
static void uridecodebin_newpad (GstElement *src, GstPad *new_pad, gpointer data) {
struct dcall_elements *de = data;
GstPad *sink_pad = gst_element_get_static_pad (de->tx_audioconvert, "sink");
GstPadLinkReturn ret;
GstCaps *new_pad_caps = NULL;
GstStructure *new_pad_struct = NULL;
const gchar *new_pad_type = NULL;
g_print ("Received new pad '%s' from '%s':\n", GST_PAD_NAME (new_pad), GST_ELEMENT_NAME (src));
/* If our converter is already linked, we have nothing to do here */
if (gst_pad_is_linked (sink_pad)) {
g_print ("We are already linked. Ignoring.\n");
goto exit;
}
/* Check the new pad's type */
new_pad_caps = gst_pad_get_current_caps (new_pad);
new_pad_struct = gst_caps_get_structure (new_pad_caps, 0);
new_pad_type = gst_structure_get_name (new_pad_struct);
if (!g_str_has_prefix (new_pad_type, "audio/x-raw")) {
g_print ("It has type '%s' which is not raw audio. Ignoring.\n", new_pad_type);
goto exit;
}
/* Attempt the link */
ret = gst_pad_link (new_pad, sink_pad);
if (GST_PAD_LINK_FAILED (ret)) {
g_print ("Type is '%s' but link failed.\n", new_pad_type);
} else {
g_print ("Link succeeded (type '%s').\n", new_pad_type);
}
exit:
/* Unreference the new pad's caps, if we got them */
if (new_pad_caps != NULL)
gst_caps_unref (new_pad_caps);
/* Unreference the sink pad */
gst_object_unref (sink_pad);
}
static void uridecodebin_drained (GstElement *src, gpointer data) {
struct dcall_elements *de = data;
g_main_loop_quit (de->loop);
}
int create_tx_chain(struct dcall_elements* de) { int create_tx_chain(struct dcall_elements* de) {
de->tx_pulse = gst_element_factory_make("pulsesrc", "tx-pulse"); de->tx_pulse = gst_element_factory_make("pulsesrc", "tx-pulse");
de->tx_filesrc = gst_element_factory_make("filesrc", "tx-filesrc"); de->tx_filesrc = gst_element_factory_make("uridecodebin", "tx-filesrc");
de->tx_mpegaudioparse = gst_element_factory_make("mpegaudioparse", "tx-mpegaudioparse"); de->tx_mpegaudioparse = gst_element_factory_make("mpegaudioparse", "tx-mpegaudioparse");
de->tx_mpgaudiodec = gst_element_factory_make("mpg123audiodec", "tx-mpgaudiodec"); de->tx_mpgaudiodec = gst_element_factory_make("mpg123audiodec", "tx-mpgaudiodec");
de->tx_audioconvert = gst_element_factory_make("audioconvert", "tx-audioconvert"); de->tx_audioconvert = gst_element_factory_make("audioconvert", "tx-audioconvert");
@ -107,14 +155,16 @@ int create_tx_chain(struct dcall_elements* de) {
g_object_set (de->tx_pulse, "stream-properties", props, NULL); g_object_set (de->tx_pulse, "stream-properties", props, NULL);
gst_structure_free (props); gst_structure_free (props);
g_object_set(de->tx_filesrc, "location", de->audio_file, NULL); g_object_set(de->tx_filesrc, "uri", de->audio_file, NULL);
if (strcmp(de->audio_tap, "pulsesrc") == 0) { if (strcmp(de->audio_tap, "pulsesrc") == 0) {
gst_bin_add_many(GST_BIN(de->pipeline), de->tx_pulse, de->tx_echocancel, de->tx_queue, de->tx_resample, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL); gst_bin_add_many(GST_BIN(de->pipeline), de->tx_pulse, de->tx_echocancel, de->tx_queue, de->tx_resample, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL);
gst_element_link_many(de->tx_pulse, de->tx_resample, de->tx_echocancel, de->tx_queue, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL); gst_element_link_many(de->tx_pulse, de->tx_resample, de->tx_echocancel, de->tx_queue, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL);
} else if (strcmp(de->audio_tap, "filesrc") == 0) { } else if (strcmp(de->audio_tap, "filesrc") == 0) {
gst_bin_add_many(GST_BIN(de->pipeline), de->tx_filesrc, de->tx_mpegaudioparse, de->tx_mpgaudiodec, de->tx_audioconvert, de->tx_queue, de->tx_resample, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL); gst_bin_add_many(GST_BIN(de->pipeline), de->tx_filesrc, de->tx_mpegaudioparse, de->tx_mpgaudiodec, de->tx_audioconvert, de->tx_queue, de->tx_resample, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL);
gst_element_link_many(de->tx_filesrc, de->tx_mpegaudioparse, de->tx_mpgaudiodec, de->tx_audioconvert, de->tx_resample, de->tx_queue, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL); gst_element_link_many(de->tx_audioconvert, de->tx_resample, de->tx_queue, de->tx_opusenc, de->tx_pay, de->tx_sink, NULL);
g_signal_connect (de->tx_filesrc, "pad-added", G_CALLBACK (uridecodebin_newpad), de);
g_signal_connect (de->tx_filesrc, "drained", G_CALLBACK(uridecodebin_drained), de);
} else { } else {
fprintf(stderr, "Wrong audio tap %s, exiting...\n", de->audio_tap); fprintf(stderr, "Wrong audio tap %s, exiting...\n", de->audio_tap);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
@ -165,24 +215,33 @@ gboolean stop_handler(gpointer user_data) {
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
GMainLoop *loop;
GstBus *bus;
struct dcall_elements de = { struct dcall_elements de = {
.audio_file = "voice.mp3", .audio_file = "file://./voice.mp3",
.gstreamer_log_path = "dcall.log", .gstreamer_log_path = "dcall.log",
.latency = 150, .latency = 150,
.remote_port = 5000,
.remote_host = "127.13.3.7", .remote_host = "127.13.3.7",
.remote_port = 5000,
.local_host = "0.0.0.0",
.local_port = 5000,
.audio_sink = "pulsesink", .audio_sink = "pulsesink",
.audio_tap = "pulsesrc", .audio_tap = "pulsesrc",
.grtppktlost = 0 .grtppktlost = 0
}; };
int opt = 0; int opt = 0;
while ((opt = getopt(argc, argv, "t:s:r:p:l:d:a:h")) != -1) { while ((opt = getopt(argc, argv, "t:s:r:p:l:d:a:hb:c:")) != -1) {
switch(opt) { switch(opt) {
case 'a': //latency case 'a':
de.audio_file = optarg; de.audio_file = optarg;
break; break;
case 'b':
de.local_host = optarg;
break;
case 'c':
de.local_port = atoi(optarg);
break;
case 'd': case 'd':
de.gstreamer_log_path = optarg; de.gstreamer_log_path = optarg;
break; break;
@ -208,12 +267,14 @@ int main(int argc, char *argv[]) {
break; break;
} }
} }
printf("dcall configuration:\n\tnetwork in: %s:%d, out: %s:%d\n\taudio in: %s, out: %s\n\tmisc latency: %dms, audio_file: %s\n",
de.local_host, de.local_port, de.remote_host, de.remote_port, de.audio_tap, de.audio_sink, de.latency, de.audio_file);
setenv("GST_DEBUG_FILE", de.gstreamer_log_path, 0); setenv("GST_DEBUG_FILE", de.gstreamer_log_path, 0);
setenv("GST_DEBUG", "3,opusdec:5", 0); setenv("GST_DEBUG", "3,opusdec:5", 0);
gst_init (&argc, &argv); gst_init (&argc, &argv);
loop = g_main_loop_new (NULL, FALSE); de.loop = g_main_loop_new (NULL, FALSE);
de.pipeline = gst_pipeline_new ("pipeline"); de.pipeline = gst_pipeline_new ("pipeline");
if (!de.pipeline) { if (!de.pipeline) {
@ -226,11 +287,11 @@ int main(int argc, char *argv[]) {
gst_element_set_state (de.pipeline, GST_STATE_PLAYING); gst_element_set_state (de.pipeline, GST_STATE_PLAYING);
g_unix_signal_add (SIGTERM, stop_handler, loop); g_unix_signal_add (SIGTERM, stop_handler, de.loop);
g_unix_signal_add (SIGINT, stop_handler, loop); g_unix_signal_add (SIGINT, stop_handler, de.loop);
g_print ("Running...\n"); g_print ("Running...\n");
g_main_loop_run (loop); g_main_loop_run (de.loop);
g_print ("Main loop stopped...\n"); g_print ("Main loop stopped...\n");
@ -247,7 +308,7 @@ int main(int argc, char *argv[]) {
gst_element_set_state (de.pipeline, GST_STATE_NULL); gst_element_set_state (de.pipeline, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (de.pipeline)); gst_object_unref (GST_OBJECT (de.pipeline));
g_main_loop_unref (loop); g_main_loop_unref (de.loop);
return 0; return 0;
} }

View file

@ -7,12 +7,11 @@ void load_onion_services(struct donar_client_ctx* ctx, char* onion_file, int por
void init_socks5_client(struct donar_client_ctx* app_ctx, int pos) { void init_socks5_client(struct donar_client_ctx* app_ctx, int pos) {
char target_host[255]; char target_host[255];
if (strlen(app_ctx->tos.keys[pos].pub) > 254) { if (strlen(app_ctx->tos.keys[0].pub) > 254) {
fprintf(stderr, "Domain name is too long\n"); fprintf(stderr, "Domain name is too long\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
sprintf(target_host, "%s.onion", app_ctx->tos.keys[pos].pub); sprintf(target_host, "%s.onion", app_ctx->tos.keys[0].pub);
app_ctx->ports[pos] = 7500 + pos; app_ctx->ports[pos] = 7500 + pos;
socks5_create_dns_client (&app_ctx->evts, "127.0.0.1", "9050", target_host, app_ctx->ports[pos]); socks5_create_dns_client (&app_ctx->evts, "127.0.0.1", "9050", target_host, app_ctx->ports[pos]);
@ -44,13 +43,31 @@ failed:
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
void reinit_socks5(struct evt_core_ctx* ctx, void* user_data) {
// @FIXME: Ugly way to get donar_client_ctx. Shame on me :/
struct evt_core_cat* cat = evt_core_get_from_cat (ctx, "socks5-failed");
if (cat == NULL) {
fprintf(stderr, "Unable to reconnect stream as socks5-failed cat is not available...\n");
exit(EXIT_FAILURE);
}
struct donar_client_ctx* app_ctx = cat->app_ctx;
int64_t pos = (int64_t) user_data; // trust me...
fprintf(stdout, "[%s][donar-client] We have waited enough, retriggering socks5 for port %ld\n", current_human_datetime (), pos+7500);
init_socks5_client (app_ctx, pos);
}
int on_socks5_failed(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { int on_socks5_failed(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
struct donar_client_ctx* app_ctx = fdinfo->cat->app_ctx; struct donar_client_ctx* app_ctx = fdinfo->cat->app_ctx;
struct socks5_ctx* s5ctx = fdinfo->other; struct socks5_ctx* s5ctx = fdinfo->other;
int pos = s5ctx->port - 7500; int64_t pos = 0;
pos = s5ctx->port - 7500;
int64_t to_wait_sec = 30 + pos*3;
fprintf(stdout, "[%s][donar-client] Retriggering socks5 in %ld seconds for port %d\n", current_human_datetime (), to_wait_sec, s5ctx->port);
set_timeout(ctx, 1000 * to_wait_sec, (void*) pos, reinit_socks5);
evt_core_rm_fd (ctx, fdinfo->fd); evt_core_rm_fd (ctx, fdinfo->fd);
init_socks5_client (app_ctx, pos); //init_socks5_client (app_ctx, pos);
return 1; return 1;
} }
@ -70,18 +87,11 @@ void init_socks5_sinks(struct donar_client_ctx* app_ctx) {
} }
int donar_client_stream_repair(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) { int donar_client_stream_repair(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo) {
// @FIXME: Ugly way to get donar_client_ctx. Shame on me :/
fprintf(stdout, "[%s][donar-client] %s broke\n", current_human_datetime (), fdinfo->url); fprintf(stdout, "[%s][donar-client] %s broke\n", current_human_datetime (), fdinfo->url);
struct evt_core_cat* cat = evt_core_get_from_cat (ctx, "socks5-failed");
if (cat == NULL) {
fprintf(stderr, "Unable to reconnect stream as socks5-failed cat is not available...\n");
exit(EXIT_FAILURE);
}
struct donar_client_ctx* app_ctx = cat->app_ctx;
struct evt_core_fdinfo* fdtarget = NULL; struct evt_core_fdinfo* fdtarget = NULL;
int port = url_get_port_int (fdinfo->url); int port = url_get_port_int (fdinfo->url);
int pos = port - 7500, removed = 0; int64_t pos = 0, removed = 0;
pos = port - 7500;
char buffer[256]; char buffer[256];
sprintf(buffer, "tcp:read:127.0.0.1:%d", port); sprintf(buffer, "tcp:read:127.0.0.1:%d", port);
@ -99,8 +109,10 @@ int donar_client_stream_repair(struct evt_core_ctx* ctx, struct evt_core_fdinfo*
} }
if (removed == 2) { if (removed == 2) {
fprintf(stdout, "[%s][donar-client] Retriggering socks5 for port %d\n", current_human_datetime (), port); int64_t to_wait_sec = 10 + pos*3;
init_socks5_client (app_ctx, pos); fprintf(stdout, "[%s][donar-client] Retriggering socks5 in %ld seconds for port %d\n", current_human_datetime (), to_wait_sec, port);
set_timeout(ctx, 1000 * to_wait_sec, (void*) pos, reinit_socks5);
//init_socks5_client (app_ctx, pos);
return 1; return 1;
} else if (removed == 0) { } else if (removed == 0) {
fprintf(stdout, "[%s][donar-client] Socks5 has already been retriggered for port %d\n", current_human_datetime (), port); fprintf(stdout, "[%s][donar-client] Socks5 has already been retriggered for port %d\n", current_human_datetime (), port);
@ -138,8 +150,13 @@ void donar_client(struct donar_client_ctx* ctx, struct donar_params* dp) {
load_onion_services (ctx, dp->onion_file, dp->links); load_onion_services (ctx, dp->onion_file, dp->links);
printf("--- Onion services loaded\n"); printf("--- Onion services loaded\n");
for (int i = 0; i < dp->links; i++) { init_timer(&ctx->evts);
init_socks5_client(ctx, i); printf("--- Inited Timer\n");
for (int64_t i = 0; i < dp->links; i++) {
int64_t to_wait_sec = i * 3;
fprintf(stdout, "[%s][donar-client] Triggering socks5 in %ld seconds for port %d\n", current_human_datetime (), to_wait_sec, i+7500);
set_timeout(&ctx->evts, 1000 * to_wait_sec, (void*) i, reinit_socks5);
} }
printf("--- TCP Clients Connected\n"); printf("--- TCP Clients Connected\n");
@ -153,5 +170,6 @@ void donar_client(struct donar_client_ctx* ctx, struct donar_params* dp) {
evt_core_loop(&(ctx->evts)); evt_core_loop(&(ctx->evts));
//stop_timer(&(ctx->evts));
tor_os_free (&(ctx->tos)); tor_os_free (&(ctx->tos));
} }

View file

@ -6,6 +6,7 @@
#include "socks5.h" #include "socks5.h"
#include "proxy.h" #include "proxy.h"
#include "donar_init.h" #include "donar_init.h"
#include "timer.h"
#define CLIENT_PORT_SIZE 64 #define CLIENT_PORT_SIZE 64

View file

@ -1,7 +1,7 @@
#include "donar_server.h" #include "donar_server.h"
void create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) { void create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) {
tor_os_create (tos, "onion_services.pub", "onion_services.txt", ports_count); tor_os_create (tos, "onion_services.pub", "onion_services.txt", 1);
tor_os_read (tos); tor_os_read (tos);
int err = 0; int err = 0;
@ -10,7 +10,7 @@ void create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_
fprintf(stderr, "Unable to open Tor Socket\n"); fprintf(stderr, "Unable to open Tor Socket\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
err = tor_ctl_add_onion (tctl, tos, ports, tof); err = tor_ctl_add_onion (tctl, tos, ports, ports_count, tof);
if (err != 0) { if (err != 0) {
fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err); fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
@ -82,7 +82,7 @@ struct donar_server_os_republish_params {
struct donar_server_ctx* dctx; struct donar_server_ctx* dctx;
struct donar_params* dp; struct donar_params* dp;
}; };
/*
void republish_tor_os(struct evt_core_ctx* ctx, void* user_data) { void republish_tor_os(struct evt_core_ctx* ctx, void* user_data) {
struct donar_server_os_republish_params* dsorp = user_data; struct donar_server_os_republish_params* dsorp = user_data;
@ -94,7 +94,7 @@ void republish_tor_os(struct evt_core_ctx* ctx, void* user_data) {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
printf("Republish Tor OS\n"); printf("Republish Tor OS\n");
} }*/
void donar_server(struct donar_server_ctx* ctx, struct donar_params* dp) { void donar_server(struct donar_server_ctx* ctx, struct donar_params* dp) {
struct algo_params ap = { struct algo_params ap = {

View file

@ -350,7 +350,7 @@ void spawn_tor_server(struct evt_core_ctx* evts, uint16_t *ports) {
} }
void measlat_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) { void measlat_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) {
tor_os_create (tos, "onion_services.pub", "onion_services.txt", ports_count); tor_os_create (tos, "onion_services.pub", "onion_services.txt", 1);
tor_os_read (tos); tor_os_read (tos);
int err = 0; int err = 0;
@ -359,7 +359,7 @@ void measlat_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl,
fprintf(stderr, "Unable to open Tor Socket\n"); fprintf(stderr, "Unable to open Tor Socket\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
err = tor_ctl_add_onion (tctl, tos, ports, tof); err = tor_ctl_add_onion (tctl, tos, ports, ports_count, tof);
if (err != 0) { if (err != 0) {
fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err); fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);

View file

@ -34,7 +34,7 @@ int create_ip_client(char* host, char* service, int type) {
} }
if (cursor == NULL) { if (cursor == NULL) {
fprintf(stderr, "No connect worked\n"); fprintf(stderr, "No connect worked for %s:%s\n", host, service);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }

View file

@ -103,7 +103,7 @@ int main_on_tcp_write(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo)
uint8_t is_rdy = fdinfo->cat->socklist->len >= app_ctx->link_count ? 1 : 0; uint8_t is_rdy = fdinfo->cat->socklist->len >= app_ctx->link_count ? 1 : 0;
if (!app_ctx->is_rdy && is_rdy) printf("=== Our %d requested circuits are now up ===\n", app_ctx->link_count); if (!app_ctx->is_rdy && is_rdy) printf("=== Our %d requested circuits are now up ===\n", app_ctx->link_count);
else if (app_ctx->is_rdy && !is_rdy) printf("=== Only %d/%d circuits are available, results could be biased ===\n", fdinfo->cat->socklist->len, app_ctx->link_count); else if (app_ctx->is_rdy && !is_rdy) printf("=== Only %d/%d circuits are available, results could be biased ===\n", fdinfo->cat->socklist->len, app_ctx->link_count);
app_ctx->is_rdy = app_ctx->is_rdy || is_rdy; // @FIXME prevent deactivation for our tests app_ctx->is_rdy = app_ctx->is_rdy || is_rdy; // @FIXME we don't want deactivation finally
// 1. Get current write buffer OR a buffer from the waiting queue OR leave // 1. Get current write buffer OR a buffer from the waiting queue OR leave
if ((bp = get_write_buffer(&app_ctx->br, fdinfo)) == NULL) return 1; if ((bp = get_write_buffer(&app_ctx->br, fdinfo)) == NULL) return 1;
@ -117,6 +117,7 @@ int main_on_tcp_write(struct evt_core_ctx* ctx, struct evt_core_fdinfo* fdinfo)
if (write_res == FDS_ERR) goto co_error; if (write_res == FDS_ERR) goto co_error;
if (write_res == FDS_AGAIN) return 1; if (write_res == FDS_AGAIN) return 1;
} }
app_ctx->cell_sent++; app_ctx->cell_sent++;
free_buffer: free_buffer:
@ -218,7 +219,7 @@ void algo_main_init(struct evt_core_ctx* evt, struct algo_params* ap) {
struct evt_core_cat tcp_read = { struct evt_core_cat tcp_read = {
.name = "tcp-read", .name = "tcp-read",
.flags = EPOLLIN | EPOLLET | EPOLLHUP, .flags = EPOLLIN | EPOLLET | EPOLLHUP | EPOLLRDHUP,
.app_ctx = ctx, .app_ctx = ctx,
.free_app_ctx = algo_main_destroy, .free_app_ctx = algo_main_destroy,
.cb = main_on_tcp_read, .cb = main_on_tcp_read,
@ -240,7 +241,7 @@ void algo_main_init(struct evt_core_ctx* evt, struct algo_params* ap) {
struct evt_core_cat tcp_write = { struct evt_core_cat tcp_write = {
.name = "tcp-write", .name = "tcp-write",
.flags = EPOLLOUT | EPOLLET | EPOLLHUP, .flags = EPOLLOUT | EPOLLET | EPOLLHUP | EPOLLRDHUP,
.app_ctx = ctx, .app_ctx = ctx,
.free_app_ctx = algo_main_destroy, .free_app_ctx = algo_main_destroy,
.cb = main_on_tcp_write, .cb = main_on_tcp_write,

View file

@ -51,7 +51,7 @@ void tor_ctl_list_onions(struct tor_ctl* ctx) {
} }
} }
int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* port, enum TOR_ONION_FLAGS flags) { int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* port, uint64_t port_per_os, enum TOR_ONION_FLAGS flags) {
int err = 0; int err = 0;
char buffer1[1024] = {0}; char buffer1[1024] = {0};
char buffer2[1024] = {0}; char buffer2[1024] = {0};
@ -59,12 +59,14 @@ int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* por
/* Add onion services loaded from file */ /* Add onion services loaded from file */
for (int i = 0; i < tos->filled; i++) { for (int i = 0; i < tos->filled; i++) {
if (flags == TOR_ONION_FLAG_NONE) fprintf(ctx->wsock, "add_onion %s ", tos->keys[i].priv);
fprintf(ctx->wsock, "add_onion %s Port=%d,127.13.3.7:%d\n", tos->keys[i].priv, port[i], port[i]); for (int j = 0; j < port_per_os; j++) {
fprintf(ctx->wsock, "Port=%d,127.13.3.7:%d ", port[i*port_per_os+j], port[i*port_per_os+j]);
}
if (flags == TOR_ONION_FLAG_NONE) fprintf(ctx->wsock, "\n");
else { else {
fprintf(ctx->wsock, "add_onion %s Port=%d,127.13.3.7:%d Flags=", tos->keys[i].priv, port[i], port[i]); fprintf(ctx->wsock, "Flags=");
if (flags & TOR_ONION_FLAG_NON_ANONYMOUS) if (flags & TOR_ONION_FLAG_NON_ANONYMOUS) fprintf(ctx->wsock, "NonAnonymous,");
fprintf(ctx->wsock, "NonAnonymous,");
fprintf(ctx->wsock, "\n"); fprintf(ctx->wsock, "\n");
} }
@ -80,14 +82,17 @@ int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* por
/* Complete by creating new onion services */ /* Complete by creating new onion services */
for (int i = tos->filled; i < tos->size; i++) { for (int i = tos->filled; i < tos->size; i++) {
if (flags == TOR_ONION_FLAG_NONE) fprintf(ctx->wsock, "add_onion NEW:ED25519-V3 ");
fprintf(ctx->wsock, "add_onion NEW:ED25519-V3 Port=%d\n", port[i]); for (int j = 0; j < port_per_os; j++) {
fprintf(ctx->wsock, "Port=%d,127.13.3.7:%d ", port[i*port_per_os+j], port[i*port_per_os+j]);
}
if (flags == TOR_ONION_FLAG_NONE) fprintf(ctx->wsock, "\n");
else { else {
fprintf(ctx->wsock, "add_onion NEW:ED25519-V3 Port=%d Flags=", port[i]); fprintf(ctx->wsock, "Flags=");
if (flags & TOR_ONION_FLAG_NON_ANONYMOUS) if (flags & TOR_ONION_FLAG_NON_ANONYMOUS) fprintf(ctx->wsock, "NonAnonymous,");
fprintf(ctx->wsock, "NonAnonymous,");
fprintf(ctx->wsock, "\n"); fprintf(ctx->wsock, "\n");
} }
//fprintf(ctx->wsock, "add_onion NEW:RSA1024 Port=%d\n", port[i]); //fprintf(ctx->wsock, "add_onion NEW:RSA1024 Port=%d\n", port[i]);
fscanf(ctx->rsock, "%d", &err); fscanf(ctx->rsock, "%d", &err);

View file

@ -20,6 +20,6 @@ enum TOR_ONION_FLAGS {
}; };
int tor_ctl_connect(struct tor_ctl* ctx, char* addr, char* service); int tor_ctl_connect(struct tor_ctl* ctx, char* addr, char* service);
int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* port, enum TOR_ONION_FLAGS flags); int tor_ctl_add_onion(struct tor_ctl* ctx, struct tor_os_str* tos, uint16_t* port, uint64_t port_per_os, enum TOR_ONION_FLAGS flags);
void tor_ctl_list_onions(struct tor_ctl* ctx); void tor_ctl_list_onions(struct tor_ctl* ctx);
void tor_ctl_close(struct tor_ctl* ctx); void tor_ctl_close(struct tor_ctl* ctx);

View file

@ -14,7 +14,7 @@ struct torecho_ctx {
}; };
void te_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) { void te_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint16_t* ports, int ports_count, enum TOR_ONION_FLAGS tof) {
tor_os_create (tos, "onion_services.pub", "onion_services.txt", ports_count); tor_os_create (tos, "onion_services.pub", "onion_services.txt", 1);
tor_os_read (tos); tor_os_read (tos);
int err = 0; int err = 0;
@ -23,7 +23,7 @@ void te_create_onion_services(struct tor_os_str* tos, struct tor_ctl* tctl, uint
fprintf(stderr, "Unable to open Tor Socket\n"); fprintf(stderr, "Unable to open Tor Socket\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
err = tor_ctl_add_onion (tctl, tos, ports, tof); err = tor_ctl_add_onion (tctl, tos, ports, ports_count, tof);
if (err != 0) { if (err != 0) {
fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err); fprintf(stderr, "Unable to create Onion Services (error: %d)\n", err);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 1 NumEntryGuards 1
NumPrimaryGuards 1 NumPrimaryGuards 1
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

7
torrc_guard_10 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 10
NumPrimaryGuards 10
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

7
torrc_guard_11 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 11
NumPrimaryGuards 11
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 12 NumEntryGuards 12
NumPrimaryGuards 12 NumPrimaryGuards 12
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

7
torrc_guard_13 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 13
NumPrimaryGuards 13
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

7
torrc_guard_14 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 14
NumPrimaryGuards 14
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

7
torrc_guard_15 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 15
NumPrimaryGuards 15
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 16 NumEntryGuards 16
NumPrimaryGuards 16 NumPrimaryGuards 16
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 2 NumEntryGuards 2
NumPrimaryGuards 2 NumPrimaryGuards 2
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log DEBUG stdout #Log DEBUG stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 3 NumEntryGuards 3
NumPrimaryGuards 3 NumPrimaryGuards 3
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 4 NumEntryGuards 4
NumPrimaryGuards 4 NumPrimaryGuards 4
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 5 NumEntryGuards 5
NumPrimaryGuards 5 NumPrimaryGuards 5
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 6 NumEntryGuards 6
NumPrimaryGuards 6 NumPrimaryGuards 6
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 7 NumEntryGuards 7
NumPrimaryGuards 7 NumPrimaryGuards 7
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

View file

@ -3,4 +3,5 @@ UseEntryGuards 1
NumEntryGuards 8 NumEntryGuards 8
NumPrimaryGuards 8 NumPrimaryGuards 8
SafeLogging 0 SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout #Log INFO stdout

7
torrc_guard_9 Normal file
View file

@ -0,0 +1,7 @@
ControlPort 9051
UseEntryGuards 1
NumEntryGuards 9
NumPrimaryGuards 9
SafeLogging 0
SocksPort 127.0.0.1:9050 IsolateDestPort
#Log INFO stdout

View file

@ -1,5 +1,6 @@
ControlPort 9051 ControlPort 9051
UseEntryGuards 0 UseEntryGuards 0
SocksPort 127.0.0.1:9050 IsolateDestPort
SafeLogging 0 SafeLogging 0
#IsolateDestPort 1 #IsolateDestPort 1
#Log INFO stdout #Log INFO stdout