get-email-bridges.sh 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/bash
  2. # If we don't already have the archive, download it
  3. if [ ! -f data/bridge-pool-assignments-2021-02.tar.xz ]; then
  4. curl -Lo data/bridge-pool-assignments-2021-02.tar.xz https://collector.torproject.org/archive/bridge-pool-assignments/bridge-pool-assignments-2021-02.tar.xz
  5. fi
  6. # Check that we have the right archive
  7. sha256sum -c data/bridge-pool-assignments.sha256 || exit 1
  8. # If we haven't already extracted the archive, extract it
  9. if [ ! -d data/bridge-pool-assignments-2021-02 ]; then
  10. cd data && tar xf bridge-pool-assignments-2021-02.tar.xz && cd ..
  11. fi
  12. # Extract obfs4 email bridges
  13. for i in $(seq 1 21); do
  14. grep " email " data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* \
  15. | grep "obfs4" \
  16. | grep -Po '(?<=:)(.*?)(?= )'
  17. done | sort | uniq > data/obfs4-email-bridges
  18. # Extract non-obfs4 email bridges
  19. for i in $(seq 1 21); do
  20. grep " email " data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* \
  21. | grep -Po '(?<=:)(.*?)(?= )'
  22. done | sort | uniq > data/all-email-bridges
  23. comm -2 -3 data/all-email-bridges data/obfs4-email-bridges > data/non-obfs4-email-bridges
  24. # Get list of all bridges
  25. for i in $(seq 1 21); do
  26. grep -v "bridge-pool-assignment" data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* \
  27. | grep -Po '(?<=:)(.*?)(?= )'
  28. done | sort | uniq > data/all-bridges
  29. # Count bridges in each category
  30. all_bridges=$(cat data/all-bridges | wc -l)
  31. obfs4_email_bridges=$(cat data/obfs4-email-bridges | wc -l)
  32. email_bridges=$(for i in $(seq 1 21); do grep -v "bridge-pool-assignment" data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* | grep "email" | grep -Po '(?<=:)(.*?)(?= )';done | sort | uniq | wc -l)
  33. https_bridges=$(for i in $(seq 1 21); do grep -v "bridge-pool-assignment" data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* | grep "https" | grep -Po '(?<=:)(.*?)(?= )';done | sort | uniq | wc -l)
  34. moat_bridges=$(for i in $(seq 1 21); do grep -v "bridge-pool-assignment" data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* | grep "moat" | grep -Po '(?<=:)(.*?)(?= )';done | sort | uniq | wc -l)
  35. unallocated_bridges=$(for i in $(seq 1 21); do grep -v "bridge-pool-assignment" data/bridge-pool-assignments-2021-02/$(printf %02d $i)/* | grep "unallocated" | grep -Po '(?<=:)(.*?)(?= )';done | sort | uniq | wc -l)
  36. echo "Total number of bridges: ${all_bridges}"
  37. echo "Number of obfs4 email bridges: ${obfs4_email_bridges}"
  38. echo "Number of email bridges: ${email_bridges}"
  39. echo "Number of HTTPS bridges: ${https_bridges}"
  40. echo "Number of moat bridges: ${moat_bridges}"
  41. echo "Number of unallocated bridges: ${unallocated_bridges}"