summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomás Touceda <chiiph@leap.se>2014-06-20 13:24:51 -0300
committerTomás Touceda <chiiph@leap.se>2014-06-20 13:24:51 -0300
commit6b4a4dc1efe5a3c740a9e54a22409d1025294537 (patch)
tree8255586a1e5e6e61ef1a60d7a576a0a41a7f977f
parentbfcd118cc0cab27057419ace691bb0caa7f2f430 (diff)
parentb7b00f724b5ce1dc9382ec6c44e6b23faadacbb4 (diff)
Merge remote-tracking branch 'refs/remotes/kali/feature/install-helpers-utility' into develop
-rw-r--r--changes/feature_install-helpers-util3
-rw-r--r--data/ts/en_US.ts686
-rw-r--r--pkg/linux/README.rst7
-rwxr-xr-xpkg/linux/bitmask-root2
-rwxr-xr-xpkg/linux/leap-install-helper.sh173
-rw-r--r--src/leap/bitmask/platform_init/initializers.py125
-rw-r--r--[-rwxr-xr-x]src/leap/bitmask/util/pastebin.py0
7 files changed, 669 insertions, 327 deletions
diff --git a/changes/feature_install-helpers-util b/changes/feature_install-helpers-util
new file mode 100644
index 00000000..4facc1d3
--- /dev/null
+++ b/changes/feature_install-helpers-util
@@ -0,0 +1,3 @@
+- Remove deprecated policy files. Closes: #5651
+- Install helper files only if standalone=True. Related: #5625
+- Use installer helper from within bundle path. Related: #5634
diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts
index 562df1a3..cf74d7b6 100644
--- a/data/ts/en_US.ts
+++ b/data/ts/en_US.ts
@@ -68,96 +68,114 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="60"/>
- <source>&lt;span style=&apos;color:#0000FF;&apos;&gt;NOTE&lt;/span&gt;: To use this, you need to enable/start {0}.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="99"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="119"/>
<source>Open keys file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="191"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="237"/>
<source>Input/Output error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="112"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="158"/>
<source>There was an error accessing the file.
Import canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="122"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="169"/>
<source>Data mismatch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="125"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="172"/>
<source>The public and private key should have the same address and fingerprint.
Import canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="130"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="183"/>
<source>Missing key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="133"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="186"/>
<source>You need to provide the public AND private key in the same file.
Import canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="139"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="197"/>
<source>Address mismatch</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="142"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="200"/>
<source>The identity for the key needs to be the same as your user address.
Import canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="147"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="125"/>
<source>Are you sure that you want to replace the current key pair whith the imported?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="164"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="144"/>
<source>Import Successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="165"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="145"/>
<source>The key pair was imported successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="174"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="207"/>
<source>Save keys file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="185"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="224"/>
<source>Export Successful</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="187"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="226"/>
<source>The key pair was exported successfully.
Please, store your private key in a safe place.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="193"/>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="239"/>
<source>There was an error accessing the file.
Export canceled.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="59"/>
+ <source>The provider that you are using does not support {0}.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="65"/>
+ <source>To use this, you need to enable/start {0}.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/advanced_key_management.py" line="110"/>
+ <source>&lt;span style=&apos;color:#0000FF;&apos;&gt;NOTE&lt;/span&gt;: </source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ComplainDialog</name>
+ <message>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="419"/>
+ <source>Ok, thanks</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>EIPPreferences</name>
@@ -210,22 +228,22 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="125"/>
+ <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="153"/>
<source>Gateway settings for provider &apos;{0}&apos; saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="179"/>
+ <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="230"/>
<source>There was a problem with configuration files.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="101"/>
+ <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="122"/>
<source> (uninitialized)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="151"/>
+ <location filename="../src/leap/bitmask/gui/eip_preferenceswindow.py" line="245"/>
<source>This is an uninitialized provider, please log in first.</source>
<translation type="unfinished"></translation>
</message>
@@ -253,88 +271,158 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/eip_status.ui" line="212"/>
+ <location filename="../src/leap/bitmask/gui/ui/eip_status.ui" line="213"/>
<source>0.0 KB/s</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>EIPStatusWidget</name>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="327"/>
- <source>Turn OFF</source>
+ <location filename="../src/leap/bitmask/gui/ui/eip_status.ui" line="245"/>
+ <source>Turn Off</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>EIPStatusWidget</name>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="341"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="411"/>
<source>Turn ON</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="348"/>
- <source>Traffic is being routed in the clear</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="405"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="521"/>
<source>Authenticating...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="407"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="529"/>
<source>Retrieving configuration...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="409"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="531"/>
<source>Waiting to start...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="411"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="533"/>
<source>Assigning IP</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="413"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="535"/>
<source>Reconnecting...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="420"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="543"/>
<source>Unable to start VPN, it&apos;s already running.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="463"/>
- <source>Route traffic through: {0}</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="260"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="304"/>
<source>disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="442"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="565"/>
<source>{0}: OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="257"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="301"/>
<source>You must login to use {0}</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="447"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="570"/>
<source>{0}: Starting...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/eip_status.py" line="450"/>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="573"/>
<source>{0}: ON</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="525"/>
+ <source>Encrypted Internet is starting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="397"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="433"/>
+ <source>Traffic is being routed in the clear.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="434"/>
+ <source>Network is unreachable.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="436"/>
+ <source>Error connecting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="451"/>
+ <source>Error connecting.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="454"/>
+ <source>Bitmask is blocking unencrypted traffic.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="587"/>
+ <source>Routing traffic through: &lt;b&gt;{0}&lt;/b&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="634"/>
+ <source>Could not load {0} configuration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="643"/>
+ <source>Another openvpn instance is already running, and could not be stopped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="653"/>
+ <source>Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="661"/>
+ <source>We could not find openvpn binary.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="682"/>
+ <source>We could not find any authentication agent in your system.&lt;br/&gt;Make sure you have&lt;b&gt;polkit-gnome-authentication-agent-1&lt;/b&gt; running andtry again.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="690"/>
+ <source>We could not find &lt;b&gt;pkexec&lt;/b&gt; in your system.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="700"/>
+ <source>{0} cannot be started because the tuntap extension is not installed properly in your system.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/eip_status.py" line="720"/>
+ <source>Network is unreachable</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>LoggerWindow</name>
@@ -399,25 +487,30 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="224"/>
+ <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="225"/>
<source>Your pastebin link &lt;a href=&apos;{0}&apos;&gt;{0}&lt;/a&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="227"/>
+ <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="230"/>
<source>Pastebin OK</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="240"/>
+ <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="245"/>
<source>Sending logs to Pastebin failed!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="241"/>
+ <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="251"/>
<source>Pastebin Error</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/loggerwindow.py" line="250"/>
+ <source>Maximum posts per day reached</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>LoginWidget</name>
@@ -447,17 +540,17 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="247"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="246"/>
<source>Log In</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="125"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="124"/>
<source>Other...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="242"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="241"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -467,32 +560,32 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="368"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="371"/>
<source>Logout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="296"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="299"/>
<source>Please select a valid provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="301"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="304"/>
<source>Please provide a valid username</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="306"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="309"/>
<source>Please provide a valid password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="309"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="312"/>
<source>Logging in...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/login.py" line="361"/>
+ <location filename="../src/leap/bitmask/gui/login.py" line="364"/>
<source>Logging out...</source>
<translation type="unfinished"></translation>
</message>
@@ -515,206 +608,196 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="192"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="196"/>
<source>There was an unexpected problem with Soledad.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="413"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="432"/>
<source>OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="209"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="224"/>
<source>Mail is OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="217"/>
- <source>Starting..</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="218"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="233"/>
<source>Mail is starting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="436"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="455"/>
<source>ON</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="222"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="237"/>
<source>Mail is ON</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="225"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="240"/>
<source>Mail is disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="422"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="441"/>
<source>Starting...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="254"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="270"/>
<source>Soledad has started...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="256"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="272"/>
<source>Soledad is starting, please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="291"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="308"/>
<source>Looking for key for this user</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="295"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="312"/>
<source>Found key! Starting mail...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="300"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="317"/>
<source>Finished generating key!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="302"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="319"/>
<source>Starting mail...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="334"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="352"/>
<source>SMTP failed to start, check the logs.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="390"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="409"/>
<source>About to start, please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="397"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="416"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="162"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="166"/>
<source>{0}: OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="444"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="463"/>
<source>You must be logged in to use {0}.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="298"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="315"/>
<source>Generating new key, this may take a few minutes.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="373"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="392"/>
<source>{0} Unread Emails in your Inbox</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="377"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="396"/>
<source>1 Unread Email in your Inbox</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mail_status.py" line="429"/>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="448"/>
<source>Disconnecting...</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="474"/>
+ <source>Invalid auth token, try logging in again.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mail_status.py" line="232"/>
+ <source>Starting&#xe2;&#x80;&#xa6;</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MainWindow</name>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="238"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="228"/>
<source>There are new updates available, please restart.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="280"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="270"/>
<source>More...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="758"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="870"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="352"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="342"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="362"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="352"/>
<source>&amp;Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="367"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="357"/>
<source>&amp;Wizard</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="806"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="930"/>
<source>Hide Main Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="638"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="728"/>
<source> The following components will be updated:
%s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="641"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="731"/>
<source>Updates available</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="805"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="929"/>
<source>Show Main Window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1524"/>
- <source>We could not find any authentication agent in your system.&lt;br/&gt;Make sure you have &lt;b&gt;polkit-gnome-authentication-agent-1&lt;/b&gt; running and try again.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1536"/>
- <source>We could not find &lt;b&gt;pkexec&lt;/b&gt; in your system.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1541"/>
- <source>We could not find openvpn binary.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1705"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1548"/>
<source>Starting...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1719"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1563"/>
<source>Not supported</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1723"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1567"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -724,173 +807,203 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="357"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="347"/>
<source>About &amp;Bitmask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="289"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="211"/>
<source>Mail is OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="629"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="719"/>
<source>The Bitmask app is ready to update, please restart the application.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="870"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="996"/>
<source>About Bitmask - %s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1011"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1138"/>
<source>Unable to login: Problem with provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1089"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1219"/>
<source>Log in cancelled by the user.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1547"/>
- <source>Another openvpn instance is already running, and could not be stopped.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1554"/>
- <source>Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1740"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1584"/>
<source>There was a problem with the provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1845"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1639"/>
<source>Something went wrong with the logout.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1864"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1606"/>
<source>Unable to connect: Problem with provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1836"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1651"/>
<source>Login</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="315"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="305"/>
<source>&amp;Bitmask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="372"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="362"/>
<source>Show &amp;Log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="377"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="367"/>
<source>Create a new account...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="278"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="201"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1606"/>
- <source>Network is unreachable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="123"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="121"/>
<source>Please Log In</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="342"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="332"/>
<source>Account Preferences...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="347"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="337"/>
<source>Internet Preferences...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="385"/>
+ <location filename="../src/leap/bitmask/gui/ui/mainwindow.ui" line="375"/>
<source>Advanced Key Management</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="742"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="854"/>
<source> (offline mode)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="765"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="878"/>
<source>OFF</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="884"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1010"/>
<source>Version: &lt;b&gt;%s&lt;/b&gt; (%s)&lt;br&gt;&lt;br&gt;%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).&lt;br&gt;&lt;br&gt;LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. &lt;br&gt;&lt;br&gt;&lt;a href=&apos;https://leap.se&apos;&gt;More about LEAP&lt;/a&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="911"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1038"/>
<source>&lt;strong&gt;Instructions to use mail:&lt;/strong&gt;&lt;br&gt;If you use Thunderbird you can use the Bitmask extension helper. Search for &apos;Bitmask&apos; in the add-on manager or download it from: {0}.&lt;br&gt;&lt;br&gt;You can configure Bitmask manually with these options:&lt;br&gt;&lt;em&gt; Incoming -&gt; IMAP, port: {1}&lt;br&gt; Outgoing -&gt; SMTP, port: {2}&lt;br&gt; Username -&gt; your bitmask username.&lt;br&gt; Password -&gt; does not matter, use any text. Just don&apos;t leave it empty and don&apos;t use your account&apos;s password.&lt;/em&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="912"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1039"/>
<source>Bitmask Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="924"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1051"/>
<source>The current client version is not supported by this provider.&lt;br&gt;Please update to latest version.&lt;br&gt;&lt;br&gt;You can get the latest version from &lt;a href=&apos;{0}&apos;&gt;{1}&lt;/a&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="925"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1052"/>
<source>Update Needed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="935"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1062"/>
<source>This provider is not compatible with the client.&lt;br&gt;&lt;br&gt;Error: API version incompatible.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="935"/>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1062"/>
<source>Incompatible Provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1757"/>
- <source>Could not load {0} configuration.</source>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="302"/>
+ <source>Application error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1531"/>
- <source>{0} cannot be started because the tuntap extension is not installed properly in your system.</source>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="304"/>
+ <source>You are trying to do an operation that requires logging in first.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1670"/>
- <source>{0} could not be launched because you did not authenticate properly.</source>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="362"/>
+ <source>Unknown error.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1677"/>
- <source>{0} finished in an unexpected manner!</source>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="366"/>
+ <source>There was a server problem with authentication.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="370"/>
+ <source>Could not establish a connection.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="374"/>
+ <source>Invalid username or password.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="897"/>
+ <source>Hello!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="898"/>
+ <source>Bitmask has started in the tray.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1252"/>
+ <source>Succeeded</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1501"/>
+ <source>The server at {0} can&apos;t be found, because the DNS lookup failed. DNS is the network service that translates a website&apos;s name to its Internet address. Either your computer is having trouble connecting to the network, or you are missing some helper files that are needed to securely use DNS while {1} is active. To install these helper files, quit this application and start it again.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1504"/>
+ <source>Connection Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1748"/>
+ <source>Quitting...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/mainwindow.py" line="1749"/>
+ <source>Bitmask is quitting, please wait.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -965,47 +1078,47 @@ Export canceled.</source>
<context>
<name>PreferencesWindow</name>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="63"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="59"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="159"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="168"/>
<source>Changing password...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="210"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="249"/>
<source>Password changed successfully.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="225"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="433"/>
<source>There was a problem changing the password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="228"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="437"/>
<source>You did not enter a correct current password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="371"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="417"/>
<source>Services settings for provider &apos;{0}&apos; saved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="97"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="114"/>
<source>You need to enable {0} in order to change the password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="103"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="122"/>
<source>You need to wait until {0} is ready in order to change the password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="113"/>
+ <location filename="../src/leap/bitmask/gui/preferenceswindow.py" line="101"/>
<source>In order to change your password you need to be logged in.</source>
<translation type="unfinished"></translation>
</message>
@@ -1013,25 +1126,17 @@ Export canceled.</source>
<context>
<name>ProviderBootstrapper</name>
<message>
- <location filename="../src/leap/bitmask/provider/providerbootstrapper.py" line="146"/>
+ <location filename="../src/leap/bitmask/provider/providerbootstrapper.py" line="154"/>
<source>Provider certificate could not be verified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/provider/providerbootstrapper.py" line="153"/>
+ <location filename="../src/leap/bitmask/provider/providerbootstrapper.py" line="161"/>
<source>Provider does not support HTTPS</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>SRPAuth</name>
- <message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="714"/>
- <source>Succeeded</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>Wizard</name>
<message>
<location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="43"/>
@@ -1059,7 +1164,7 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="298"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="340"/>
<source>Check</source>
<translation type="unfinished"></translation>
</message>
@@ -1084,196 +1189,181 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="336"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="353"/>
<source>Provider Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="339"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="356"/>
<source>Description of services offered by this provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="348"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="365"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="380"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="397"/>
<source>Desc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="390"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="407"/>
<source>&lt;b&gt;Services offered:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="400"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="417"/>
<source>services</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="420"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="437"/>
<source>&lt;b&gt;Enrollment policy:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="430"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="447"/>
<source>policy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="450"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="467"/>
<source>&lt;b&gt;URL:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="460"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="477"/>
<source>URL</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="467"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="484"/>
<source>&lt;b&gt;Description:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="478"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="495"/>
<source>Provider setup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="481"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="498"/>
<source>Gathering configuration options for this provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="503"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="520"/>
<source>We are downloading some bits that we need to establish a secure connection with the provider for the first time.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="526"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="543"/>
<source>Setting up provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="576"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="593"/>
<source>Getting info from the Certificate Authority</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="583"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="600"/>
<source>Do we trust this Certificate Authority?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="590"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="607"/>
<source>Establishing a trust relationship with this provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="649"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="666"/>
<source>Register new user</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="652"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="669"/>
<source>Register a new user with provider</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="667"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="684"/>
<source>&lt;b&gt;Password:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="694"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="711"/>
<source>&lt;b&gt;Re-enter password:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="704"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="721"/>
<source>Register</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="750"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="767"/>
<source>Remember my username and password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="774"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="791"/>
<source>Service selection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="777"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="794"/>
<source>Please select the services you would like to have</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="132"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="131"/>
<source>&amp;Next &gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="134"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="133"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="265"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="289"/>
<source>Starting registration...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="296"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="333"/>
<source>User %s successfully registered.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="448"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="503"/>
<source>&lt;font color=&apos;red&apos;&gt;&lt;b&gt;Non-existent provider&lt;/b&gt;&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="466"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="522"/>
<source>&lt;font color=&apos;red&apos;&gt;&lt;b&gt;%s&lt;/b&gt;&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="492"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="551"/>
<source>Unable to load provider configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="498"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="557"/>
<source>&lt;font color=&apos;red&apos;&gt;&lt;b&gt;Not a valid provider&lt;/b&gt;&lt;/font&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="565"/>
- <source>Services by %s</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="585"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="662"/>
<source>Something went wrong while trying to load service %s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="616"/>
- <source>Description of services offered by %s</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="637"/>
- <source>Register a new user with %s</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="26"/>
<source>Bitmask first run</source>
<translation type="unfinished"></translation>
@@ -1289,7 +1379,7 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="737"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="754"/>
<source>&lt;b&gt;Username:&lt;/b&gt;</source>
<translation type="unfinished"></translation>
</message>
@@ -1299,7 +1389,7 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="288"/>
+ <location filename="../src/leap/bitmask/gui/ui/wizard.ui" line="275"/>
<source>Configure new provider:</source>
<translation type="unfinished"></translation>
</message>
@@ -1314,114 +1404,130 @@ Export canceled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="317"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="360"/>
<source>Something has gone wrong. Please try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/gui/wizard.py" line="607"/>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="688"/>
<source>Gathering configuration options for {0}</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>__impl</name>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="298"/>
- <source>The server did not send the salt parameter</source>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="374"/>
+ <source>The requested username is taken, choose another.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="643"/>
+ <source>Services by {0}</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="696"/>
+ <source>Description of services offered by {0}</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="302"/>
- <source>The server did not send the B parameter</source>
+ <location filename="../src/leap/bitmask/gui/wizard.py" line="711"/>
+ <source>Register a new user with {0}</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>msg</name>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="334"/>
- <source>The data sent from the server had errors</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="200"/>
+ <source>TAP Driver</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="356"/>
- <source>Could not connect to the server</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="207"/>
+ <source>Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="382"/>
- <source>Unknown error (%s)</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="325"/>
+ <source>TUN Driver</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="413"/>
- <source>Problem getting data from server</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="333"/>
+ <source>Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="439"/>
- <source>Bad data from server</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="142"/>
+ <source>Problem installing files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="446"/>
- <source>Auth verification failed</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="143"/>
+ <source>Some of the files could not be copied.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="454"/>
- <source>Session cookie verification failed</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="328"/>
+ <source>Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="289"/>
- <source>There was a problem with authentication</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="92"/>
+ <source>Missing helper files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/crypto/srpauth.py" line="178"/>
- <source>Invalid username or password.</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="380"/>
+ <source>Missing resolvconf framework</source>
<translation type="unfinished"></translation>
</message>
-</context>
-<context>
- <name>msg</name>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="93"/>
- <source>Missing up/down scripts</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="432"/>
+ <source>Missing Bitmask helpers</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>msgstr</name>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="184"/>
- <source>TAP Driver</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="375"/>
+ <source>Could not find &lt;b&gt;resolvconf&lt;/b&gt; installed in your system.
+Do you want to quit Bitmask now?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="191"/>
- <source>Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges.</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="379"/>
+ <source>Encrypted Internet needs resolvconf installed to work properly.
+Please use your package manager to install it.
+</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="310"/>
- <source>TUN Driver</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="401"/>
+ <source>Some essential helper files are missing in your system.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="318"/>
- <source>Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges.</source>
+ <location filename="../src/leap/bitmask/platform_init/initializers.py" line="404"/>
+ <source>Reinstall your debian packages, or make sure you place them by hand.</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>self._eip_status</name>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="132"/>
- <source>Problem installing files</source>
+ <location filename="../src/leap/bitmask/services/eip/conductor.py" line="184"/>
+ <source>{0} is restarting</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="133"/>
- <source>Some of the files could not be copied.</source>
+ <location filename="../src/leap/bitmask/services/eip/conductor.py" line="295"/>
+ <source>{0} could not be launched because you did not authenticate properly.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/leap/bitmask/platform_init/initializers.py" line="313"/>
- <source>Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed?</source>
+ <location filename="../src/leap/bitmask/services/eip/conductor.py" line="307"/>
+ <source>{0} finished in an unexpected manner!</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/pkg/linux/README.rst b/pkg/linux/README.rst
index 249c721f..f89842d3 100644
--- a/pkg/linux/README.rst
+++ b/pkg/linux/README.rst
@@ -15,10 +15,15 @@ path will be used if the flag ``--standalone`` is set::
bitmask-root -> /usr/local/sbin/bitmask-root
polkit/se.leap.bitmask.bundle.policy -> /usr/share/polkit-1/actions/se.leap.bitmask.bundle.policy
-You will also have to place an openvpn binary in the following path::
+When running with ``--standalone`` flag, the openvpn binary is expected in the following path::
leap-openvpn -> /usr/local/sbin/leap-openvpn
+The bundle will use the script ``leap-install-helper.sh`` to copy the needed
+files. If you ever want to use it manually to update the helpers or bins, it
+needs a ``--from-path`` parameter to be passed to it. This points to a folder
+from where all the needed binaries and scripts can be found.
+
Binary hashing
==============
diff --git a/pkg/linux/bitmask-root b/pkg/linux/bitmask-root
index 1929b51b..5367a31c 100755
--- a/pkg/linux/bitmask-root
+++ b/pkg/linux/bitmask-root
@@ -67,7 +67,7 @@ OPENVPN_USER = "nobody"
OPENVPN_GROUP = "nogroup"
LEAPOPENVPN = "LEAPOPENVPN"
OPENVPN_SYSTEM_BIN = "/usr/sbin/openvpn" # Debian location
-OPENVPN_LEAP_BIN = "/usr/sbin/leap-openvpn" # installed by bundle
+OPENVPN_LEAP_BIN = "/usr/local/sbin/leap-openvpn" # installed by bundle
"""
diff --git a/pkg/linux/leap-install-helper.sh b/pkg/linux/leap-install-helper.sh
new file mode 100755
index 00000000..566dd3d9
--- /dev/null
+++ b/pkg/linux/leap-install-helper.sh
@@ -0,0 +1,173 @@
+#!/bin/bash
+
+# File: leap-install-helper.sh
+# Copy the needed binaries and helper files to their destination.
+# Copyright (C) 2014 LEAP Encryption Access Project.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+LOCAL_SBIN_FOLDER=/usr/local/sbin
+
+POLKIT_FOLDER="/usr/share/polkit-1/actions"
+POLKIT_FILE="se.leap.bitmask.bundle.policy"
+POLKIT_PATH="${POLKIT_FOLDER}/${POLKIT_FILE}"
+
+BITMASK_ROOT_FILE="bitmask-root"
+BITMASK_ROOT_PATH="${LOCAL_SBIN_FOLDER}/${BITMASK_ROOT_FILE}"
+
+OPENVPN_FILE="leap-openvpn"
+OPENVPN_PATH="${LOCAL_SBIN_FOLDER}/${OPENVPN_FILE}"
+
+# The following array stores global files that have been deprecated and we want
+# to remove from the system path, after having dropped them there in the past.
+
+DEPRECATED_FILES=(
+ '/usr/share/polkit-1/actions/net.openvpn.gui.leap.policy'
+)
+
+
+# Variables for parsing and storing the script options.
+
+FROM_PATH=NONE
+REMOVE_OLD_FILES=NO
+INSTALL_BITMASK_ROOT=NO
+INSTALL_POLKIT_FILE=NO
+INSTALL_OPENVPN=NO
+
+
+# Process the options
+
+while [[ $# > 1 ]]
+do
+key="$1"
+shift
+
+case $key in
+ -f|--from-path)
+ FROM_PATH="$1"
+ shift
+ ;;
+ -r|--remove-old-files)
+ REMOVE_OLD_FILES="$1"
+ shift
+ ;;
+ --install-bitmask-root)
+ INSTALL_BITMASK_ROOT="$1"
+ shift
+ ;;
+ --install-polkit-file)
+ INSTALL_POLKIT_FILE="$1"
+ shift
+ ;;
+ --install-openvpn)
+ INSTALL_OPENVPN="$1"
+ shift
+ ;;
+ *)
+ # unknown option
+ ;;
+esac
+done
+echo "LEAP_INSTALL_HELPER"
+echo "-------------------"
+echo FROM_PATH = "${FROM_PATH}"
+echo REMOVE_OLD_FILES = "${REMOVE_OLD_FILES}"
+echo INSTALL_BITMASK_ROOT = "${INSTALL_BITMASK_ROOT}"
+echo INSTALL_POLKIT_FILE = "${INSTALL_POLKIT_FILE}"
+echo INSTALL_OPENVPN = "${INSTALL_OPENVPN}"
+echo
+
+
+#
+# helper functions
+#
+
+function check_current_uid() {
+ current_uid=`id | sed 's/^uid=//;s/(.*$//'`
+ if [ $current_uid != 0 ]
+ then
+ echo "[ERROR] NEED TO BE RUN AS ROOT"
+ exit 1
+ fi
+}
+
+function check_from_path() {
+ if [ $FROM_PATH == NONE ]
+ then
+ echo "[ERROR] YOU NEED TO GIVE --from-path VALUE..."
+ exit 1
+ fi
+}
+
+function remove_old_files() {
+ for file in "${DEPRECATED_FILES[@]}"
+ do
+ rm $file
+ done
+}
+
+function copy_bitmask_root() {
+ mkdir -p "${LOCAL_SBIN_FOLDER}"
+ cp "${FROM_PATH}/${BITMASK_ROOT_FILE}" "${BITMASK_ROOT_PATH}"
+ chmod 744 "${BITMASK_ROOT_PATH}"
+
+}
+
+function copy_polkit_file() {
+ cp "${FROM_PATH}/${POLKIT_FILE}" "${POLKIT_PATH}"
+ chmod 644 "${POLKIT_PATH}"
+}
+
+function copy_openvpn_file() {
+ mkdir -p "${LOCAL_SBIN_FOLDER}"
+ cp "${FROM_PATH}/${OPENVPN_FILE}" "${OPENVPN_PATH}"
+ chmod 744 "${OPENVPN_PATH}"
+
+}
+
+
+#
+# Process options and run functions.
+#
+
+check_current_uid
+
+if [ $INSTALL_BITMASK_ROOT == YES ] || [ $INSTALL_POLKIT_FILE == YES ] || [ $INSTALL_OPENVPN == YES ]
+then
+ check_from_path
+fi
+
+if [ $REMOVE_OLD_FILES == YES ]
+then
+ echo "REMOVING OLD FILES..."
+ remove_old_files
+fi
+
+if [ $INSTALL_BITMASK_ROOT == YES ]
+then
+ echo "INSTALLING bitmask-root..."
+ copy_bitmask_root
+fi
+
+if [ $INSTALL_POLKIT_FILE == YES ]
+then
+ echo "INSTALLING policykit file..."
+ copy_polkit_file
+fi
+
+if [ $INSTALL_OPENVPN == YES ]
+then
+ echo "INSTALLING openvpn..."
+ copy_openvpn_file
+fi
diff --git a/src/leap/bitmask/platform_init/initializers.py b/src/leap/bitmask/platform_init/initializers.py
index 79fdd554..8dae21bf 100644
--- a/src/leap/bitmask/platform_init/initializers.py
+++ b/src/leap/bitmask/platform_init/initializers.py
@@ -25,8 +25,9 @@ import sys
import subprocess
import tempfile
-from PySide import QtGui
+from PySide import QtGui, QtCore
+from leap.bitmask.config import flags
from leap.bitmask.config.leapsettings import LeapSettings
from leap.bitmask.services.eip import get_vpn_launcher
from leap.bitmask.services.eip.linuxvpnlauncher import LinuxVPNLauncher
@@ -76,9 +77,9 @@ HELPERS_BADEXEC_MSG = BADEXEC_MSG % (
"helper files", "they", "be copied")
-def get_missing_updown_dialog():
+def get_missing_helpers_dialog():
"""
- Create a dialog for notifying of missing updown scripts.
+ Create a dialog for notifying of missing helpers.
Returns that dialog.
:rtype: QtGui.QMessageBox instance
@@ -104,14 +105,25 @@ def check_missing():
raises a dialog to ask user for permission to do it.
"""
config = LeapSettings()
+ complain_missing = False
alert_missing = config.get_alert_missing_scripts()
+ if alert_missing and not flags.STANDALONE:
+ # We refuse to install missing stuff if not running with standalone
+ # flag. Right now we rely on the flag alone, but we can disable this
+ # by overwriting some constant from within the debian package.
+ alert_missing = False
+ complain_missing = True
+
launcher = get_vpn_launcher()
missing_scripts = launcher.missing_updown_scripts
missing_other = launcher.missing_other_files
- if alert_missing and (missing_scripts() or missing_other()):
- msg = get_missing_updown_dialog()
+ logger.debug("MISSING OTHER: %s" % (str(missing_other())))
+
+ missing_some = missing_scripts() or missing_other()
+ if alert_missing and missing_some:
+ msg = get_missing_helpers_dialog()
ret = msg.exec_()
if ret == QtGui.QMessageBox.Yes:
@@ -123,8 +135,6 @@ def check_missing():
"Installer not found for platform %s." % (_system,))
return
- print "INSTALL FUN", install_missing_fun
-
# XXX maybe move constants to fun
ok = install_missing_fun(HELPERS_BADEXEC_MSG, HELPERS_NOTFOUND_MSG)
if not ok:
@@ -143,6 +153,12 @@ def check_missing():
"Setting alert_missing_scripts to False, we will not "
"ask again")
config.set_alert_missing_scripts(False)
+
+ if complain_missing and missing_some:
+ missing = missing_scripts() + missing_other()
+ msg = _get_missing_complain_dialog(missing)
+ ret = msg.exec_()
+
#
# windows initializers
#
@@ -248,13 +264,12 @@ def _darwin_install_missing_scripts(badexec, notfound):
# We expect to execute this from some way of bundle, since
# the up/down scripts should be put in place by the installer.
success = False
- installer_path = os.path.join(
- os.getcwd(),
- "..",
- "Resources",
- "openvpn")
+ installer_path = os.path.abspath(
+ os.path.join(
+ os.getcwd(), "..", "Resources", "openvpn"))
launcher = DarwinVPNLauncher
+ # XXX FIXME !!! call the bash script!
if os.path.isdir(installer_path):
fd, tempscript = tempfile.mkstemp(prefix="leap_installer-")
try:
@@ -352,24 +367,72 @@ def _get_missing_resolvconf_dialog():
:rtype: QtGui.QMessageBox instance
"""
- NO_RESOLVCONF = (
+ msgstr = QtCore.QObject()
+ msgstr.NO_RESOLVCONF = msgstr.tr(
"Could not find <b>resolvconf</b> installed in your system.\n"
"Do you want to quit Bitmask now?")
- EXPLAIN = (
+ msgstr.EXPLAIN = msgstr.tr(
"Encrypted Internet needs resolvconf installed to work properly.\n"
"Please use your package manager to install it.\n")
msg = QtGui.QMessageBox()
msg.setWindowTitle(msg.tr("Missing resolvconf framework"))
- msg.setText(msg.tr(NO_RESOLVCONF))
+ msg.setText(msgstr.NO_RESOLVCONF)
# but maybe the user really deserve to know more
- msg.setInformativeText(msg.tr(EXPLAIN))
+ msg.setInformativeText(msgstr.EXPLAIN)
msg.setStandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
msg.setDefaultButton(QtGui.QMessageBox.Yes)
return msg
+def _get_missing_complain_dialog(stuff):
+ """
+ Create a dialog for notifying about missing helpers (but doing nothing).
+ Used from non-standalone runs.
+
+ :param stuff: list of missing items to display
+ :type stuff: list
+ :rtype: QtGui.QMessageBox instance
+ """
+ msgstr = QtCore.QObject()
+ msgstr.NO_HELPERS = msgstr.tr(
+ "Some essential helper files are missing in your system.")
+ msgstr.EXPLAIN = msgstr.tr(
+ "Reinstall your debian packages, or make sure you place them by hand.")
+
+ class ComplainDialog(QtGui.QDialog):
+
+ def __init__(self, parent=None):
+ super(ComplainDialog, self).__init__(parent)
+
+ label = QtGui.QLabel(msgstr.NO_HELPERS)
+ label.setAlignment(QtCore.Qt.AlignLeft)
+
+ label2 = QtGui.QLabel(msgstr.EXPLAIN)
+ label2.setAlignment(QtCore.Qt.AlignLeft)
+
+ textedit = QtGui.QTextEdit()
+ textedit.setText("\n".join(stuff))
+
+ ok = QtGui.QPushButton()
+ ok.setText(self.tr("Ok, thanks"))
+ self.ok = ok
+ self.ok.clicked.connect(self.close)
+
+ mainLayout = QtGui.QGridLayout()
+ mainLayout.addWidget(label, 0, 0)
+ mainLayout.addWidget(label2, 1, 0)
+ mainLayout.addWidget(textedit, 2, 0)
+ mainLayout.addWidget(ok, 3, 0)
+
+ self.setLayout(mainLayout)
+
+ msg = ComplainDialog()
+ msg.setWindowTitle(msg.tr("Missing Bitmask helpers"))
+ return msg
+
+
def _linux_check_resolvconf():
"""
Raise a dialog warning about the lack of the resolvconf framework.
@@ -397,40 +460,32 @@ def _linux_install_missing_scripts(badexec, notfound):
:rtype: bool
"""
success = False
- installer_path = os.path.join(os.getcwd(), "apps", "eip", "files")
+ installer_path = os.path.abspath(
+ os.path.join(os.getcwd(), "apps", "eip", "files"))
launcher = LinuxVPNLauncher
- # XXX refactor with darwin, same block.
+ install_helper = "leap-install-helper.sh"
+ install_helper_path = os.path.join(installer_path, install_helper)
+
+ install_opts = ("--from-path %s --install-bitmask-root YES "
+ "--install-polkit-file YES --install-openvpn YES "
+ "--remove-old-files YES" % (installer_path,))
if os.path.isdir(installer_path):
- fd, tempscript = tempfile.mkstemp(prefix="leap_installer-")
- polfd, pol_tempfile = tempfile.mkstemp(prefix="leap_installer-")
try:
pkexec = first(launcher.maybe_pkexec())
-
- scriptlines = launcher.cmd_for_missing_scripts(installer_path)
- with os.fdopen(fd, 'w') as f:
- f.write(scriptlines)
-
- st = os.stat(tempscript)
- os.chmod(tempscript, st.st_mode | stat.S_IEXEC | stat.S_IXUSR |
- stat.S_IXGRP | stat.S_IXOTH)
- cmdline = ["%s %s" % (pkexec, tempscript)]
+ cmdline = ["%s %s %s" % (
+ pkexec, install_helper_path, install_opts)]
ret = subprocess.call(
cmdline, stdout=subprocess.PIPE,
shell=True)
success = ret == 0
if not success:
- logger.error("Install missing scripts failed.")
+ logger.error("Install of helpers failed.")
except Exception as exc:
logger.error(badexec)
logger.error("Error was: %r" % (exc,))
- finally:
- try:
- os.remove(tempscript)
- except OSError as exc:
- logger.error("%r" % (exc,))
else:
logger.error(notfound)
logger.debug('path searched: %s' % (installer_path,))
diff --git a/src/leap/bitmask/util/pastebin.py b/src/leap/bitmask/util/pastebin.py
index a3bdba02..a3bdba02 100755..100644
--- a/src/leap/bitmask/util/pastebin.py
+++ b/src/leap/bitmask/util/pastebin.py