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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
#!/usr/bin/expect -f
# This file is part of Firejail project
# Copyright (C) 2014-2026 Firejail Authors
# License GPL v2
set timeout 10
spawn $env(SHELL)
match_max 100000
send -- "firejail --dns=8.8.4.4 --dns=8.8.8.8 --dns=4.2.2.1 --dns=::2 --dns=1.2.3.4 sleep 1\r"
expect {
timeout {puts "TESTING ERROR 1\n";exit}
"Warning: up to 4 DNS servers can be specified, 1.2.3.4 ignored"
}
expect {
timeout {puts "TESTING ERROR 1.1\n";exit}
"DNS server 8.8.4.4"
}
expect {
timeout {puts "TESTING ERROR 1.2\n";exit}
"DNS server 8.8.8.8"
}
expect {
timeout {puts "TESTING ERROR 1.3\n";exit}
"DNS server 4.2.2.1"
}
expect {
timeout {puts "TESTING ERROR 1.4\n";exit}
"DNS server ::2"
}
expect {
timeout {puts "TESTING ERROR 1.5\n";exit}
-re "Child process initialized in \[0-9\]+.\[0-9\]+ ms"
}
expect {
timeout {puts "TESTING ERROR 1.6\n";exit}
"Parent is shutting down, bye..."
}
after 100
send -- "firejail --quiet --dns=8.8.4.4 --dns=8.8.8.8 --dns=4.2.2.1 --dns=::2 --dns=1.2.3.4 cat /etc/passwd\r"
expect {
timeout {puts "TESTING ERROR 2\n";exit}
"Warning: up to 4 DNS servers can be specified, 1.2.3.4 ignored" {puts "TESTING ERROR 2.1\n";exit}
"DNS server 8.8.4.4" {puts "TESTING ERROR 2.2\n";exit}
"DNS server 8.8.8.8" {puts "TESTING ERROR 2.3\n";exit}
"DNS server 4.2.2.1" {puts "TESTING ERROR 2.4\n";exit}
"DNS server ::2" {puts "TESTING ERROR 2.5\n";exit}
-re "Child process initialized in \[0-9\]+.\[0-9\]+ ms" {puts "TESTING ERROR 2.6\n";exit}
"Parent is shutting down, bye..." {puts "TESTING ERROR 2.7\n";exit}
"root"
}
after 100
send -- "firejail --dns=8.8.4.4 --dns=8.8.8.8 --dns=4.2.2.1 --dns=::2\r"
expect {
timeout {puts "TESTING ERROR 3\n";exit}
-re "Child process initialized in \[0-9\]+.\[0-9\]+ ms"
}
sleep 1
send -- "cat /etc/resolv.conf\r"
expect {
timeout {puts "TESTING ERROR 4.1\n";exit}
"nameserver 8.8.4.4"
}
expect {
timeout {puts "TESTING ERROR 4.2\n";exit}
"nameserver 8.8.8.8"
}
expect {
timeout {puts "TESTING ERROR 4.3\n";exit}
"nameserver 4.2.2.1"
}
expect {
timeout {puts "TESTING ERROR 4.4\n";exit}
"nameserver ::2"
}
after 100
send -- "exit\r"
sleep 1
send -- "firejail --profile=dns.profile\r"
expect {
timeout {puts "TESTING ERROR 5.1\n";exit}
-re "Child process initialized in \[0-9\]+.\[0-9\]+ ms"
}
sleep 1
send -- "cat /etc/resolv.conf\r"
expect {
timeout {puts "TESTING ERROR 5.2\n";exit}
"nameserver 8.8.4.4"
}
expect {
timeout {puts "TESTING ERROR 5.3\n";exit}
"nameserver 8.8.8.8"
}
expect {
timeout {puts "TESTING ERROR 5.4\n";exit}
"nameserver 4.2.2.1"
}
after 100
expect {
timeout {puts "TESTING ERROR 5.5\n";exit}
"nameserver ::2"
}
send -- "exit\r"
sleep 1
# test disabled, as Github CI uses systemd-resolved, which does not work
# properly with --dns=, so curl does not use the specified nameserver
#send -- "firejail --trace --dns=208.67.222.222 -- curl --silent --output /dev/null debian.org\r"
#expect {
# timeout {puts "TESTING ERROR 6.1\n";exit}
# "connect"
#}
#expect {
# timeout {puts "TESTING ERROR 6.2\n";exit}
# "208.67.222.222"
#}
#expect {
# timeout {puts "TESTING ERROR 6.3\n";exit}
# "53"
#}
#after 100
send -- "exit\r"
sleep 1
puts "\nall done\n"
|