#!/usr/bin/expect -f # This file is part of Firejail project # Copyright (C) 2014-2023 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"