Commit 5b2867f5 authored by anonym's avatar anonym
Browse files

Merge remote-tracking branch 'origin/devel' into feature/7870-include_onionshare

parents dda1476c 2c471a27
......@@ -120,13 +120,18 @@ Pin: release o=Debian,n=stretch
Pin-Priority: 999
Package: openpgp-applet
Pin: release o=Debian,n=stretch
Pin: release o=Debian,n=jessie-backports
Pin-Priority: 999
Package: pinentry-gtk2
Pin: release o=Debian,n=jessie-backports
Pin-Priority: 999
Explanation: We need Dogtail >=0.9.1 (https://bugzilla.redhat.com/show_bug.cgi?id=972257)
Package: python-dogtail
Pin: release o=Debian,n=stretch
Pin-Priority: 999
Package: python-electrum
Pin: release o=Debian,n=stretch
Pin-Priority: 999
......
......@@ -10,6 +10,3 @@ EXT="/usr/lib/icedove/extensions"
echo "Enabling Torbirdy and Enigmail in Icedove"
ln -s /usr/share/xul-ext/torbirdy "$EXT"/castironthunderbirdclub@torproject.org
ln -s /usr/lib/xul-ext/enigmail "$EXT"/\{847b3a00-7ab1-11d4-8f02-006008948af5\}
echo "Enabling the amnesia branding extension in Icedove"
ln -s /usr/local/share/tor-browser-extensions/branding@amnesia.boum.org "$EXT"
......@@ -18,15 +18,6 @@
</Description>
</em:targetApplication>
<!-- Thunderbird -->
<em:targetApplication>
<Description>
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
<em:minVersion>24.0</em:minVersion>
<em:maxVersion>32.0</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
--- a/etc/apparmor.d/usr.bin.totem 2014-09-16 11:17:44.000000000 +0000
+++ b/etc/apparmor.d/usr.bin.totem 2014-11-28 09:40:26.960000000 +0000
@@ -9,6 +9,9 @@
diff -Naur etc/apparmor.d.orig/abstractions/totem etc/apparmor.d/abstractions/totem
--- a/etc/apparmor.d/abstractions/totem 2014-08-28 15:51:48.000000000 +0000
+++ b/etc/apparmor.d/abstractions/totem 2016-11-05 14:58:38.676759826 +0000
@@ -30,6 +30,10 @@
/usr/lib/@{multiarch}/gstreamer[0-9].[0-9]/gstreamer-[0-9].[0-9]/gst-plugin-scanner Cix -> gst_plugin_scanner,
+ owner @{HOME}/.cache/gstreamer-[0-9]*.[0-9]*/registry.*.bin rw,
+ owner @{HOME}/.cache/gstreamer-[0-9]*.[0-9]*/registry.*.bin.tmp* rw,
owner @{HOME}/.cache/tracker/meta.db k,
owner @{HOME}/.cache/tracker/meta.db-shm k,
+ owner @{HOME}/.config/totem/** rwk,
owner @{HOME}/.local/share/grilo-plugins/*.db k,
+ owner @{HOME}/.local/share/gvfs-metadata/** r,
diff -Naur etc/apparmor.d.orig/usr.bin.totem etc/apparmor.d/usr.bin.totem
--- a/etc/apparmor.d/usr.bin.totem 2015-11-14 13:39:59.000000000 +0000
+++ b/etc/apparmor.d/usr.bin.totem 2016-11-05 14:57:21.817646742 +0000
@@ -9,16 +9,20 @@
#include <abstractions/python>
#include <abstractions/totem>
......@@ -10,3 +25,33 @@
# Maybe in an abstraction?
/usr/include/**/pyconfig.h r,
/usr/bin/totem r,
/dev/sr* r,
- # Allow read and write on anything in @{HOME}. Lenient, but
+ # Allow read and write on almost anything in @{HOME}. Lenient, but
# private-files-strict is in effect.
#include <abstractions/private-files-strict>
- owner @{HOME}/** rw,
+ owner @{HOME}/[a-zA-Z0-9]* rw,
+ owner @{HOME}/[a-zA-Z0-9]*/** rw,
owner /{,var/}run/user/*/dconf/user w,
owner /{,var/}run/user/*/at-spi2-*/ rw,
diff -Naur etc/apparmor.d.orig/usr.bin.totem-previewers etc/apparmor.d/usr.bin.totem-previewers
--- a/etc/apparmor.d/usr.bin.totem-previewers 2014-10-14 23:22:57.000000000 +0000
+++ b/etc/apparmor.d/usr.bin.totem-previewers 2016-11-05 14:57:21.817646742 +0000
@@ -6,10 +6,11 @@
/usr/bin/totem-video-thumbnailer {
#include <abstractions/totem>
- # Allow read on anything in @{HOME}. Lenient, but private-files-strict is in
+ # Allow read on almost anything in @{HOME}. Lenient, but private-files-strict is in
# effect.
#include <abstractions/private-files-strict>
- owner @{HOME}/** r,
+ owner @{HOME}/[a-zA-Z0-9]* rw,
+ owner @{HOME}/[a-zA-Z0-9]*/** rw,
# Not needed by nautilus, but maybe other applications
owner /**.[pP][nN][gG] w,
......@@ -9,17 +9,17 @@ Date: Mon Apr 4 18:04:52 2016 +0200
application (e.g. clicking something that isn't there won't
work). Most importantly, this greatly simplifies situations where the
'shown' element we are looking for is hard to exactly pinpoint since
it lacks properties to distinguish it from some not 'shown' element.
it lacks properties to distinguish it from some not 'shown' elements,
which is quite common when nodes lack names.
Therefore we add a `showingOnly` boolean flag to all search methods
where it makes sense (e.g. it doesn't make sense for Application:s
since they seem to always be considered not 'showing'). The default
will be to not do this, for backwards-compatibility, but the default
is configurable via a new `searchShowingOnly` config option.
Therefore we add a `showingOnly` boolean flag to all Node search
methods. The default will be to not do this, for backwards
compatibility, but the default is configurable via a new
`searchShowingOnly` config option.
--- a/usr/share/pyshared/dogtail/config.py
+++ b/usr/share/pyshared/dogtail/config.py
@@ -58,6 +58,9 @@ class _Config(object):
--- a/usr/lib/python2.7/dist-packages/dogtail/config.py
+++ b/usr/lib/python2.7/dist-packages/dogtail/config.py
@@ -60,6 +60,9 @@
searchCutoffCount (int):
Number of times to retry when a search fails.
......@@ -29,7 +29,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
defaultDelay (float):
Default time in seconds to sleep when delaying.
@@ -134,6 +137,7 @@ class _Config(object):
@@ -136,6 +139,7 @@
'searchBackoffDuration': 0.5,
'searchWarningThreshold': 3,
'searchCutoffCount': 20,
......@@ -37,9 +37,9 @@ Date: Mon Apr 4 18:04:52 2016 +0200
'defaultDelay': 0.5,
'childrenLimit': 100,
--- a/usr/share/pyshared/dogtail/tree.py
+++ b/usr/share/pyshared/dogtail/tree.py
@@ -819,12 +819,18 @@ class Node(object):
--- a/usr/lib/python2.7/dist-packages/dogtail/tree.py
+++ b/usr/lib/python2.7/dist-packages/dogtail/tree.py
@@ -855,12 +855,18 @@
else:
return False
......@@ -59,16 +59,16 @@ Date: Mon Apr 4 18:04:52 2016 +0200
if not recursive:
cIter = iter(self)
while True:
@@ -839,7 +845,7 @@ class Node(object):
@@ -873,7 +879,7 @@
else:
return pyatspi.utils.findDescendant(self, pred)
def findChild(self, pred, recursive=True, debugName=None,
- retry=True, requireResult=True):
+ retry=True, requireResult=True, showingOnly=None):
- def findChild(self, pred, recursive=True, debugName=None, retry=True, requireResult=True):
+ def findChild(self, pred, recursive=True, debugName=None, retry=True, requireResult=True, showingOnly=None):
"""
Search for a node satisyfing the predicate, returning a Node.
@@ -871,7 +877,7 @@ class Node(object):
@@ -905,7 +911,7 @@
logger.log("searching for %s (attempt %i)" %
(describeSearch(self, pred, recursive, debugName), numAttempts))
......@@ -77,7 +77,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
if result:
assert isinstance(result, Node)
if debugName:
@@ -891,12 +897,12 @@ class Node(object):
@@ -924,7 +930,7 @@
raise SearchError(describeSearch(self, pred, recursive, debugName))
# The canonical "search for multiple" method:
......@@ -85,28 +85,22 @@ Date: Mon Apr 4 18:04:52 2016 +0200
+ def findChildren(self, pred, recursive=True, isLambda=False, showingOnly=None):
"""
Find all children/descendents satisfying the predicate.
"""
if isLambda is True:
- nodes = self.findChildren(predicate.GenericPredicate(), recursive=recursive)
+ nodes = self.findChildren(predicate.GenericPredicate(), recursive=recursive, showingOnly=showingOnly)
result = []
for node in nodes:
try:
@@ -907,6 +913,12 @@ class Node(object):
return result
if isinstance(pred, predicate.Predicate):
pred = pred.satisfiedByNode
You can also use lambdas in place of pred that will enable search also against
@@ -938,6 +944,12 @@
else:
assert isinstance(pred, predicate.Predicate)
compare_func = pred.satisfiedByNode
+ if showingOnly == None:
+ showingOnly = config.searchShowingOnly
+ if showingOnly:
+ orig_pred = pred
+ pred = lambda n: orig_pred(n) and \
+ n.getState().contains(pyatspi.STATE_SHOWING)
if not recursive:
cIter = iter(self)
result = []
@@ -929,7 +941,7 @@ class Node(object):
return descendants
+ orig_compare_func = compare_func
+ compare_func = lambda n: orig_compare_func(n) and \
+ n.getState().contains(pyatspi.STATE_SHOWING)
results = []
numAttempts = 0
@@ -960,7 +972,7 @@
return results
# The canonical "search above this node" method:
- def findAncestor(self, pred):
......@@ -114,7 +108,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search up the ancestry of this node, returning the first Node
satisfying the predicate, or None.
@@ -945,7 +957,7 @@ class Node(object):
@@ -976,7 +988,7 @@
return None
# Various wrapper/helper search methods:
......@@ -123,19 +117,19 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Finds a child satisying the given criteria.
@@ -953,9 +965,9 @@ class Node(object):
if no such child is found, and will eventually raise an exception. It
@@ -985,9 +997,9 @@
also logs the search.
"""
- return self.findChild(predicate.GenericPredicate(name=name, roleName=roleName, description=description, label=label), recursive=recursive, retry=retry, debugName=debugName)
+ return self.findChild(predicate.GenericPredicate(name=name, roleName=roleName, description=description, label=label), recursive=recursive, retry=retry, debugName=debugName, showingOnly=showingOnly)
return self.findChild(predicate.GenericPredicate(name=name, roleName=roleName, description=description,
- label=label), recursive=recursive, retry=retry, debugName=debugName)
+ label=label), recursive=recursive, retry=retry, debugName=debugName, showingOnly=showingOnly)
- def isChild(self, name='', roleName='', description='', label='', recursive=True, retry=False, debugName=None):
+ def isChild(self, name='', roleName='', description='', label='', recursive=True, retry=False, debugName=None, showingOnly=None):
"""
Determines whether a child satisying the given criteria exists.
@@ -970,12 +982,12 @@ class Node(object):
@@ -1002,12 +1014,12 @@
self.findChild(
predicate.GenericPredicate(
name=name, roleName=roleName, description=description, label=label),
......@@ -150,7 +144,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a menu with the given name.
@@ -983,9 +995,9 @@ class Node(object):
@@ -1015,9 +1027,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -162,7 +156,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a menu item with the given name.
@@ -993,9 +1005,9 @@ class Node(object):
@@ -1025,9 +1037,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -174,7 +168,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a text entry with the given name.
@@ -1003,9 +1015,9 @@ class Node(object):
@@ -1035,9 +1047,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -186,7 +180,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a button with the given name.
@@ -1013,9 +1025,9 @@ class Node(object):
@@ -1045,9 +1057,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -198,7 +192,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a child labelled with the given text.
@@ -1023,9 +1035,9 @@ class Node(object):
@@ -1055,9 +1067,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -210,7 +204,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a child with the given name.
@@ -1033,9 +1045,9 @@ class Node(object):
@@ -1065,9 +1077,9 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -222,7 +216,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a tab with the given name.
@@ -1043,7 +1055,7 @@ class Node(object):
@@ -1075,7 +1087,7 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -231,16 +225,16 @@ Date: Mon Apr 4 18:04:52 2016 +0200
def getUserVisibleStrings(self):
"""
@@ -1109,7 +1121,7 @@ class Root (Node):
@@ -1138,7 +1150,7 @@
"""
Get all applications.
"""
return root.findChildren(predicate.GenericPredicate(
- roleName="application"), recursive=False)
+ roleName="application"), recursive=False, showingOnly=False)
- return root.findChildren(predicate.GenericPredicate(roleName="application"), recursive=False)
+ return root.findChildren(predicate.GenericPredicate(roleName="application"), recursive=False, showingOnly=False)
def application(self, appName, retry=True):
"""
@@ -1120,12 +1132,12 @@ class Root (Node):
@@ -1149,11 +1161,11 @@
if no such child is found, and will eventually raise an exception. It
also logs the search.
"""
......@@ -249,13 +243,12 @@ Date: Mon Apr 4 18:04:52 2016 +0200
class Application (Node):
- def dialog(self, dialogName, recursive=False):
+ def dialog(self, dialogName, recursive=False, showingOnly=None):
"""
Search below this node for a dialog with the given name,
returning a Window instance.
@@ -1136,9 +1148,9 @@ class Application (Node):
@@ -1164,9 +1176,9 @@
FIXME: should this method activate the dialog?
"""
......@@ -267,12 +260,12 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Search below this node for a window with the given name,
returning a Window instance.
@@ -1152,13 +1164,13 @@ class Application (Node):
@@ -1179,13 +1191,13 @@
The window will be automatically activated (raised and focused
by the window manager) if wnck bindings are available.
"""
result = self.findChild(
- predicate.IsAWindowNamed(windowName=windowName), recursive)
+ predicate.IsAWindowNamed(windowName=windowName), recursive, showingOnly=showingOnly)
- result = self.findChild(predicate.IsAWindowNamed(windowName=windowName), recursive)
+ result = self.findChild(predicate.IsAWindowNamed(windowName=windowName), recursive, showingOnly=showingOnly)
# FIXME: activate the WnckWindow ?
# if gotWnck:
# result.activate()
......@@ -283,7 +276,7 @@ Date: Mon Apr 4 18:04:52 2016 +0200
"""
Get the wnck.Application instance for this application, or None
@@ -1169,7 +1181,7 @@ class Application (Node):
@@ -1196,7 +1208,7 @@
FIXME: untested
"""
......@@ -292,3 +285,5 @@ Date: Mon Apr 4 18:04:52 2016 +0200
if window:
wnckWindow = window.getWnckWindow()
return wnckWindow.get_application()
--
2.10.1
tails (2.7) UNRELEASED; urgency=medium
* Major new features and changes
- Install Tor 0.2.8.8. (Closes: #11832)
- Upgrade Icedove to 1:45.4.0-1~deb8u1+tails1. (Closes: #11854,
#11860)
* Security fixes
- Upgrade to Linux 4.7. (Closes: #11885, #11818)
- Upgrade to Tor 0.2.8.9. (Closes: #11832, #11891)
- Upgrade imagemagick to 8:6.8.9.9-5+deb8u5.
- Upgrade openssl to 1.0.1t-1+deb8u5.
- Upgrade libarchive to 3.1.2-11+deb8u3.
- Upgrade bind9 to 1:9.9.5.dfsg-9+deb8u8.
- Upgrade c-ares to 1.10.0-2+deb8u1.
- Upgrade nspr to 2:4.12-1+debu8u1.
- Upgrade nss to 2:3.26-1+debu8u1.
- Upgrade tar to 1.27.1-2+deb8u1.
- Upgrade mat to 0.5.2-3+deb8u1.
* Minor improvements
- Ship Let's encrypt intermediate certificate to prepare the
......@@ -11,13 +25,21 @@ tails (2.7) UNRELEASED; urgency=medium
* Bugfixes
- Fix multiarch support in Synaptic. (Closes: #11820)
- Set default spelling language to en_US in Icedove. (Closes: #11037)
* Test suite
- Test incremental upgrades. (Closes: #6309)
- Add test for incremental upgrades. (Closes: #6309)
- Add tests for Icedove. (Closes: #6304)
- Decrease timeout to Tails Greeter to speed up testing of branches
where it is broken. (Closes: #11449)
- Add a ID field to the remote shell responses to filter out
unrelated ones. (Closes: #11846)
- Reliabily wait for the Greeter PostLogin script. (Closes: #5666)
- Reliabily type the kernel command line in the prompt at the boot
menu to ensure the remote shell is started. (Closes: #10777)
- Remove DVDROM device when not used, to workaround QEMU/Libvirt
compatibility issue. (Closes: #11874)
-- Tails developers <tails@boum.org> Mon, 03 Oct 2016 23:06:51 +0200
......@@ -38,7 +60,7 @@ tails (2.6) unstable; urgency=medium
a serious security regression. (Closes: #11613)
· Add missing icedove-l10n-* packages to our custom APT
repository (Closes: #11550)
- Upgrade to Linux 4.7: (Closes: #10298)
- Upgrade to Linux 4.6: (Closes: #10298)
· Install the 686 kernel flavour instead of the obsolete 586
one.
· APT, dpkg: add amd64 architecture. The amd64 kernel flavour is
......
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='sata'/>
<readonly/>
</disk>
......@@ -18,12 +18,6 @@
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file=''/>
<target dev='hdc' bus='sata'/>
<readonly/>
</disk>
<controller type='usb' index='0' model='nec-xhci'/>
<controller type='sata' index='0'/>
<controller type='virtio-serial' index='0'/>
......
#11465
@product @check_tor_leaks @fragile
@product @check_tor_leaks
Feature: Icedove email client
As a Tails user
I may want to use an email client
Background:
Given I have started Tails from DVD and logged in and the network is connected
When I start "Icedove" via the GNOME "Internet" applications menu
And Icedove has started
And I have not configured an email account
When I start Icedove
Then I am prompted to setup an email account
Scenario: Adblock is not enabled within Icedove
Scenario: Only the expected addons are installed
Given I cancel setting up an email account
When I open Icedove's Add-ons Manager
And I click the extensions tab
Then I see that Adblock is not installed in Icedove
Then I see that only the amnesia branding, Enigmail and TorBirdy addons are enabled in Icedove
Scenario: Enigmail is configured to use the correct keyserver
Given I cancel setting up an email account
And I go into Enigmail's preferences
When I click Enigmail's keyserver tab
And I enable Enigmail's expert settings
When I click Enigmail's Keyserver tab
Then I see that Enigmail is configured to use the correct keyserver
When I click Enigmail's advanced tab
When I click Enigmail's Advanced tab
Then I see that Enigmail is configured to use the correct SOCKS proxy
Scenario: Torbirdy is configured to use Tor
Given I cancel setting up an email account
And I open Torbirdy's preferences
Then I see that Torbirdy is configured to use Tor
Scenario: Icedove's autoconfiguration wizard defaults to IMAP and secure protocols
When I enter my email credentials into the autoconfiguration wizard
Then the autoconfiguration wizard's choice for the incoming server is secure IMAP
Then the autoconfiguration wizard's choice for the outgoing server is secure SMTP
Scenario: Icedove can send emails, and receive emails over IMAP
When I enter my email credentials into the autoconfiguration wizard
Then the autoconfiguration wizard's choice for the incoming server is secure IMAP
When I accept the autoconfiguration wizard's configuration
And I send an email to myself
And I fetch my email
Then I can find the email I sent to myself in my inbox
Scenario: Icedove can send emails, and receive emails over POP3
When I enter my email credentials into the autoconfiguration wizard
Then the autoconfiguration wizard's choice for the incoming server is secure IMAP
When I select the autoconfiguration wizard's POP3 choice
Then the autoconfiguration wizard's choice for the incoming server is secure POP3
When I accept the autoconfiguration wizard's configuration
And I send an email to myself
And I fetch my email
Then I can find the email I sent to myself in my inbox
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment