[tor-bugs] #11616 [Ooni]: ooni-backend (oonib) doesn't prompt any error when Tor connection is lost

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Apr 26 13:19:56 UTC 2014


#11616: ooni-backend (oonib) doesn't prompt any error when Tor connection is lost
---------------------+-------------------------
 Reporter:  anadahz  |          Owner:  hellais
     Type:  defect   |         Status:  new
 Priority:  normal   |      Milestone:
Component:  Ooni     |        Version:
 Keywords:           |  Actual Points:
Parent ID:           |         Points:
---------------------+-------------------------
 It seems that I can always reproduce this case.
 ooni-backend doesn't report any connection issues with Tor.

 1. Running ooni-backend in virtualenv (debug mode)

 # oonib.conf
 {{{
 main:
     report_dir: data/reports/
     archive_dir: data/archive/
     input_dir: data/inputs/
     deck_dir: data/decks/
     policy_file: data/policy.yaml
     bouncer_file: data/bouncer.yaml

     logfile: null
     tor_datadir: null
     database_uri: 'sqlite://oonib_test_db.db'
     db_threadpool_size: 10
     tor_binary: null
     socks_port: 9055
     tor2webmode: false
     pidfile: 'oonib.pid'
     nodaemon: true
     originalname: null
     chroot: null
     rundir: .
     umask: null
     euid: null
     uid: null
     gid: null
     uuid: null
     no_save: true
     profile: null
     debug: true
     stale_time: 3600

     tor_hidden_service: true

 helpers:
     http-return-json-headers:
         address: null
         port: 57001
     gid: null
     uuid: null
     no_save: true
     profile: null
     debug: true
     stale_time: 3600

     tor_hidden_service: true

 helpers:
     http-return-json-headers:
         address: null
         port: 57001
         server_version: Apache

     tcp-echo:
         address: null
         port: 57002

     daphn3:
         address: null
         yaml_file: null
         pcap_file: null
         port: 57003

     dns:
         address: null
         udp_port: 57004
         tcp_port: 57005
         resolver_address: '8.8.8.8:53'

     ssl:
         address: null
         private_key: 'private.key'
         certificate: 'certificate.crt'
         port: 57006
 }}}

 $ oonib --version
 Twisted version: 13.2.0

 # git commit https://github.com/TheTorProject/ooni-
 backend/commit/7b35b7fa5a3d81f6574c7494cde0ac705d4e2cea

 $ oonib
 {{{
 Starting SSL helper on 57006
 Starting TCP DNS Helper on 57005
 Starting UDP DNS Helper on 57004
 Starting Daphn3 helper on 57003
 Starting TCP echo helper on 57002
 Starting HTTP return request helper on 57001
 Log opened.
 HTTPReturnJSONHeadersHelper (TLS) starting on 57006
 Starting factory
 <oonib.testhelpers.http_helpers.HTTPReturnJSONHeadersHelper instance at
 0x420fcb0>
 DNSTestHelper starting on 57005
 Starting factory <oonib.testhelpers.dns_helpers.DNSTestHelper instance at
 0x420fd88>
 DNSDatagramProtocol starting on 57004
 Starting protocol <twisted.names.dns.DNSDatagramProtocol object at
 0x4214850>
 Daphn3Server starting on 57003
 Starting factory <oonib.testhelpers.tcp_helpers.Daphn3Server instance at
 0x4219560>
 TCPEchoHelper starting on 57002
 Starting factory <oonib.testhelpers.tcp_helpers.TCPEchoHelper instance at
 0x4219758>
 HTTPReturnJSONHeadersHelper starting on 57001
 Starting factory
 <oonib.testhelpers.http_helpers.HTTPReturnJSONHeadersHelper instance at
 0x42197e8>
 [W] Option 'tor_datadir' in oonib.conf is unspecified!
 [W] Using /tmp/tmp1NH5ua
 > /home/user/.virtualenvs/oonib/local/lib/python2.7/site-
 packages/twisted/internet/base.py(1191)run()
 -> self.mainLoop()
 (Pdb) n
 5%: Connecting to directory server
 10%: Finishing handshake with directory server
 15%: Establishing an encrypted directory connection
 20%: Asking for networkstatus consensus
 25%: Loading networkstatus consensus
 40%: Loading authority key certs
 45%: Asking for relay descriptors
 50%: Loading relay descriptors
 52%: Loading relay descriptors
 54%: Loading relay descriptors
 56%: Loading relay descriptors
 59%: Loading relay descriptors
 61%: Loading relay descriptors
 63%: Loading relay descriptors
 66%: Loading relay descriptors
 68%: Loading relay descriptors
 70%: Loading relay descriptors
 73%: Loading relay descriptors
 75%: Loading relay descriptors
 77%: Loading relay descriptors
 80%: Connecting to the Tor network
 90%: Establishing a Tor circuit
 100%: Done
 Application starting on 64535
 Starting factory <cyclone.web.Application instance at 0x3eba7a0>
 Exposed collector Tor hidden service on httpo://xxxxxxxxx.onion
 Application starting on 16140
 Starting factory <cyclone.web.Application instance at 0x3eba560>
 Exposed bouncer Tor hidden service on httpo://yyyyyyyyyyyyy.onion
 }}}


 2. Tor service is being stopped and all instances of Tor killed

 $ '''service tor stop ; killall tor'''


 3. Running ooniprobe pointing to our collector.

 # ~/.ooni/ooniprobe.conf
 {{{
 # This is the configuration file for OONIProbe
 # This file follows the YAML markup format:
 http://yaml.org/spec/1.2/spec.html
 # Keep in mind that indentation matters.

 basic:
     # Where OONIProbe should be writing it's log file
     logfile: ~/.ooni/ooniprobe.log
 privacy:
     # Should we include the IP address of the probe in the report?
     includeip: false
     # Should we include the ASN of the probe in the report?
     includeasn: true
     # Should we include the country as reported by GeoIP in the report?
     includecountry: true
     # Should we include the city as reported by GeoIP in the report?
     includecity: false
     # Should we collect a full packet capture on the client?
     includepcap: false
 reports:
     # This is a packet capture file (.pcap) to load as a test:
     pcap: null
     #collector: 'httpo://fyifjaxdhdil6m5f.onion'
     collector: 'httpo://xxxxxxxxx.onion'

 advanced:
     geoip_data_dir: /home/user/.virtualenvs/ooniprobe/share/ooni
     debug: false
     # enable if auto detection fails
     #tor_binary: /usr/sbin/tor
     #obfsproxy_binary: /usr/bin/obfsproxy
     # For auto detection
     interface: auto
     # Of specify a specific interface
     #interface: wlan0
     # If you do not specify start_tor, you will have to have Tor running
 and
     # explicitly set the control port and SOCKS port
    # For auto detection
     interface: auto
     # Of specify a specific interface
     #interface: wlan0
     # If you do not specify start_tor, you will have to have Tor running
 and
     # explicitly set the control port and SOCKS port
     start_tor: true
     # After how many seconds we should give up on a particular measurement
     measurement_timeout: 60
     # After how many retries we should give up on a measurement
     measurement_retries: 2
     # How many measurments to perform concurrently
     measurement_concurrency: 10
     # After how may seconds we should give up reporting
     reporting_timeout: 80
     # After how many retries to give up on reporting
     reporting_retries: 3
     # How many reports to perform concurrently
     reporting_concurrency: 15
     # Specify here a custom data_dir path
     data_dir: /home/user/.virtualenvs/ooniprobe/share/ooni
     oonid_api_port: 8042
 tor:
     #socks_port: 8801
     #control_port: 8802
     # Specify the absolute path to the Tor bridges to use for testing
     #bridges: bridges.list
     # Specify path of the tor datadirectory.
     # This should be set to something to avoid having Tor download each
 time
     # the descriptors and consensus data.
     #data_dir: ~/.tor/
     torrc:
         #HTTPProxy: host:port
         #HTTPProxyAuthenticator: user:password
         #HTTPSProxy: host:port
         #HTTPSProxyAuthenticator: user:password
 }}}

 $ ooniprobe --version
 WARNING: running ooniprobe involves some risk that varies greatly
          from country to country. You should be aware of this when
          running the tool. Read more about this in the README.
 Twisted version: 13.2.0

 # git commit https://github.com/TheTorProject/ooni-
 probe/commit/2fb54faf3b4e6c08270aba6daa4d212dc9328252

 $ ooniprobe blocking/http_requests -u http://www.google.com


 # ooniprobe.log
 {{{
 2:31+0200 [-] Starting Tor...
 2:33+0200 [TorControlProtocol,client] 10%: Finishing handshake with
 directory server
 2:33+0200 [TorControlProtocol,client] 15%: Establishing an encrypted
 directory connection
 2:33+0200 [TorControlProtocol,client] 20%: Asking for networkstatus
 consensus
 2:33+0200 [TorControlProtocol,client] 25%: Loading networkstatus consensus
 2:36+0200 [TorControlProtocol,client] 40%: Loading authority key certs
 2:36+0200 [TorControlProtocol,client] 45%: Asking for relay descriptors
 2:37+0200 [TorControlProtocol,client] 50%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 52%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 54%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 56%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 59%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 61%: Loading relay descriptors
 2:38+0200 [TorControlProtocol,client] 63%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 66%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 68%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 70%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 73%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 75%: Loading relay descriptors
 2:39+0200 [TorControlProtocol,client] 77%: Loading relay descriptors
 2:47+0200 [TorControlProtocol,client] 80%: Connecting to the Tor network
 2:47+0200 [TorControlProtocol,client] 90%: Establishing a Tor circuit
 2:47+0200 [TorControlProtocol,client] 100%: Done
 2:48+0200 [TorControlProtocol,client] Successfully bootstrapped Tor
 2:48+0200 [TorControlProtocol,client] Found your IP via Tor 188.4.30.189
 2:48+0200 [TorControlProtocol,client] Fetching required net test inputs...
 2:48+0200 [TorControlProtocol,client] Looking up test helpers...
 4:50+0200 [ParserProtocol,client] [!] Lookup failed. Retrying.
 5:16+0200 [ParserProtocol,client] We will include some geo data in the
 report
 5:16+0200 [ParserProtocol,client] Setting collector and test helpers for
 http_requests_test
 5:16+0200 [ParserProtocol,client] Using the default collector:
 httpo://ihiderha53f36lsd.onion
 5:16+0200 [ParserProtocol,client] We will include some geo data in the
 report
 5:16+0200 [ParserProtocol,client] Reporting using collector:
 httpo://xxxxxxxxx.onion
 5:16+0200 [ParserProtocol,client] We will include some geo data in the
 report
 5:16+0200 [ParserProtocol,client] Reporting http://xxxxxxxxx.onion/report
 5:16+0200 [ParserProtocol,client] Creating report with OONIB Reporter.
 Please be patient.
 5:16+0200 [ParserProtocol,client] This may take up to 1-2 minutes...
 5:30+0200 [ParserProtocol,client] [!] Host is not reachable
 (HostUnreachable error
 5:30+0200 [ParserProtocol,client] [!] Failed to open
 <ooni.reporter.OONIBReporter object at 0x3c60f50> reporter, giving up...
 5:30+0200 [ParserProtocol,client] [!] Reporter
 <ooni.reporter.OONIBReporter object at 0x3c60f50> failed, removing from
 report...
 5:30+0200 [ParserProtocol,client] Performing GET request to
 http://www.google.com over Tor
 5:30+0200 [ParserProtocol,client] Performing GET request to
 http://www.google.com
 5:31+0200 [ParserProtocol,client] The two body lengths appear to match
 5:31+0200 [ParserProtocol,client] censorship is probably not happening
 5:31+0200 [ParserProtocol,client] Headers appear to match
 5:31+0200 [ParserProtocol,client] Summary for http_requests_test
 5:31+0200 [ParserProtocol,client] ------------------------------
 5:31+0200 [-] Main loop terminated.
 }}}

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/11616>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list