summaryrefslogtreecommitdiffstats
path: root/cucumber/features/step_definitions/firewall_leaks.rb
blob: 0cd94cca0b186653af9c5d1038be600074e125fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Then(/^the firewall leak detector has detected leaks$/) do
  assert_raise(FirewallAssertionFailedError) do
    step 'all Internet traffic has only flowed through Tor'
  end
end

Given(/^I disable Tails' firewall$/) do
  $vm.execute("/usr/local/lib/do_not_ever_run_me")
  iptables = $vm.execute("iptables -L -n -v").stdout.chomp.split("\n")
  for line in iptables do
    if !line[/Chain (INPUT|OUTPUT|FORWARD) \(policy ACCEPT/] and
       !line[/pkts[[:blank:]]+bytes[[:blank:]]+target/] and
       !line.empty?
      raise "The Tails firewall was not successfully disabled:\n#{iptables}"
    end
  end
end

When(/^I do a TCP DNS lookup of "(.*?)"$/) do |host|
  lookup = $vm.execute("host -T -t A #{host} #{SOME_DNS_SERVER}", :user => LIVE_USER)
  assert(lookup.success?, "Failed to resolve #{host}:\n#{lookup.stdout}")
end

When(/^I do a UDP DNS lookup of "(.*?)"$/) do |host|
  lookup = $vm.execute("host -t A #{host} #{SOME_DNS_SERVER}", :user => LIVE_USER)
  assert(lookup.success?, "Failed to resolve #{host}:\n#{lookup.stdout}")
end

When(/^I send some ICMP pings$/) do
  # We ping an IP address to avoid a DNS lookup
  ping = $vm.execute("ping -c 5 #{SOME_DNS_SERVER}")
  assert(ping.success?, "Failed to ping #{SOME_DNS_SERVER}:\n#{ping.stderr}")
end