summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTails developers <amnesia@boum.org>2015-02-19 17:00:16 +0100
committerTails developers <amnesia@boum.org>2015-02-19 17:00:16 +0100
commitf89b08421b37e59db04aab1cc12c5c78444d0381 (patch)
tree14cf94643c97809801a65cddc96647e567acc904
parentf877e00ae1eb1314683bc16bfaf4015db2fcb14f (diff)
parent70afb4af8822fb95d7770a3023aec2a82ad5af02 (diff)
Merge remote-tracking branch 'origin/testing' into test/7821-tor
Conflicts: features/step_definitions/common_steps.rb features/step_definitions/torified_misc.rb features/support/helpers/misc_helpers.rb features/support/helpers/sniffing_helper.rb features/support/hooks.rb
-rw-r--r--.gitignore3
-rw-r--r--features/config/defaults.yml34
-rwxr-xr-xfeatures/scripts/vm-execute3
-rw-r--r--features/step_definitions/apt.rb4
-rw-r--r--features/step_definitions/checks.rb40
-rw-r--r--features/step_definitions/common_steps.rb24
-rw-r--r--features/step_definitions/encryption.rb4
-rw-r--r--features/step_definitions/erase_memory.rb2
-rw-r--r--features/step_definitions/firewall_leaks.rb8
-rw-r--r--features/step_definitions/git.rb20
-rw-r--r--features/step_definitions/pidgin.rb6
-rw-r--r--features/step_definitions/po.rb4
-rw-r--r--features/step_definitions/root_access_control.rb6
-rw-r--r--features/step_definitions/torified_gnupg.rb10
-rw-r--r--features/step_definitions/torified_misc.rb4
-rw-r--r--features/step_definitions/totem.rb6
-rw-r--r--features/step_definitions/untrusted_partitions.rb2
-rw-r--r--features/step_definitions/usb.rb14
-rw-r--r--features/support/config.rb88
-rw-r--r--features/support/helpers/exec_helper.rb4
-rw-r--r--features/support/helpers/firewall_helper.rb2
-rw-r--r--features/support/helpers/misc_helpers.rb19
-rw-r--r--features/support/helpers/sikuli_helper.rb12
-rw-r--r--features/support/helpers/sniffing_helper.rb2
-rw-r--r--features/support/helpers/storage_helper.rb4
-rw-r--r--features/support/helpers/vm_helper.rb2
-rw-r--r--features/support/hooks.rb58
-rwxr-xr-xrun_test_suite15
-rw-r--r--wiki/src/blueprint/UEFI.mdwn8
-rw-r--r--wiki/src/blueprint/UEFI/32-bit.mdwn120
-rw-r--r--wiki/src/blueprint/automated_builds_and_tests/autobuild_specs.mdwn28
-rw-r--r--wiki/src/blueprint/automated_builds_and_tests/autobuild_stats.mdwn688
-rw-r--r--wiki/src/blueprint/evaluate_Docker.mdwn61
-rw-r--r--wiki/src/blueprint/replace_Pidgin.mdwn36
-rw-r--r--wiki/src/blueprint/report_2015_01-02.mdwn85
-rw-r--r--wiki/src/blueprint/report_end_of_2014.mdwn77
-rw-r--r--wiki/src/contribute/calendar.mdwn14
-rw-r--r--wiki/src/contribute/how/donate.de.po3
-rw-r--r--wiki/src/contribute/release_process/test.mdwn4
-rw-r--r--wiki/src/contribute/release_process/test/usage.mdwn44
-rw-r--r--wiki/src/contribute/working_together/roles/sysadmins.mdwn10
-rw-r--r--wiki/src/doc/about/features.fr.po2
-rw-r--r--wiki/src/doc/anonymous_internet.index.fr.po2
-rw-r--r--wiki/src/doc/anonymous_internet/Tor_Browser.fr.po2
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.de.po2
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.fr.po2
-rw-r--r--wiki/src/doc/anonymous_internet/electrum.pt.po2
-rw-r--r--wiki/src/doc/anonymous_internet/vidalia.fr.po7
-rw-r--r--wiki/src/doc/encryption_and_privacy.index.fr.po2
-rw-r--r--wiki/src/doc/encryption_and_privacy/keyringer.de.po1
-rw-r--r--wiki/src/doc/encryption_and_privacy/keyringer.fr.po1
-rw-r--r--wiki/src/doc/encryption_and_privacy/keyringer.pt.po1
-rw-r--r--wiki/src/doc/encryption_and_privacy/manage_passwords.fr.po16
-rw-r--r--wiki/src/doc/first_steps/accessibility.fr.po8
-rw-r--r--wiki/src/doc/first_steps/persistence/configure.fr.po2
-rw-r--r--wiki/src/doc/first_steps/persistence/copy.fr.po5
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.de.po97
-rw-r--r--wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po2
-rw-r--r--wiki/src/doc/sensitive_documents/graphics.fr.po7
-rw-r--r--wiki/src/news/test_1.3-rc1.de.po34
-rw-r--r--wiki/src/news/test_1.3-rc1.fr.po34
-rw-r--r--wiki/src/news/test_1.3-rc1.mdwn2
-rw-r--r--wiki/src/news/test_1.3-rc1.pt.po34
-rw-r--r--wiki/src/support/faq.fr.po2
-rw-r--r--wiki/src/support/known_issues.de.po11
-rw-r--r--wiki/src/support/known_issues.fr.po18
-rw-r--r--wiki/src/support/known_issues.mdwn5
-rw-r--r--wiki/src/support/known_issues.pt.po13
68 files changed, 1507 insertions, 385 deletions
diff --git a/.gitignore b/.gitignore
index e7f386e..f9db672 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,3 +49,6 @@
# Files generated during the test suite
/features/misc_files/video.mp4
+
+# The test suite's local configuration file
+/features/config/local.yml
diff --git a/features/config/defaults.yml b/features/config/defaults.yml
new file mode 100644
index 0000000..58fa44b
--- /dev/null
+++ b/features/config/defaults.yml
@@ -0,0 +1,34 @@
+DEBUG: false
+PAUSE_ON_FAIL: false
+SIKULI_RETRY_FINDFAILED: false
+TMP_DIR: "/tmp/TailsToaster"
+
+Unsafe_SSH_private_key: |
+ -----BEGIN RSA PRIVATE KEY-----
+ MIIEowIBAAKCAQEAvMUNgUUM/kyuo26m+Xw7igG6zgGFMFbS3u8m5StGsJOn7zLi
+ J8P5Mml/R+4tdOS6owVU4RaZTPsNZZK/ClYmOPhmNvJ04pVChk2DZ8AARg/TANj3
+ qjKs3D+MeKbk1bt6EsA55kgGsTUky5Ti8cc2Wna25jqjagIiyM822PGG9mmI6/zL
+ YR6QLUizNaciXrRM3Q4R4sQkEreVlHeonPEiGUs9zx0swCpLtPM5UIYte1PVHgkw
+ ePsU6vM8UqVTK/VwtLLgLanXnsMFuzq7DTAXPq49+XSFNq4JlxbEF6+PQXZvYZ5N
+ eW00Gq7NSpPP8uoHr6f1J+mMxxnM85jzYtRx+QIDAQABAoIBAA8Bs1MlhCTrP67q
+ awfGYo1UGd+qq0XugREL/hGV4SbEdkNDzkrO/46MaHv1aVOzo0q2b8r9Gu7NvoDm
+ q51Mv/kjdizEFZq1tvYqT1n+H4dyVpnopbe4E5nmy2oECokbQFchRPkTnMSVrvko
+ OupxpdaHPX8MBlW1GcLRBlE00j/gfK1SXX5rcxkF5EHVND1b6iHddTPearDbU8yr
+ wga1XO6WeohAYzqmGtMD0zk6lOk0LmnTNG6WvHiFTAc/0yTiKub6rNOIEMS/82+V
+ l437H0hKcIN/7/mf6FpqRNPJTuhOVFf+L4G/ZQ8zHoMGVIbhuTiIPqZ/KMu3NaUF
+ R634jckCgYEA+jJ31hom/d65LfxWPkmiSkNTEOTfjbfcgpfc7sS3enPsYnfnmn5L
+ O3JJzAKShSVP8NVuPN5Mg5FGp9QLKrN3kV6QWQ3EnqeW748DXMU6zKGJQ5wo7ZVm
+ w2DhJ/3PAuBTL/5X4mjPQL+dr86Aq2JBDC7LHJs40I8O7UbhnsdMxKcCgYEAwSXc
+ 3znAkAX8o2g37RiAl36HdONgxr2eaGK7OExp03pbKmoISw6bFbVpicBy6eTytn0A
+ 2PuFcBKJRfKrViHyiE8UfAJ31JbUaxpg4bFF6UEszN4CmgKS8fnwEe1aX0qSjvkE
+ NQSuhN5AfykXY/1WVIaWuC500uB7Ow6M16RDyF8CgYEAqFTeNYlg5Hs+Acd9SukF
+ rItBTuN92P5z+NUtyuNFQrjNuK5Nf68q9LL/Hag5ZiVldHZUddVmizpp3C6Y2MDo
+ WEDUQ2Y0/D1rGoAQ1hDIb7bbAEcHblmPSzJaKirkZV4B+g9Yl7bGghypfggkn6o6
+ c3TkKLnybrdhZpjC4a3bY48CgYBnWRYdD27c4Ycz/GDoaZLs/NQIFF5FGVL4cdPR
+ pPl/IdpEEKZNWwxaik5lWedjBZFlWe+pKrRUqmZvWhCZruJyUzYXwM5Tnz0b7epm
+ +Q76Z1hMaoKj27q65UyymvkfQey3ucCpic7D45RJNjiA1R5rbfSZqqnx6BGoIPn1
+ rLxkKwKBgDXiWeUKJCydj0NfHryGBkQvaDahDE3Yigcma63b8vMZPBrJSC4SGAHJ
+ NWema+bArbaF0rKVJpwvpkZWGcr6qRn94Ts0kJAzR+VIVTOjB9sVwdxjadwWHRs5
+ kKnpY0tnSF7hyVRwN7GOsNDJEaFjCW7k4+55D2ZNBy2iN3beW8CZ
+ -----END RSA PRIVATE KEY-----
+Unsafe_SSH_public_key: = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8xQ2BRQz+TK6jbqb5fDuKAbrOAYUwVtLe7yblK0awk6fvMuInw/kyaX9H7i105LqjBVThFplM+w1lkr8KViY4+GY28nTilUKGTYNnwABGD9MA2PeqMqzcP4x4puTVu3oSwDnmSAaxNSTLlOLxxzZadrbmOqNqAiLIzzbY8Yb2aYjr/MthHpAtSLM1pyJetEzdDhHixCQSt5WUd6ic8SIZSz3PHSzAKku08zlQhi17U9UeCTB4+xTq8zxSpVMr9XC0suAtqdeewwW7OrsNMBc+rj35dIU2rgmXFsQXr49Bdm9hnk15bTQars1Kk8/y6gevp/Un6YzHGczzmPNi1HH5 amnesia@amnesia"
diff --git a/features/scripts/vm-execute b/features/scripts/vm-execute
index dc8be3a..83ecddb 100755
--- a/features/scripts/vm-execute
+++ b/features/scripts/vm-execute
@@ -6,7 +6,8 @@ begin
rescue LoadError => e
raise "This script must be run from within Tails' Git directory."
end
-$debug = false
+$config = Hash.new
+$config["DEBUG"] = false
class FakeVM
def get_remote_shell_port
diff --git a/features/step_definitions/apt.rb b/features/step_definitions/apt.rb
index 7b5bcd8..8be9e6d 100644
--- a/features/step_definitions/apt.rb
+++ b/features/step_definitions/apt.rb
@@ -16,7 +16,7 @@ When /^I update APT using apt-get$/ do
next if @skip_steps_while_restoring_background
Timeout::timeout(30*60) do
@vm.execute_successfully("echo #{@sudo_password} | " +
- "sudo -S apt-get update", $live_user)
+ "sudo -S apt-get update", LIVE_USER)
end
end
@@ -25,7 +25,7 @@ Then /^I should be able to install a package using apt-get$/ do
package = "cowsay"
Timeout::timeout(120) do
@vm.execute_successfully("echo #{@sudo_password} | " +
- "sudo -S apt-get install #{package}", $live_user)
+ "sudo -S apt-get install #{package}", LIVE_USER)
end
step "package \"#{package}\" is installed"
end
diff --git a/features/step_definitions/checks.rb b/features/step_definitions/checks.rb
index 88b940b..f510aa4 100644
--- a/features/step_definitions/checks.rb
+++ b/features/step_definitions/checks.rb
@@ -3,7 +3,7 @@ Then /^the shipped Tails (signing|Debian repository) key will be valid for the n
if key_type == 'signing'
sig_key_fingerprint = "0D24B36AA9A2A651787876451202821CBE2CD9C1"
cmd = 'gpg'
- user = $live_user
+ user = LIVE_USER
elsif key_type == 'Debian repository'
sig_key_fingerprint = "221F9A3C6FA3E09E182E060BC7988EA7A358D82E"
cmd = 'apt-key adv'
@@ -27,13 +27,13 @@ Then /^the live user has been setup by live\-boot$/ do
"live-boot failed its user-setup")
actual_username = @vm.execute(". /etc/live/config/username.conf; " +
"echo $LIVE_USERNAME").stdout.chomp
- assert_equal($live_user, actual_username)
+ assert_equal(LIVE_USER, actual_username)
end
Then /^the live user is a member of only its own group and "(.*?)"$/ do |groups|
next if @skip_steps_while_restoring_background
- expected_groups = groups.split(" ") << $live_user
- actual_groups = @vm.execute("groups #{$live_user}").stdout.chomp.sub(/^#{$live_user} : /, "").split(" ")
+ expected_groups = groups.split(" ") << LIVE_USER
+ actual_groups = @vm.execute("groups #{LIVE_USER}").stdout.chomp.sub(/^#{LIVE_USER} : /, "").split(" ")
unexpected = actual_groups - expected_groups
missing = expected_groups - actual_groups
assert_equal(0, unexpected.size,
@@ -44,12 +44,12 @@ end
Then /^the live user owns its home dir and it has normal permissions$/ do
next if @skip_steps_while_restoring_background
- home = "/home/#{$live_user}"
+ home = "/home/#{LIVE_USER}"
assert(@vm.execute("test -d #{home}").success?,
"The live user's home doesn't exist or is not a directory")
owner = @vm.execute("stat -c %U:%G #{home}").stdout.chomp
perms = @vm.execute("stat -c %a #{home}").stdout.chomp
- assert_equal("#{$live_user}:#{$live_user}", owner)
+ assert_equal("#{LIVE_USER}:#{LIVE_USER}", owner)
assert_equal("700", perms)
end
@@ -78,8 +78,8 @@ Then /^no unexpected services are listening for network connections$/ do
proc = splitted[proc_index].split("/")[1]
# Services listening on loopback is not a threat
if /127(\.[[:digit:]]{1,3}){3}/.match(laddr).nil?
- if $services_expected_on_all_ifaces.include? [proc, laddr, lport] or
- $services_expected_on_all_ifaces.include? [proc, laddr, "*"]
+ if SERVICES_EXPECTED_ON_ALL_IFACES.include? [proc, laddr, lport] or
+ SERVICES_EXPECTED_ON_ALL_IFACES.include? [proc, laddr, "*"]
puts "Service '#{proc}' is listening on #{laddr}:#{lport} " +
"but has an exception"
else
@@ -97,24 +97,24 @@ end
Then /^GNOME Screenshot is configured to save files to the live user's home directory$/ do
next if @skip_steps_while_restoring_background
- home = "/home/#{$live_user}"
+ home = "/home/#{LIVE_USER}"
save_path = @vm.execute_successfully(
"gsettings get org.gnome.gnome-screenshot auto-save-directory",
- $live_user).stdout.chomp.tr("'","")
+ LIVE_USER).stdout.chomp.tr("'","")
assert_equal("file://#{home}", save_path,
"The GNOME screenshot auto-save-directory is not set correctly.")
end
Then /^there is no screenshot in the live user's home directory$/ do
next if @skip_steps_while_restoring_background
- home = "/home/#{$live_user}"
+ home = "/home/#{LIVE_USER}"
assert(@vm.execute("find '#{home}' -name 'Screenshot*.png' -maxdepth 1").stdout.empty?,
"Existing screenshots were found in the live user's home directory.")
end
Then /^a screenshot is saved to the live user's home directory$/ do
next if @skip_steps_while_restoring_background
- home = "/home/#{$live_user}"
+ home = "/home/#{LIVE_USER}"
try_for(3, :msg=> "No screenshot was created in #{home}") {
!@vm.execute("find '#{home}' -name 'Screenshot*.png' -maxdepth 1").stdout.empty?
}
@@ -132,26 +132,26 @@ end
Given /^I setup a filesystem share containing a sample PDF$/ do
next if @skip_steps_while_restoring_background
- @vm.add_share($misc_files_dir, shared_pdf_dir_on_guest)
+ @vm.add_share(MISC_FILES_DIR, shared_pdf_dir_on_guest)
end
Then /^MAT can clean some sample PDF file$/ do
next if @skip_steps_while_restoring_background
- for pdf_on_host in Dir.glob("#{$misc_files_dir}/*.pdf") do
+ for pdf_on_host in Dir.glob("#{MISC_FILES_DIR}/*.pdf") do
pdf_name = File.basename(pdf_on_host)
- pdf_on_guest = "/home/#{$live_user}/#{pdf_name}"
- step "I copy \"#{shared_pdf_dir_on_guest}/#{pdf_name}\" to \"#{pdf_on_guest}\" as user \"#{$live_user}\""
+ pdf_on_guest = "/home/#{LIVE_USER}/#{pdf_name}"
+ step "I copy \"#{shared_pdf_dir_on_guest}/#{pdf_name}\" to \"#{pdf_on_guest}\" as user \"#{LIVE_USER}\""
@vm.execute("mat --display '#{pdf_on_guest}'",
- $live_user).stdout
+ LIVE_USER).stdout
check_before = @vm.execute("mat --check '#{pdf_on_guest}'",
- $live_user).stdout
+ LIVE_USER).stdout
if check_before.include?("#{pdf_on_guest} is clean")
STDERR.puts "warning: '#{pdf_on_host}' is already clean so it is a " +
"bad candidate for testing MAT"
end
- @vm.execute("mat '#{pdf_on_guest}'", $live_user)
+ @vm.execute("mat '#{pdf_on_guest}'", LIVE_USER)
check_after = @vm.execute("mat --check '#{pdf_on_guest}'",
- $live_user).stdout
+ LIVE_USER).stdout
assert(check_after.include?("#{pdf_on_guest} is clean"),
"MAT failed to clean '#{pdf_on_host}'")
end
diff --git a/features/step_definitions/common_steps.rb b/features/step_definitions/common_steps.rb
index bb8aeb1..22b4296 100644
--- a/features/step_definitions/common_steps.rb
+++ b/features/step_definitions/common_steps.rb
@@ -63,7 +63,7 @@ end
Given /^a computer$/ do
@vm.destroy_and_undefine if @vm
- @vm = VM.new($virt, $vm_xml_path, $vmnet, $vmstorage, $x_display)
+ @vm = VM.new($virt, VM_XML_PATH, $vmnet, $vmstorage, DISPLAY)
end
Given /^the computer has (\d+) ([[:alpha:]]+) of RAM$/ do |size, unit|
@@ -73,7 +73,7 @@ end
Given /^the computer is set to boot from the Tails DVD$/ do
next if @skip_steps_while_restoring_background
- @vm.set_cdrom_boot($tails_iso)
+ @vm.set_cdrom_boot(TAILS_ISO)
end
Given /^the computer is set to boot from (.+?) drive "(.+?)"$/ do |type, name|
@@ -552,7 +552,7 @@ def xul_application_info(application)
).stdout.chomp
case application
when "Tor Browser"
- user = $live_user
+ user = LIVE_USER
cmd_regex = "#{binary} .* -profile /home/#{user}/\.tor-browser/profile\.default"
chroot = ""
new_tab_button_image = "TorBrowserNewTabButton.png"
@@ -744,7 +744,7 @@ end
When /^I copy "([^"]+)" to "([^"]+)" as user "([^"]+)"$/ do |source, destination, user|
next if @skip_steps_while_restoring_background
- c = @vm.execute("cp \"#{source}\" \"#{destination}\"", $live_user)
+ c = @vm.execute("cp \"#{source}\" \"#{destination}\"", LIVE_USER)
assert(c.success?, "Failed to copy file:\n#{c.stdout}\n#{c.stderr}")
end
@@ -817,9 +817,9 @@ Then /^the (amnesiac|persistent) Tor Browser directory (exists|does not exist)$/
next if @skip_steps_while_restoring_background
case persistent_or_not
when "amnesiac"
- dir = '/home/amnesia/Tor Browser'
+ dir = "/home/#{LIVE_USER}/Tor Browser"
when "persistent"
- dir = '/home/amnesia/Persistent/Tor Browser'
+ dir = "/home/#{LIVE_USER}/Persistent/Tor Browser"
end
step "the directory \"#{dir}\" #{mode}"
end
@@ -845,7 +845,7 @@ Then /^there is no GNOME bookmark for the persistent Tor Browser directory$/ do
end
def pulseaudio_sink_inputs
- pa_info = @vm.execute_successfully('pacmd info', $live_user).stdout
+ pa_info = @vm.execute_successfully('pacmd info', LIVE_USER).stdout
sink_inputs_line = pa_info.match(/^\d+ sink input\(s\) available\.$/)[0]
return sink_inputs_line.match(/^\d+/)[0].to_i
end
@@ -881,7 +881,7 @@ When /^I can save the current page as "([^"]+[.]html)" to the (default downloads
next if @skip_steps_while_restoring_background
@screen.type("s", Sikuli::KeyModifier.CTRL)
if output_dir == "persistent Tor Browser"
- output_dir = "/home/amnesia/Persistent/Tor Browser"
+ output_dir = "/home/#{LIVE_USER}/Persistent/Tor Browser"
@screen.wait_and_click("GtkTorBrowserPersistentBookmark.png", 10)
@screen.wait("GtkTorBrowserPersistentBookmarkSelected.png", 10)
# The output filename (without its extension) is already selected,
@@ -889,7 +889,7 @@ When /^I can save the current page as "([^"]+[.]html)" to the (default downloads
@screen.type("n", Sikuli::KeyModifier.ALT)
@screen.wait("TorBrowserSaveOutputFileSelected.png", 10)
else
- output_dir = "/home/amnesia/Tor Browser"
+ output_dir = "/home/#{LIVE_USER}/Tor Browser"
end
# Only the part of the filename before the .html extension can be easily replaced
# so we have to remove it before typing it into the arget filename entry widget.
@@ -903,14 +903,14 @@ end
When /^I can print the current page as "([^"]+[.]pdf)" to the (default downloads|persistent Tor Browser) directory$/ do |output_file, output_dir|
next if @skip_steps_while_restoring_background
if output_dir == "persistent Tor Browser"
- output_dir = "/home/amnesia/Persistent/Tor Browser"
+ output_dir = "/home/#{LIVE_USER}/Persistent/Tor Browser"
else
- output_dir = "/home/amnesia/Tor Browser"
+ output_dir = "/home/#{LIVE_USER}/Tor Browser"
end
@screen.type("p", Sikuli::KeyModifier.CTRL)
@screen.wait("TorBrowserPrintDialog.png", 10)
@screen.wait_and_click("PrintToFile.png", 10)
- # Tor Browser is not allowed to read /home/amnesia, and I found no way
+ # Tor Browser is not allowed to read /home/#{LIVE_USER}, and I found no way
# to change the default destination directory for "Print to File",
# so let's click through the warning
@screen.wait("TorBrowserCouldNotReadTheContentsOfWarning.png", 10)
diff --git a/features/step_definitions/encryption.rb b/features/step_definitions/encryption.rb
index 71d0b69..561b40a 100644
--- a/features/step_definitions/encryption.rb
+++ b/features/step_definitions/encryption.rb
@@ -15,9 +15,9 @@ Given /^I generate an OpenPGP key named "([^"]+)" with password "([^"]+)"$/ do |
%commit
EOF
gpg_key_recipie.split("\n").each do |line|
- @vm.execute("echo '#{line}' >> /tmp/gpg_key_recipie", $live_user)
+ @vm.execute("echo '#{line}' >> /tmp/gpg_key_recipie", LIVE_USER)
end
- c = @vm.execute("gpg --batch --gen-key < /tmp/gpg_key_recipie", $live_user)
+ c = @vm.execute("gpg --batch --gen-key < /tmp/gpg_key_recipie", LIVE_USER)
assert(c.success?, "Failed to generate OpenPGP key:\n#{c.stderr}")
end
diff --git a/features/step_definitions/erase_memory.rb b/features/step_definitions/erase_memory.rb
index 6f474ff..b4bb56b 100644
--- a/features/step_definitions/erase_memory.rb
+++ b/features/step_definitions/erase_memory.rb
@@ -52,7 +52,7 @@ Given /^at least (\d+) ([[:alpha:]]+) of RAM was detected$/ do |min_ram, unit|
end
def pattern_coverage_in_guest_ram
- dump = "#{$tmp_dir}/memdump"
+ dump = "#{$config["TMP_DIR"]}/memdump"
# Workaround: when dumping the guest's memory via core_dump(), libvirt
# will create files that only root can read. We therefore pre-create
# them with more permissible permissions, which libvirt will preserve
diff --git a/features/step_definitions/firewall_leaks.rb b/features/step_definitions/firewall_leaks.rb
index a7e0544..8a27ff3 100644
--- a/features/step_definitions/firewall_leaks.rb
+++ b/features/step_definitions/firewall_leaks.rb
@@ -42,19 +42,19 @@ end
When(/^I do a TCP DNS lookup of "(.*?)"$/) do |host|
next if @skip_steps_while_restoring_background
- lookup = @vm.execute("host -T #{host} #{$some_dns_server}", $live_user)
+ lookup = @vm.execute("host -T #{host} #{SOME_DNS_SERVER}", LIVE_USER)
assert(lookup.success?, "Failed to resolve #{host}:\n#{lookup.stdout}")
end
When(/^I do a UDP DNS lookup of "(.*?)"$/) do |host|
next if @skip_steps_while_restoring_background
- lookup = @vm.execute("host #{host} #{$some_dns_server}", $live_user)
+ lookup = @vm.execute("host #{host} #{SOME_DNS_SERVER}", LIVE_USER)
assert(lookup.success?, "Failed to resolve #{host}:\n#{lookup.stdout}")
end
When(/^I send some ICMP pings$/) do
next if @skip_steps_while_restoring_background
# We ping an IP address to avoid a DNS lookup
- ping = @vm.execute("ping -c 5 #{$some_dns_server}", $live_user)
- assert(ping.success?, "Failed to ping #{$some_dns_server}:\n#{ping.stderr}")
+ ping = @vm.execute("ping -c 5 #{SOME_DNS_SERVER}", LIVE_USER)
+ assert(ping.success?, "Failed to ping #{SOME_DNS_SERVER}:\n#{ping.stderr}")
end
diff --git a/features/step_definitions/git.rb b/features/step_definitions/git.rb
index 3f8fe3e..e991ba4 100644
--- a/features/step_definitions/git.rb
+++ b/features/step_definitions/git.rb
@@ -1,18 +1,20 @@
Then /^the Git repository "([\S]+)" has been cloned successfully$/ do |repo|
next if @skip_steps_while_restoring_background
- assert(@vm.directory_exist?("/home/#{$live_user}/#{repo}/.git"))
- assert(@vm.file_exist?("/home/#{$live_user}/#{repo}/.git/config"))
- @vm.execute_successfully("cd '/home/#{$live_user}/#{repo}/' && git status", $live_user)
+ assert(@vm.directory_exist?("/home/#{LIVE_USER}/#{repo}/.git"))
+ assert(@vm.file_exist?("/home/#{LIVE_USER}/#{repo}/.git/config"))
+ @vm.execute_successfully("cd '/home/#{LIVE_USER}/#{repo}/' && git status", LIVE_USER)
end
Given /^I have the SSH key pair for a Git repository$/ do
next if @skip_steps_while_restoring_background
- @vm.execute_successfully("install -m 0700 -d '/home/#{$live_user}/.ssh/'", $live_user)
- assert(!$tails_test_secret_ssh_key.nil? && $tails_test_secret_ssh_key.length > 0)
- assert(!$tails_test_public_ssh_key.nil? && $tails_test_public_ssh_key.length > 0)
- @vm.execute_successfully("echo '#{$tails_test_secret_ssh_key}' > '/home/#{$live_user}/.ssh/id_rsa'", $live_user)
- @vm.execute_successfully("echo '#{$tails_test_public_ssh_key}' > '/home/#{$live_user}/.ssh/id_rsa.pub'", $live_user)
- @vm.execute_successfully("chmod 0600 '/home/#{$live_user}/.ssh/'id*", $live_user)
+ @vm.execute_successfully("install -m 0700 -d '/home/#{LIVE_USER}/.ssh/'", LIVE_USER)
+ secret_ssh_key = $config["Unsafe_SSH_private_key"]
+ public_ssh_key = $config["Unsafe_SSH_public_key"]
+ assert(!secret_ssh_key.nil? && secret_ssh_key.length > 0)
+ assert(!public_ssh_key.nil? && public_ssh_key.length > 0)
+ @vm.execute_successfully("echo '#{secret_ssh_key}' > '/home/#{LIVE_USER}/.ssh/id_rsa'", LIVE_USER)
+ @vm.execute_successfully("echo '#{public_ssh_key}' > '/home/#{LIVE_USER}/.ssh/id_rsa.pub'", LIVE_USER)
+ @vm.execute_successfully("chmod 0600 '/home/#{LIVE_USER}/.ssh/'id*", LIVE_USER)
end
Given /^I verify the SSH fingerprint for the Git repository$/ do
diff --git a/features/step_definitions/pidgin.rb b/features/step_definitions/pidgin.rb
index 69a1d22..eb719ea 100644
--- a/features/step_definitions/pidgin.rb
+++ b/features/step_definitions/pidgin.rb
@@ -1,7 +1,7 @@
def configured_pidgin_accounts
accounts = []
xml = REXML::Document.new(@vm.file_content('$HOME/.purple/accounts.xml',
- $live_user))
+ LIVE_USER))
xml.elements.each("account/account") do |e|
account = e.elements["name"].text
account_name, network = account.split("@")
@@ -43,7 +43,7 @@ def default_chan (account)
end
def pidgin_otr_keys
- return @vm.file_content('$HOME/.purple/otr.private_key', $live_user)
+ return @vm.file_content('$HOME/.purple/otr.private_key', LIVE_USER)
end
Given /^Pidgin has the expected accounts configured with random nicknames$/ do
@@ -101,7 +101,7 @@ end
def focus_pidgin_buddy_list
@vm.execute_successfully(
- "xdotool search --name 'Buddy List' windowactivate --sync", $live_user
+ "xdotool search --name 'Buddy List' windowactivate --sync", LIVE_USER
)
end
diff --git a/features/step_definitions/po.rb b/features/step_definitions/po.rb
index bcb506b..04fd12d 100644
--- a/features/step_definitions/po.rb
+++ b/features/step_definitions/po.rb
@@ -1,8 +1,8 @@
Given /^I am in the Git branch being tested$/ do
- File.exists?("$git_dir/wiki/src/contribute/l10n_tricks/check_po.sh")
+ File.exists?("#{GIT_DIR}/wiki/src/contribute/l10n_tricks/check_po.sh")
end
Given /^all the PO files should be correct$/ do
- Dir.chdir($git_dir)
+ Dir.chdir(GIT_DIR)
cmd_helper('./wiki/src/contribute/l10n_tricks/check_po.sh')
end
diff --git a/features/step_definitions/root_access_control.rb b/features/step_definitions/root_access_control.rb
index aaebb0d..026fa8e 100644
--- a/features/step_definitions/root_access_control.rb
+++ b/features/step_definitions/root_access_control.rb
@@ -1,13 +1,13 @@
Then /^I should be able to run administration commands as the live user$/ do
next if @skip_steps_while_restoring_background
- stdout = @vm.execute("echo #{@sudo_password} | sudo -S whoami", $live_user).stdout
- actual_user = stdout.sub(/^\[sudo\] password for #{$live_user}: /, "").chomp
+ stdout = @vm.execute("echo #{@sudo_password} | sudo -S whoami", LIVE_USER).stdout
+ actual_user = stdout.sub(/^\[sudo\] password for #{LIVE_USER}: /, "").chomp
assert_equal("root", actual_user, "Could not use sudo")
end
Then /^I should not be able to run administration commands as the live user with the "([^"]*)" password$/ do |password|
next if @skip_steps_while_restoring_background
- stderr = @vm.execute("echo #{password} | sudo -S whoami", $live_user).stderr
+ stderr = @vm.execute("echo #{password} | sudo -S whoami", LIVE_USER).stderr
sudo_failed = stderr.include?("The administration password is disabled") || stderr.include?("is not allowed to execute")
assert(sudo_failed, "The administration password is not disabled:" + stderr)
end
diff --git a/features/step_definitions/torified_gnupg.rb b/features/step_definitions/torified_gnupg.rb
index a993f9a..543e2e4 100644
--- a/features/step_definitions/torified_gnupg.rb
+++ b/features/step_definitions/torified_gnupg.rb
@@ -1,6 +1,6 @@
When /^the "([^"]*)" OpenPGP key is not in the live user's public keyring$/ do |keyid|
next if @skip_steps_while_restoring_background
- assert(!@vm.execute("gpg --batch --list-keys '#{keyid}'", $live_user).success?,
+ assert(!@vm.execute("gpg --batch --list-keys '#{keyid}'", LIVE_USER).success?,
"The '#{keyid}' key is in the live user's public keyring.")
end
@@ -8,7 +8,7 @@ When /^I fetch the "([^"]*)" OpenPGP key using the GnuPG CLI$/ do |keyid|
next if @skip_steps_while_restoring_background
@gnupg_recv_key_res = @vm.execute(
"gpg --batch --recv-key '#{keyid}'",
- $live_user)
+ LIVE_USER)
end
When /^the GnuPG fetch is successful$/ do
@@ -19,14 +19,14 @@ end
When /^GnuPG uses the configured keyserver$/ do
next if @skip_steps_while_restoring_background
- assert(@gnupg_recv_key_res.stderr[$configured_keyserver_hostname],
- "GnuPG's stderr did not mention keyserver #{$configured_keyserver_hostname}")
+ assert(@gnupg_recv_key_res.stderr[CONFIGURED_KEYSERVER_HOSTNAME],
+ "GnuPG's stderr did not mention keyserver #{CONFIGURED_KEYSERVER_HOSTNAME}")
end
When /^the "([^"]*)" key is in the live user's public keyring after at most (\d+) seconds$/ do |keyid, delay|
next if @skip_steps_while_restoring_background
try_for(delay.to_f, :msg => "The '#{keyid}' key is not in the live user's public keyring") {
- @vm.execute("gpg --batch --list-keys '#{keyid}'", $live_user).success?
+ @vm.execute("gpg --batch --list-keys '#{keyid}'", LIVE_USER).success?
}
end
diff --git a/features/step_definitions/torified_misc.rb b/features/step_definitions/torified_misc.rb
index efe4798..610234f 100644
--- a/features/step_definitions/torified_misc.rb
+++ b/features/step_definitions/torified_misc.rb
@@ -2,7 +2,7 @@ When /^I query the whois directory service for "([^"]+)"$/ do |domain|
next if @skip_steps_while_restoring_background
@vm_execute_res = @vm.execute(
"whois '#{domain}'",
- $live_user)
+ LIVE_USER)
end
When /^I wget "([^"]+)" to stdout(?:| with the '([^']+)' options)$/ do |url, options|
@@ -11,7 +11,7 @@ When /^I wget "([^"]+)" to stdout(?:| with the '([^']+)' options)$/ do |url, opt
arguments = "#{options} #{arguments}" if options
@vm_execute_res = @vm.execute(
"wget #{arguments}",
- $live_user)
+ LIVE_USER)
end
Then /^the (wget|whois) command is successful$/ do |command|
diff --git a/features/step_definitions/totem.rb b/features/step_definitions/totem.rb
index f8743d7..717ce27 100644
--- a/features/step_definitions/totem.rb
+++ b/features/step_definitions/totem.rb
@@ -7,17 +7,17 @@ Given /^I create sample videos$/ do
fatal_system("ffmpeg -loop 1 -t 30 -f image2 " +
"-i 'features/images/TailsBootSplash.png' " +
"-an -vcodec libx264 -y " +
- "'#{$misc_files_dir}/video.mp4' >/dev/null 2>&1")
+ "'#{MISC_FILES_DIR}/video.mp4' >/dev/null 2>&1")
end
Given /^I setup a filesystem share containing sample videos$/ do
next if @skip_steps_while_restoring_background
- @vm.add_share($misc_files_dir, shared_video_dir_on_guest)
+ @vm.add_share(MISC_FILES_DIR, shared_video_dir_on_guest)
end
Given /^I copy the sample videos to "([^"]+)" as user "([^"]+)"$/ do |destination, user|
next if @skip_steps_while_restoring_background
- for video_on_host in Dir.glob("#{$misc_files_dir}/*.mp4") do
+ for video_on_host in Dir.glob("#{MISC_FILES_DIR}/*.mp4") do
video_name = File.basename(video_on_host)
src_on_guest = "#{shared_video_dir_on_guest}/#{video_name}"
dst_on_guest = "#{destination}/#{video_name}"
diff --git a/features/step_definitions/untrusted_partitions.rb b/features/step_definitions/untrusted_partitions.rb
index e396d8d..6965143 100644
--- a/features/step_definitions/untrusted_partitions.rb
+++ b/features/step_definitions/untrusted_partitions.rb
@@ -34,7 +34,7 @@ end
Given /^I cat an ISO of the Tails image to disk "([^"]+)"$/ do |name|
next if @skip_steps_while_restoring_background
src_disk = {
- :path => $tails_iso,
+ :path => TAILS_ISO,
:opts => {
:format => "raw",
:readonly => true
diff --git a/features/step_definitions/usb.rb b/features/step_definitions/usb.rb
index 086889e..2c657ca 100644
--- a/features/step_definitions/usb.rb
+++ b/features/step_definitions/usb.rb
@@ -60,7 +60,7 @@ end
Given /^the computer is set to boot from the old Tails DVD$/ do
next if @skip_steps_while_restoring_background
- @vm.set_cdrom_boot($old_tails_iso)
+ @vm.set_cdrom_boot(OLD_TAILS_ISO)
end
Given /^the computer is set to boot in UEFI mode$/ do
@@ -138,7 +138,7 @@ end
Given /^I setup a filesystem share containing the Tails ISO$/ do
next if @skip_steps_while_restoring_background
- @vm.add_share(File.dirname($tails_iso), shared_iso_dir_on_guest)
+ @vm.add_share(File.dirname(TAILS_ISO), shared_iso_dir_on_guest)
end
When /^I do a "Upgrade from ISO" on USB drive "([^"]+)"$/ do |name|
@@ -150,7 +150,7 @@ When /^I do a "Upgrade from ISO" on USB drive "([^"]+)"$/ do |name|
@screen.click(match.getCenter.offset(0, match.h*2))
@screen.wait('USBSelectISO.png', 10)
@screen.wait_and_click('GnomeFileDiagTypeFilename.png', 10)
- iso = "#{shared_iso_dir_on_guest}/#{File.basename($tails_iso)}"
+ iso = "#{shared_iso_dir_on_guest}/#{File.basename(TAILS_ISO)}"
@screen.type(iso + Sikuli::Key.ENTER)
usb_install_helper(name)
end
@@ -205,7 +205,7 @@ def tails_is_installed_helper(name, tails_root, loader)
c = @vm.execute("diff -qr '#{tails_root}/live' '#{target_root}/live'")
assert(c.success?,
- "USB drive '#{name}' has differences in /live:\n#{c.stdout}")
+ "USB drive '#{name}' has differences in /live:\n#{c.stdout}\n#{c.stderr}")
syslinux_files = @vm.execute("ls -1 #{target_root}/syslinux").stdout.chomp.split
# We deal with these files separately
@@ -235,7 +235,7 @@ end
Then /^the ISO's Tails is installed on USB drive "([^"]+)"$/ do |target_name|
next if @skip_steps_while_restoring_background
- iso = "#{shared_iso_dir_on_guest}/#{File.basename($tails_iso)}"
+ iso = "#{shared_iso_dir_on_guest}/#{File.basename(TAILS_ISO)}"
iso_root = "/mnt/iso"
@vm.execute("mkdir -p #{iso_root}")
@vm.execute("mount -o loop #{iso} #{iso_root}")
@@ -454,9 +454,9 @@ Then /^all persistent directories(| from the old Tails version) have safe access
assert_vmcommand_success @vm.execute("test -d #{full_src}")
dir_perms = @vm.execute_successfully("stat -c %a '#{full_src}'").stdout.chomp
dir_owner = @vm.execute_successfully("stat -c %U '#{full_src}'").stdout.chomp
- if dest.start_with?("/home/#{$live_user}")
+ if dest.start_with?("/home/#{LIVE_USER}")
expected_perms = "700"
- expected_owner = $live_user
+ expected_owner = LIVE_USER
else
expected_perms = "755"
expected_owner = "root"
diff --git a/features/support/config.rb b/features/support/config.rb
index f3b442f..f28cd26 100644
--- a/features/support/config.rb
+++ b/features/support/config.rb
@@ -1,29 +1,46 @@
require 'fileutils'
+require 'yaml'
require "#{Dir.pwd}/features/support/helpers/misc_helpers.rb"
-# Dynamic
-$tails_iso = ENV['ISO'] || get_newest_iso
-$old_tails_iso = ENV['OLD_ISO'] || get_oldest_iso
-$tmp_dir = ENV['TEMP_DIR'] || "/tmp/TailsToaster"
-$vm_xml_path = ENV['VM_XML_PATH'] || "#{Dir.pwd}/features/domains"
-$misc_files_dir = "#{Dir.pwd}/features/misc_files"
-$keep_snapshots = !ENV['KEEP_SNAPSHOTS'].nil?
-$x_display = ENV['DISPLAY']
-$debug = !ENV['DEBUG'].nil?
-$pause_on_fail = !ENV['PAUSE_ON_FAIL'].nil?
-$time_at_start = Time.now
-$live_user = cmd_helper(". config/chroot_local-includes/etc/live/config.d/username.conf; echo ${LIVE_USERNAME}").chomp
-$sikuli_retry_findfailed = !ENV['SIKULI_RETRY_FINDFAILED'].nil?
-$git_dir = ENV['PWD']
+# These two files deal with options like some of the settings passed
+# to the `run_test_suite` script, and "secrets" like credentials
+# (passwords, SSH keys) to be used in tests.
+DEFAULTS_CONFIG_FILE = "#{Dir.pwd}/features/config/defaults.yml"
+LOCAL_CONFIG_FILE = "#{Dir.pwd}/features/config/local.yml"
-# Static
-$configured_keyserver_hostname = 'hkps.pool.sks-keyservers.net'
-$services_expected_on_all_ifaces =
+assert File.exists?(DEFAULTS_CONFIG_FILE)
+$config = YAML.load(File.read(DEFAULTS_CONFIG_FILE))
+if File.exists?(LOCAL_CONFIG_FILE)
+ $config.merge!(YAML.load(File.read(LOCAL_CONFIG_FILE)))
+end
+# Options passed to the `run_test_suite` script will always take
+# precedence. The way we import these keys is only safe for values
+# with types boolean or string. If we need more, we'll have to invoke
+# YAML's type autodetection on ENV some how.
+$config.merge!(ENV)
+
+# Dynamic constants initialized through the environment or similar,
+# e.g. options we do not want to be configurable through the YAML
+# configuration files.
+DISPLAY = ENV['DISPLAY']
+GIT_DIR = ENV['PWD']
+KEEP_SNAPSHOTS = !ENV['KEEP_SNAPSHOTS'].nil?
+LIVE_USER = cmd_helper(". config/chroot_local-includes/etc/live/config.d/username.conf; echo ${LIVE_USERNAME}").chomp
+OLD_TAILS_ISO = ENV['OLD_TAILS_ISO']
+TAILS_ISO = ENV['TAILS_ISO']
+TIME_AT_START = Time.now
+
+# Constants that are statically initialized.
+CONFIGURED_KEYSERVER_HOSTNAME = 'hkps.pool.sks-keyservers.net'
+MISC_FILES_DIR = "#{Dir.pwd}/features/misc_files"
+SERVICES_EXPECTED_ON_ALL_IFACES =
[
["cupsd", "0.0.0.0", "631"],
["dhclient", "0.0.0.0", "*"]
]
-$tor_authorities =
+# OpenDNS
+SOME_DNS_SERVER = "208.67.222.222"
+TOR_AUTHORITIES =
# List grabbed from Tor's sources, src/or/config.c:~750.
[
"128.31.0.39", "86.59.21.38", "194.109.206.212",
@@ -31,37 +48,4 @@ $tor_authorities =
"193.23.244.244", "208.83.223.34", "171.25.193.9",
"154.35.32.5"
]
-# OpenDNS
-$some_dns_server = "208.67.222.222"
-
-$tails_test_secret_ssh_key = <<EOF
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAvMUNgUUM/kyuo26m+Xw7igG6zgGFMFbS3u8m5StGsJOn7zLi
-J8P5Mml/R+4tdOS6owVU4RaZTPsNZZK/ClYmOPhmNvJ04pVChk2DZ8AARg/TANj3
-qjKs3D+MeKbk1bt6EsA55kgGsTUky5Ti8cc2Wna25jqjagIiyM822PGG9mmI6/zL
-YR6QLUizNaciXrRM3Q4R4sQkEreVlHeonPEiGUs9zx0swCpLtPM5UIYte1PVHgkw
-ePsU6vM8UqVTK/VwtLLgLanXnsMFuzq7DTAXPq49+XSFNq4JlxbEF6+PQXZvYZ5N
-eW00Gq7NSpPP8uoHr6f1J+mMxxnM85jzYtRx+QIDAQABAoIBAA8Bs1MlhCTrP67q
-awfGYo1UGd+qq0XugREL/hGV4SbEdkNDzkrO/46MaHv1aVOzo0q2b8r9Gu7NvoDm
-q51Mv/kjdizEFZq1tvYqT1n+H4dyVpnopbe4E5nmy2oECokbQFchRPkTnMSVrvko
-OupxpdaHPX8MBlW1GcLRBlE00j/gfK1SXX5rcxkF5EHVND1b6iHddTPearDbU8yr
-wga1XO6WeohAYzqmGtMD0zk6lOk0LmnTNG6WvHiFTAc/0yTiKub6rNOIEMS/82+V
-l437H0hKcIN/7/mf6FpqRNPJTuhOVFf+L4G/ZQ8zHoMGVIbhuTiIPqZ/KMu3NaUF
-R634jckCgYEA+jJ31hom/d65LfxWPkmiSkNTEOTfjbfcgpfc7sS3enPsYnfnmn5L
-O3JJzAKShSVP8NVuPN5Mg5FGp9QLKrN3kV6QWQ3EnqeW748DXMU6zKGJQ5wo7ZVm
-w2DhJ/3PAuBTL/5X4mjPQL+dr86Aq2JBDC7LHJs40I8O7UbhnsdMxKcCgYEAwSXc
-3znAkAX8o2g37RiAl36HdONgxr2eaGK7OExp03pbKmoISw6bFbVpicBy6eTytn0A
-2PuFcBKJRfKrViHyiE8UfAJ31JbUaxpg4bFF6UEszN4CmgKS8fnwEe1aX0qSjvkE
-NQSuhN5AfykXY/1WVIaWuC500uB7Ow6M16RDyF8CgYEAqFTeNYlg5Hs+Acd9SukF
-rItBTuN92P5z+NUtyuNFQrjNuK5Nf68q9LL/Hag5ZiVldHZUddVmizpp3C6Y2MDo
-WEDUQ2Y0/D1rGoAQ1hDIb7bbAEcHblmPSzJaKirkZV4B+g9Yl7bGghypfggkn6o6
-c3TkKLnybrdhZpjC4a3bY48CgYBnWRYdD27c4Ycz/GDoaZLs/NQIFF5FGVL4cdPR
-pPl/IdpEEKZNWwxaik5lWedjBZFlWe+pKrRUqmZvWhCZruJyUzYXwM5Tnz0b7epm
-+Q76Z1hMaoKj27q65UyymvkfQey3ucCpic7D45RJNjiA1R5rbfSZqqnx6BGoIPn1
-rLxkKwKBgDXiWeUKJCydj0NfHryGBkQvaDahDE3Yigcma63b8vMZPBrJSC4SGAHJ
-NWema+bArbaF0rKVJpwvpkZWGcr6qRn94Ts0kJAzR+VIVTOjB9sVwdxjadwWHRs5
-kKnpY0tnSF7hyVRwN7GOsNDJEaFjCW7k4+55D2ZNBy2iN3beW8CZ
------END RSA PRIVATE KEY-----
-EOF
-
-$tails_test_public_ssh_key = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8xQ2BRQz+TK6jbqb5fDuKAbrOAYUwVtLe7yblK0awk6fvMuInw/kyaX9H7i105LqjBVThFplM+w1lkr8KViY4+GY28nTilUKGTYNnwABGD9MA2PeqMqzcP4x4puTVu3oSwDnmSAaxNSTLlOLxxzZadrbmOqNqAiLIzzbY8Yb2aYjr/MthHpAtSLM1pyJetEzdDhHixCQSt5WUd6ic8SIZSz3PHSzAKku08zlQhi17U9UeCTB4+xTq8zxSpVMr9XC0suAtqdeewwW7OrsNMBc+rj35dIU2rgmXFsQXr49Bdm9hnk15bTQars1Kk8/y6gevp/Un6YzHGczzmPNi1HH5 amnesia@amnesia'
+VM_XML_PATH = "#{Dir.pwd}/features/domains"
diff --git a/features/support/helpers/exec_helper.rb b/features/support/helpers/exec_helper.rb
index 48b734b..9a1769d 100644
--- a/features/support/helpers/exec_helper.rb
+++ b/features/support/helpers/exec_helper.rb
@@ -34,14 +34,14 @@ class VMCommand
options[:spawn] ||= false
type = options[:spawn] ? "spawn" : "call"
socket = TCPSocket.new("127.0.0.1", vm.get_remote_shell_port)
- STDERR.puts "#{type}ing as #{options[:user]}: #{cmd}" if $debug
+ STDERR.puts "#{type}ing as #{options[:user]}: #{cmd}" if $config["DEBUG"]
begin
socket.puts(JSON.dump([type, options[:user], cmd]))
s = socket.readline(sep = "\0").chomp("\0")
ensure
socket.close
end
- STDERR.puts "#{type} returned: #{s}" if $debug
+ STDERR.puts "#{type} returned: #{s}" if $config["DEBUG"]
begin
return JSON.load(s)
rescue JSON::ParserError
diff --git a/features/support/helpers/firewall_helper.rb b/features/support/helpers/firewall_helper.rb
index f44b285..f31b070 100644
--- a/features/support/helpers/firewall_helper.rb
+++ b/features/support/helpers/firewall_helper.rb
@@ -97,7 +97,7 @@ class FirewallLeakCheck
# Returns an array of all Tor relays and authorities, i.e. all
# Internet hosts Tails ever should contact.
def get_all_tor_contacts
- @tor_relays + $tor_authorities
+ @tor_relays + TOR_AUTHORITIES
end
def empty?
diff --git a/features/support/helpers/misc_helpers.rb b/features/support/helpers/misc_helpers.rb
index ff48031..830fa1c 100644
--- a/features/support/helpers/misc_helpers.rb
+++ b/features/support/helpers/misc_helpers.rb
@@ -90,25 +90,6 @@ def cmd_helper(cmd)
end
end
-def tails_iso_creation_date(path)
- label = cmd_helper("/sbin/blkid -p -s LABEL -o value #{path}")
- assert(label[/^TAILS \d+(\.\d+)+(~rc\d+)? - \d+$/],
- "Got invalid label '#{label}' from Tails image '#{path}'")
- return label[/\d+$/]
-end
-
-def sort_isos_by_creation_date
- Dir.glob("#{Dir.pwd}/*.iso").sort_by {|f| tails_iso_creation_date(f)}
-end
-
-def get_newest_iso
- return sort_isos_by_creation_date.last
-end
-
-def get_oldest_iso
- return sort_isos_by_creation_date.first
-end
-
# This command will grab all router IP addresses from the Tor
# consensus in the VM.
def get_tor_relays
diff --git a/features/support/helpers/sikuli_helper.rb b/features/support/helpers/sikuli_helper.rb
index e132c38..b0ad6da 100644
--- a/features/support/helpers/sikuli_helper.rb
+++ b/features/support/helpers/sikuli_helper.rb
@@ -64,7 +64,7 @@ $_original_sikuli_screen_new ||= Sikuli::Screen.method :new
def sikuli_script_proxy.new(*args)
s = $_original_sikuli_screen_new.call(*args)
- if $sikuli_retry_findfailed
+ if $config["SIKULI_RETRY_FINDFAILED"]
# The usage of `_invoke()` below exemplifies how one can wrap
# around Java objects' methods when they're imported using RJB. It
# isn't pretty. The seconds argument is the parameter signature,
@@ -141,13 +141,13 @@ java.lang.System.setProperty("SIKULI_IMAGE_PATH", "#{Dir.pwd}/features/images/")
# required, ruby's require method complains that the method for the
# field accessor is missing.
sikuli_settings = Sikuli::Settings.new
-sikuli_settings.OcrDataPath = $tmp_dir
+sikuli_settings.OcrDataPath = $config["TMP_DIR"]
# sikuli_ruby, which we used before, defaulted to 0.9 minimum
# similarity, so all our current images are adapted to that value.
# Also, Sikuli's default of 0.7 is simply too low (many false
# positives).
sikuli_settings.MinSimilarity = 0.9
-sikuli_settings.ActionLogs = $debug
-sikuli_settings.DebugLogs = $debug
-sikuli_settings.InfoLogs = $debug
-sikuli_settings.ProfileLogs = $debug
+sikuli_settings.ActionLogs = $config["DEBUG"]
+sikuli_settings.DebugLogs = $config["DEBUG"]
+sikuli_settings.InfoLogs = $config["DEBUG"]
+sikuli_settings.ProfileLogs = $config["DEBUG"]
diff --git a/features/support/helpers/sniffing_helper.rb b/features/support/helpers/sniffing_helper.rb
index 57de3b7..48e028d 100644
--- a/features/support/helpers/sniffing_helper.rb
+++ b/features/support/helpers/sniffing_helper.rb
@@ -17,7 +17,7 @@ class Sniffer
def initialize(name, vmnet)
@name = name
@vmnet = vmnet
- @pcap_file = "#{$tmp_dir}/#{name}.pcap"
+ @pcap_file = "#{$config["TMP_DIR"]}/#{name}.pcap"
end
def capture(filter="not ether src host #{@vmnet.bridge_mac} and not ether proto \\arp and not ether proto \\rarp")
diff --git a/features/support/helpers/storage_helper.rb b/features/support/helpers/storage_helper.rb
index f90d0fd..41240d2 100644
--- a/features/support/helpers/storage_helper.rb
+++ b/features/support/helpers/storage_helper.rb
@@ -25,7 +25,7 @@ class VMStorage
else
VMStorage.clear_storage_pool(@pool)
end
- @pool_path = "#{$tmp_dir}/#{pool_name}"
+ @pool_path = "#{$config["TMP_DIR"]}/#{pool_name}"
pool_xml.elements['pool/target/path'].text = @pool_path
@pool = @virt.define_storage_pool_xml(pool_xml.to_s)
@pool.build
@@ -170,7 +170,7 @@ class VMStorage
def guestfs_disk_helper(*disks)
assert(block_given?)
g = Guestfs::Guestfs.new()
- g.set_trace(1) if $debug
+ g.set_trace(1) if $config["DEBUG"]
g.set_autosync(1)
disks.each do |disk|
g.add_drive_opts(disk[:path], disk[:opts])
diff --git a/features/support/helpers/vm_helper.rb b/features/support/helpers/vm_helper.rb
index 5656b73..117b65b 100644
--- a/features/support/helpers/vm_helper.rb
+++ b/features/support/helpers/vm_helper.rb
@@ -56,7 +56,7 @@ class VM
default_domain_xml = File.read("#{@xml_path}/default.xml")
update(default_domain_xml)
@display = Display.new(@domain_name, x_display)
- set_cdrom_boot($tails_iso)
+ set_cdrom_boot(TAILS_ISO)
plug_network
rescue Exception => e
destroy_and_undefine
diff --git a/features/support/hooks.rb b/features/support/hooks.rb
index cf79832..b77a236 100644
--- a/features/support/hooks.rb
+++ b/features/support/hooks.rb
@@ -14,42 +14,42 @@ rescue Errno::EACCES => e
end
def delete_all_snapshots
- Dir.glob("#{$tmp_dir}/*.state").each do |snapshot|
+ Dir.glob("#{$config["TMP_DIR"]}/*.state").each do |snapshot|
delete_snapshot(snapshot)
end
end
BeforeFeature('@product') do |feature|
- if File.exist?($tmp_dir)
- if !File.directory?($tmp_dir)
- raise "Temporary directory '#{$tmp_dir}' exists but is not a " +
+ if File.exist?($config["TMP_DIR"])
+ if !File.directory?($config["TMP_DIR"])
+ raise "Temporary directory '#{$config["TMP_DIR"]}' exists but is not a " +
"directory"
end
- if !File.owned?($tmp_dir)
- raise "Temporary directory '#{$tmp_dir}' must be owned by the " +
+ if !File.owned?($config["TMP_DIR"])
+ raise "Temporary directory '#{$config["TMP_DIR"]}' must be owned by the " +
"current user"
end
- FileUtils.chmod(0755, $tmp_dir)
+ FileUtils.chmod(0755, $config["TMP_DIR"])
else
begin
- Dir.mkdir($tmp_dir)
+ Dir.mkdir($config["TMP_DIR"])
rescue Errno::EACCES => e
raise "Cannot create temporary directory: #{e.to_s}"
end
end
- delete_all_snapshots if !$keep_snapshots
- if $tails_iso.nil?
+ delete_all_snapshots if !KEEP_SNAPSHOTS
+ if TAILS_ISO.nil?
raise "No Tails ISO image specified, and none could be found in the " +
"current directory"
end
- if File.exist?($tails_iso)
+ if File.exist?(TAILS_ISO)
# Workaround: when libvirt takes ownership of the ISO image it may
# become unreadable for the live user inside the guest in the
# host-to-guest share used for some tests.
- if !File.world_readable?($tails_iso)
- if File.owned?($tails_iso)
- File.chmod(0644, $tails_iso)
+ if !File.world_readable?(TAILS_ISO)
+ if File.owned?(TAILS_ISO)
+ File.chmod(0644, TAILS_ISO)
else
raise "warning: the Tails ISO image must be world readable or be " +
"owned by the current user to be available inside the guest " +
@@ -57,35 +57,35 @@ BeforeFeature('@product') do |feature|
end
end
else
- raise "The specified Tails ISO image '#{$tails_iso}' does not exist"
+ raise "The specified Tails ISO image '#{TAILS_ISO}' does not exist"
end
- puts "Testing ISO image: #{File.basename($tails_iso)}"
+ puts "Testing ISO image: #{File.basename(TAILS_ISO)}"
base = File.basename(feature.file, ".feature").to_s
- $background_snapshot = "#{$tmp_dir}/#{base}_background.state"
+ $background_snapshot = "#{$config["TMP_DIR"]}/#{base}_background.state"
$virt = Libvirt::open("qemu:///system")
- $vmnet = VMNet.new($virt, $vm_xml_path)
- $vmstorage = VMStorage.new($virt, $vm_xml_path)
+ $vmnet = VMNet.new($virt, VM_XML_PATH)
+ $vmstorage = VMStorage.new($virt, VM_XML_PATH)
end
AfterFeature('@product') do
- delete_snapshot($background_snapshot) if !$keep_snapshots
+ delete_snapshot($background_snapshot) if !KEEP_SNAPSHOTS
$vmstorage.clear_pool
$vmnet.destroy_and_undefine
$virt.close
end
BeforeFeature('@product', '@old_iso') do
- if $old_tails_iso.nil?
+ if OLD_TAILS_ISO.nil?
raise "No old Tails ISO image specified, and none could be found in the " +
"current directory"
end
- if !File.exist?($old_tails_iso)
- raise "The specified old Tails ISO image '#{$old_tails_iso}' does not exist"
+ if !File.exist?(OLD_TAILS_ISO)
+ raise "The specified old Tails ISO image '#{OLD_TAILS_ISO}' does not exist"
end
- if $tails_iso == $old_tails_iso
+ if TAILS_ISO == OLD_TAILS_ISO
raise "The old Tails ISO is the same as the Tails ISO we're testing"
end
- puts "Using old ISO image: #{File.basename($old_tails_iso)}"
+ puts "Using old ISO image: #{File.basename(OLD_TAILS_ISO)}"
end
# BeforeScenario
@@ -103,17 +103,17 @@ end
# AfterScenario
After('@product') do |scenario|
if (scenario.status != :passed)
- time_of_fail = Time.now - $time_at_start
+ time_of_fail = Time.now - TIME_AT_START
secs = "%02d" % (time_of_fail % 60)
mins = "%02d" % ((time_of_fail / 60) % 60)
hrs = "%02d" % (time_of_fail / (60*60))
STDERR.puts "Scenario failed at time #{hrs}:#{mins}:#{secs}"
base = File.basename(scenario.feature.file, ".feature").to_s
tmp = @screen.capture.getFilename
- out = "#{$tmp_dir}/#{base}-#{DateTime.now}.png"
+ out = "#{$config["TMP_DIR"]}/#{base}-#{DateTime.now}.png"
FileUtils.mv(tmp, out)
STDERR.puts("Took screenshot \"#{out}\"")
- if $pause_on_fail
+ if $config["PAUSE_ON_FAIL"]
STDERR.puts ""
STDERR.puts "Press ENTER to continue running the test suite"
STDIN.gets
@@ -171,5 +171,5 @@ BeforeFeature('@product', '@source') do |feature|
end
at_exit do
- delete_all_snapshots if !$keep_snapshots
+ delete_all_snapshots if !KEEP_SNAPSHOTS
end
diff --git a/run_test_suite b/run_test_suite
index cf7abeb..d173619 100755
--- a/run_test_suite
+++ b/run_test_suite
@@ -30,13 +30,10 @@ Options for '@product' features:
--view Shows the test session in a windows. Requires x11vnc
and xtightvncviewer.
--vnc-server-only Starts a VNC server for the test session. Requires x11vnc.
- --iso IMAGE Test '@product' features using IMAGE. If none is given,
- the ISO with most recent creation date (according to the
- ISO's label) in the current directory will be used.
+ --iso IMAGE Test '@product' features using IMAGE.
--old-iso IMAGE For some '@product' features (e.g. usb_install) we need
an older version of Tails, which this options sets to
- IMAGE. If none is given, the ISO with the least recent
- creation date will be used.
+ IMAGE.
Note that '@source' features has no relevant options.
"
@@ -110,8 +107,8 @@ PAUSE_ON_FAIL=
KEEP_SNAPSHOTS=
SIKULI_RETRY_FINDFAILED=
TEMP_DIR=
-ISO=
-OLD_ISO=
+TAILS_ISO=
+OLD_TAILS_ISO=
LONGOPTS="view,vnc-server-only,capture:,help,temp-dir:,keep-snapshots,retry-find,iso:,old-iso:,debug,pause-on-fail"
OPTS=$(getopt -o "" --longoptions $LONGOPTS -n "${NAME}" -- "$@")
@@ -148,11 +145,11 @@ while [ $# -gt 0 ]; do
;;
--iso)
shift
- export ISO="$(readlink -f $1)"
+ export TAILS_ISO="$(readlink -f $1)"
;;
--old-iso)
shift
- export OLD_ISO="$(readlink -f $1)"
+ export OLD_TAILS_ISO="$(readlink -f $1)"
;;
--help)
usage
diff --git a/wiki/src/blueprint/UEFI.mdwn b/wiki/src/blueprint/UEFI.mdwn
index 09dad41..d506eab 100644
--- a/wiki/src/blueprint/UEFI.mdwn
+++ b/wiki/src/blueprint/UEFI.mdwn
@@ -19,6 +19,14 @@ Testing results
Ideas for future work
=====================
+32-bit UEFI
+-----------
+
+See [[blueprint/UEFI/32-bit]].
+
+Other ideas
+-----------
+
Most of the possible candidate goals that were
[[rejected|contribute/design/UEFI#non-goals]] for this initial iteration are not
critical. Pursuing these would require substantial effort, that is
diff --git a/wiki/src/blueprint/UEFI/32-bit.mdwn b/wiki/src/blueprint/UEFI/32-bit.mdwn
new file mode 100644
index 0000000..b80b9ea
--- /dev/null
+++ b/wiki/src/blueprint/UEFI/32-bit.mdwn
@@ -0,0 +1,120 @@
+This is about [[!tails_ticket 8471]].
+
+[[!toc levels=2]]
+
+Misc. notes
+===========
+
+Regarding the success seen with `bootia32.efi`: why would a 32-bit
+GRUB2 EFI boot loader automatically chainload to our syslinux?
+
+Or is it that `bootia32.efi` is actually from another El Torito image,
+that ships syslinux?
+
+Debian's relevant code lives in the debian-cd, grub2 and
+debian-installer Git repositories. Look for `bootia32.efi`.
+
+Maybe also copy to `EFI/BOOT/boot.efi`: grub2's changelog says that
+`grub-install` copies `bootia32.efi` to `boot.efi`, to better support
+old Macs.
+
+<a id="hardware"></a>
+
+Potential hardware
+==================
+
+Boots GNU/Linux from USB
+------------------------
+
+All of the following tablets are based on the Intel Bay Trail platform
+with 32-bit UEFI firmware and ship with Windows 8.1 except where
+noted. LCD resolutions are generally 1,280x800 pixels, except
+where noted.
+
+They have all been reported to run GNU/Linux from USB with the right
+boot code, but device drivers are sometimes a problem.
+
+There are significant variations in specific firmware features among
+these devices. For example, it's unclear if all of these models can
+cold-boot from USB, or if some may need to start Windows and then use
+the "boot from USB" feature. Most have Secure Boot enabled by default,
+but this feature can usually be disabled.
+
+ * Acer Aspire Switch 10
+ - $300
+ - 2 GB RAM, 10", hybrid
+
+ * Asus T100
+ - $290
+ - 2 GB RAM, 10", hybrid
+ - hardware support on Linux was not entirely awful a year ago, but
+ requires proprietary firmware; not sure where things are at now
+
+ * Asus T100TA
+ - $300
+ - 2 GB RAM, 10", hybrid
+ - 1 USB + 1 micro USB
+ - does the T100's hardware support status apply here too?
+
+ * Dell Venue 8 Pro 3000
+ - $170
+ - 1 GB RAM, 8"
+
+ * Dell Venue 8 Pro 5000
+ - $210
+ - 2 GB RAM, 8"
+
+ * Dell Venue 8 7000
+ - Ships with Android KitKat; Lollipop due later in 2015
+ - $400
+ - 2 GB RAM/16 GB flash
+ - Notable for high-res 8.4" 2,560x1,600 OLED display
+ - Also includes Intel RealSense multiple-camera subsystem
+
+ * HP Stream 7
+ - $100
+ - 1 GB RAM/16 GB flash, 7"
+ - hardware support on Linux seems not entirely awful, but requires
+ a few out-of-tree drivers:
+ <https://ubuntuforums.org/showthread.php?t=2261294>
+
+* HP Stream 8
+ - $150
+ - 1 GB RAM, 7"
+ - Includes 4G WWAN modem with limited free T-Mobile Internet service
+ - Believed to be generally similar to the HP Stream 7 otherwise
+
+ * Lenovo Miix 2
+ - $220
+ - 2 GB RAM
+
+ * Toshiba Encore 2
+ - $100 with 1 GB RAM/16 GB flash, 8"
+ - $140 with 2 GB RAM/32 GB flash, 8"
+ - 10" LCD models also available
+
+* Toshiba Encore 2 Write
+ - Includes Wacom Feel pen/touch digitizer; unusual among low-cost x86 tablets, enables good handwriting recognition and artistic drawing
+ - Otherwise apparently similar to Encore 2
+ - 8-inch version retails for $350
+ - 10.1-inch model priced at $400
+
+ * WinBook TW700:
+ - $60
+ - 1 GB RAM/16GB flash, 7"
+
+Needs more research
+-------------------
+
+ * ASUS VivoTab 8
+ - $190
+ - Bay Trail, 2 GB RAM, 8"
+ - 32-bit UEFI?
+
+
+Boots current Tails and thus uninteresting here
+-----------------------------------------------
+
+ * HP Slate 500
+ * Samsung Series 7 Slate
+ * Microsoft Surface Pro
diff --git a/wiki/src/blueprint/automated_builds_and_tests/autobuild_specs.mdwn b/wiki/src/blueprint/automated_builds_and_tests/autobuild_specs.mdwn
index 0c37ba7..92549ac 100644
--- a/wiki/src/blueprint/automated_builds_and_tests/autobuild_specs.mdwn
+++ b/wiki/src/blueprint/automated_builds_and_tests/autobuild_specs.mdwn
@@ -6,6 +6,9 @@ list, and is attached to [[!tails_ticket 8655]]
to specify how to implement [[!tails_ticket 6196]] ("Build all active
branches").
+Some metrics about the number of branches merged per releases are
+available on the [[dedicated statistics page|autobuild_stats]].
+
[[!toc levels=2]]
# Question to discuss
@@ -18,10 +21,6 @@ _experimental_) + _feature/jessie_.
The questions raised is mostly concern the _feature/*_ and _bugfix/*_ branches
(so _topic branches_)
-Some metrics about the number of branches merged per release could give hints
-that might help to decide of selection process. See at the bottom of this
-page.
-
Given an ISO build takes around 45 minutes on lizard (worst case),
given two builders lizard will be able to build something like 64 ISOs a
day.
@@ -42,9 +41,6 @@ Proposal1:
Define the regularity we want to build topic branches, apart from being build
on Git push.
-As with the first question, some metrics could help the discussion,
-at least having an average number of branches per release.
-
Note that we will have to plug that in automatic tests when they will be
deployed.
@@ -62,7 +58,7 @@ Proposal 1: Notify by email the author of the offending commit on failure.
In the following scenario:
-0. topic branches are named branch T
+0. topic branches are named branch F
0. base branches are named branch B
0. builds are ran on merges which don't raise a conflict. If the merge raises a conflict, then the topic branch's developer should take care of resolving it.
@@ -70,8 +66,8 @@ In the following scenario:
## Scenario 1 : reviewer
As a reviewer
- When I'm asked to review branch T into branch B
- Then I need to know if branch T builds fine
+ When I'm asked to review branch F into branch B
+ Then I need to know if branch F builds fine
once merged into branch B (fresh results!)
And I should be notified of the results
And if the build succeeded
@@ -87,7 +83,7 @@ In the following scenario:
## Scenario 2 : developer
As a developer who has the commit bit
- When I'm working on branch T
+ When I'm working on branch F
Then I need to know if my branch builds after I've pushed
And I need to know if my branch build is broken by something else
possibly weeks after my last commit (by e.g Debian changes,
@@ -96,7 +92,7 @@ In the following scenario:
I might want to download the resulting ISO
I might want to get the pkg list
I want the Redmine ticket to be notified (optional)
- Otherwise if it fails I _need_ to see the build logs
+ Otherwise if it fails I *need* to see the build logs
And the developer who proposed the merge should be notified
And the ticket should be reassigned to the branch submitter
And QA check should be set to "Dev needed"
@@ -115,7 +111,7 @@ In the following scenario:
This list other scenarios not part of the first deployement iteration, but we
might want to consider it in the future.
-## Scenario 1
+## Scenario 10
As a Tails developer working on branch B
When I upload a package to APT suite B
@@ -125,7 +121,7 @@ might want to consider it in the future.
(acceptable workaround: being able to manually trigger a build.)
-## Scenario 2
+## Scenario 11
As the current RM
When I push new tag T on branch B
@@ -136,14 +132,14 @@ might want to consider it in the future.
And I want the squashfs sort file to be generated, and the diff sent to me
-## Scenario 3
+## Scenario 12
As a Tails developer
When the test suite is ran on the ISO build from my last commit
I want to watch TV and see the test video in HTML5 from Tor Browser
-## Scenario 4
+## Scenario 13
As a Tails developer
When an ISO is build from my last commit
diff --git a/wiki/src/blueprint/automated_builds_and_tests/autobuild_stats.mdwn b/wiki/src/blueprint/automated_builds_and_tests/autobuild_stats.mdwn
new file mode 100644
index 0000000..7a339bd
--- /dev/null
+++ b/wiki/src/blueprint/automated_builds_and_tests/autobuild_stats.mdwn
@@ -0,0 +1,688 @@
+[[!meta title="Past releases merge statistics"]]
+
+Here are the gathered rough statistics of branches merged during each
+Tails releases.
+
+[[!toc levels=2]]
+
+
+# Overview
+
+ - 0.10.1: 11
+ - 0.10.2: 4
+ - 0.11: 57
+ - 0.12: 39
+ - 0.12.1: 4
+ - 0.13: 25
+ - 0.14: 26
+ - 0.15: 23
+ - 0.16: 22
+ - 0.17: 20
+ - 0.17.2: 8
+ - 0.18: 27
+ - 0.19: 15
+ - 0.20: 20
+ - 0.20.1: 12
+ - 0.21: 33
+ - 0.22: 19
+ - 0.22.1: 13
+ - 0.23: 48
+ - 1.0: 0
+ - 1.0.1: 3
+ - 1.1: 62
+ - 1.1.1: 15
+ - 1.2: 34
+ - 1.2.1: 20
+ - 1.2.3: 11
+
+
+# Detail
+
+## 0.10.1
+
+ - bugfix/adblock_2.0.3
+ - bugfix/mat_0.2.2-2
+ - bugfix/monkeysphere_was_fixed
+ - bugfix/offline_security_check
+ - bugfix/oftc_onion
+ - bugfix/remote_ssh
+ - feature/more_resilient_htpdate
+ - feature/startpage_as_default
+ - feature/tordate
+ - feature/tordate
+ - feature/tordate
+
+## 0.10.2
+
+ - bugfix/build-with-iceweasel-10
+ - bugfix/disable_ssl_observatory
+ - feature/tordate
+ - origin/bugfix/noscript_on_local_files
+
+## 0.11
+
+ - 0.11-rc1
+ - bugfix/adblock_2.0.3
+ - bugfix/adduser-preseeding
+ - bugfix/build-with-iceweasel-10
+ - bugfix/debian-602973
+ - bugfix/disable-laptop-mode-auto-modules
+ - bugfix/disable_gdomap
+ - bugfix/dumb_git
+ - bugfix/ff10-esr
+ - bugfix/ff11
+ - bugfix/foxyproxy-vs-ff11
+ - bugfix/linux-3.2.0-2
+ - bugfix/mat_0.2.2-2
+ - bugfix/monkeysphere_was_fixed
+ - bugfix/offline_security_check
+ - bugfix/oftc_no_onion
+ - bugfix/oftc_onion
+ - bugfix/open-documentation-with-yelp
+ - bugfix/remote_ssh
+ - bugfix/time_sync_notification
+ - bugfix/time_sync_notification
+ - bugfix/torify-whois
+ - bugfix/unmute_alsa_speaker_channel
+ - bugfix/update-ca-for-security-check
+ - feature/backported_xorg
+ - feature/better_duckduckgo
+ - feature/better_duckduckgo
+ - feature/htpdate_hs_notification
+ - feature/iceweasel_start
+ - feature/iceweasel_start
+ - feature/more_languages
+ - feature/more_languages
+ - feature/more_languages
+ - feature/more_resilient_htpdate
+ - feature/more_search_engines
+ - feature/persistence
+ - feature/persistence
+ - feature/persistence
+ - feature/persistence
+ - feature/replace_tails-wifi_with_laptop-mode-tools
+ - feature/spice
+ - feature/startpage_as_default
+ - feature/tails-greeter
+ - feature/tails-greeter
+ - feature/tordate
+ - feature/tordate
+ - feature/tordate
+ - feature/tordate
+ - feature/tordate
+ - feature/usb_installer
+ - feature/usb_installer
+ - feature/usb_installer
+ - feature/vboxsf_group
+ - feature/whisperback
+ - feature/youtube_html5
+ - origin/bugfix/noscript_on_local_files
+ - origin/doc/experimental
+
+## 0.12
+
+ - bugfix/adduser-preseeding
+ - bugfix/boot-profile_vs_live-rofs
+ - bugfix/build-without-http_proxy
+ - bugfix/build-without-http_proxy
+ - bugfix/claws_vs_torsocks
+ - bugfix/debian-602973
+ - bugfix/iceweseal-10-sqlite-pinning
+ - bugfix/iceweseal-10-sqlite-pinning
+ - bugfix/iceweseal-10-sqlite-pinning
+ - bugfix/no-volumes-on-desktop
+ - bugfix/open-documentation-with-yelp
+ - bugfix/remove-undesired-search-plugins
+ - bugfix/remove_cryptkeeper
+ - bugfix/update-iceweasel-searchplugins-location
+ - feature/accessibility
+ - feature/dedup-usr-share-doc
+ - feature/i2p-0.9
+ - feature/install-rfkill
+ - feature/live-boot-3.x
+ - feature/mat
+ - feature/mat
+ - feature/persistence
+ - feature/persistence
+ - feature/persistence
+ - feature/persistence
+ - feature/tails-greeter
+ - feature/tails-greeter
+ - feature/tails-greeter
+ - feature/tails-plymouth-theme
+ - feature/torsocks
+ - feature/unsafe-browser
+ - feature/unsafe-browser
+ - feature/usb_installer
+ - feature/usb_installer
+ - feature/vagrant
+ - feature/virtualbox-4.1.10
+ - feature/whisperback
+ - origin/bugfix/writable_boot_media
+ - origin/feature/custom_boot_menu
+
+## 0.12.1
+
+ - bugfix/boot-profile_vs_live-rofs
+ - bugfix/iceweseal-10-sqlite-pinning
+ - bugfix/iceweseal-10-sqlite-pinning
+ - feature/mat
+
+## 0.13
+
+ - bugfix/claws-persistent-pop-email
+ - bugfix/clean_up_resolvconf
+ - bugfix/l10n_unsafe-browser
+ - bugfix/longer-whisperback-timeout
+ - bugfix/old-plymouth
+ - bugfix/plymouth-squeeze-backport
+ - bugfix/remove_ttdnsd_from_the_loop
+ - feature/do-not-build-the-forum
+ - feature/incremental-upgrades
+ - feature/live-boot-3.x
+ - feature/mat
+ - feature/mat
+ - feature/precompiled-locales
+ - feature/tails-greeter
+ - feature/use-upstream-ikiwiki
+ - feature/whisperback_16
+ - feature/wireless-regulation
+ - origin/bugfix/empty_NoScript_whitelist
+ - origin/bugfix/fix_slow_offline_documentation
+ - origin/bugfix/hide_TailsData_volume
+ - origin/bugfix/writable_boot_media
+ - origin/feature/firewall_lockdown
+ - origin/feature/more_whisperback_logs
+ - origin/feature/whisperback_16
+ - origin/feature/whisperback_16
+
+## 0.14
+
+ - 0.14-rc1
+ - bugfix/default_search_engines
+ - bugfix/longer-whisperback-timeout
+ - bugfix/make_paths_relative_in_syslinux
+ - feature/assymetric_gpgApplet
+ - feature/multikernel
+ - feature/persistence
+ - feature/persistent_NM_connections
+ - feature/persistent_NM_connections
+ - feature/separate_Tor_streams
+ - feature/torbrowser
+ - feature/unsafe-browser
+ - feature/usb_installer
+ - feature/use_ferm
+ - feature/vagrant
+ - origin/bugfix/fix_background_readahead
+ - origin/bugfix/fix_slow_offline_documentation
+ - origin/bugfix/iceweasel_file_associations
+ - origin/bugfix/tordate_vs_tor_0.2.3.x
+ - origin/feature/Tor_0.2.3
+ - origin/feature/catch_errors_in_hooks
+ - origin/feature/disable_pc_speaker
+ - origin/feature/early_skip_unwanted_packages
+ - origin/feature/japanese_input
+ - origin/feature/shutdown_cleanup
+ - origin/feature/whisperback_1.6.1
+
+## 0.15
+
+ - bugfix/i2p_console_bookmark
+ - bugfix/make_paths_relative_in_syslinux
+ - bugfix/monkeysphere_post_torbrowser
+ - bugfix/remove-cookies-exceptions
+ - feature/OpenPGP-SmartCard
+ - feature/apt-repository
+ - feature/dpkg-origin
+ - feature/nicer-fonts
+ - feature/obfsproxy
+ - feature/persistent_bookmarks
+ - feature/remove-pdnsd
+ - feature/remove-pdnsd
+ - feature/torbrowser
+ - mercedes508/testing
+ - origin/bugfix/bridge_mode_vs_tor_restarts
+ - origin/bugfix/gpgApplet_menu_in_bottom_panel
+ - origin/bugfix/handle_apt_sources_for_rc
+ - origin/bugfix/no-console-setup-on-X
+ - origin/bugfix/tordate_vs_tor_0.2.3.x
+ - origin/feature/hpijs
+ - origin/feature/korean_input
+ - origin/feature/obfsproxy
+ - origin/feature/obfsproxy
+
+## 0.16
+
+ - bugfix/cleanup-apt-pinning
+ - bugfix/disable-IPv6
+ - bugfix/scim-in-autostarted-iceweasel
+ - feature/ekeyd
+ - feature/hide-iceweasel-modules-bar
+ - feature/install-tasksel-standard-task
+ - feature/live-persist_guess_removable
+ - feature/news-as-homepage
+ - feature/persistent-directory-in-places
+ - feature/poedit-1.5
+ - feature/remove-fake-firegpg
+ - feature/remove-xul-ext-monkeysphere
+ - feature/sinhala-font
+ - mercedes508/testing
+ - origin/bugfix/bridge_mode_vs_tor_restarts
+ - origin/bugfix/gpgApplet_menu_in_bottom_panel
+ - origin/bugfix/handle_apt_sources_for_rc
+ - origin/bugfix/strict_live-persist_media
+ - origin/bugfix/tordate_vs_bridge_mode
+ - origin/feature/better_power_off_button
+ - origin/feature/just_hide_iceweasel_add-on_bar
+ - origin/feature/unsafe_browser_name
+
+## 0.17
+
+ - 0.16-rc1
+ - bugfix/disable-flawed-Pidgin-features
+ - bugfix/do_not_allow_listing_fonts
+ - feature/adblock-from-backports
+ - feature/live-persist_guess_removable
+ - feature/spell-checker
+ - feature/torbrowser
+ - mercedes508/testing
+ - origin/bugfix/disable-iceweasel-extensions-auto-update
+ - origin/bugfix/fix_default_iceweasel_spelling_language
+ - origin/bugfix/i2p_hidden_mode
+ - origin/bugfix/only-one-memlockd
+ - origin/bugfix/remove_apt_local_cache
+ - origin/bugfix/shutdown_with_camouflage
+ - origin/feature/gobi-loader
+ - origin/feature/install-password-manager
+ - origin/feature/live-boot-3.x
+ - origin/feature/newer-barry
+ - origin/feature/recent-microcode
+ - origin/feature/regular-gnupg-agent
+
+## 0.17.2
+
+ - bugfix/udisks-do-not-make-Tails-USB-unbootable
+ - bugfix/use-more-reliable-keyserver
+ - doc/test_suite
+ - feature/no-html5-click-to-play
+ - origin/bugfix/disable-indymedia-irc-account
+ - origin/bugfix/workaround-non-installable-xorg-backport
+ - origin/feature/are_you_using_tor_link
+ - origin/feature/automated_tests/cucumber
+
+## 0.18
+
+ - bugfix/disable-flawed-Pidgin-features
+ - bugfix/fix_iceweasel_prefs_for_0_18
+ - bugfix/non-obfsproxy_proxy
+ - bugfix/post-wheezy_pinning
+ - bugfix/preserve_pot_charset
+ - bugfix/udisks-do-not-make-Tails-USB-unbootable
+ - bugfix/use-more-reliable-keyserver
+ - bugfix/wheezy_was_released
+ - feature/debian_live_log_in_bugreports
+ - feature/enable-IPv6
+ - feature/gnome-screenshot
+ - feature/install_gnome-accessibility-themes
+ - feature/jenkins-compatible-build-script
+ - feature/jenkins-compatible-build-script
+ - feature/less_kernel_infoleak
+ - feature/no-html5-click-to-play
+ - feature/obfs3
+ - feature/remember_installed_packages
+ - feature/torbrowser
+ - feature/torbutton-1.5.x
+ - feature/wheezy-security_APT_source
+ - origin/bugfix/disable-indymedia-irc-account
+ - origin/feature/about_tails
+ - origin/feature/jenkins-compatible-build-script
+ - origin/feature/jenkins-compatible-build-script
+ - origin/feature/less_kernel_infoleak
+ - origin/feature/remember_installed_packages
+
+## 0.19
+
+ - bugfix/fix_iceweasel_prefs_for_0_18
+ - bugfix/gpgapplet_do_not_erase_clipboard
+ - bugfix/no_passwordless_sudo
+ - bugfix/wheezy_was_released
+ - feature/set-wireless-devices-state
+ - origin
+ - origin/bugfix/buggy_aufs_vs_unsafe-browser_workaround
+ - origin/bugfix/new_persistence_location
+ - origin/feature/better-controlled-gnupg-connections
+ - origin/feature/bilibop
+ - origin/feature/linux-3.8
+ - origin/feature/linux-3.9
+ - origin/feature/live-boot_3.0_final
+ - origin/feature/newer_virt-what
+ - origin/feature/remove_gnome_proxy_settings
+
+## 0.20
+
+ - bugfix/fr-po-header
+ - bugfix/fr-po-header
+ - bugfix/no_passwordless_sudo
+ - feature/install-dasher
+ - feature/intltoolize
+ - feature/linux-3.10-1
+ - feature/truecrypt_deprecation_wrapper
+ - mercedes508/devel
+ - origin/bugfix/buggy_aufs_vs_unsafe-browser_workaround
+ - origin/bugfix/dont-warn-when-leaving-https
+ - origin/bugfix/localized-iceweasel-search-engine
+ - origin/bugfix/new_persistence_location
+ - origin/doc/better-pidgin-and-otr-documentation
+ - origin/feature/alsa-info-in-bug-reports
+ - origin/feature/disable_Pidgin_accounts
+ - origin/feature/jenkins-compatible-build-script
+ - origin/feature/less-pidgin-code
+ - origin/feature/less-pidgin-code
+ - origin/feature/remember_installed_packages
+ - origin/feature/restrict-access-to-ptrace
+
+## 0.20.1
+
+ - bugfix/fix_packages_impossible_to_install
+ - bugfix/unmount-persistent-volume-on-shutdown
+ - feature/consistent-peristence-path
+ - feature/linux-3.10-1
+ - feature/linux-3.10.11
+ - feature/tor-0.2.4
+ - origin/bugfix/additional-software-upgrade-failed-message
+ - origin/bugfix/i2p-irc-in-pidgin
+ - origin/feature/More_uniq_built_iso_name_in_jenkins
+ - origin/feature/tails-bugs
+ - origin/feature/tails-bugs
+ - origin/test/fix-iso-reporting
+
+## 0.21
+
+ - bugfix/browser-resizing
+ - bugfix/fix_packages_impossible_to_install
+ - bugfix/safer-persistence
+ - bugfix/unmount-persistent-volume-on-shutdown
+ - bugfix/world-readable-persistence-state-file
+ - feature/Debian-proposed-updates
+ - feature/GnuPG-no-emit-version
+ - feature/consistent-peristence-path
+ - feature/consistent-peristence-path
+ - feature/keepassx_launcher
+ - feature/linux-3.10.11
+ - feature/linux-3.10.11
+ - feature/linux-3.10.11
+ - feature/liveusb_ui_improvement
+ - feature/persistent_printers
+ - feature/persistent_printers
+ - feature/same-startpage-custom-url-as-tbb
+ - feature/sdio
+ - feature/stronger-gnupg-cipher
+ - feature/tor-0.2.4
+ - origin/bugfix/additional-software-upgrade-failed-message
+ - origin/bugfix/i2p-irc-in-pidgin
+ - origin/bugfix/safer-persistence
+ - origin/doc/improve_bug_reporting_workflow
+ - origin/feature/More_uniq_built_iso_name_in_jenkins
+ - origin/feature/Sign_jenkins_builds_artifacts
+ - origin/feature/Sign_jenkins_builds_artifacts
+ - origin/feature/sdio
+ - origin/feature/simplify_ikiwiki_setup
+ - origin/security/vidalia_in_its_own_user
+ - security/vidalia_in_its_own_user
+ - security/vidalia_in_its_own_user
+ - test/fix-detection-of-used-display
+
+## 0.22
+
+ - bugfix/6468-disable-webrtc
+ - bugfix/back-to-linux-3.10
+ - bugfix/browser-resizing
+ - bugfix/safer-persistence
+ - bugfix/world-readable-persistence-state-file
+ - d62bf4c81273e91c9155c39373f6462b0acacbdf
+ - feature/incremental-upgrades
+ - feature/perl5lib
+ - origin/bugfix/additional-software-nitpicking
+ - origin/bugfix/disable-dpms
+ - origin/bugfix/fix-tag-existence-detection
+ - origin/bugfix/safer-persistence
+ - origin/bugfix/safer-persistence
+ - origin/bugfix/vidalia_fails_to_start
+ - origin/feature/ff24
+ - origin/feature/linux-3.11-2
+ - origin/feature/sdio
+ - winterfairy/bugfix/ibus
+ - winterfairy/feature/import-translations
+
+## 0.22.1
+
+ - bugfix/6477-htpdate-user-agent
+ - bugfix/6536-IE-icon-in-Windows-camouflage-mode
+ - bugfix/use-our-own-sqlite
+ - davidiw/bugfix
+ - feature/dont_autostart_iceweasel
+ - feature/incremental-upgrades-integration
+ - feature/linux-3.12
+ - feature/torbrowser-24.2.0esr-1+tails1
+ - feature/torbrowser-24.2.0esr-1+tails1
+ - origin/bugfix/6377-workaround-for-window-size
+ - origin/bugfix/6478
+ - origin/bugfix/6612-spanish-homepage
+ - origin/bugfix/fix-tag-existence-detection
+
+## 0.23
+
+ - bugfix/6390-dont-include-APT-lists-and-cache-in-the-ISO
+ - bugfix/6477-htpdate-user-agent
+ - bugfix/6536-IE-icon-in-Windows-camouflage-mode
+ - bugfix/6592-fix-races-with-check-for-upgrades
+ - bugfix/back-to-linux-3.10
+ - bugfix/linux-kbuild-3.12-from-testing
+ - bugfix/tails-documentation-launcher
+ - bugfix/unsafe-browser-vs.-FF24
+ - bugfix/use-our-own-sqlite
+ - drwhax/pidgin
+ - feature/6508-incremental-upgrades-phase-four
+ - feature/6661-pidgin-2.10.9
+ - feature/6790-remove-cookie-monster
+ - feature/amd64-kernel
+ - feature/better-iso-cleanup
+ - feature/cleanup-ikiwiki-setup
+ - feature/create-additional-software-config
+ - feature/disable-mei
+ - feature/incremental-upgrades
+ - feature/linux-3.12
+ - feature/linux-3.12-devel
+ - feature/monkeysign
+ - feature/pidgin-2.10
+ - feature/poedit-from-backports
+ - feature/spoof-mac
+ - feature/spoof-mac
+ - feature/torbrowser-24.2.0esr-1+tails1
+ - feature/torbrowser-24.2.0esr-1+tails1
+ - feature/torbutton-1.6.5.3
+ - killyourtv/bugfix/new-i2p-site
+ - mercedes508/testing
+ - origin/bugfix/6377-workaround-for-window-size
+ - origin/bugfix/6478
+ - origin/bugfix/6612-spanish-homepage
+ - origin/feature/5588-no-autologin-consoles
+ - origin/feature/bridge-mode
+ - origin/feature/monkeysign
+ - origin/feature/spoof-mac
+ - origin/test/sniffer-vs-mac-spoof
+ - test/5959-antitest-memory-erasure
+ - test/dont_autostart_iceweasel
+ - test/fix-persistence-checks
+ - test/keep-volumes-tag
+ - test/rjb-migration
+ - test/tor-is-ready-notification
+ - winterfairy/bugfix/allow-ibus-start
+ - winterfairy/bugfix/torbutton-new-identity
+ - winterfairy/feature/import-translations-extern
+
+## 1.0
+
+## 1.0.1
+
+ - feature/linux-3.14-in-squeeze
+ - feature/squeeze-lts-updates
+ - origin/feature/linux-3.14-in-squeeze
+
+## 1.1
+
+ - bugfix/7065-keyboard-localization
+ - bugfix/7126-gdm-background
+ - bugfix/7344-double-click-in-tails-greeter
+ - bugfix/7345-upgrade-from-iso-from-1.0-to-1.1
+ - bugfix/7345-upgrade-from-iso-from-1.0-to-1.1
+ - bugfix/7443-persistent-files-permission
+ - bugfix/i2p_incoming
+ - doc/wheezy
+ - feature/6342-update-camouflage-for-gnome3
+ - feature/6608-OpenPGP-signature-verification-in-Nautilus
+ - feature/linux-3.13
+ - feature/linux-3.14
+ - feature/torbrowser-24.6.0esr-0+tails1
+ - feature/uefi
+ - origin/bugfix/7055-drop-default-APT-release
+ - origin/bugfix/7065-keyboard-localization
+ - origin/bugfix/7079-shared-mime-info-1.3
+ - origin/bugfix/7166-vagrant-memory-checks
+ - origin/bugfix/7175-openjdk-7
+ - origin/bugfix/7234-zenity-dialog-height
+ - origin/bugfix/7248-bg-color-vs-display-settings-change
+ - origin/bugfix/7251-orca
+ - origin/bugfix/7279-Florence-font
+ - origin/bugfix/7285-browse-doc-with-iceweasel
+ - origin/bugfix/7330-disable-gnome-keyring-gpg-functionality
+ - origin/bugfix/7333-emergency-shutdown-before-login
+ - origin/bugfix/7336-no-dselect
+ - origin/bugfix/7337-purge-iproute2
+ - origin/bugfix/7338-migrate-nm-persistence-setting
+ - origin/bugfix/7343-static-uids
+ - origin/bugfix/7473-unsafe-browser-theme
+ - origin/bugfix/7594-remove-unsafe-browser-bookmarks
+ - origin/bugfix/7605-fix-emulator-path
+ - origin/bugfix/7641-iuk-chdir-vs-stricter-home-amnesia-permissions
+ - origin/bugfix/fix-vagrant-compatibility-issues
+ - origin/bugfix/fix_virtualbox_dkms_build
+ - origin/bugfix/fix_virtualbox_dkms_build
+ - origin/bugfix/looser-memory-requirements-for-upgrades-check
+ - origin/bugfix/use-Wheezy-repo-for-debian-mozilla
+ - origin/bugfix/vagrant-ram-bump-for-wheezy
+ - origin/doc/7216-persistence-backup-permissions
+ - origin/doc/7280-VirtualBox-vs-syslinux-6
+ - origin/doc/7590-known-issues
+ - origin/doc/office
+ - origin/doc/sensitive_documents
+ - origin/doc/wheezy
+ - origin/doc/wheezy
+ - origin/doc/wheezy
+ - origin/doc/wheezy
+ - origin/feature/6342-update-camouflage-for-gnome3
+ - origin/feature/6342-update-camouflage-for-gnome3
+ - origin/feature/6763-include-nautilus-gtkhash
+ - origin/feature/7096-integrate-the-new-logo-in-about-tails
+ - origin/feature/7425-ship-win32-syslinux
+ - origin/feature/7479-disable-proxy-protocol-handler
+ - origin/feature/mat-0.5.2
+ - origin/feature/tor-launcher-0.2.5.4
+ - origin/feature/torbrowser-24.5.0esr-1+tails1
+ - origin/feature/torbutton-1.6.9.0
+ - origin/feature/uefi
+ - seb35/doc
+ - test/6559-adapt-test-suite-for-Wheezy
+
+## 1.1.1
+
+ - bugfix/6372-squashfs-sort-file-update
+ - bugfix/7060-use-gnome-run-dialog-less
+ - bugfix/7618-gnome-help
+ - bugfix/7657-fix-security-check
+ - feature/linux-3.14-2
+ - feature/vagrant-wheezy-basebox
+ - kytv/feature/i2p-bootparam
+ - kytv/feature/i2p-disable-bob
+ - origin/bugfix/7636-printers-configuration
+ - origin/bugfix/7688-no-dhcp-send-hostname
+ - origin/bugfix/7807-remove-duplicate-openjdk-jre
+ - origin/doc/i2p
+ - origin/feature/7705-smaller-squashfs
+ - origin/test/7712-hostname-leaks
+ - origin/test/7760-i2p-toggled-via-boot-parameter
+
+## 1.2
+
+ - bugfix/7345-upgrade-from-iso-from-1.0-to-1.1
+ - bugfix/8038-remove-useless-iceweasel-apt-pinning
+ - feature/5373-replace-truecrypt
+ - feature/5648-dont-set-torbutton-environment-globally
+ - feature/7668-simplify-IPv6-firewall-rules
+ - feature/7730-remove-expired-pidgin-certs
+ - feature/7732-i2p-network-manager-hook
+ - feature/8031-refactor-10-rbb-hook
+ - feature/8100-linux-3.16.5-1
+ - feature/linux-3.16-2
+ - feature/tor-browser-bundle
+ - killyourtv/feature/7916-i2p_remove_ssl_outproxy
+ - killyourtv/feature/7952-hide-tbb-health-and-get-addons-in-unsafe-browser
+ - origin/bugfix/7173-upgrade-syslinux
+ - origin/bugfix/8035-remove-branding-extension-in-unsafe-browser
+ - origin/bugfix/8036-workaround-for-localized-searchplugins
+ - origin/bugfix/8037-install-localized-wikipedia-searchplugins
+ - origin/bugfix/8057-translatable-tor-browser-desktop-file
+ - origin/bugfix/8060-fix-default-search-engine
+ - origin/bugfix/better-error-reporting
+ - origin/feature/5730-enable-virtualbox-guest-additions
+ - origin/feature/6579-disable-tcp-timestamps
+ - origin/feature/7356-visible-otr-status
+ - origin/feature/7461-persistence.conf-in-whisperback
+ - origin/feature/7886-linux-3.16
+ - origin/feature/8031-refactor-10-rbb-hook
+ - origin/feature/Debian-proposed-updates
+ - origin/feature/apparmor
+ - origin/feature/apparmor
+ - origin/feature/monkeysign
+ - origin/feature/tor-0.2.5.x-alpha
+ - origin/feature/tor-browser-bundle
+ - origin/test/7231-uefi-boot
+ - test/7804-test-unit-assertions
+
+## 1.2.1
+
+ - bugfix/8189-intel-microcode-v3
+ - feature/Debian-proposed-updates
+ - feature/tor-browser-4.0.2
+ - feature/vagrant-gettext-from-wheezy-backports
+ - origin/bugfix/7945-directories-in-boot-profile
+ - origin/bugfix/8139-install-more-loxalized-searchplugins
+ - origin/bugfix/8153-set-gnome-browser-mime-types
+ - origin/bugfix/8155-get-isohybrid-back
+ - origin/bugfix/8158-stacked-rootfs-vs-chroot-browsers
+ - origin/bugfix/8160-restrict-tor-browser-logging
+ - origin/bugfix/8186-pidgin-http-links
+ - origin/bugfix/8189-intel-microcode-v3
+ - origin/feature/7416-gnupg-socks
+ - origin/feature/7512-Make-GnuPG-config-closer-to-duraconf-reworked
+ - origin/feature/7740-remove-truecrypt
+ - origin/feature/8028-remove-unsafe-browser-test-menu-workaround
+ - origin/feature/linux-3.16.0-4
+ - origin/test/8059-more-robust-windows-systray
+ - origin/test/8140-more-robust-apps-menu
+ - origin/test/8161-more-robust-pidgin-connected
+
+## 1.2.3
+
+ - bugfix/7644-remove-mounted-image-from-vagrant-build-box
+ - bugfix/8571-fix-mac-spoof-panic-mode
+ - bugfix/8693-fix-tor-browser-locale-guessing
+ - bugfix/handle-website-CA-change
+ - bugfix/handle-website-CA-change
+ - feature/Debian-proposed-updates
+ - matsa/bugfix/8071-Do-not-suspend-to-RAM-when-closing-lid
+ - matsa/bugfix/8087-gnome-screenshot-save-to-home-folder
+ - origin/bugfix/8449-iuk-install-robustness
+ - origin/bugfix/handle-website-CA-change
+ - origin/test/8359-check-po
+
diff --git a/wiki/src/blueprint/evaluate_Docker.mdwn b/wiki/src/blueprint/evaluate_Docker.mdwn
index bed80d1..f991006 100644
--- a/wiki/src/blueprint/evaluate_Docker.mdwn
+++ b/wiki/src/blueprint/evaluate_Docker.mdwn
@@ -38,6 +38,53 @@ API stability and backwards-compatibility
behavior ["will be
preserved"](https://docs.docker.com/reference/builder/#environment-replacement).
+Image creation and maintenance
+==============================
+
+This is about [[!tails_ticket 7533]]. That's Docker's equivalent of
+Vagrant's basebox.
+
+The Debian images' creation process has been [described by Joey
+Hess](http://joeyh.name/blog/entry/docker_run_debian/). They are built
+with <https://github.com/tianon/docker-brew-debian.git>, which itself
+uses
+[`mkimage.sh`](https://github.com/docker/docker/blob/master/contrib/mkimage.sh).
+There are `rootfs.tar.xz` files in the former repository.
+
+The [[!debwiki Cloud/CreateDockerImage]] Debian wiki page documents
+how to use only stuff shipped in Debian to create a Debian image with
+a single command. That's presumably what we should do.
+
+See also <https://docs.docker.com/articles/baseimages/>.
+
+Do we want to:
+
+1. Let the build system build and maintain its own images on the
+ developer's system, the same way we would do it if we were
+ publishing our images?
+1. Produce and publish these images automatically, e.g.
+ daily or weekly?
+1. Build them locally and then upload? If so, who would do it,
+ and when?
+
+Do something different for our base images (e.g. Debian Wheezy)
+from we do for the specialized containers (e.g. ISO builder)?
+
+Image publication
+=================
+
+By default, Docker downloads images from the [Docker Hub
+Registry](https://registry.hub.docker.com/). If we want to publish our
+images, of course we want to self-host them somehow.
+
+One can [run their own
+registry](https://github.com/docker/docker-registry):
+
+ * [specs](https://docs.docker.com/reference/api/hub_registry_spec/)
+
+Or, one can use `docker save` an image or `docker export` a container,
+and then use `docker load` or `docker import`.
+
Random notes
============
@@ -77,7 +124,17 @@ Test run
make
* `TAILS_BUILD_OPTIONS="noproxy"` => run [apt-cacher-ng in a different
- container](https://docs.docker.com/examples/apt-cacher-ng/)
+ container](https://docs.docker.com/examples/apt-cacher-ng/);
+ - [Linking these containers
+ together](https://docs.docker.com/userguide/dockerlinks/) would
+ allow to expose apt-cacher-ng's port only to our build container;
+ OTOH some of us will want to use the same apt-cacher-ng instance for
+ other use cases
+ - Docker will [have container
+ groups](https://github.com/docker/docker/issues/9694) at some
+ point, but we're not there yet; in the meantime, there are
+ [crane](https://github.com/michaelsauter/crane) and
+ [Fig](http://www.fig.sh/)
* Even with `--cache false`, some directories (`chroot`, `cache`) are
saved and retrieved from the container upon shutdown; same for
live-config -generated `config/*` files. That's because the current
@@ -90,7 +147,7 @@ Test run
artifacts shall be copied
* We're currently using the `debian:wheezy` template, that likely we
should not trust. How should we build, maintain, publish and use
- our own?
+ our own? That's [[!tails_ticket 7533]].
* Being in the `docker` group is basically equivalent to having full
root access. Do we want to encourage contributors to do that, or
to run `docker` commands with `sudo`, or to use Docker in
diff --git a/wiki/src/blueprint/replace_Pidgin.mdwn b/wiki/src/blueprint/replace_Pidgin.mdwn
index 88e4020..a17f69c 100644
--- a/wiki/src/blueprint/replace_Pidgin.mdwn
+++ b/wiki/src/blueprint/replace_Pidgin.mdwn
@@ -4,17 +4,45 @@ It would be nice to replace Pidgin with another secure IM client. Unfortunately
The document can also list candidate clients together with some indication where they are lacking (and where they shine).
-# Requirements
+TODO: Would a pair of two separate client (XMPP and IRC) also be okay, or are we only looking for a single client that can do both?
+# Requirements
## General requirements
-### Tor
+### Documentation
-### OTR support
+### Internationalization
-## XMPP (Jabber)
+The client must be internationalized, ideally already translated in many languages - if not, adding new languages should be easy.
+
+### GUI
+
+The client must have a easy to use GUI that makes it hard for users to use the client in an insecure way.
+
+### TLS
+
+The client must support connections using TLS.
+
+TODO: Is STARTTLS needed?
+### Support for Tor
+
+The client must support Tor and must not leak any private data (hostname, username, local IP, ...) at the application level.
+
+### Support for OTR
+
+The client must support OTR and should make it easy to enforce usage of OTR for all conversations or only for specific contacts.
+
+Ideally, some usability study for the OTR user interface has been done.
+
+### Other
+
+TODO: Pidgin already has an apparmor profile; should we require that a replacement also comes with an apparmor profile?
+
+## XMPP (Jabber)
## IRC
+### SASL
+The client must support SASL authentication.
# Candidate alternatives
diff --git a/wiki/src/blueprint/report_2015_01-02.mdwn b/wiki/src/blueprint/report_2015_01-02.mdwn
new file mode 100644
index 0000000..7da83a8
--- /dev/null
+++ b/wiki/src/blueprint/report_2015_01-02.mdwn
@@ -0,0 +1,85 @@
+[[!meta title="Tails report for January and February, 2015"]]
+
+[[Help have a Windows camouflage in Tails Jessie!|news/windows_camouflage_jessie]]
+
+[[Who are you helping when donating to Tails?|news/who_are_you_helping]]
+
+[[code of conduct|contribute/working_together/code_of_conduct]]
+
+Releases
+========
+
+* [[Tails 1.2.3 was released on January 15, 2015.|news/version_1.2.3]]
+* Tails 1.3 was released on February 24, 2015.
+
+Metrics
+=======
+
+In January:
+
+* Tails has been started more than 356 292 times in January. This makes 11 493 boots a day in average.
+* 27 617 downloads of the OpenPGP signature of Tails ISO from our website.
+* 108 bug reports were received through WhisperBack.
+
+In February:
+
+* Tails has been started more than FIXME times in February. This makes FIXME boots a day in average.
+* FIXME downloads of the OpenPGP signature of Tails ISO from our website.
+* FIXME bug reports were received through WhisperBack.
+
+Code
+====
+
+* hybrid isos!
+* electrum bitcoin client
+* default touchpad settings
+* remove polipo
+*
+
+Documentation and website
+=========================
+
+Quite some new doc (and not only by me ;)
+
+Translation and internationalization
+====================================
+
+All website PO files FIXME
+--------------------
+
+ - de: 11% (613) strings translated, +36 since May
+ - fr: 48% (2576) strings translated, +19 since May
+ - pt: 36% (1953) strings translated, +704 since May
+
+[[Core PO files|contribute/l10n_tricks/core_po_files.txt]]
+----------------------------------------------------------
+
+ - de: 26% (338) strings translated, +31 since May
+ - fr: 95% (1207) strings translated, -5 since May
+ - pt: 99% (1257) strings translated, +488 since May
+
+
+Infrastructure
+==============
+
+FIXME Our test suite covers 87 scenarios, 3 more that in May.
+
+* Lots of automatic tests!
+* New certificate in 1.2.3, new signing key in 1.3
+
+On-going discussions
+====================
+
+New greeter design.
+
+Funding
+=======
+
+Outreach
+========
+
+FOSDEM,...
+
+Press & Testimonials
+====================
+
diff --git a/wiki/src/blueprint/report_end_of_2014.mdwn b/wiki/src/blueprint/report_end_of_2014.mdwn
new file mode 100644
index 0000000..74e2eb0
--- /dev/null
+++ b/wiki/src/blueprint/report_end_of_2014.mdwn
@@ -0,0 +1,77 @@
+[[!meta title="Tails report from August to December 2014"]]
+
+As you might have noticed, [[the last monthly report|news/report_2014_06-07]] was a long time ago, because the people who were doing them had really no time left. Somebody new finally takes over, let's hope it lasts :)
+
+So, here is a minimal report for the second half of 2014, the next ones will be more complete.
+
+Releases
+========
+
+* [[Tails 1.1.1 was released on September 2, 2014.|news/version_1.1.1]] (minor release)
+* [[Tails 1.2 was released on October 14, 2014.|news/version_1.2]] (major release)
+* [[Tails 1.2.1 was released on December 3, 2014.|news/version_1.2.1]] (minor release)
+* [[Tails 1.2.2 was released on December 15, 2014.|news/version_1.2.2]] (special minor release for security reasons)
+
+Code
+====
+
+For details, see each release announce. Notable changes include:
+
+* 1.1.1: [[I2P|doc/anonymous_internet/i2p]] now needs to be enabled with a boot option. We made this choice after [[a security hole affected I2P|security/Security_hole_in_I2P_0.9.13]] ; this problem is now fixed, but if any other is discovered in the future, it won't affect Tails users who don't use I2P.
+
+* 1.2: [[Tor Browser|doc/anonymous_internet/Tor_Browser]] replaces the previous Firefox + Torbutton setup. This allows us to work more closely with Tor people and provide a more unified experience to the user.
+
+Several major applications are [[confined with AppArmor|contribute/design/application_isolation]]. This improves the overall security provided by Tails, and AppArmor work is going on to confine more applications :)
+
+* 1.2.1: finally remove [[TrueCrypt|doc/encryption_and_privacy/truecrypt]]. It was abandonned upstream since a long time, and it's safer to use maintained, reviewed encryption methods, like [[LUKS|doc/encryption_and_privacy/encrypted_volumes]] (that's what the [[persistence|doc/first_steps/persistence]] uses). You can still open your TrueCrypt volumes, but we recommand you switch to LUKS volumes as soon as possible.
+
+Funding
+=======
+
+sponsor Romeo FIXME
+
+Outreach
+========
+
+Some of Tails contributors were present in Hamburg during the [31C3](https://events.ccc.de/category/31c3/), and we held a Tails table where many people came to ask questions, get a Tails installed, start to contribute or just say thank you. We even had some origami folding moments :)
+
+Press & Testimonials
+====================
+
+For more information concerning the second half of 2014, see [[our press page|press]].
+
+* 2014-12-29: In [Reconstructive narratives](http://media.ccc.de/browse/congress/2014/31c3_-_6258_-_en_-_saal_1_-_201412282030_-_reconstructing_narratives_-_jacob_-_laura_poitras.html#video) at the 31th Chaos Communication Congress, Jacob Appelbaum and Laura Poitras explained that properly implemented encryption technologies such as Tor, Tails, GnuPG, OTR, and RedPhone are some of the only ones that can blind the pervasive surveillance of the NSA. They are rated as "catastrophic" by the NSA itself.
+* Tails is being used in the film [Citizenfour](https://citizenfourfilm.com/) by Laura Poitras and appears in the credits.
+
+Metrics
+=======
+
+In August 2014:
+
+* Tails has been started more than 287 156 times in August. This makes 9 263 boots a day in average.
+* 19 910 downloads of the OpenPGP signature of Tails ISO from our website.
+* 110 bug reports were received through WhisperBack.
+
+In September 2014:
+
+* Tails has been started more than 344 639 times in September. This makes 11 488 boots a day in average.
+* 26 311 downloads of the OpenPGP signature of Tails ISO from our website.
+* 102 bug reports were received through WhisperBack.
+
+In October 2014:
+
+* Tails has been started more than 364 727 times in October. This makes 11 765 boots a day in average.
+* 27 342 downloads of the OpenPGP signature of Tails ISO from our website.
+* 160 bug reports were received through WhisperBack.
+
+In November 2014:
+
+* Tails has been started more than 337 962 times in November. This makes 11 265 boots a day in average.
+* 21 301 downloads of the OpenPGP signature of Tails ISO from our website.
+* 74 bug reports were received through WhisperBack.
+
+In December 2014:
+
+* Tails has been started more than 347 669 times in December. This makes 11 215 boots a day in average.
+* 26 549 downloads of the OpenPGP signature of Tails ISO from our website.
+* 91 bug reports were received through WhisperBack.
diff --git a/wiki/src/contribute/calendar.mdwn b/wiki/src/contribute/calendar.mdwn
index 852cf02..2d3e45d 100644
--- a/wiki/src/contribute/calendar.mdwn
+++ b/wiki/src/contribute/calendar.mdwn
@@ -1,19 +1,5 @@
[[!meta title="Calendar"]]
-* 2015-02-03: [[Monthly meeting|contribute/meetings]]
-
-* 2015-02-11:
- - Feature freeze for Tails 1.3.
- - Translation window starts for Tails 1.3.
- - Build and upload Tails 1.3~rc1 ISO image and IUKs.
- - Start testing Tails 1.3~rc1 during late CET?
-
-* 2015-02-12:
- - Finish testing Tails 1.3~rc1 by the afternoon, CET.
- - Release Tails 1.3~rc1 during late CET.
-
-* 2015-02-12: [[Low-hanging fruits session|contribute/low-hanging_fruit_sessions]]
-
* 2015-02-23:
- All translations and bug fixes targeting Tails 1.3 must be merged
into the 'testing' branch.
diff --git a/wiki/src/contribute/how/donate.de.po b/wiki/src/contribute/how/donate.de.po
index c0b8812..ba351ff 100644
--- a/wiki/src/contribute/how/donate.de.po
+++ b/wiki/src/contribute/how/donate.de.po
@@ -6,10 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-09-22 12:27+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2015-01-25 16:15-0000\n"
"Last-Translator: Tails developers <tails@boum.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
diff --git a/wiki/src/contribute/release_process/test.mdwn b/wiki/src/contribute/release_process/test.mdwn
index 70590eb..9bb3090 100644
--- a/wiki/src/contribute/release_process/test.mdwn
+++ b/wiki/src/contribute/release_process/test.mdwn
@@ -155,8 +155,8 @@ tracked by tickets prefixed with `todo/test_suite:`.
* Check mail over IMAP using:
- a "clearnet" IMAP server.
- - a hidden service IMAP server (e.g. TorMail, jhiwjjlqpyawmpjx.onion, or
- Riseup, zsolxunfmbfuq7wf.onion with SSL).
+ - a hidden service IMAP server (e.g. Riseup, zsolxunfmbfuq7wf.onion
+ with SSL).
* Send an email using:
- a "clearnet" SMTP server.
- a hidden service SMTP server (see above).
diff --git a/wiki/src/contribute/release_process/test/usage.mdwn b/wiki/src/contribute/release_process/test/usage.mdwn
index 1535360..cd75f23 100644
--- a/wiki/src/contribute/release_process/test/usage.mdwn
+++ b/wiki/src/contribute/release_process/test/usage.mdwn
@@ -1,5 +1,10 @@
[[!meta title="Running the automated test suite"]]
+[[!toc levels=1]]
+
+Basic usage
+===========
+
Use the `run_test_suite` script found in the Tails source root to run
all automated Cucumber test features. See the [[setup
documentation|test/setup]] in case you don't have a testing
@@ -31,3 +36,42 @@ For full instructions, see its `--help`.
Note: since the test suite itself uses `virt-viewer` to interact with
the Tails guest you cannot use it as that will steal the session from
the test suite, leaving it with a blank screen.
+
+Configuration
+=============
+
+The test suite can be configured in the following ways:
+
+1. `run_test_suite` parameters, which takes precedence over
+
+2. the local configuration file `features/config/local.yml`, which
+takes precedence over
+
+3. the default configuration file `features/config/defaults.yml`.
+
+However, some values are treated as secrets and have no
+defaults. These secrets are generally information about online sevices
+to be used in certain features, like host, port and credentials --
+stuff we don't want to make public. These must be set explicitly in
+order for those features to run.
+
+Here's a list of all non-secret key-value pairs that can be supported
+by the local configuration file:
+
+* `DEBUG`: Boolean value. If set to `true`, various debugging info
+ will be printed. Defaults to `false`.
+
+* `PAUSE_ON_FAIL`: Boolean value. If set to `true`, the test suite run
+ is suspended on failure until ENTER is pressed. This is useful for
+ investigating the state of the VM guest to see exactly why a test
+ failed. Defaults to `false`.
+
+* `SIKULI_RETRY_FINDFAILED`: Boolean value. If set to `true`, print a
+ warning whenever Sikuli fails to find an image and allow *one* retry
+ after pressing ENTER. This is useful for updating outdated images,
+ or when extracting new images. Defaults to `false`.
+
+* `TEMP_DIR`: String value. Directory where various temporary files
+ are written during a test, e.g. VM snapshots and memory dumps,
+ failure screenshots, pcap files and disk images. Defaults to
+ `"/tmp/TailsToaster"`.
diff --git a/wiki/src/contribute/working_together/roles/sysadmins.mdwn b/wiki/src/contribute/working_together/roles/sysadmins.mdwn
index e98c5c1..5a70e86 100644
--- a/wiki/src/contribute/working_together/roles/sysadmins.mdwn
+++ b/wiki/src/contribute/working_together/roles/sysadmins.mdwn
@@ -119,11 +119,15 @@ We use Redmine tickets for public discussion and tasks management:
## git-annex
-* purpose: host the full history of Tails released images
+* purpose: host the full history of Tails released images and Tor
+ Browser tarballs
* access: Tails core developers only
* tools: [[!debpts git-annex]]
-* configuration: `tails::gitolite` class in [[!tails_gitweb_repo
- puppet-tails]]
+* configuration:
+ - `tails::git_annex` and `tails::gitolite` classes in
+ [[!tails_gitweb_repo puppet-tails]]
+ - `tails::git_annex::mirror` defined resource in
+ [[!tails_gitweb_repo puppet-tails]]
## Jenkins
diff --git a/wiki/src/doc/about/features.fr.po b/wiki/src/doc/about/features.fr.po
index 50b35fc..3ae1952 100644
--- a/wiki/src/doc/about/features.fr.po
+++ b/wiki/src/doc/about/features.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2015-01-18 11:01-0000\n"
"Last-Translator: \n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/doc/anonymous_internet.index.fr.po b/wiki/src/doc/anonymous_internet.index.fr.po
index 778f63d..765bc7c 100644
--- a/wiki/src/doc/anonymous_internet.index.fr.po
+++ b/wiki/src/doc/anonymous_internet.index.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: SACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2014-05-10 20:35-0000\n"
"Last-Translator: \n"
"Language-Team: SLANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/doc/anonymous_internet/Tor_Browser.fr.po b/wiki/src/doc/anonymous_internet/Tor_Browser.fr.po
index 7439e3b..abbc77a 100644
--- a/wiki/src/doc/anonymous_internet/Tor_Browser.fr.po
+++ b/wiki/src/doc/anonymous_internet/Tor_Browser.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2015-01-18 10:51-0000\n"
"Last-Translator: amnesia <amnesia@boum.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/doc/anonymous_internet/electrum.de.po b/wiki/src/doc/anonymous_internet/electrum.de.po
index f89d0dc..5050cb5 100644
--- a/wiki/src/doc/anonymous_internet/electrum.de.po
+++ b/wiki/src/doc/anonymous_internet/electrum.de.po
@@ -47,7 +47,6 @@ msgid "You can sign transactions from an offline working session."
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "<div class=\"caution\">\n"
msgstr ""
@@ -61,7 +60,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/anonymous_internet/electrum.fr.po b/wiki/src/doc/anonymous_internet/electrum.fr.po
index f89d0dc..5050cb5 100644
--- a/wiki/src/doc/anonymous_internet/electrum.fr.po
+++ b/wiki/src/doc/anonymous_internet/electrum.fr.po
@@ -47,7 +47,6 @@ msgid "You can sign transactions from an offline working session."
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "<div class=\"caution\">\n"
msgstr ""
@@ -61,7 +60,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/anonymous_internet/electrum.pt.po b/wiki/src/doc/anonymous_internet/electrum.pt.po
index f89d0dc..5050cb5 100644
--- a/wiki/src/doc/anonymous_internet/electrum.pt.po
+++ b/wiki/src/doc/anonymous_internet/electrum.pt.po
@@ -47,7 +47,6 @@ msgid "You can sign transactions from an offline working session."
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "<div class=\"caution\">\n"
msgstr ""
@@ -61,7 +60,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/anonymous_internet/vidalia.fr.po b/wiki/src/doc/anonymous_internet/vidalia.fr.po
index 427faab..ec46ff2 100644
--- a/wiki/src/doc/anonymous_internet/vidalia.fr.po
+++ b/wiki/src/doc/anonymous_internet/vidalia.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-10-15 18:40+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2014-05-11 13:23-0000\n"
"Last-Translator: amnesia <amnesia@boum.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -95,11 +95,6 @@ msgstr ""
#. type: Plain text
#, no-wrap
-#| msgid ""
-#| "The <span class=\"application\">Vidalia</span> onion icon sometimes stays yellow\n"
-#| "even if Tor is already started. If the <span class=\"guilabel\">Tor is\n"
-#| "ready</span> notification appears or if you can browse the Internet using the\n"
-#| "<span class=\"application\">Tor Browser</span>, then Tor is started correctly.\n"
msgid ""
"The <span class=\"application\">Vidalia</span> onion icon sometimes stays yellow\n"
"even if Tor is already started. If the <span class=\"guilabel\">Tor is\n"
diff --git a/wiki/src/doc/encryption_and_privacy.index.fr.po b/wiki/src/doc/encryption_and_privacy.index.fr.po
index d39e2bf..e9be288 100644
--- a/wiki/src/doc/encryption_and_privacy.index.fr.po
+++ b/wiki/src/doc/encryption_and_privacy.index.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: SACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2013-02-26 14:28-0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: SLANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/doc/encryption_and_privacy/keyringer.de.po b/wiki/src/doc/encryption_and_privacy/keyringer.de.po
index 5e86fb4..6131ee1 100644
--- a/wiki/src/doc/encryption_and_privacy/keyringer.de.po
+++ b/wiki/src/doc/encryption_and_privacy/keyringer.de.po
@@ -52,7 +52,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/encryption_and_privacy/keyringer.fr.po b/wiki/src/doc/encryption_and_privacy/keyringer.fr.po
index 5e86fb4..6131ee1 100644
--- a/wiki/src/doc/encryption_and_privacy/keyringer.fr.po
+++ b/wiki/src/doc/encryption_and_privacy/keyringer.fr.po
@@ -52,7 +52,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/encryption_and_privacy/keyringer.pt.po b/wiki/src/doc/encryption_and_privacy/keyringer.pt.po
index 5e86fb4..6131ee1 100644
--- a/wiki/src/doc/encryption_and_privacy/keyringer.pt.po
+++ b/wiki/src/doc/encryption_and_privacy/keyringer.pt.po
@@ -52,7 +52,6 @@ msgid ""
msgstr ""
#. type: Plain text
-#:
#, no-wrap
msgid "</div>\n"
msgstr ""
diff --git a/wiki/src/doc/encryption_and_privacy/manage_passwords.fr.po b/wiki/src/doc/encryption_and_privacy/manage_passwords.fr.po
index f6c4795..721d7f7 100644
--- a/wiki/src/doc/encryption_and_privacy/manage_passwords.fr.po
+++ b/wiki/src/doc/encryption_and_privacy/manage_passwords.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2014-10-13 10:23+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2014-05-10 19:33-0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -249,15 +249,6 @@ msgstr "Utiliser <span class=\"application\">KeePassX</span> pour saisir un mot
#. type: Plain text
#, no-wrap
-#| msgid ""
-#| "When using <span class=\"application\">OpenPGP</span> with <span\n"
-#| "class=\"application\">Claws Mail</span> or <span class=\"application\">GPG\n"
-#| "Applet</span> for example, you need to enter a password in a <span\n"
-#| "class=\"application\">Pinentry</span> dialog box. But you cannot copy and\n"
-#| "paste into it. This is a security feature of <span\n"
-#| "class=\"application\">Pinentry</span> based on the fact that otherwise the\n"
-#| "data in the clipboard could be accessed by another application against\n"
-#| "your will.\n"
msgid ""
"When using <span class=\"application\">OpenPGP</span> with <span\n"
"class=\"application\">Claws Mail</span> or <span class=\"application\">OpenPGP\n"
@@ -301,11 +292,6 @@ msgstr ""
#. type: Plain text
#, no-wrap
-#| msgid ""
-#| "0. Use <span class=\"application\">OpenPGP</span> with <span\n"
-#| "class=\"application\">Claws Mail</span> or <span class=\"application\">GPG\n"
-#| "Applet</span> until the <span class=\"application\">Pinentry</span> dialog\n"
-#| "box appears.\n"
msgid ""
"0. Use <span class=\"application\">OpenPGP</span> with <span\n"
"class=\"application\">Claws Mail</span> or <span class=\"application\">OpenPGP\n"
diff --git a/wiki/src/doc/first_steps/accessibility.fr.po b/wiki/src/doc/first_steps/accessibility.fr.po
index bd41b15..5017a89 100644
--- a/wiki/src/doc/first_steps/accessibility.fr.po
+++ b/wiki/src/doc/first_steps/accessibility.fr.po
@@ -6,10 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2014-10-15 18:40+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2015-01-18 11:07-0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -100,11 +101,6 @@ msgstr ""
#. type: Plain text
#, no-wrap
-#| msgid ""
-#| "The screen reading functionality of <span class=\"application\">GNOME\n"
-#| "Orca</span> works neither with the <span\n"
-#| "class=\"application\">Tor Browser</span> nor with the <span\n"
-#| "class=\"application\">Unsafe Web Browser</span>.\n"
msgid ""
"The screen reading functionality of <span class=\"application\">GNOME\n"
"Orca</span> works neither with <span\n"
diff --git a/wiki/src/doc/first_steps/persistence/configure.fr.po b/wiki/src/doc/first_steps/persistence/configure.fr.po
index cad8a48..9ed3950 100644
--- a/wiki/src/doc/first_steps/persistence/configure.fr.po
+++ b/wiki/src/doc/first_steps/persistence/configure.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: sPACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2015-01-25 10:17+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
diff --git a/wiki/src/doc/first_steps/persistence/copy.fr.po b/wiki/src/doc/first_steps/persistence/copy.fr.po
index 776f668..e840733 100644
--- a/wiki/src/doc/first_steps/persistence/copy.fr.po
+++ b/wiki/src/doc/first_steps/persistence/copy.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"POT-Creation-Date: 2014-08-28 17:08+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2014-04-26 12:20+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: <LL@li.org>\n"
@@ -49,9 +49,6 @@ msgstr ""
"périphérique."
#. type: Bullet: '1. '
-#| msgid ""
-#| "[[Create a persistent volume|configure]] on this new device. We advice "
-#| "you to use a different passphrase to protect this new persistent volume."
msgid ""
"[[Create a persistent volume|configure]] on this new device. We advise you "
"to use a different passphrase to protect this new persistent volume."
diff --git a/wiki/src/doc/first_steps/startup_options/bridge_mode.de.po b/wiki/src/doc/first_steps/startup_options/bridge_mode.de.po
index d66403b..c9675d4 100644
--- a/wiki/src/doc/first_steps/startup_options/bridge_mode.de.po
+++ b/wiki/src/doc/first_steps/startup_options/bridge_mode.de.po
@@ -3,18 +3,18 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
-"PO-Revision-Date: 2013-04-05 13:53+0200\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Project-Id-Version: TAILS\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
+"PO-Revision-Date: 2015-02-12 19:00+0100\n"
+"Last-Translator: Tails developers <tails@boum.org>\n"
+"Language-Team: Tails Translations <tails-l10n@boum.org>\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
#. type: Plain text
#, no-wrap
@@ -24,12 +24,12 @@ msgstr "[[!meta title=\"Tor Bridge Modus\"]]\n"
#. type: Plain text
#, no-wrap
msgid "[[!toc levels=1]]\n"
-msgstr ""
+msgstr "[[!toc levels=1]]\n"
#. type: Title =
#, no-wrap
msgid "What bridges are and when to use them\n"
-msgstr ""
+msgstr "Was Bridges sind und wann sie benutzt werden\n"
#. type: Plain text
msgid ""
@@ -38,11 +38,17 @@ msgid ""
"Service Provider and perhaps your government and law enforcement agencies) "
"can know that you are using Tor."
msgstr ""
+"Wenn Tor in Verbindung mit Tails in seiner Standardkonfiguration verwendet "
+"wird, kann jeder die Datenströme Ihrer Internetverbindung überwachen "
+"(beispielsweise Ihr Internetanbieter und möglicherweise auch Ihre Regierung "
+"sowie Strafverfolgungsbehörden) und somit feststellen, dass Sie Tor benutzen."
#. type: Plain text
msgid ""
"This may be an issue if you are in a country where the following applies:"
msgstr ""
+"Dies kann ein Problem sein, wenn Sie sich in einem Land befinden, in dem "
+"folgendes zutrifft:"
#. type: Bullet: '1. '
msgid ""
@@ -50,12 +56,18 @@ msgid ""
"Internet are forced to go through Tor, this would render Tails useless for "
"everything except for working offline on documents, etc."
msgstr ""
+"**Die Nutzung von Tor ist durch Zensur blockiert:** Da alle Verbindungen ins "
+"Internet durch Tor geleitet werden, würde das bedeuten, dass Tails "
+"unbenutzbar wird, außer um offline an Dokumenten zu arbeiten."
#. type: Bullet: '2. '
msgid ""
"**Using Tor is dangerous or considered suspicious:** in this case starting "
"Tails in its default configuration might get you into serious trouble."
msgstr ""
+"**Die Benutzung von Tor ist gefährlich oder wird als verdächtig erachtet:** "
+"In diesem Falle könnte das Starten von Tails Sie in ernsthafte "
+"Schwierigkeiten bringen."
#. type: Plain text
msgid ""
@@ -64,6 +76,10 @@ msgid ""
"harder, but not impossible, for your Internet Service Provider to know that "
"you are using Tor."
msgstr ""
+"Tor Bridges, auch Tor Bridge Relais gennant, sind alternative, nicht "
+"öffentlich aufgelistete Eingangspunkte in das Tor Netzwerk. Die Nutzung "
+"einer Bridge macht es schwieriger, jedoch nicht unmöglich, für Ihren "
+"Internetprovider festzustellen, dass Sie Tor nutzen."
#. type: Plain text
msgid ""
@@ -72,6 +88,11 @@ msgid ""
"about bridges](https://www.torproject.org/docs/bridges) to get a general "
"idea about what bridges are."
msgstr ""
+"Falls Sie sich in einer der oben genannten Situationen befinden können Sie "
+"es in Erwägung ziehen, Tor Bridges in Tails zu nutzen. Bitte lesen Sie "
+"hierzu auch die [zugehörige Dokumentation zu Brigdes](https://www.torproject."
+"org/docs/bridges) des Tor Projekts, um einen Überblick darüber zu bekommen, "
+"was Bridges sind."
#. type: Plain text
msgid ""
@@ -80,27 +101,33 @@ msgid ""
"for example from their [website](https://bridges.torproject.org/) and via "
"email."
msgstr ""
+"Um Bridges zu benutzen, müssen Sie im Vorfeld eine Adresse von zumindest "
+"einer Bridge kennen. Das Tor Projekt verteilt diese auf verschiedenste Art "
+"und Weise, beispielsweise auf ihrer [Website](https://bridges.torproject."
+"org/) als auch über E-Mail."
#. type: Plain text
#, no-wrap
msgid "<div class=\"note\">\n"
-msgstr ""
+msgstr "<div class=\"note\">\n"
#. type: Plain text
msgid ""
"Bridges are less reliable and tend to have lower performance than other "
"entry points."
msgstr ""
+"Bridges sind unzuverlässiger und neigen dazu eine niedrigere Kapazität als "
+"andere Eingangspunkte ins Tor Netzwerk zu haben."
#. type: Plain text
#, no-wrap
msgid "</div>\n"
-msgstr ""
+msgstr "</div>\n"
#. type: Title =
#, no-wrap
msgid "How to use bridges in Tails\n"
-msgstr ""
+msgstr "Wie Bridges in Tails benutzt werden\n"
#. type: Plain text
msgid ""
@@ -108,22 +135,27 @@ msgid ""
"example, you can write it down on a piece of paper or store it in the "
"[[persistent volume|doc/first_steps/persistence]]."
msgstr ""
+"Sie müssen zumindest eine Adresse einer Bridge zur Verfügung haben, bevor "
+"Sie Tails starten. Sie können die Adresse zum Beispiel auf einem Papier "
+"aufschreiben oder sie im [[beständigen Speicherbereich|doc/first_steps/"
+"persistence]] speichern."
#. type: Plain text
msgid "Tails allows you to use bridges of the following types:"
msgstr ""
+"Tails bietet Ihnen die Möglichkeit folgende Arten von Bridges zu benutzen:"
#. type: Bullet: ' - '
msgid "`bridge`"
-msgstr ""
+msgstr "`bridge`"
#. type: Bullet: ' - '
msgid "`obfs2`"
-msgstr ""
+msgstr "`obfs2`"
#. type: Bullet: ' - '
msgid "`obfs3`"
-msgstr ""
+msgstr "`obfs3`"
#. type: Bullet: ' - '
msgid "`obfs4`"
@@ -136,11 +168,15 @@ msgid ""
"class=\"application\">Tails Greeter</span>|startup_options#tails_greeter]] as\n"
"explained in the [[network configuration|network_configuration]] documentation.\n"
msgstr ""
+"Um Bridges zu benutzen, konfigurieren Sie bitte die Bridge-Einstellungen vom [[<span\n"
+"class=\"application\">Tails Greeter</span>|startup_options#tails_greeter]], wie es in der \n"
+"Dokumentation zur [[Netzwerkkonfiguration|network_configuration]] erklärt wird.\n"
#. type: Plain text
-#, no-wrap
+#, fuzzy, no-wrap
+#| msgid "<div class=\"note\">\n"
msgid "<div class=\"tip\">\n"
-msgstr ""
+msgstr "<div class=\"note\">\n"
#. type: Plain text
#, no-wrap
@@ -153,7 +189,7 @@ msgstr ""
#. type: Title =
#, no-wrap
msgid "If using Tor is dangerous in your country\n"
-msgstr ""
+msgstr "Falls die Nutzung von Tor in Ihrem Land gefährlich ist\n"
#. type: Plain text
msgid ""
@@ -164,11 +200,17 @@ msgid ""
"you should follow in order to prevent you from being identified as a Tor "
"user."
msgstr ""
+"Die [Dokumentation zu Bridges](https://www.torproject.org/docs/bridges) des "
+"Tor Projekts ist hauptsächlich auf die Umgehung von Zensur ausgelegt, also "
+"wenn die Nutzung von Tor durch Zensur verhindert wird. Falls die Nutzung von "
+"Tor in Ihrem Land gefährlich ist oder als verdächtig eingestuft wird, müssen "
+"Sie einige spezielle Regeln befolgen, damit Sie nicht als Nutzer von Tor "
+"erkannt werden."
#. type: Plain text
#, no-wrap
msgid "<div class=\"caution\">\n"
-msgstr ""
+msgstr "<div class=\"caution\">\n"
#. type: Plain text
#, no-wrap
@@ -176,11 +218,11 @@ msgid ""
"Bridges are important tools that work in many cases but <strong>they are\n"
"not an absolute protection</strong> against the technical progress that\n"
"an adversary could do to identify Tor users.\n"
-msgstr ""
+msgstr "Bridges sind wichtige Werkzeuge, die in den meisten Fällen funktionieren, bieten jedoch <strong>keine vollkommene Sicherheit</strong> gegen die technischen Abläufe, die ein Angreifer anwenden kann, um Nutzer von Tor zu identifizieren.\n"
#. type: Bullet: '1. '
msgid "Always start Tails in *bridge mode*."
-msgstr ""
+msgstr "Starten Sie Tails immer im *Bridge-Modus*."
#. type: Bullet: '2. '
msgid ""
@@ -188,6 +230,9 @@ msgid ""
"bridges#PluggableTransports) since they are harder to identify than other "
"bridges."
msgstr ""
+"Benutzen Sie nur [*verschleierte Bridges*](https://www.torproject.org/docs/"
+"bridges#PluggableTransports), da diese schwieriger als andere Bridges zu "
+"erkennen sind."
#. type: Bullet: '3. '
msgid ""
@@ -197,6 +242,12 @@ msgid ""
"information by the same means. The Tor Project has some protection against "
"that, but they are far from being perfect."
msgstr ""
+"Je weniger Bridges öffentlich bekannt sind, umso besser. Bedauerlicherweise, "
+"da einige Adressen von Bridges von jedem über die Tor Webseite oder über E-"
+"Mail herausgefunden werden können, kann ein Angreifer die gleichen "
+"Informationen über dieselben Wege bekommen. Das Tor Projekt hat einige "
+"Sicherheitsvorkehrungen dagegen, diese sind jedoch weit davon entfernt, "
+"perfekt zu sein."
#. type: Plain text
#, no-wrap
@@ -208,6 +259,10 @@ msgid ""
" Project can learn about the bridge and may distribute its address to others\n"
" and so it could end up in the hands of your adversary.\n"
msgstr ""
+" Deswegen ist es am Besten, wenn Sie einen Freund oder eine Organistation in einem anderen Land finden, denen Sie vertrauen, die eine \"private\" *verschleierte\n"
+" Bridge* für Sie betreiben. In diesem Falle bedeutet \"privat\", dass die Bridge mit der Option `PublishServerDescriptor 0` konfiguriert ist. \n"
+" Ohne diese Option erhält das Tor Projekt Informationen über diese Bridge und kann die Adresse weitergeben, \n"
+" wodurch sie in die Hände eines Angreifers geraten könnte.\n"
#, fuzzy
#~ msgid ""
diff --git a/wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po b/wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po
index cf846fb..2bbe7c5 100644
--- a/wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po
+++ b/wiki/src/doc/first_steps/startup_options/bridge_mode.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2014-04-13 13:11+0200\n"
"Last-Translator: \n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/doc/sensitive_documents/graphics.fr.po b/wiki/src/doc/sensitive_documents/graphics.fr.po
index 966e93f..aa47ec6 100644
--- a/wiki/src/doc/sensitive_documents/graphics.fr.po
+++ b/wiki/src/doc/sensitive_documents/graphics.fr.po
@@ -6,10 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2014-10-11 11:55+0300\n"
+"POT-Creation-Date: 2015-02-19 13:14+0100\n"
"PO-Revision-Date: 2014-10-08 14:34-0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -72,10 +73,6 @@ msgstr ""
" langues.\n"
#. type: Bullet: ' - '
-#| msgid ""
-#| "**<span class=\"application\">[Scribus](http://www.scribus.net)</span>** "
-#| "is a page layout application. You can use it to design design to "
-#| "newspapers, magazines, newsletters and posters to technical documentation."
msgid ""
"**<span class=\"application\">[Scribus](http://www.scribus.net)</span>** is "
"a page layout application. You can use it to design newspapers, magazines, "
diff --git a/wiki/src/news/test_1.3-rc1.de.po b/wiki/src/news/test_1.3-rc1.de.po
index 4182cc4..261bc8f 100644
--- a/wiki/src/news/test_1.3-rc1.de.po
+++ b/wiki/src/news/test_1.3-rc1.de.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 13:25+0100\n"
+"POT-Creation-Date: 2015-02-12 18:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -56,19 +56,14 @@ msgstr ""
#. type: Plain text
#, no-wrap
-msgid ""
-" <a class=\"download-file\" "
-"href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails "
-"1.3~rc1 ISO image</a>\n"
+msgid " <a class=\"download-file\" href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails 1.3~rc1 ISO image</a>\n"
msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
" <a class=\"download-signature\"\n"
-" "
-"href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails "
-"1.3~rc1 signature</a>\n"
+" href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails 1.3~rc1 signature</a>\n"
msgstr ""
#. type: Bullet: '1. '
@@ -78,8 +73,8 @@ msgstr ""
#. type: Bullet: '1. '
msgid ""
"Have a look at the list of <a href=\"#known_issues\">known issues of this "
-"release</a> and the list of [[longstanding known "
-"issues|support/known_issues]]."
+"release</a> and the list of [[longstanding known issues|support/"
+"known_issues]]."
msgstr ""
#. type: Bullet: '1. '
@@ -90,8 +85,7 @@ msgstr ""
#, no-wrap
msgid ""
"If you find anything that is not working as it should, please [[report to\n"
-"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is "
-"a\n"
+"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is a\n"
"<a href=\"#known_issues\">known issue of this release</a> or a\n"
"[[longstanding known issue|support/known_issues]].\n"
msgstr ""
@@ -109,17 +103,15 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"These steps allow you to automatically upgrade a device installed with "
-"<span\n"
-"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails "
-"1.3~rc1.\n"
+"These steps allow you to automatically upgrade a device installed with <span\n"
+"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails 1.3~rc1.\n"
msgstr ""
#. type: Bullet: '1. '
msgid ""
"Start Tails 1.2.3 from a USB stick or SD card (installed by the Tails "
-"Installer), and [[set an administration "
-"password|doc/first_steps/startup_options/administration_password]]."
+"Installer), and [[set an administration password|doc/first_steps/"
+"startup_options/administration_password]]."
msgstr ""
#. type: Bullet: '1. '
@@ -162,8 +154,7 @@ msgid ""
" - Distribute a hybrid ISO image again: no need for anyone to\n"
" manually run `isohybrid` anymore! ([[!tails_ticket 8510]])\n"
" - Confine the Tor Browser using AppArmor to protect against some\n"
-" types of attack. [Learn "
-"more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
+" types of attack. [Learn more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
" about how this will affect your usage of Tails.\n"
" ([[!tails_ticket 5525]])\n"
" - Install the Electrum bitcoin client, and allow users\n"
@@ -184,8 +175,7 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"See the <a "
-"href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?h=1.3-rc1\">online\n"
+"See the <a href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?id=ca9705874a4380db51a85aaddf5309580fd3e04e\">online\n"
"Changelog</a> for technical details.\n"
msgstr ""
diff --git a/wiki/src/news/test_1.3-rc1.fr.po b/wiki/src/news/test_1.3-rc1.fr.po
index 4182cc4..261bc8f 100644
--- a/wiki/src/news/test_1.3-rc1.fr.po
+++ b/wiki/src/news/test_1.3-rc1.fr.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 13:25+0100\n"
+"POT-Creation-Date: 2015-02-12 18:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -56,19 +56,14 @@ msgstr ""
#. type: Plain text
#, no-wrap
-msgid ""
-" <a class=\"download-file\" "
-"href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails "
-"1.3~rc1 ISO image</a>\n"
+msgid " <a class=\"download-file\" href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails 1.3~rc1 ISO image</a>\n"
msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
" <a class=\"download-signature\"\n"
-" "
-"href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails "
-"1.3~rc1 signature</a>\n"
+" href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails 1.3~rc1 signature</a>\n"
msgstr ""
#. type: Bullet: '1. '
@@ -78,8 +73,8 @@ msgstr ""
#. type: Bullet: '1. '
msgid ""
"Have a look at the list of <a href=\"#known_issues\">known issues of this "
-"release</a> and the list of [[longstanding known "
-"issues|support/known_issues]]."
+"release</a> and the list of [[longstanding known issues|support/"
+"known_issues]]."
msgstr ""
#. type: Bullet: '1. '
@@ -90,8 +85,7 @@ msgstr ""
#, no-wrap
msgid ""
"If you find anything that is not working as it should, please [[report to\n"
-"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is "
-"a\n"
+"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is a\n"
"<a href=\"#known_issues\">known issue of this release</a> or a\n"
"[[longstanding known issue|support/known_issues]].\n"
msgstr ""
@@ -109,17 +103,15 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"These steps allow you to automatically upgrade a device installed with "
-"<span\n"
-"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails "
-"1.3~rc1.\n"
+"These steps allow you to automatically upgrade a device installed with <span\n"
+"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails 1.3~rc1.\n"
msgstr ""
#. type: Bullet: '1. '
msgid ""
"Start Tails 1.2.3 from a USB stick or SD card (installed by the Tails "
-"Installer), and [[set an administration "
-"password|doc/first_steps/startup_options/administration_password]]."
+"Installer), and [[set an administration password|doc/first_steps/"
+"startup_options/administration_password]]."
msgstr ""
#. type: Bullet: '1. '
@@ -162,8 +154,7 @@ msgid ""
" - Distribute a hybrid ISO image again: no need for anyone to\n"
" manually run `isohybrid` anymore! ([[!tails_ticket 8510]])\n"
" - Confine the Tor Browser using AppArmor to protect against some\n"
-" types of attack. [Learn "
-"more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
+" types of attack. [Learn more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
" about how this will affect your usage of Tails.\n"
" ([[!tails_ticket 5525]])\n"
" - Install the Electrum bitcoin client, and allow users\n"
@@ -184,8 +175,7 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"See the <a "
-"href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?h=1.3-rc1\">online\n"
+"See the <a href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?id=ca9705874a4380db51a85aaddf5309580fd3e04e\">online\n"
"Changelog</a> for technical details.\n"
msgstr ""
diff --git a/wiki/src/news/test_1.3-rc1.mdwn b/wiki/src/news/test_1.3-rc1.mdwn
index e5b39b5..a153649 100644
--- a/wiki/src/news/test_1.3-rc1.mdwn
+++ b/wiki/src/news/test_1.3-rc1.mdwn
@@ -83,7 +83,7 @@ Notable changes since Tails 1.2.3 include:
- Support Vietnamese input in IBus. ([[!tails_ticket 7999]])
- Improve support for OpenPGP smartcards. ([[!tails_ticket 6241]])
-See the <a href="https://git-tails.immerda.ch/tails/plain/debian/changelog?h=1.3-rc1">online
+See the <a href="https://git-tails.immerda.ch/tails/plain/debian/changelog?id=ca9705874a4380db51a85aaddf5309580fd3e04e">online
Changelog</a> for technical details.
<a id="known_issues"></a>
diff --git a/wiki/src/news/test_1.3-rc1.pt.po b/wiki/src/news/test_1.3-rc1.pt.po
index 4182cc4..261bc8f 100644
--- a/wiki/src/news/test_1.3-rc1.pt.po
+++ b/wiki/src/news/test_1.3-rc1.pt.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 13:25+0100\n"
+"POT-Creation-Date: 2015-02-12 18:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -56,19 +56,14 @@ msgstr ""
#. type: Plain text
#, no-wrap
-msgid ""
-" <a class=\"download-file\" "
-"href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails "
-"1.3~rc1 ISO image</a>\n"
+msgid " <a class=\"download-file\" href=\"http://dl.amnesia.boum.org/tails/alpha/tails-i386-1.3~rc1/tails-i386-1.3~rc1.iso\">Tails 1.3~rc1 ISO image</a>\n"
msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
" <a class=\"download-signature\"\n"
-" "
-"href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails "
-"1.3~rc1 signature</a>\n"
+" href=\"https://tails.boum.org/torrents/files/tails-i386-1.3~rc1.iso.sig\">Tails 1.3~rc1 signature</a>\n"
msgstr ""
#. type: Bullet: '1. '
@@ -78,8 +73,8 @@ msgstr ""
#. type: Bullet: '1. '
msgid ""
"Have a look at the list of <a href=\"#known_issues\">known issues of this "
-"release</a> and the list of [[longstanding known "
-"issues|support/known_issues]]."
+"release</a> and the list of [[longstanding known issues|support/"
+"known_issues]]."
msgstr ""
#. type: Bullet: '1. '
@@ -90,8 +85,7 @@ msgstr ""
#, no-wrap
msgid ""
"If you find anything that is not working as it should, please [[report to\n"
-"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is "
-"a\n"
+"us|doc/first_steps/bug_reporting]]! Bonus points if you first check if it is a\n"
"<a href=\"#known_issues\">known issue of this release</a> or a\n"
"[[longstanding known issue|support/known_issues]].\n"
msgstr ""
@@ -109,17 +103,15 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"These steps allow you to automatically upgrade a device installed with "
-"<span\n"
-"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails "
-"1.3~rc1.\n"
+"These steps allow you to automatically upgrade a device installed with <span\n"
+"class=\"application\">Tails Installer</span> from Tails 1.2.3 to Tails 1.3~rc1.\n"
msgstr ""
#. type: Bullet: '1. '
msgid ""
"Start Tails 1.2.3 from a USB stick or SD card (installed by the Tails "
-"Installer), and [[set an administration "
-"password|doc/first_steps/startup_options/administration_password]]."
+"Installer), and [[set an administration password|doc/first_steps/"
+"startup_options/administration_password]]."
msgstr ""
#. type: Bullet: '1. '
@@ -162,8 +154,7 @@ msgid ""
" - Distribute a hybrid ISO image again: no need for anyone to\n"
" manually run `isohybrid` anymore! ([[!tails_ticket 8510]])\n"
" - Confine the Tor Browser using AppArmor to protect against some\n"
-" types of attack. [Learn "
-"more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
+" types of attack. [Learn more](https://git-tails.immerda.ch/tails/plain/wiki/src/doc/anonymous_internet/Tor_Browser.mdwn?h=testing)\n"
" about how this will affect your usage of Tails.\n"
" ([[!tails_ticket 5525]])\n"
" - Install the Electrum bitcoin client, and allow users\n"
@@ -184,8 +175,7 @@ msgstr ""
#. type: Plain text
#, no-wrap
msgid ""
-"See the <a "
-"href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?h=1.3-rc1\">online\n"
+"See the <a href=\"https://git-tails.immerda.ch/tails/plain/debian/changelog?id=ca9705874a4380db51a85aaddf5309580fd3e04e\">online\n"
"Changelog</a> for technical details.\n"
msgstr ""
diff --git a/wiki/src/support/faq.fr.po b/wiki/src/support/faq.fr.po
index c24754f..667d303 100644
--- a/wiki/src/support/faq.fr.po
+++ b/wiki/src/support/faq.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-12 01:15+0100\n"
+"POT-Creation-Date: 2015-02-12 18:06+0100\n"
"PO-Revision-Date: 2015-01-18 11:17-0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/wiki/src/support/known_issues.de.po b/wiki/src/support/known_issues.de.po
index 22efb76..a05d1c0 100644
--- a/wiki/src/support/known_issues.de.po
+++ b/wiki/src/support/known_issues.de.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-10 13:52+0100\n"
+"POT-Creation-Date: 2015-02-13 19:28+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -259,6 +259,15 @@ msgstr ""
#. type: Title -
#, no-wrap
+msgid "HP Compaq dc5750 Microtower\n"
+msgstr ""
+
+#. type: Plain text
+msgid "Cannot start Tails 1.2.3 created using Tails Installer."
+msgstr ""
+
+#. type: Title -
+#, no-wrap
msgid "HP ProBook 4330s\n"
msgstr ""
diff --git a/wiki/src/support/known_issues.fr.po b/wiki/src/support/known_issues.fr.po
index 87b87ce..4591ef6 100644
--- a/wiki/src/support/known_issues.fr.po
+++ b/wiki/src/support/known_issues.fr.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-10 13:52+0100\n"
+"POT-Creation-Date: 2015-02-13 19:28+0100\n"
"PO-Revision-Date: 2015-01-18 12:37-0000\n"
"Last-Translator: \n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -302,6 +302,18 @@ msgstr ""
#. type: Title -
#, no-wrap
+msgid "HP Compaq dc5750 Microtower\n"
+msgstr ""
+
+#. type: Plain text
+#, fuzzy
+#| msgid "Does not start on USB sticks created using Tails Installer."
+msgid "Cannot start Tails 1.2.3 created using Tails Installer."
+msgstr ""
+"Ne démarre pas sur une clé USB créée en utilisant l'Installeur de Tails."
+
+#. type: Title -
+#, no-wrap
msgid "HP ProBook 4330s\n"
msgstr ""
@@ -857,7 +869,9 @@ msgstr ""
"navigateur Tor](https://www.torproject.org/projects/torbrowser.html)."
#~ msgid "VirtualBox guest modules are broken for 64-bit guests\n"
-#~ msgstr "Les modules de suppléments pour invités (*guest modules*) de VirtualBox ne marchent pas pour les invités 64-bits\n"
+#~ msgstr ""
+#~ "Les modules de suppléments pour invités (*guest modules*) de VirtualBox "
+#~ "ne marchent pas pour les invités 64-bits\n"
#~ msgid ""
#~ "VirtualBox guest modules allow for additional features when using Tails "
diff --git a/wiki/src/support/known_issues.mdwn b/wiki/src/support/known_issues.mdwn
index 3794493..b79ca49 100644
--- a/wiki/src/support/known_issues.mdwn
+++ b/wiki/src/support/known_issues.mdwn
@@ -122,6 +122,11 @@ Cannot start neither from USB nor from DVD. System crashes with a blank
screen and locked up keyboard. This problem might be corrected in
newer versions: please report your test results back to us.
+HP Compaq dc5750 Microtower
+---------------------------
+
+Cannot start Tails 1.2.3 created using Tails Installer.
+
HP ProBook 4330s
----------------
diff --git a/wiki/src/support/known_issues.pt.po b/wiki/src/support/known_issues.pt.po
index 409a2a5..1f47516 100644
--- a/wiki/src/support/known_issues.pt.po
+++ b/wiki/src/support/known_issues.pt.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2015-02-10 13:52+0100\n"
+"POT-Creation-Date: 2015-02-13 19:28+0100\n"
"PO-Revision-Date: 2014-06-30 15:38-0300\n"
"Last-Translator: Tails Developers <amnesia@boum.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -329,6 +329,17 @@ msgstr ""
#. type: Title -
#, no-wrap
+msgid "HP Compaq dc5750 Microtower\n"
+msgstr ""
+
+#. type: Plain text
+#, fuzzy
+#| msgid "Does not start on USB sticks created using Tails Installer."
+msgid "Cannot start Tails 1.2.3 created using Tails Installer."
+msgstr "Não inicia em memórias USB criadas usando o Tails Installer."
+
+#. type: Title -
+#, no-wrap
msgid "HP ProBook 4330s\n"
msgstr "HP ProBook 4330s\n"