diff options
-rw-r--r-- | changes/feature_install-helpers-util | 3 | ||||
-rw-r--r-- | data/ts/en_US.ts | 686 | ||||
-rw-r--r-- | pkg/linux/README.rst | 7 | ||||
-rwxr-xr-x | pkg/linux/bitmask-root | 2 | ||||
-rwxr-xr-x | pkg/linux/leap-install-helper.sh | 173 | ||||
-rw-r--r-- | src/leap/bitmask/platform_init/initializers.py | 125 | ||||
-rw-r--r--[-rwxr-xr-x] | src/leap/bitmask/util/pastebin.py | 0 |
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><span style='color:#0000FF;'>NOTE</span>: 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><span style='color:#0000FF;'>NOTE</span>: </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 '{0}' 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'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: <b>{0}</b></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.<br/>Make sure you have<b>polkit-gnome-authentication-agent-1</b> 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 <b>pkexec</b> 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 <a href='{0}'>{0}</a></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…</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>&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>&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>&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.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> 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 <b>pkexec</b> 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 &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>&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 &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: <b>%s</b> (%s)<br><br>%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>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. <br><br><a href='https://leap.se'>More about LEAP</a></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><strong>Instructions to use mail:</strong><br>If you use Thunderbird you can use the Bitmask extension helper. Search for 'Bitmask' in the add-on manager or download it from: {0}.<br><br>You can configure Bitmask manually with these options:<br><em> Incoming -> IMAP, port: {1}<br> Outgoing -> SMTP, port: {2}<br> Username -> your bitmask username.<br> Password -> does not matter, use any text. Just don't leave it empty and don't use your account's password.</em></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.<br>Please update to latest version.<br><br>You can get the latest version from <a href='{0}'>{1}</a></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.<br><br>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't be found, because the DNS lookup failed. DNS is the network service that translates a website'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 '{0}' 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><b>Services offered:</b></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><b>Enrollment policy:</b></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><b>URL:</b></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><b>Description:</b></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><b>Password:</b></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><b>Re-enter password:</b></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>&Next ></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><font color='red'><b>Non-existent provider</b></font></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><font color='red'><b>%s</b></font></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><font color='red'><b>Not a valid provider</b></font></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><b>Username:</b></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 <b>resolvconf</b> 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 |