[tor-commits] [translation/bridgedb] Update translations for bridgedb
commit b266f5aa09b7dd7d37b80299ed8a8cdfa5b38a0d Author: Translation commit bot Date: Wed Nov 4 04:45:02 2015 + Update translations for bridgedb --- ru/LC_MESSAGES/bridgedb.po | 338 ++-- 1 file changed, 170 insertions(+), 168 deletions(-) diff --git a/ru/LC_MESSAGES/bridgedb.po b/ru/LC_MESSAGES/bridgedb.po index 380d650..5d88c24 100644 --- a/ru/LC_MESSAGES/bridgedb.po +++ b/ru/LC_MESSAGES/bridgedb.po @@ -13,18 +13,20 @@ # Oleg, 2014 # Sergey Briskin , 2014 # Valid Olov, 2014 +# vb[fbk , 2015 # Vitaliy Grishenko, 2014 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" -"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'POT-Creation-Date: 2015-03-19 22:13+\n" -"PO-Revision-Date: 2015-06-23 09:34+\n" -"Last-Translator: Ivan\n" -"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/language/ru/)\n" +"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" +"POT-Creation-Date: 2015-07-25 03:40+\n" +"PO-Revision-Date: 2015-11-04 04:21+\n" +"Last-Translator: vb[fbk \n" +"Language-Team: Russian (http://www.transifex.com/otf/torproject/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.6\n" +"Generated-By: Babel 1.3\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" @@ -39,57 +41,182 @@ msgstr "" #. "fteproxy" #. "Tor" #. "Tor Browser" -#: lib/bridgedb/HTTPServer.py:107 +#: bridgedb/https/server.py:167 msgid "Sorry! Something went wrong with your request." msgstr "ÐзвиниÑе! Ðозникла пÑоблема Ñ Ð²Ð°Ñим запÑоÑом." -#: lib/bridgedb/strings.py:18 +#: bridgedb/https/templates/base.html:79 +msgid "Report a Bug" +msgstr "СообÑиÑÑ Ð¾Ð± оÑибке" + +#: bridgedb/https/templates/base.html:82 +msgid "Source Code" +msgstr "ÐÑÑ Ð¾Ð´Ð½Ñй код" + +#: bridgedb/https/templates/base.html:85 +msgid "Changelog" +msgstr "Ðог изменений" + +#: bridgedb/https/templates/base.html:88 +msgid "Contact" +msgstr "Tor: ÐонÑакÑÑ" + +#: bridgedb/https/templates/bridges.html:35 +msgid "Select All" +msgstr "ÐÑбÑаÑÑ Ð²ÑÑ" + +#: bridgedb/https/templates/bridges.html:40 +msgid "Show QRCode" +msgstr "ÐоказаÑÑ QR-код" + +#: bridgedb/https/templates/bridges.html:52 +msgid "QRCode for your bridge lines" +msgstr "QR-код Ð´Ð»Ñ Ð°Ð´ÑеÑов ÑеÑÑанÑлÑÑоÑов" + +#. TRANSLATORS: Please translate this into some silly way to say +#. "There was a problem!" in your language. For example, +#. for Italian, you might translate this into "Mama mia!", +#. or for French: "Sacrebleu!". :) +#: bridgedb/https/templates/bridges.html:67 +#: bridgedb/https/templates/bridges.html:125 +msgid "Uh oh, spaghettios!" +msgstr "ÐÑ , ÑÑо-Ñо поÑло не Ñак!" + +#: bridgedb/https/templates/bridges.html:68 +msgid "It seems there was an error getting your QRCode." +msgstr "ÐÐ¾Ñ Ð¾Ð¶Ðµ, пÑоизоÑла оÑибка пÑи полÑÑении QR-кода." + +#: bridgedb/https/templates/bridges.html:73 +msgid "" +"This QRCode contains your bridge lines. Scan it with a QRCode reader to copy" +" your bridge lines onto mobile and other devices." +msgstr "ÐÑÐ¾Ñ QR-код ÑодеÑÐ¶Ð¸Ñ ÐаÑи адÑеÑа ÑеÑÑанÑлÑÑоÑов. ÐÑÑканиÑÑйÑе его ÑÑÑÑойÑÑвом, ÑÑиÑÑваÑÑим QR-код, ÑÑÐ¾Ð±Ñ ÑкопиÑоваÑÑ ÐаÑи адÑеÑа ÑеÑÑÑанÑлÑÑоÑов на мобилÑнÑе и дÑÑгие ÑÑÑÑойÑÑва" + +#: bridgedb/https/templates/bridges.html:131 +msgid "There currently aren't any bridges available..." +msgstr "Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½ÐµÑ Ð´Ð¾ÑÑÑпнÑÑ Ð¼Ð¾ÑÑов..." + +#: bridgedb/https/templates/bridges.html:132 +#, python-format +msgid "" +" Perhaps you should try %s going back %s and choosing a different bridge " +"type!" +msgstr "Ðозможно, вам ÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ð¿ÑобоваÑÑ %s веÑнÑÑÑÑÑ%s и вÑбÑаÑÑ Ð´ÑÑгой Ñип моÑÑа!" + +#: bridgedb/https/templates/index.html:11 +#, python-format +msgid "Step %s1%s" +msgstr "Шаг %s1%s" + +#: bridgedb/https/templates/index.html:13 +#, python-format +msgid "Download %s Tor Browser %s" +msgstr "СкаÑаÑÑ ÐÐ %s Tor Browser %s" + +#: bridgedb/https/templates/index.html:25 +#, python-format +msgid "Step %s2%s" +msgstr "Шаг %s2%s" + +#: bridgedb/https/templates/index.html:27 +#, python-format +msgid "Get %s bridges %s" +msgstr "ÐолÑÑиÑе %s моÑÑÑ %s" + +#: bridgedb/https/templates/index.html:36 +#, python-
[tor-commits] [translation/bridgedb_completed] Update translations for bridgedb_completed
commit 69ceeffa59077289158d567151ee5c6a19efd463 Author: Translation commit bot Date: Wed Nov 4 04:45:08 2015 + Update translations for bridgedb_completed --- ru/LC_MESSAGES/bridgedb.po | 338 ++-- 1 file changed, 170 insertions(+), 168 deletions(-) diff --git a/ru/LC_MESSAGES/bridgedb.po b/ru/LC_MESSAGES/bridgedb.po index 380d650..5d88c24 100644 --- a/ru/LC_MESSAGES/bridgedb.po +++ b/ru/LC_MESSAGES/bridgedb.po @@ -13,18 +13,20 @@ # Oleg, 2014 # Sergey Briskin , 2014 # Valid Olov, 2014 +# vb[fbk , 2015 # Vitaliy Grishenko, 2014 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" -"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'POT-Creation-Date: 2015-03-19 22:13+\n" -"PO-Revision-Date: 2015-06-23 09:34+\n" -"Last-Translator: Ivan\n" -"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/language/ru/)\n" +"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" +"POT-Creation-Date: 2015-07-25 03:40+\n" +"PO-Revision-Date: 2015-11-04 04:21+\n" +"Last-Translator: vb[fbk \n" +"Language-Team: Russian (http://www.transifex.com/otf/torproject/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.6\n" +"Generated-By: Babel 1.3\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" @@ -39,57 +41,182 @@ msgstr "" #. "fteproxy" #. "Tor" #. "Tor Browser" -#: lib/bridgedb/HTTPServer.py:107 +#: bridgedb/https/server.py:167 msgid "Sorry! Something went wrong with your request." msgstr "ÐзвиниÑе! Ðозникла пÑоблема Ñ Ð²Ð°Ñим запÑоÑом." -#: lib/bridgedb/strings.py:18 +#: bridgedb/https/templates/base.html:79 +msgid "Report a Bug" +msgstr "СообÑиÑÑ Ð¾Ð± оÑибке" + +#: bridgedb/https/templates/base.html:82 +msgid "Source Code" +msgstr "ÐÑÑ Ð¾Ð´Ð½Ñй код" + +#: bridgedb/https/templates/base.html:85 +msgid "Changelog" +msgstr "Ðог изменений" + +#: bridgedb/https/templates/base.html:88 +msgid "Contact" +msgstr "Tor: ÐонÑакÑÑ" + +#: bridgedb/https/templates/bridges.html:35 +msgid "Select All" +msgstr "ÐÑбÑаÑÑ Ð²ÑÑ" + +#: bridgedb/https/templates/bridges.html:40 +msgid "Show QRCode" +msgstr "ÐоказаÑÑ QR-код" + +#: bridgedb/https/templates/bridges.html:52 +msgid "QRCode for your bridge lines" +msgstr "QR-код Ð´Ð»Ñ Ð°Ð´ÑеÑов ÑеÑÑанÑлÑÑоÑов" + +#. TRANSLATORS: Please translate this into some silly way to say +#. "There was a problem!" in your language. For example, +#. for Italian, you might translate this into "Mama mia!", +#. or for French: "Sacrebleu!". :) +#: bridgedb/https/templates/bridges.html:67 +#: bridgedb/https/templates/bridges.html:125 +msgid "Uh oh, spaghettios!" +msgstr "ÐÑ , ÑÑо-Ñо поÑло не Ñак!" + +#: bridgedb/https/templates/bridges.html:68 +msgid "It seems there was an error getting your QRCode." +msgstr "ÐÐ¾Ñ Ð¾Ð¶Ðµ, пÑоизоÑла оÑибка пÑи полÑÑении QR-кода." + +#: bridgedb/https/templates/bridges.html:73 +msgid "" +"This QRCode contains your bridge lines. Scan it with a QRCode reader to copy" +" your bridge lines onto mobile and other devices." +msgstr "ÐÑÐ¾Ñ QR-код ÑодеÑÐ¶Ð¸Ñ ÐаÑи адÑеÑа ÑеÑÑанÑлÑÑоÑов. ÐÑÑканиÑÑйÑе его ÑÑÑÑойÑÑвом, ÑÑиÑÑваÑÑим QR-код, ÑÑÐ¾Ð±Ñ ÑкопиÑоваÑÑ ÐаÑи адÑеÑа ÑеÑÑÑанÑлÑÑоÑов на мобилÑнÑе и дÑÑгие ÑÑÑÑойÑÑва" + +#: bridgedb/https/templates/bridges.html:131 +msgid "There currently aren't any bridges available..." +msgstr "Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½ÐµÑ Ð´Ð¾ÑÑÑпнÑÑ Ð¼Ð¾ÑÑов..." + +#: bridgedb/https/templates/bridges.html:132 +#, python-format +msgid "" +" Perhaps you should try %s going back %s and choosing a different bridge " +"type!" +msgstr "Ðозможно, вам ÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ð¿ÑобоваÑÑ %s веÑнÑÑÑÑÑ%s и вÑбÑаÑÑ Ð´ÑÑгой Ñип моÑÑа!" + +#: bridgedb/https/templates/index.html:11 +#, python-format +msgid "Step %s1%s" +msgstr "Шаг %s1%s" + +#: bridgedb/https/templates/index.html:13 +#, python-format +msgid "Download %s Tor Browser %s" +msgstr "СкаÑаÑÑ ÐÐ %s Tor Browser %s" + +#: bridgedb/https/templates/index.html:25 +#, python-format +msgid "Step %s2%s" +msgstr "Шаг %s2%s" + +#: bridgedb/https/templates/index.html:27 +#, python-format +msgid "Get %s bridges %s" +msgstr "ÐолÑÑиÑе %s моÑÑÑ %s" + +#: bridgedb/https/templates/index.html:36 +
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit b09898c4b4e2f8b1b137da3795e0a80261fc87c6 Author: Translation commit bot Date: Wed Nov 4 00:45:18 2015 + Update translations for liveusb-creator --- de/de.po |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/de/de.po b/de/de.po index 830181c..7995772 100644 --- a/de/de.po +++ b/de/de.po @@ -38,7 +38,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-04 00:08+\n" +"PO-Revision-Date: 2015-11-04 00:18+\n" "Last-Translator: bal4nce\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" @@ -112,7 +112,7 @@ msgid "" "\n" "\n" "" -msgstr "" +msgstr "\n Aktualisieren Sie einen anderen Tails USB Stick auf die Gleiche Tails Version, die Sie derzeit benutzen.\n\nDie verschlüsselte beständige Datenpartition , die Sie aktuallsieren, wird präserviert.\n\nDie verschlüsselte beständige Datenpartition des Tails USB stick, den Sie derzeit benutzen, wird nicht kopiert.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 6ae769885f6bd8fd930de7030977a73b66cc5f1d Author: Translation commit bot Date: Wed Nov 4 00:15:19 2015 + Update translations for liveusb-creator --- de/de.po |7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/de/de.po b/de/de.po index 218b2b8..830181c 100644 --- a/de/de.po +++ b/de/de.po @@ -4,6 +4,7 @@ # # Translators: # Alan Kocay , 2015 +# bal4nce, 2015 # cyberfork , 2013 # cyberfork , 2012 # Berkan , 2013 @@ -37,8 +38,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 15:28+\n" -"Last-Translator: Ettore Atalan \n" +"PO-Revision-Date: 2015-11-04 00:08+\n" +"Last-Translator: bal4nce\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -98,7 +99,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "" +msgstr "\n Sie installieren Tails auf einen anderen USB stick, in dem Sie das aktuelle Tails System kopieren lassen ..\n\nDer USB stick, den Sie zum installieren benutzen, wird formatiert und alle Dateien verloren.\n\nDie verschlüsselte beständige Datenpartition des Tails USB stick, den Sie derzeit benutzen, wird nicht kopiert.\n\n" #: ../liveusb/launcher_ui.py:157 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 09e5cd4a00c89503dfbd42897da5cd6e6525e75f Author: Translation commit bot Date: Tue Nov 3 22:15:18 2015 + Update translations for liveusb-creator --- pt_BR/pt_BR.po |8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 5da28b6..de9eb6a 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -27,7 +27,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 21:25+\n" +"PO-Revision-Date: 2015-11-03 21:49+\n" "Last-Translator: Communia \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -101,7 +101,7 @@ msgid "" "\n" "\n" "" -msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB a ser atualizada será mantido.\n\nO armazenamento persistente criptografado no Tails da unidade USB que você está usando agora não será copiado.\n\n\n" +msgstr "\nAtualizar outra unidade USB-Tails para a mesma versão do Tails que você está usando agora.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails a ser atualizado será mantido.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails que você está usando agora não será copiado.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" @@ -113,7 +113,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "\nAtualizar outro Tails numa unidade USB a partir de uma imagem ISO.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" +msgstr "\nAtualizar outra unidade USB-Tails a partir de uma imagem ISO.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails a ser atualizado será mantido.\n\nO espaço de armazenamento persistente criptografado na unidade USB-Tails que você está usando agora não será copiada.\n\n" #: ../liveusb/dialog.py:161 msgid "Alt+B" @@ -416,7 +416,7 @@ msgstr "Esta é a barra de progressão que vai indicar o quanto falta para termi #: ../liveusb/dialog.py:169 msgid "This is the status console, where all messages get written to." -msgstr "Este é o console de status, no qual todas mensagens são registradas." +msgstr "Este é o console de status, no qual todas as mensagens são registradas." #: ../liveusb/creator.py:952 msgid "Trying to continue anyway." ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator_completed] Update translations for liveusb-creator_completed
commit 6c63ae325366a981856bd58a072bcfa3c64e7436 Author: Translation commit bot Date: Tue Nov 3 22:15:22 2015 + Update translations for liveusb-creator_completed --- pt_BR/pt_BR.po |8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 5da28b6..de9eb6a 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -27,7 +27,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 21:25+\n" +"PO-Revision-Date: 2015-11-03 21:49+\n" "Last-Translator: Communia \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -101,7 +101,7 @@ msgid "" "\n" "\n" "" -msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB a ser atualizada será mantido.\n\nO armazenamento persistente criptografado no Tails da unidade USB que você está usando agora não será copiado.\n\n\n" +msgstr "\nAtualizar outra unidade USB-Tails para a mesma versão do Tails que você está usando agora.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails a ser atualizado será mantido.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails que você está usando agora não será copiado.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" @@ -113,7 +113,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "\nAtualizar outro Tails numa unidade USB a partir de uma imagem ISO.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" +msgstr "\nAtualizar outra unidade USB-Tails a partir de uma imagem ISO.\n\nO espaço de armazenamento persistente criptografado da unidade USB-Tails a ser atualizado será mantido.\n\nO espaço de armazenamento persistente criptografado na unidade USB-Tails que você está usando agora não será copiada.\n\n" #: ../liveusb/dialog.py:161 msgid "Alt+B" @@ -416,7 +416,7 @@ msgstr "Esta é a barra de progressão que vai indicar o quanto falta para termi #: ../liveusb/dialog.py:169 msgid "This is the status console, where all messages get written to." -msgstr "Este é o console de status, no qual todas mensagens são registradas." +msgstr "Este é o console de status, no qual todas as mensagens são registradas." #: ../liveusb/creator.py:952 msgid "Trying to continue anyway." ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 69f5482d71c1e3a9482ff577b20f96b257015bb0 Author: Translation commit bot Date: Tue Nov 3 21:45:19 2015 + Update translations for liveusb-creator --- pt_BR/pt_BR.po | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 2d33475..5da28b6 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -27,8 +27,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 11:38+\n" -"Last-Translator: Gilberto Coutinho \n" +"PO-Revision-Date: 2015-11-03 21:25+\n" +"Last-Translator: Communia \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,7 +42,7 @@ msgstr "\"Clonar e Instalar\"" #: ../liveusb/gui.py:453 msgid "\"Install from ISO\"" -msgstr "\"Instalar de uma ISO\"" +msgstr "\"Instalar a partir de uma ISO\"" #: ../liveusb/dialog.py:157 ../liveusb/launcher_ui.py:153 #, python-format @@ -76,7 +76,7 @@ msgid "" "p, li { white-space: pre-wrap; }\n" "\n" "Need help? Read the documentation." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nPrecisa de ajuda? Leia isso aqui documentação." +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nVocê precisa de ajuda? Leia isso aqui documentação." #: ../liveusb/launcher_ui.py:155 msgid "" @@ -88,7 +88,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "\nIntalar o Tails em outra unidadade USB, compiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" +msgstr "\nInstalar o Tails em outra unidade de USB, copiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você está usando agora não será copiada.\n\n" #: ../liveusb/launcher_ui.py:157 msgid "" @@ -101,7 +101,7 @@ msgid "" "\n" "\n" "" -msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiado.\n\n\n" +msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB a ser atualizada será mantido.\n\nO armazenamento persistente criptografado no Tails da unidade USB que você está usando agora não será copiado.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator_completed] Update translations for liveusb-creator_completed
commit e71505423c538413541d269be8e5f630ce5afc85 Author: Translation commit bot Date: Tue Nov 3 21:45:23 2015 + Update translations for liveusb-creator_completed --- pt_BR/pt_BR.po | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 2d33475..5da28b6 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -27,8 +27,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 11:38+\n" -"Last-Translator: Gilberto Coutinho \n" +"PO-Revision-Date: 2015-11-03 21:25+\n" +"Last-Translator: Communia \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,7 +42,7 @@ msgstr "\"Clonar e Instalar\"" #: ../liveusb/gui.py:453 msgid "\"Install from ISO\"" -msgstr "\"Instalar de uma ISO\"" +msgstr "\"Instalar a partir de uma ISO\"" #: ../liveusb/dialog.py:157 ../liveusb/launcher_ui.py:153 #, python-format @@ -76,7 +76,7 @@ msgid "" "p, li { white-space: pre-wrap; }\n" "\n" "Need help? Read the documentation." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nPrecisa de ajuda? Leia isso aqui documentação." +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nVocê precisa de ajuda? Leia isso aqui documentação." #: ../liveusb/launcher_ui.py:155 msgid "" @@ -88,7 +88,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "\nIntalar o Tails em outra unidadade USB, compiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" +msgstr "\nInstalar o Tails em outra unidade de USB, copiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você está usando agora não será copiada.\n\n" #: ../liveusb/launcher_ui.py:157 msgid "" @@ -101,7 +101,7 @@ msgid "" "\n" "\n" "" -msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiado.\n\n\n" +msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB a ser atualizada será mantido.\n\nO armazenamento persistente criptografado no Tails da unidade USB que você está usando agora não será copiado.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter_completed] Update translations for tails-greeter_completed
commit 630b48d9f550a2417a58cb54d058982c4ea862b3 Author: Translation commit bot Date: Tue Nov 3 20:15:31 2015 + Update translations for tails-greeter_completed --- tr/tr.po |8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tr/tr.po b/tr/tr.po index 3d5e0e1..cb2a7c3 100644 --- a/tr/tr.po +++ b/tr/tr.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-20 18:20+0200\n" -"PO-Revision-Date: 2015-10-17 18:25+\n" +"POT-Creation-Date: 2015-11-02 21:29+0100\n" +"PO-Revision-Date: 2015-11-03 20:06+\n" "Last-Translator: Kaya Zeren \n" "Language-Team: Turkish (http://www.transifex.com/otf/torproject/language/tr/)\n" "MIME-Version: 1.0\n" @@ -168,6 +168,10 @@ msgid "" "need to configure bridge, firewall, or proxy settings." msgstr "Bu bilgisayarın Ä°nternet baÄlantısı sansürleniyor, süzülüyor ya da vekil sunucuya baÄlı. Köprü, güvenlik duvarı ya da vekil sunucu ayarlarını yapmanız gerekir." +#: ../glade/optionswindow.glade.h:23 +msgid "Disable all networking" +msgstr "Tüm aÄı devre dıÅı bırak" + #: ../glade/langpanel.glade.h:1 msgid " " msgstr " " ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter] Update translations for tails-greeter
commit d39667f4dc9daecc6679866821df8e96ab2572c1 Author: Translation commit bot Date: Tue Nov 3 20:15:27 2015 + Update translations for tails-greeter --- tr/tr.po |8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tr/tr.po b/tr/tr.po index ed3d8b4..cb2a7c3 100644 --- a/tr/tr.po +++ b/tr/tr.po @@ -18,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-10-26 17:51+0100\n" -"PO-Revision-Date: 2015-10-27 10:10+\n" -"Last-Translator: carolyn \n" +"POT-Creation-Date: 2015-11-02 21:29+0100\n" +"PO-Revision-Date: 2015-11-03 20:06+\n" +"Last-Translator: Kaya Zeren \n" "Language-Team: Turkish (http://www.transifex.com/otf/torproject/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -170,7 +170,7 @@ msgstr "Bu bilgisayarın Ä°nternet baÄlantısı sansürleniyor, süzülüyor ya #: ../glade/optionswindow.glade.h:23 msgid "Disable all networking" -msgstr "" +msgstr "Tüm aÄı devre dıÅı bırak" #: ../glade/langpanel.glade.h:1 msgid " " ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Send mirrors option
commit e81d9c681ba7998038a1ae626a00949766b498c7 Author: ilv Date: Mon Aug 3 15:05:53 2015 -0300 Send mirrors option --- get_mirrors.py | 338 ++ gettor/smtp.py | 239 ++-- lang/smtp/i18n/en/LC_MESSAGES/en.po | 19 + mirrors-list.txt| 58 + smtp.cfg|3 +- tor-mirrors | 2187 +++ tor-mirrors.csv | 116 ++ 7 files changed, 2867 insertions(+), 93 deletions(-) diff --git a/get_mirrors.py b/get_mirrors.py new file mode 100644 index 000..9c4b0c4 --- /dev/null +++ b/get_mirrors.py @@ -0,0 +1,338 @@ +# -*- coding: utf-8 -*- +# +# This file is part of GetTor +# +# :authors: Israel Leiva +# see also AUTHORS file +# +# :license: This is Free Software. See LICENSE for license information. + +"""get_mirrors -- Download the list of tpo's mirrors for GetTor.""" + +import os +import json +import codecs +import logging +import argparse + + +from OpenSSL import SSL +from OpenSSL import crypto + +from twisted.web import client +from twisted.python import log +from twisted.internet import ssl +from twisted.internet import defer +from twisted.internet import protocol +from twisted.internet import reactor +from twisted.internet.error import TimeoutError +from twisted.internet.error import DNSLookupError +from twisted.internet.error import ConnectionRefusedError + +from gettor import utils + +# Associate each protocol with its column name in tor-mirrors.csv +PROTOS = { +'https': 'httpsWebsiteMirror', +'http': 'httpWebsiteMirror', +'rsync': 'rsyncWebsiteMirror', +'https-dist': 'httpsDistMirror', +'http-dist': 'httpDistMirror', +'rsync-dist': 'rsyncDistMirror', +'ftp': 'ftpWebsiteMirror', +'onion': 'hiddenServiceMirror', +} + +# Tor Project's website certificate +# $ openssl s_client -showcerts -connect tpo:443 < /dev/null > tpo.pem +CERT_TPO = '/path/to/gettor/tpo.pem' + + +# Taken from get-tor-exits (BridgeDB) +class FileWriter(protocol.Protocol): +"""Read a downloaded file incrementally and write to file.""" +def __init__(self, finished, file): +"""Create a FileWriter. + +.. warning:: We currently only handle the first 2MB of a file. Files +over 2MB will be truncated prematurely. *note*: this should be +enough for the mirrors file. + +:param finished: A :class:`~twisted.internet.defer.Deferred` which +will fire when another portion of the download is complete. +""" +self.finished = finished +self.remaining = 1024 * 1024 * 2 +self.fh = file + +def dataReceived(self, bytes): +"""Write a portion of the download with ``bytes`` size to disk.""" +if self.remaining: +display = bytes[:self.remaining] +self.fh.write(display) +self.fh.flush() +self.remaining -= len(display) + +def connectionLost(self, reason): +"""Called when the download is complete.""" +logging.info('Finished receiving mirrors list: %s' + % reason.getErrorMessage()) +self.finished.callback(None) + + +# Based in tor2web.utils.ssl (Tor2web) +class HTTPSVerifyingContextFactory(ssl.ClientContextFactory): +def __init__(self, cn): +self.cn = cn +# +# From https://docs.python.org/2/library/ssl.html#ssl-security +# +# "SSL versions 2 and 3 are considered insecure and are therefore +# dangerous to use. If you want maximum compatibility between clients +# and servers, it is recommended to use PROTOCOL_SSLv23 as the protocol +# version and then disable SSLv2 and SSLv3 explicitly" +# +self.method = SSL.SSLv23_METHOD + +def getContext(self, hostname, port): +"""Get this connection's OpenSSL context. + +We disable SSLv2 and SSLv3. We also check the certificate received +is the one we expect (using the "common name"). + +""" +ctx = self._contextFactory(self.method) +ctx.set_options(SSL.OP_NO_SSLv2) +ctx.set_options(SSL.OP_NO_SSLv3) +ctx.set_verify( +SSL.VERIFY_PEER | SSL.VERIFY_FAIL_IF_NO_PEER_CERT, +self.verifyCN +) + +return ctx + +def verifyCN(self, connection, x509, errno, depth, preverifyOK): +# DEBUG: print "%s == %s ?" % (self.cn, x509.get_subject().commonName) + +# Somehow, if I don't set this to true, the verifyCN doesn't go +# down in the chain, I don't know if this is OK +verify = True +if depth == 0: +if self.cn == x509.get_subject().commonName: +verify = True +else: +verify = False +return verify + + +# Based in get-tor-exits (BridgeDB) +def handle(failure): +"""Handle a **failure**.""" +if failure.type == ConnectionRefusedE
[tor-commits] [gettor/master] Debugging improvements
commit d55d7d74122e1f07df608f653541c45a154ce49c Author: ilv Date: Mon Aug 3 15:02:27 2015 -0300 Debugging improvements --- gettor/blacklist.py | 85 +++--- gettor/core.py | 241 --- gettor/db.py| 76 ++-- gettor/utils.py | 19 4 files changed, 258 insertions(+), 163 deletions(-) diff --git a/gettor/blacklist.py b/gettor/blacklist.py index b95d888..a16c764 100644 --- a/gettor/blacklist.py +++ b/gettor/blacklist.py @@ -27,6 +27,14 @@ class BlacklistError(Exception): pass +class ConfigError(Exception): +pass + + +class InternalError(Exception): +pass + + class Blacklist(object): """Manage blacklisting of users. @@ -38,6 +46,7 @@ class Blacklist(object): ConfigurationError: Bad configuration. BlacklistError: User is blacklisted. + InternalError: Something went wrong internally. """ @@ -47,44 +56,46 @@ class Blacklist(object): :param: cfg (string) path of the configuration file. """ -# define a set of default values -DEFAULT_CONFIG_FILE = 'blacklist.cfg' - -logging.basicConfig(format='[%(levelname)s] %(asctime)s - %(message)s', -datefmt="%Y-%m-%d %H:%M:%S") -log = logging.getLogger(__name__) +default_cfg = 'blacklist.cfg' config = ConfigParser.ConfigParser() if cfg is None or not os.path.isfile(cfg): -cfg = DEFAULT_CONFIG_FILE - -config.read(cfg) +cfg = default_cfg try: -dbname = config.get('general', 'db') -self.db = db.DB(dbname) -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'db' from 'general'") +with open(cfg) as f: +config.readfp(f) +except IOError: +raise ConfigError("File %s not found!" % cfg) try: +dbname = config.get('general', 'db') logdir = config.get('log', 'dir') logfile = os.path.join(logdir, 'blacklist.log') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'dir' from 'log'") - -try: loglevel = config.get('log', 'level') +self.db = db.DB(dbname) + except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'level' from 'log'") +raise ConfigError("%s" % e) +except db.Exception as e: +raise ConfigError("%s" % e) -# establish log level and redirect to log file -log.info('Redirecting logging to %s' % logfile) +# logging +log = logging.getLogger(__name__) + +logging_format = utils.get_logging_format() +date_format = utils.get_date_format() +formatter = logging.Formatter(logging_format, date_format) + +log.info('Redirecting BLACKLIST logging to %s' % logfile) logfileh = logging.FileHandler(logfile, mode='a+') +logfileh.setFormatter(formatter) logfileh.setLevel(logging.getLevelName(loglevel)) log.addHandler(logfileh) # stop logging on stdout from now on log.propagate = False +self.log = log def is_blacklisted(self, user, service, max_req, wait_time): """Check if a user is blacklisted. @@ -113,24 +124,40 @@ class Blacklist(object): if r: # permanently blacklisted if r['blocked']: -self.db.update_user(user, service, r['times']+1, 1) -raise BlacklistError("Blocked user") +try: +self.db.update_user(user, service, r['times']+1, 1) +raise BlacklistError("Blocked user") +except db.DBError as e: +raise InternalError("Can't update user (%s)" % str(e)) # don't be greedy elif r['times'] >= max_req: -last = datetime.datetime.fromtimestamp(float( - r['last_request'])) +last = datetime.datetime.fromtimestamp( +float(r['last_request']) +) next = last + datetime.timedelta(minutes=wait_time) if datetime.datetime.now() < next: # too many requests from the same user -self.db.update_user(user, service, r['times']+1, 0) -raise BlacklistError("Too many requests") +try: +self.db.update_user(user, service, r['times']+1, 0) +raise BlacklistError("Too many requests") +except db.DBError as e: +raise InternalError("Can't update user (%s)" % str(e)) else: # fresh user again! -self.db.update_user(user, service, 1, 0) +
[tor-commits] [gettor/master] Improvements on Twitter channel
commit a14cad3472e312fc939ddb7db8803048c6d26e4e Author: ilv Date: Mon Aug 31 20:12:31 2015 -0300 Improvements on Twitter channel --- gettor/twitter.py | 595 + process_tweets.py | 35 2 files changed, 630 insertions(+) diff --git a/gettor/twitter.py b/gettor/twitter.py new file mode 100644 index 000..05320ef --- /dev/null +++ b/gettor/twitter.py @@ -0,0 +1,595 @@ +# -*- coding: utf-8 -*- +# +# This file is part of GetTor, a Tor Browser distribution system. +# +# :authors: Israel Leiva +# Based on BridgeDB Twitter distributor (PoC) by wfn +# - https://github.com/wfn/twidibot +# +# :copyright: (c) 2008-2015, The Tor Project, Inc. +# (c) 2015, Israel Leiva +# +# :license: This is Free Software. See LICENSE for license information. + +import sys +import json +import time +import signal +import tweepy +import gettext + +from tweepy.models import Status + +import core +import utils +import blacklist + +"""Twitter module for processing requests. Forked from BridgeDB Twitter +distributor by wfn (https://github.com/wfn/twidibot)""" + + +class ConfigError(Exception): +pass + + +class InternalError(Exception): +pass + + +class TwitterBotStreamListener(tweepy.StreamListener): +"""Listener for twitter's Streaming API.""" + +def __init__(self, bot, api=None): +self.bot = bot +self.processing_data = False + +super(TwitterBotStreamListener, self).__init__(api) + +def on_data(self, raw_data): +"""Called when raw data is received from connection. + +This is where all the data comes first. Normally we could use +(inherit) the on_data() in tweepy.StreamListener, but it unnecessarily +and naively reports unknown event types as errors (to simple log); +also, we might want to tweak it further later on. + +But for now, this is basically taken from tweepy's on_data(). + +Return False to stop stream and close connection. + +""" + +self.processing_data = True + +data = json.loads(raw_data) + +if 'in_reply_to_status_id' in data: +status = Status.parse(self.api, data) +if self.on_status(status) is False: +return False +elif 'delete' in data: +delete = data['delete']['status'] +if self.on_delete(delete['id'], delete['user_id']) is False: +return False +elif 'event' in data: +status = Status.parse(self.api, data) +if self.on_event(status) is False: +return False +elif 'direct_message' in data: +status = Status.parse(self.api, data) +if self.on_direct_message(status) is False: +return False +elif 'limit' in data: +if self.on_limit(data['limit']['track']) is False: +return False +elif 'disconnect' in data: +if self.on_disconnect(data['disconnect']) is False: +return False +else: +# we really are ok to receive unknown stream/event types. +# log to debug? +log.debug('TwitterBotStreamListener::on_data(): got event/stream' +' data of unknown type. Raw data follows:\n%s', data) + +self.processing_data = False + +def on_status(self, status): +"""Called when a new status arrives""" + +#log.debug('Got status: %s', status) +return + +def on_event(self, status): +"""Called when a new event arrives""" + +#log.debug('Got event: %s', status) + +# XXX make sure tweepy's given 'status.event' unicode string can +# always be safely converted to ascii + +# now it seems one can reply to dm without following the account +# if str(status.event) == 'follow': +#self.bot.handleFollowEvent(status) + +return + +def on_direct_message(self, status): +"""Called when a new direct message arrives or is sent from us + +TODO: make a pull request for tweepy or something, because they +say it's only when a direct message is *received* (implying, 'by us') + +""" + +# doing twitter user comparisons using id_str makes sense here - it's +# safe and id_str's are guaranteed to be unique (re: latter, just like +# id's.) maybe consider deciding how comparisons should be made for sure, +# and then extend tweepy.models.User to include __eq__? +if status.direct_message['sender']['id_str'] != self.bot.bot_info.id_str: +self.bot.handleDirectMessage(status) +else: +# log.debug('Caught a direct message sent *from* us') +pass + +return + +def on_connect(self): +"""Called once connected to streaming server. + +This will be invoked once a successful response +is re
[tor-commits] [gettor/master] Minor correction to #17211
commit 540c525cb038ff42684488f4a1b3f4c5078b5b8e Author: ilv Date: Tue Nov 3 16:06:20 2015 -0300 Minor correction to #17211 --- gettor/smtp.py |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gettor/smtp.py b/gettor/smtp.py index 5476189..3697786 100644 --- a/gettor/smtp.py +++ b/gettor/smtp.py @@ -271,7 +271,7 @@ class SMTP(object): # search for OS or mirrors request # if nothing is found, help by default found_request = False -words = re.split('\s+', test.strip()) +words = re.split('\s+', msg.strip()) for word in words: if not found_request: # OS first ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Merge branch 'develop' of ssh://git-rw.torproject.org/user/ilv/gettor
commit bbae1134ffb3403e88d9b5d1ade9d8cd52e3f994 Merge: 58f01df 652639e Author: ilv Date: Sat Oct 31 16:14:59 2015 -0300 Merge branch 'develop' of ssh://git-rw.torproject.org/user/ilv/gettor get_mirrors.py | 353 gettor/blacklist.py| 110 +- gettor/core.py | 325 ++- gettor/db.py | 81 +- gettor/smtp.py | 256 ++- gettor/twitter.py | 304 +++ gettor/utils.py| 19 + gettor/xmpp.py | 200 +- lang/core/i18n/en/en.po|9 - lang/smtp/i18n/en/LC_MESSAGES/en.po| 23 +- lang/xmpp/i18n/en/LC_MESSAGES/en.po| 72 +- mirrors-list.txt | 58 + process_chat.py| 22 + process_email.py | 41 + process_tweets.py | 22 + providers/drive.links | 31 +- providers/dropbox.links| 31 +- providers/github.links | 29 +- smtp.cfg |3 +- smtp_demo.py | 22 - tor-mirrors| 2187 tor-mirrors.csv| 116 ++ upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg |1 - upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg.asc |1 - upload/4.0.3/sha256sums.txt|1 - upload/4.0.3/test_file.txt |1 - upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz |1 - .../4.0.3/tor-browser-linux32-4.0.3_en.tar.xz.asc |1 - upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz |1 - .../4.0.3/tor-browser-linux64-4.0.3_en.tar.xz.asc |1 - upload/4.0.3/torbrowser-install-4.0.3_ar.exe |1 - upload/4.0.3/torbrowser-install-4.0.3_ar.exe.asc |1 - upload/bundles2drive.py| 180 +- upload/bundles2github.py | 60 +- xmpp.cfg |2 + xmpp_demo.py |7 - 36 files changed, 4035 insertions(+), 538 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Merge branch 'develop'
commit 16036bebae226d3f7059fbf40dcd87ada267d36a Merge: bbae113 54ebdf8 Author: ilv Date: Tue Nov 3 16:34:00 2015 -0300 Merge branch 'develop' gettor/smtp.py|2 +- gettor/twitter.py | 19 +-- gettor/xmpp.py|2 +- process_tweets.py | 19 --- 4 files changed, 27 insertions(+), 15 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] New format for links files.
commit dd11ceedcbf543425102a672989d21db59d040b1 Author: ilv Date: Sat Oct 31 15:11:58 2015 -0300 New format for links files. --- providers/drive.links | 31 +-- providers/dropbox.links | 31 +-- providers/github.links | 29 - 3 files changed, 50 insertions(+), 41 deletions(-) diff --git a/providers/drive.links b/providers/drive.links index 5f4fa89..d9915bc 100644 --- a/providers/drive.links +++ b/providers/drive.links @@ -2,24 +2,27 @@ name = Drive [key] -fingerprint = A3C4 F0F9 79CA A22C DBA8 F512 EE8C BC9E 886D DD89 +fingerprint = EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 [linux] -en = Package (32-bit): https://docs.google.com/uc?id=0B7humfJYX-LjNTJPanBRekI5Slk&export=download - ASC signature (32-bit): https://docs.google.com/uc?id=0B7humfJYX-LjTXVONkhvZ1VRY2c&export=download - Package SHA256 checksum (32-bit): 03a4ecab9ffb4b579c9d03a0f800d9bcd4446b49eff21eb3e1db255fa9d9b930, - Package (64-bit): https://docs.google.com/uc?id=0B7humfJYX-LjbXp2MUh5RmxTa28&export=download - ASC signature (64-bit): https://docs.google.com/uc?id=0B7humfJYX-LjNTVZVnJUTnNCOEk&export=download - Package SHA256 checksum (64-bit): 03a4ecab9ffb4b579c9d03a0f800d9bcd4446b49eff21eb3e1db255fa9d9b930 +fa = https://docs.google.com/uc?id=0B76pDbk5No54eDRRUXdHcGIxMUU&export=download$https://docs.google.com/uc?id=0B76pDbk5No54amdUbGZNdnM5bjA&export=download$40ade5f6883a70af77de37da8a50bd72b533b1b65d198a0d8f02c2d5f4791355, + https://docs.google.com/uc?id=0B76pDbk5No54ZmFjRUs3VG9nZDA&export=download$https://docs.google.com/uc?id=0B76pDbk5No54TTBMYmwtdFVROEk&export=download$569aaeb695045a9263775d108a9fbe04899d3ef70aa27906a58245d713f4 +en = https://docs.google.com/uc?id=0B76pDbk5No54bm1DdFZqRGZ6aFk&export=download$https://docs.google.com/uc?id=0B76pDbk5No54a2tKbXExaXpBdm8&export=download$0e94498cb83a07895bf8becf76d3c3b071d8cfadd50048971f701819f80a56aa, + https://docs.google.com/uc?id=0B76pDbk5No54SnBWZ3FYWDFZbnc&export=download$https://docs.google.com/uc?id=0B76pDbk5No54NldQSWpUODBNUW8&export=download$4b7fed9499915fd95497ccf13af00f6b5226d7066d24f6396d00666a5b8c1ad3 +zh = https://docs.google.com/uc?id=0B76pDbk5No54VmV6TkcxVDl0eHc&export=download$https://docs.google.com/uc?id=0B76pDbk5No54Ymo5NFpuUmVjd1k&export=download$f1d5a0084d06e838a5acfe4352995c40c54ac4488006acb014ab7cf81360f62e, + https://docs.google.com/uc?id=0B76pDbk5No54R1lRbTM3bzJrQzQ&export=download$https://docs.google.com/uc?id=0B76pDbk5No54ZjJYTlRJS0ZoVjQ&export=download$d35a2f1dca74428f167bea96cc49c0c7351274904fafc30194592aa74201376a +tr = https://docs.google.com/uc?id=0B76pDbk5No54STZDTXYzUl9IbFU&export=download$https://docs.google.com/uc?id=0B76pDbk5No54ZHNIWV84RXZ5ZjQ&export=download$44bdcd53aaefc894f8556258b42fadc5fd10458db01f568734a47a9f6d070e5c, + https://docs.google.com/uc?id=0B76pDbk5No54MXFjaU9NbkVqS0k&export=download$https://docs.google.com/uc?id=0B76pDbk5No54VGhOaU1jLWlTWVk&export=download$79270b1cdcf41a251eb980281c29c2465ac06f299e0bacb9fd0190f87338d167 [windows] -en = Package (32/64-bit): https://docs.google.com/uc?id=0B7humfJYX-LjakM4a21iRlQzQVE&export=download - ASC signature (32/64-bit): https://docs.google.com/uc?id=0B7humfJYX-LjZy1FLVpTLW9INFU&export=download - Package SHA256 checksum (32/64-bit): 21e54d964366e8a67f379ed402007f59cb3aebfddbc3a30dacc3ac64171145a6 +zh = https://docs.google.com/uc?id=0B76pDbk5No54SndJVTJkZkprLUk&export=download$https://docs.google.com/uc?id=0B76pDbk5No54dHduYlFHRkJrczg&export=download$54443a66e16c8ffe02d10fe00e3bec50800eb4a93e2360a7d1b8a10f3bb77c0e +fa = https://docs.google.com/uc?id=0B76pDbk5No54OFlHX1Rybmc4b3c&export=download$https://docs.google.com/uc?id=0B76pDbk5No54Y19UdnMyVE5jMUk&export=download$15f06a3ad256042dde071690f4d4e53a5952fe9260592d5546cabda779eb8a47 +en = https://docs.google.com/uc?id=0B76pDbk5No54OEQ1aG5DNXY2N00&export=download$https://docs.google.com/uc?id=0B76pDbk5No54YWp2alZKQ1hkNWs&export=download$443b38f4aa1194125ca3c79157272d5c64006928c9128127788c1cdefa642d85 +tr = https://docs.google.com/uc?id=0B76pDbk5No54cUtBeUt4RmEtWVk&export=download$https://docs.google.com/uc?id=0B76pDbk5No54V1ZOcUotdjh2T2s&export=download$eff7885186fe3e5fc3bcc404d671175d279707d8e1e05d203a12a176aa4ea189 [osx] -en = Package (32-bit): https://docs.google.com/uc?id=0B7humfJYX-LjenRobzJtcWw0UnM&export=download - ASC signature (32-bit): https://docs.google.com/uc?id=0B7humfJYX-LjZ0R4Z0I1ZlBRUHc&export=download - Package SHA256 checksum (32-bit): dd86727270ba236d85673194782b4cc9860bd886e4abdf2dfc6d716dabddb68f - +en = https://docs.google.com/uc?id=0B76pDbk5No54Z0oxUnFuaHBpX00&export=download$https://docs.google.com/uc?id=0B76pDbk5No54ZXZqSFp5dngwN0E&export=download$f6a38fa3a72c9c60a457be6412f79e1efacd7ff5d993c48791550cc285ff164a +zh = https://docs.google.com/uc?id=0B76pDbk5No54cnhFUXFBaXJWUnM&export=download$htt
[tor-commits] [gettor/master] Minor changes to drive script
commit 4ed9de8fe5760a60e04298d86bc05780ea7378eb Author: ilv Date: Mon Aug 3 15:07:34 2015 -0300 Minor changes to drive script --- upload/bundles2drive.py | 108 --- 1 file changed, 65 insertions(+), 43 deletions(-) diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py index 8c329bf..9612382 100644 --- a/upload/bundles2drive.py +++ b/upload/bundles2drive.py @@ -16,10 +16,11 @@ import re import os import gnupg import hashlib +import logging import ConfigParser import gettor.core -#import google drive libs +# import google drive libs import httplib2 from apiclient.discovery import build from apiclient.http import MediaFileUpload @@ -51,7 +52,7 @@ def valid_format(file, osys): file) elif(osys == 'osx'): m = re.search( -'TorBrowser-\d\.\d\.\d-osx\d\d_(\w\w)(-\w\w)?\.dmg', +'TorBrowser-\d\.\d\.\d-osx\d\d_(\w\w)(-\w\w)?\.dmg', file) if m: return True @@ -143,21 +144,21 @@ def upload_files(client, basedir): for name in os.listdir(basedir): path = os.path.abspath(os.path.join(basedir, name)) if os.path.isfile(path) and p.match(path)\ -and valid_format(name, 'linux'): + and valid_format(name, 'linux'): files.append(name) p = re.compile('.*\.exe$') for name in os.listdir(basedir): path = os.path.abspath(os.path.join(basedir, name)) if os.path.isfile(path) and p.match(path)\ -and valid_format(name, 'windows'): + and valid_format(name, 'windows'): files.append(name) p = re.compile('.*\.dmg$') for name in os.listdir(basedir): path = os.path.abspath(os.path.join(basedir, name)) if os.path.isfile(path) and p.match(path)\ -and valid_format(name, 'osx'): + and valid_format(name, 'osx'): files.append(name) # dictionary to store file names and IDs @@ -173,33 +174,44 @@ def upload_files(client, basedir): continue # upload tor browser installer -file_body = MediaFileUpload(abs_file, resumable=True) +file_body = MediaFileUpload( +abs_file, +mimetype="application/octet-stream", +resumable=True +) body = { - 'title': file +'title': file } print "Uploading '%s'..." % file try: -file_data = drive_service.files().insert(body=body, media_body=file_body).execute() +file_data = drive_service.files().insert( +body=body, +media_body=file_body +).execute() except errors.HttpError, e: print str(e) # upload signature asc_body = MediaFileUpload(abs_asc, resumable=True) asc_head = { - 'title': "%s.asc" % file +'title': "%s.asc" % file } print "Uploading '%s'..." % asc try: -asc_data = drive_service.files().insert(body=asc_head, media_body=asc_body).execute() +asc_data = drive_service.files().insert( +body=asc_head, +media_body=asc_body +).execute() except errors.HttpError, e: print str(e) # add filenames and file id to dict files_dict[file] = file_data['id'] -files_dict[asc] = asc_data['id'] +files_dict[asc] = asc_data['id'] return files_dict + def share_file(service, file_id): """Make files public @@ -207,26 +219,28 @@ def share_file(service, file_id): link to file. :param: file_id (string) - + :return: (string) url to shared file - + """ permission = { - 'type': "anyone", - 'role': "reader", - 'withLink': True +'type': "anyone", +'role': "reader", +'withLink': True } - + try: service.permissions().insert( - fileId=file_id, body=permission).execute() +fileId=file_id, +body=permission +).execute() except errors.HttpError, error: - print('An error occured while sharing: %s' % file_id) +print('An error occured while sharing: %s' % file_id) try: file = service.files().get(fileId=file_id).execute() except errors.HttpError, error: - print('Error occured while fetch public link for file: %s' % file_id) +print('Error occured while fetch public link for file: %s' % file_id) print("Uploaded to %s" % file['webContentLink']) return file['webContentLink'] @@ -250,29 +264,33 @@ if __name__ == '__main__': print "Authenticating..." -flow = OAuth2WebServerFlow(client_id, app_secret, OAUTH_SCOPE, - redirect_uri=REDIRECT_URI) +flow = OAuth2WebServerFlow( +client_id, +app_secret, +OA
[tor-commits] [gettor/master] Better format for sending the links
commit c745cbd07d09b368b058b208a51c5ae66e8aa736 Author: ilv Date: Thu Aug 27 15:16:08 2015 -0300 Better format for sending the links --- gettor/core.py | 86 +++ gettor/smtp.py | 19 +--- lang/core/i18n/en/en.po |2 +- lang/smtp/i18n/en/LC_MESSAGES/en.po |4 +- 4 files changed, 94 insertions(+), 17 deletions(-) diff --git a/gettor/core.py b/gettor/core.py index 219fed2..49fbbb2 100644 --- a/gettor/core.py +++ b/gettor/core.py @@ -197,7 +197,18 @@ class Core(object): # read the links files using ConfigParser # see the README for more details on the format used -links = [] +links_files = [] + +links32 = {} +links64 = {} + +# for the message to be sent +if osys == 'windows': +arch = '32/64' +elif osys == 'osx': +arch = '64' +else: +arch = '32' # look for files ending with .links p = re.compile('.*\.links$') @@ -205,7 +216,7 @@ class Core(object): for name in os.listdir(self.linksdir): path = os.path.abspath(os.path.join(self.linksdir, name)) if os.path.isfile(path) and p.match(path): -links.append(path) +links_files.append(path) # let's create a dictionary linking each provider with the links # found for os and lc. This way makes it easy to check if no @@ -216,7 +227,7 @@ class Core(object): spt = '=' * 72 # reading links from providers directory -for name in links: +for name in links_files: # we're reading files listed on linksdir, so they must exist! config = ConfigParser.ConfigParser() # but just in case they don't @@ -231,14 +242,34 @@ class Core(object): # check if current provider pname has links for os in lc providers[pname] = config.get(osys, lc) -# avoid showing it all together -providers[pname] = providers[pname].replace(",", "") -providers[pname] = providers[pname].replace("$", "\n\n") +except ConfigParser.Error as e: +# we should at least have the english locale available +self.log.error("Request for %s, returning 'en' instead" % lc) +providers[pname] = config.get(osys, 'en') +try: +#test = providers[pname].split("$") +#self.log.debug(test) +if osys == 'linux': +t32, t64 = [t for t in providers[pname].split(",") if t] + +link, signature, chs32 = [l for l in t32.split("$") if l] +links32[link] = signature + +link, signature, chs64 = [l for l in t64.split("$") if l] +links64[link] = signature + +else: +link, signature, chs32 = [l for l in providers[pname].split("$") if l] +links32[link] = signature + +#providers[pname] = providers[pname].replace(",", "") +#providers[pname] = providers[pname].replace("$", "\n\n") # all packages are signed with same key # (Tor Browser developers) fingerprint = config.get('key', 'fingerprint') -fingerprint_msg = self._get_msg('fingerprint', lc) +# for now, english messages only +fingerprint_msg = self._get_msg('fingerprint', 'en') fingerprint_msg = fingerprint_msg % fingerprint except ConfigParser.Error as e: raise InternalError("%s" % str(e)) @@ -246,10 +277,47 @@ class Core(object): # create the final links list with all providers all_links = [] +msg = "Tor Browser %s-bit:" % arch +for link in links32: +msg = "%s\n%s" % (msg, link) + +all_links.append(msg) + +if osys == 'linux': +msg = "\n\n\nTor Browser 64-bit:" +for link in links64: +msg = "%s\n%s" % (msg, link) + +all_links.append(msg) + +msg = "\n\n\nTor Browser's signature %s-bit (in the same order):" %\ + arch +for link in links32: +msg = "%s\n%s" % (msg, links32[link]) + +all_links.append(msg) + +if osys == 'linux': +msg = "\n\n\nTor Browser's signature 64-bit:" +for link in links64: +msg = "%s\n%s" % (msg, links64[link]) + +all_links.append(msg) + +msg = "\n\n\nSHA256 of Tor Browser %s-bit (advanced): %s\n" %\ + (arch, chs32) +all_links.append(msg) + +if osys ==
[tor-commits] [gettor/master] Merge branch 'master' of ssh://git-rw.torproject.org/gettor
commit b1a11bd9699e64af680e4e7abcbaea0f8752e2e2 Merge: 16036be 3a19630 Author: ilv Date: Tue Nov 3 16:34:30 2015 -0300 Merge branch 'master' of ssh://git-rw.torproject.org/gettor AUTHORS |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Change related to #17211
commit 54ebdf8ec2110dd381e66e07349add7ead190dce Author: ilv Date: Tue Nov 3 16:06:56 2015 -0300 Change related to #17211 --- gettor/xmpp.py |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gettor/xmpp.py b/gettor/xmpp.py index f9b025d..a605f50 100644 --- a/gettor/xmpp.py +++ b/gettor/xmpp.py @@ -283,7 +283,7 @@ class XMPP(object): # first let's find out how many words are in the message # request shouldn't be longer than 3 words, but just in case -words = msg.split(' ') +words = re.split('\s+', msg.strip()) if len(words) > self.max_words: bogus_request = True self.log.info("Message way too long") ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Split words on whitespace
commit 79359bd87d2450c7a15eac2c053a8d9b06fa4563 Author: Arlo Breault Date: Fri Oct 2 12:01:35 2015 +0200 Split words on whitespace --- gettor/smtp.py |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gettor/smtp.py b/gettor/smtp.py index 34477ef..cfabfda 100644 --- a/gettor/smtp.py +++ b/gettor/smtp.py @@ -271,8 +271,8 @@ class SMTP(object): # search for OS or mirrors request # if nothing is found, help by default found_request = False -lines = msg.split(' ') -for word in lines: +words = re.split('\s+', test.strip()) +for word in words: if not found_request: # OS first for os in supported_os: ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Added option to get links only, and fixed format according to current template for links file.
commit 24b655c4177eccc4439ac198ff098b7883425067 Author: ilv Date: Sat Oct 31 15:09:37 2015 -0300 Added option to get links only, and fixed format according to current template for links file. --- upload/bundles2drive.py | 62 ++- 1 file changed, 56 insertions(+), 6 deletions(-) diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py index 1cf6a17..bac6fea 100644 --- a/upload/bundles2drive.py +++ b/upload/bundles2drive.py @@ -17,6 +17,7 @@ import os import gnupg import hashlib import logging +import argparse import ConfigParser import gettor.core @@ -242,11 +243,56 @@ def share_file(service, file_id): except errors.HttpError, error: print('Error occured while fetch public link for file: %s' % file_id) -print("Uploaded to %s" % file['webContentLink']) +print "Uploaded %s to %s" % (file['title'], file['webContentLink']) return file['webContentLink'] +def get_files_links(service, v): +"""Print links of uploaded files. + +:param: service (object): Goolge Drive service object. +:param: v (string): Version of Tor Browser to look for. + +""" + +windows_re = 'torbrowser-install-%s_\w\w(-\w\w)?\.exe(\.asc)?' % v +linux_re = 'tor-browser-linux\d\d-%s_(\w\w)(-\w\w)?\.tar\.xz(\.asc)?' % v +osx_re = 'TorBrowser-%s-osx\d\d_(\w\w)(-\w\w)?\.dmg(\.asc)?' % v + +# dictionary to store file names and IDs +files_dict = dict() + +print "Trying to fetch links of uploaded files..." +links = service.files().list().execute() +items = links.get('items', []) + +if not items: +raise ValueError('No files found.') + +else: +for item in items: +if re.search(windows_re, item['title']): +files_dict[item['title']] = item['id'] +elif re.search(linux_re, item['title']): +files_dict[item['title']] = item['id'] +elif re.search(osx_re, item['title']): +files_dict[item['title']] = item['id'] +return files_dict + if __name__ == '__main__': +parser = argparse.ArgumentParser( +description='Utility to upload Tor Browser to Google Drive.' +) + +# if no LC specified, download all +parser.add_argument( +'-l', '--links', default=None, +help='Create links file with files already uploaded and '\ + 'matching the specified version. ' +) + +args = parser.parse_args() + config = ConfigParser.ConfigParser() config.read('drive.cfg') @@ -310,7 +356,14 @@ if __name__ == '__main__': readable = ' '.join(fp[i:i+4] for i in xrange(0, len(fp), 4)) try: -uploaded_files = upload_files(drive_service, upload_dir) +# helpful when something fails but files are uploaded. +if args.links: +uploaded_files = get_files_links(drive_service, args.links) + +if not uploaded_files: +raise ValueError("There are no files for that version") +else: +uploaded_files = upload_files(drive_service, upload_dir) # use default config core = gettor.core.Core('/home/gettor/core.cfg') @@ -351,10 +404,7 @@ if __name__ == '__main__': elif p3.match(file): osys, arch, lc = get_bundle_info(file, 'osx') -link = "Tor Browser %s-bit:\n%s$Tor Browser's signature %s-bit:"\ -"\n%s$SHA256 checksum of Tor Browser %s-bit (advanced):"\ -"\n%s$" %\ - (arch, link_file, arch, link_asc, arch, sha_file) +link = "%s$%s$%s$" % (link_file, link_asc, sha_file) # note that you should only upload bundles for supported locales core.add_link('Drive', osys, lc, link) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Fixed format of message constructed by core
commit ce352ebdbe15d02f838fccd50a26723238a164aa Author: ilv Date: Sat Oct 31 15:05:05 2015 -0300 Fixed format of message constructed by core --- gettor/core.py |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gettor/core.py b/gettor/core.py index 49fbbb2..6336e04 100644 --- a/gettor/core.py +++ b/gettor/core.py @@ -290,7 +290,7 @@ class Core(object): all_links.append(msg) -msg = "\n\n\nTor Browser's signature %s-bit (in the same order):" %\ +msg = "\n\n\nTor Browser's signature %s-bit:" %\ arch for link in links32: msg = "%s\n%s" % (msg, links32[link]) @@ -300,7 +300,7 @@ class Core(object): if osys == 'linux': msg = "\n\n\nTor Browser's signature 64-bit:" for link in links64: -msg = "%s\n%s" % (msg, links64[link]) +msg = "%s%s" % (msg, links64[link]) all_links.append(msg) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Added option to get links only, and fixed format according to current template for links file.
commit 00a4e6a96a35a99e60f7ef7540235cdfc9d29099 Author: ilv Date: Sat Oct 31 15:10:55 2015 -0300 Added option to get links only, and fixed format according to current template for links file. --- upload/bundles2github.py | 60 +- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/upload/bundles2github.py b/upload/bundles2github.py index 41cd8d7..ee24edb 100644 --- a/upload/bundles2github.py +++ b/upload/bundles2github.py @@ -18,6 +18,7 @@ import sys import time import shutil import hashlib +import argparse from libsaas.services import github import gnupg @@ -80,22 +81,39 @@ def get_bundle_info(file, osys): return 'osx', arch, lc if __name__ == '__main__': +parser = argparse.ArgumentParser( +description='Utility to upload Tor Browser to Github.' +) + +# with this we only get the links of files already uploaded +# useful when somethings fail after uploading +parser.add_argument( +'-l', '--links', default=None, +help='Create links file with files already uploaded.' +) + +parser.add_argument( +'-v', '--version', default=None, +help='Version of Tor Browser.' +) + +args = parser.parse_args() # this script should be called after fetching the latest Tor Browser, # and specifying the latest version -version = sys.argv[1] +version = args.version # the token allow us to run this script without GitHub user/pass gh_token = '' # path to the fingerprint that signed the packages -tb_key = os.path.abspath('tbb-key.asc') +tb_key = os.path.abspath('tbb-key-torbrowserteam.asc') # path to the latest version of Tor Browser tb_path = os.path.abspath('upload/latest') # path to the repository where we upload Tor Browser -repo_path = os.path.abspath('dl') +repo_path = os.path.abspath('gettorbrowser') # wait time between pushing the files to GH and asking for its links wait_time = 10 @@ -114,8 +132,8 @@ if __name__ == '__main__': # want to push the files using an SSH key (to avoid using user/pass) remote = 'origin' branch = 'master' -user = 'gettorbrowser' -repo = 'dl' +user = 'TheTorProject' +repo = 'gettorbrowser' raw_content = 'https://raw.githubusercontent.com/%s/%s/%s/' %\ (user, repo, branch) @@ -125,20 +143,22 @@ if __name__ == '__main__': # 3) make a commit for the new version # 4) push the changes -shutil.copytree( -tb_path, -os.path.abspath('%s/%s' % (repo_path, version)) -) +if not args.links: +shutil.copytree( +tb_path, +os.path.abspath('%s/%s' % (repo_path, version)) +) -git = sh.git.bake(_cwd=repo_path) -git.add('%s' % version) -git.commit(m=version) -git.push() +git = sh.git.bake(_cwd=repo_path) +git.add('%s' % version) +git.commit(m=version) +git.push() -# it takes a while to process the recently pushed files -print "Wait a few seconds before asking for the links to Github..." -time.sleep(wait_time) +# it takes a while to process the recently pushed files +print "Wait a few seconds before asking for the links to Github..." +time.sleep(wait_time) +print "Trying to get the links" gh = github.GitHub(gh_token, None) repocontent = gh.repo( user, @@ -176,7 +196,7 @@ if __name__ == '__main__': sha256 = get_file_sha256( os.path.abspath( -'dl/%s/%s' % (version, filename) +'%s/%s/%s' % (repo, version, filename) ) ) @@ -185,11 +205,7 @@ if __name__ == '__main__': # asc signature just by adding '.asc' link_asc = file[u'download_url'].replace(filename, filename_asc) -link = "Tor Browser %s-bit:\n%s$Tor Browser's signature %s-bit:"\ -"\n%s$SHA256 checksum of Tor Browser %s-bit (advanced):"\ -"\n%s$" %\ - (arch, file[u'download_url'], arch, link_asc, -arch, sha256) +link = "%s$%s$%s$" % (file[u'download_url'], link_asc, sha256) print "Adding %s" % file[u'download_url'] core.add_link('GitHub', osys, lc, link) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Replaced by process_chat.py
commit 652639ea63fafd83c1cb79f2446f73484d704404 Author: ilv Date: Sat Oct 31 16:03:37 2015 -0300 Replaced by process_chat.py --- xmpp_demo.py |7 --- 1 file changed, 7 deletions(-) diff --git a/xmpp_demo.py b/xmpp_demo.py deleted file mode 100644 index 144f4a8..000 --- a/xmpp_demo.py +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env python -import sys - -import gettor.xmpp - -bot = gettor.xmpp.XMPP() -bot.start_bot() ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] deleted unused files
commit 404f6eda0941845b0c60722e9ca718d25133 Author: ilv Date: Sat Oct 31 15:50:42 2015 -0300 deleted unused files --- lang/core/i18n/en/en.po |9 - upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg |1 - upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg.asc |1 - upload/4.0.3/sha256sums.txt |1 - upload/4.0.3/test_file.txt |1 - upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz |1 - upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz.asc |1 - upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz |1 - upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz.asc |1 - upload/4.0.3/torbrowser-install-4.0.3_ar.exe |1 - upload/4.0.3/torbrowser-install-4.0.3_ar.exe.asc |1 - 11 files changed, 19 deletions(-) diff --git a/lang/core/i18n/en/en.po b/lang/core/i18n/en/en.po deleted file mode 100644 index 0b28a70..000 --- a/lang/core/i18n/en/en.po +++ /dev/null @@ -1,9 +0,0 @@ -domain "en" - -#: Fingerprint message -msgid "fingerprint" -msgstr "Fingerprint of key used to sign Tor Browser (advanced): %s" - -#: Provider description -msgid "provider_desc" -msgstr "[From %s]" diff --git a/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg b/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg deleted file mode 100644 index d788456..000 --- a/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg +++ /dev/null @@ -1 +0,0 @@ -dummy dmg file diff --git a/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg.asc b/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg.asc deleted file mode 100644 index 5e00057..000 --- a/upload/4.0.3/TorBrowser-4.0.3-osx32_en.dmg.asc +++ /dev/null @@ -1 +0,0 @@ -dummy dmg asc file diff --git a/upload/4.0.3/sha256sums.txt b/upload/4.0.3/sha256sums.txt deleted file mode 100644 index 2212b05..000 --- a/upload/4.0.3/sha256sums.txt +++ /dev/null @@ -1 +0,0 @@ -dummy sha256 file diff --git a/upload/4.0.3/test_file.txt b/upload/4.0.3/test_file.txt deleted file mode 100644 index 9daeafb..000 --- a/upload/4.0.3/test_file.txt +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz b/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz deleted file mode 100644 index 90272b5..000 --- a/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz +++ /dev/null @@ -1 +0,0 @@ -dummy tar.xz file diff --git a/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz.asc b/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz.asc deleted file mode 100644 index 3dd3325..000 --- a/upload/4.0.3/tor-browser-linux32-4.0.3_en.tar.xz.asc +++ /dev/null @@ -1 +0,0 @@ -dummy tar.xz asc file diff --git a/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz b/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz deleted file mode 100644 index 90272b5..000 --- a/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz +++ /dev/null @@ -1 +0,0 @@ -dummy tar.xz file diff --git a/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz.asc b/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz.asc deleted file mode 100644 index 3dd3325..000 --- a/upload/4.0.3/tor-browser-linux64-4.0.3_en.tar.xz.asc +++ /dev/null @@ -1 +0,0 @@ -dummy tar.xz asc file diff --git a/upload/4.0.3/torbrowser-install-4.0.3_ar.exe b/upload/4.0.3/torbrowser-install-4.0.3_ar.exe deleted file mode 100644 index 7e61f6d..000 --- a/upload/4.0.3/torbrowser-install-4.0.3_ar.exe +++ /dev/null @@ -1 +0,0 @@ -dummy exe file diff --git a/upload/4.0.3/torbrowser-install-4.0.3_ar.exe.asc b/upload/4.0.3/torbrowser-install-4.0.3_ar.exe.asc deleted file mode 100644 index 1ebde25..000 --- a/upload/4.0.3/torbrowser-install-4.0.3_ar.exe.asc +++ /dev/null @@ -1 +0,0 @@ -dummy exe asc file ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Minor changes
commit 1e8645959172ce050e5890ecb5e0505ac72494d1 Author: ilv Date: Thu Aug 27 15:19:40 2015 -0300 Minor changes --- upload/bundles2drive.py | 20 ++-- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/upload/bundles2drive.py b/upload/bundles2drive.py index 9612382..1cf6a17 100644 --- a/upload/bundles2drive.py +++ b/upload/bundles2drive.py @@ -44,15 +44,15 @@ def valid_format(file, osys): """ if(osys == 'windows'): m = re.search( -'torbrowser-install-\d\.\d\.\d_\w\w(-\w\w)?\.exe', +'torbrowser-install-\d\.\d\.?\d?_\w\w(-\w\w)?\.exe', file) elif(osys == 'linux'): m = re.search( -'tor-browser-linux\d\d-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', +'tor-browser-linux\d\d-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.tar\.xz', file) elif(osys == 'osx'): m = re.search( -'TorBrowser-\d\.\d\.\d-osx\d\d_(\w\w)(-\w\w)?\.dmg', +'TorBrowser-\d\.\d\.?\d?-osx\d\d_(\w\w)(-\w\w)?\.dmg', file) if m: return True @@ -73,7 +73,7 @@ def get_bundle_info(file, osys): """ if(osys == 'windows'): m = re.search( -'torbrowser-install-\d\.\d\.\d_(\w\w)(-\w\w)?\.exe', +'torbrowser-install-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.exe', file) if m: lc = m.group(1) @@ -82,7 +82,7 @@ def get_bundle_info(file, osys): raise ValueError("Invalid bundle format %s" % file) elif(osys == 'linux'): m = re.search( -'tor-browser-linux(\d\d)-\d\.\d\.\d_(\w\w)(-\w\w)?\.tar\.xz', +'tor-browser-linux(\d\d)-\d\.\d\.?\d?_(\w\w)(-\w\w)?\.tar\.xz', file) if m: arch = m.group(1) @@ -92,7 +92,7 @@ def get_bundle_info(file, osys): raise ValueError("Invalid bundle format %s" % file) elif(osys == 'osx'): m = re.search( -'TorBrowser-\d\.\d\.\d-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', +'TorBrowser-\d\.\d\.?\d?-osx(\d\d)_(\w\w)(-\w\w)?\.dmg', file) if m: os = 'osx' @@ -351,10 +351,10 @@ if __name__ == '__main__': elif p3.match(file): osys, arch, lc = get_bundle_info(file, 'osx') -link = "Package (%s-bit): %s\nASC signature (%s-bit): %s\n"\ - "Package SHA256 checksum (%s-bit): %s\n" %\ - (arch, link_file, arch, link_asc, -arch, sha_file) +link = "Tor Browser %s-bit:\n%s$Tor Browser's signature %s-bit:"\ +"\n%s$SHA256 checksum of Tor Browser %s-bit (advanced):"\ +"\n%s$" %\ + (arch, link_file, arch, link_asc, arch, sha_file) # note that you should only upload bundles for supported locales core.add_link('Drive', osys, lc, link) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Basic logging
commit 888a1de21e3ec7b606d5a456e972d189f73c466c Author: ilv Date: Mon Nov 2 18:01:28 2015 -0300 Basic logging --- gettor/twitter.py | 19 +-- process_tweets.py | 19 --- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/gettor/twitter.py b/gettor/twitter.py index a197ac1..13666a3 100644 --- a/gettor/twitter.py +++ b/gettor/twitter.py @@ -95,7 +95,6 @@ class TwitterBot(object): raise InternalError("Core error: %s" % str(e)) # logging -""" log = logging.getLogger(__name__) logging_format = utils.get_logging_format() @@ -109,8 +108,8 @@ class TwitterBot(object): log.addHandler(logfileh) # stop logging on stdout from now on -log.propagate = False -#self.log = log""" +#log.propagate = False +self.log = log def _is_blacklisted(self, username): """Check if a user is blacklisted. @@ -221,18 +220,18 @@ class TwitterBot(object): try: if self._is_blacklisted(str(sender_id)): -#self.log.info("Request from blacklisted account!") +self.log.info("Request from blacklisted account!") status = 'blacklisted' bogus_request = True if not bogus_request: -#self.log.debug("Request seems legit, let's parse it") +self.log.debug("Request seems legit, let's parse it") # let's try to guess what the user is asking request = self.parse_text(str(msg)) # possible options: links, mirrors, help if request['type'] == 'links': -#self.log.debug("Type of request: help") +self.log.debug("Type of request: links") links = self.core.get_links( 'Twitter', request['os'], @@ -244,7 +243,7 @@ class TwitterBot(object): elif request['type'] == 'mirrors': -#self.log.debug("Type of request: mirrors") +self.log.debug("Type of request: mirrors") status = 'success' reply = self._get_msg('mirrors', 'en') try: @@ -256,7 +255,7 @@ class TwitterBot(object): reply = self._get_msg('mirrors_unavailable', 'en') else: -#self.log.debug("Type of request: help") +self.log.debug("Type of request: help") status = 'success' reply = self._get_msg('help', 'en') @@ -267,14 +266,14 @@ class TwitterBot(object): except (core.ConfigError, core.InternalError) as e: # if core failes, send the user an error message, but keep going -#self.log.error("Something went wrong internally: %s" % str(e)) +self.log.error("Something went wrong internally: %s" % str(e)) status = 'core_error' reply = self._get_msg('internal_error', 'en') finally: # keep stats if request: -#self.log.debug("Adding request to database... ") +self.log.debug("Adding request to database... ") self.core.add_request_to_db() def start(self): diff --git a/process_tweets.py b/process_tweets.py index 484cb97..59c2f48 100644 --- a/process_tweets.py +++ b/process_tweets.py @@ -7,16 +7,29 @@ import logging import gettor.twitter def main(): +logging_level = 'DEBUG' +logging_file = '/home/ilv/Proyectos/tor/gettor/log/process_tweets.log' +logging_format = '[%(levelname)s] %(asctime)s - %(message)s' +date_format = "%Y-%m-%d" # %H:%M:%S + +logging.basicConfig( +format=logging_format, +datefmt=date_format, +filename = logging_file, +level = logging_level +) + +logging.debug("Starting bot") try: bot = gettor.twitter.TwitterBot() bot.start() except gettor.twitter.ConfigError as e: -print "Configuration error: %s" % str(e) +logging.error("Configuration error: %s" % str(e)) except gettor.twitter.InternalError as e: -print "Core module not working: %s" % str(e) +logging.error("Core module not working: %s" % str(e)) except Exception as e: # in case something unexpected happens -print "Unexpected error: %s" % str(e) +logging.error("Unexpected error: %s" % str(e)) if __name__ == '__main__': main() ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Fixed format for text plain messages in smtp
commit 00f122e3daa47aa890c7a5a8aebab086f4569a0b Author: ilv Date: Sat Oct 31 15:04:20 2015 -0300 Fixed format for text plain messages in smtp --- gettor/smtp.py |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gettor/smtp.py b/gettor/smtp.py index cfabfda..5476189 100644 --- a/gettor/smtp.py +++ b/gettor/smtp.py @@ -308,7 +308,7 @@ class SMTP(object): email_obj['From'] = from_addr email_obj['To'] = to_addr -msg_attach = MIMEText(msg, 'text') +msg_attach = MIMEText(msg, 'plain') email_obj.attach(msg_attach) return email_obj ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Added direct link to downloads section in http(s) mirrors
commit 87758bd0ec34a52a995d0e5973ca81ebf61203d6 Author: ilv Date: Thu Aug 27 15:13:44 2015 -0300 Added direct link to downloads section in http(s) mirrors --- get_mirrors.py | 17 - 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/get_mirrors.py b/get_mirrors.py index 9c4b0c4..afa4cc9 100644 --- a/get_mirrors.py +++ b/get_mirrors.py @@ -158,6 +158,15 @@ def is_json(my_json): return True +def add_tpo_link(url): +"""Add the download link for Tor Browser.""" +uri = 'projects/torbrowser.html.en#downloads' +if url.endswith('/'): +return "%s%s" % (url, uri) +else: +return "%s/%s" % (url, uri) + + def add_entry(mirrors, columns, elements): """Add entry to mirrors list.""" entry = {} @@ -172,9 +181,15 @@ def add_entry(mirrors, columns, elements): def add_mirror(file, entry, proto): """Add mirror to mirrors list.""" +# if proto requested is http(s), we add link to download section +if PROTOS[proto] == 'http' or PROTOS[proto] == 'https': +uri = add_tpo_link(entry[proto]) +else: +uri = entry[proto] + file.write( "%s - by %s (%s)\n" % ( -entry[proto], +uri, entry['orgName'], entry['subRegion'], ) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Updates to Twitter module, now it works. Still pending logging.
commit 9f2a5194c126f431579099185d5e1a12cbcec878 Author: ilv Date: Fri Oct 30 22:11:52 2015 -0300 Updates to Twitter module, now it works. Still pending logging. --- gettor/twitter.py | 507 - process_tweets.py | 17 +- 2 files changed, 110 insertions(+), 414 deletions(-) diff --git a/gettor/twitter.py b/gettor/twitter.py index 05320ef..a197ac1 100644 --- a/gettor/twitter.py +++ b/gettor/twitter.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # -# This file is part of GetTor, a Tor Browser distribution system. +# This file is part of GetTor. # -# :authors: Israel Leiva +# :authors: Israel Leiva # Based on BridgeDB Twitter distributor (PoC) by wfn # - https://github.com/wfn/twidibot # @@ -11,22 +11,18 @@ # # :license: This is Free Software. See LICENSE for license information. -import sys -import json -import time -import signal +import os +import re import tweepy +import logging import gettext - -from tweepy.models import Status +import ConfigParser import core import utils import blacklist -"""Twitter module for processing requests. Forked from BridgeDB Twitter -distributor by wfn (https://github.com/wfn/twidibot)""" - +"""Twitter channel for distributing links to download Tor Browser.""" class ConfigError(Exception): pass @@ -36,172 +32,24 @@ class InternalError(Exception): pass -class TwitterBotStreamListener(tweepy.StreamListener): -"""Listener for twitter's Streaming API.""" - -def __init__(self, bot, api=None): +class GetTorStreamListener(tweepy.StreamListener): +""" Basic listener for Twitter's streaming API.""" +def __init__(self, bot): self.bot = bot -self.processing_data = False - -super(TwitterBotStreamListener, self).__init__(api) - -def on_data(self, raw_data): -"""Called when raw data is received from connection. - -This is where all the data comes first. Normally we could use -(inherit) the on_data() in tweepy.StreamListener, but it unnecessarily -and naively reports unknown event types as errors (to simple log); -also, we might want to tweak it further later on. - -But for now, this is basically taken from tweepy's on_data(). - -Return False to stop stream and close connection. - -""" - -self.processing_data = True - -data = json.loads(raw_data) - -if 'in_reply_to_status_id' in data: -status = Status.parse(self.api, data) -if self.on_status(status) is False: -return False -elif 'delete' in data: -delete = data['delete']['status'] -if self.on_delete(delete['id'], delete['user_id']) is False: -return False -elif 'event' in data: -status = Status.parse(self.api, data) -if self.on_event(status) is False: -return False -elif 'direct_message' in data: -status = Status.parse(self.api, data) -if self.on_direct_message(status) is False: -return False -elif 'limit' in data: -if self.on_limit(data['limit']['track']) is False: -return False -elif 'disconnect' in data: -if self.on_disconnect(data['disconnect']) is False: -return False -else: -# we really are ok to receive unknown stream/event types. -# log to debug? -log.debug('TwitterBotStreamListener::on_data(): got event/stream' -' data of unknown type. Raw data follows:\n%s', data) - -self.processing_data = False - -def on_status(self, status): -"""Called when a new status arrives""" - -#log.debug('Got status: %s', status) -return - -def on_event(self, status): -"""Called when a new event arrives""" - -#log.debug('Got event: %s', status) - -# XXX make sure tweepy's given 'status.event' unicode string can -# always be safely converted to ascii - -# now it seems one can reply to dm without following the account -# if str(status.event) == 'follow': -#self.bot.handleFollowEvent(status) - -return +super(GetTorStreamListener, self).__init__(self.bot.api) def on_direct_message(self, status): -"""Called when a new direct message arrives or is sent from us - -TODO: make a pull request for tweepy or something, because they -say it's only when a direct message is *received* (implying, 'by us') - -""" - -# doing twitter user comparisons using id_str makes sense here - it's -# safe and id_str's are guaranteed to be unique (re: latter, just like -# id's.) maybe consider deciding how comparisons should be made for sure, -# and then extend tweepy.models.User to include __eq__? +""" Right now we only c
[tor-commits] [gettor/master] Debugging improvements
commit e35c09f55571c1b1966c263643a38eaeb94c8a9a Author: ilv Date: Mon Aug 3 15:08:29 2015 -0300 Debugging improvements --- process_email.py | 41 + smtp_demo.py | 22 -- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/process_email.py b/process_email.py new file mode 100644 index 000..504b5dd --- /dev/null +++ b/process_email.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +import logging + +import gettor.smtp + +def main(): +logging_level = 'INFO' +logging_file = '/path/to/gettor/log/process_email.log' +logging_format = '[%(levelname)s] %(asctime)s - %(message)s' +date_format = "%Y-%m-%d" # %H:%M:%S + +logging.basicConfig( +format=logging_format, +datefmt=date_format, +filename = logging_file, +level = logging_level +) + +logging.debug("New email received") +logging.debug("Creating new SMTP object") + +try: +service = gettor.smtp.SMTP('/path/to/gettor/smtp.cfg') +incoming = sys.stdin.read() +service.process_email(incoming) +logging.debug("Email processed sucessfully") +except gettor.smtp.ConfigError as e: +logging.error("Configuration error: %s" % str(e)) +except gettor.smtp.SendEmailError as e: +logging.error("SMTP not working: %s" % str(e)) +except gettor.smtp.InternalError as e: +logging.error("Core module not working: %s" % str(e)) +except Exception as e: +# in case something unexpected happens +logging.critical("Unexpected error: %s" % str(e)) + +if __name__ == '__main__': +main() diff --git a/smtp_demo.py b/smtp_demo.py deleted file mode 100644 index 0ec341e..000 --- a/smtp_demo.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -import sys - -import gettor.smtp - -service = gettor.smtp.SMTP() - -# For now we simulate mails reading from stdin -# In linux test as follows: -# $ python smtp_demo.py < email.eml - -incoming = sys.stdin.read() -try: -print "Email received!" -service.process_email(incoming) -print "Email sent!" -except gettor.smtp.ConfigError as e: -print "Misconfiguration: " + str(e) -except gettor.smtp.SendEmailError as e: -print "SMTP not working: " + str(e) -except gettor.smtp.InternalError as e: -print "Core module not working: " + str(e) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Better debugging and error handling
commit e1fe0b98202d07aaacb14d0dc18bce8080642e67 Author: ilv Date: Thu Aug 27 15:14:55 2015 -0300 Better debugging and error handling --- gettor/blacklist.py | 65 --- gettor/db.py|7 +- 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/gettor/blacklist.py b/gettor/blacklist.py index a16c764..635d9a7 100644 --- a/gettor/blacklist.py +++ b/gettor/blacklist.py @@ -120,44 +120,41 @@ class Blacklist(object): :raise: BlacklistError if the user is blacklisted """ -r = self.db.get_user(user, service) -if r: -# permanently blacklisted -if r['blocked']: -try: +try: +self.log.info("Trying to get info from user") +self.db.connect() +r = self.db.get_user(user, service) +if r: +# permanently blacklisted +if r['blocked']: +self.log.warning("Request from user permanently blocked") self.db.update_user(user, service, r['times']+1, 1) raise BlacklistError("Blocked user") -except db.DBError as e: -raise InternalError("Can't update user (%s)" % str(e)) -# don't be greedy -elif r['times'] >= max_req: -last = datetime.datetime.fromtimestamp( -float(r['last_request']) -) -next = last + datetime.timedelta(minutes=wait_time) - -if datetime.datetime.now() < next: -# too many requests from the same user -try: +# don't be greedy +elif r['times'] >= max_req: +last = datetime.datetime.fromtimestamp( +float(r['last_request']) +) +next = last + datetime.timedelta(minutes=wait_time) + +if datetime.datetime.now() < next: +self.log.warning("Too many requests from same user") self.db.update_user(user, service, r['times']+1, 0) raise BlacklistError("Too many requests") -except db.DBError as e: -raise InternalError("Can't update user (%s)" % str(e)) -else: -# fresh user again! -try: +else: +# fresh user again! +self.log.info("Updating counter for existing user") self.db.update_user(user, service, 1, 0) -except db.DBError as e: -raise InternalError("Can't update user (%s)" % str(e)) -else: -# adding up a request for user -try: +else: +# adding up a request for user +self.log.info("Request from existing user") self.db.update_user(user, service, r['times']+1, 0) -except db.DBError as e: -raise InternalError("Can't update user (%s)" % str(e)) -else: -# new request for user -try: +else: +# new request for user +self.log.info("Request from new user") self.db.add_user(user, service, 0) -except db.DBError as e: -raise InternalError("Can't add new user (%s)" % str(e)) +except db.DBError as e: +self.log.error("Something failed!") +raise InternalError("Error with database (%s)" % str(e)) +except BlacklistError as e: +raise BlacklistError(e) diff --git a/gettor/db.py b/gettor/db.py index 0b971af..7a595a3 100644 --- a/gettor/db.py +++ b/gettor/db.py @@ -44,8 +44,13 @@ class DB(object): :param: dbname (string) the path of the database. """ +self.dbname = dbname + + +def connect(self): +""" """ try: -self.con = sqlite3.connect(dbname) +self.con = sqlite3.connect(self.dbname) self.con.row_factory = sqlite3.Row except sqlite3.Error as e: raise DBError("%s" % str(e)) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/master] Better debugging, error handling and mirrors option for xmpp
commit d71e6838bda2a158963228f321d1cb682c5f4297 Author: ilv Date: Thu Aug 27 15:17:21 2015 -0300 Better debugging, error handling and mirrors option for xmpp --- gettor/xmpp.py | 200 +-- lang/xmpp/i18n/en/LC_MESSAGES/en.po | 72 +++-- process_chat.py | 22 xmpp.cfg|2 + 4 files changed, 207 insertions(+), 89 deletions(-) diff --git a/gettor/xmpp.py b/gettor/xmpp.py index e9d2a10..f9b025d 100644 --- a/gettor/xmpp.py +++ b/gettor/xmpp.py @@ -5,8 +5,8 @@ # :authors: Israel Leiva # see also AUTHORS file # -# :copyright: (c) 2008-2014, The Tor Project, Inc. -# (c) 2014, Israel Leiva +# :copyright: (c) 2008-2015, The Tor Project, Inc. +# (c) 2015, Israel Leiva # # :license: This is Free Software. See LICENSE for license information. @@ -20,6 +20,7 @@ import logging import ConfigParser from sleekxmpp import ClientXMPP +from sleekxmpp.xmlstream.stanzabase import JID from sleekxmpp.exceptions import IqError, IqTimeout import core @@ -30,6 +31,14 @@ import blacklist """XMPP module for processing requests.""" +class ConfigError(Exception): +pass + + +class InternalError(Exception): +pass + + class Bot(ClientXMPP): """XMPP bot. @@ -52,10 +61,11 @@ class Bot(ClientXMPP): self.get_roster() except IqError as err: # error getting the roster -# logging.error(err.iq['error']['condition']) +self.xmpp.log.error(err.iq['error']['condition']) self.disconnect() except IqTimeout: # server is taking too long to respond +self.xmpp.log.error("Server is taking too long to respond") self.disconnect() def message(self, msg): @@ -65,14 +75,6 @@ class Bot(ClientXMPP): msg.reply(msg_to_send).send() -class ConfigError(Exception): -pass - - -class InternalError(Exception): -pass - - class XMPP(object): """Receive and reply requests by XMPP. @@ -95,75 +97,63 @@ class XMPP(object): """ # define a set of default values -DEFAULT_CONFIG_FILE = 'xmpp.cfg' - -logging.basicConfig(format='[%(levelname)s] %(asctime)s - %(message)s', -datefmt="%Y-%m-%d %H:%M:%S") -log = logging.getLogger(__name__) +default_cfg = 'xmpp.cfg' config = ConfigParser.ConfigParser() if cfg is None or not os.path.isfile(cfg): -cfg = DEFAULT_CONFIG_FILE - -config.read(cfg) +cfg = default_cfg try: -self.user = config.get('account', 'user') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'user' from 'account'") +with open(cfg) as f: +config.readfp(f) +except IOError: +raise ConfigError("File %s not found!" % cfg) try: +self.user = config.get('account', 'user') self.password = config.get('account', 'password') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'password' from 'account'") -try: -self.core_cfg = config.get('general', 'core_cfg') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'core_cfg' from 'general'") +self.mirrors = config.get('general', 'mirrors') +self.max_words = config.get('general', 'max_words') +self.max_words = int(self.max_words) +core_cfg = config.get('general', 'core_cfg') +self.core = core.Core(core_cfg) +self.i18ndir = config.get('i18n', 'dir') -try: blacklist_cfg = config.get('blacklist', 'cfg') -self.bl = blacklist_cfg -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'cfg' from 'blacklist'") - -try: +self.bl = blacklist.Blacklist(blacklist_cfg) self.bl_max_req = config.get('blacklist', 'max_requests') self.bl_max_req = int(self.bl_max_req) -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'max_requests' from 'blacklist'") - -try: self.bl_wait_time = config.get('blacklist', 'wait_time') self.bl_wait_time = int(self.bl_wait_time) -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'wait_time' from 'blacklist'") - -try: -self.i18ndir = config.get('i18n', 'dir') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'dir' from 'i18n'") -try: logdir = config.get('log', 'dir') logfile = os.path.join(logdir, 'xmpp.log') -except ConfigParser.Error as e: -raise ConfigError("Couldn't read 'dir' from 'log'") - -try:
[tor-commits] [gettor/develop] Minor correction to #17211
commit 540c525cb038ff42684488f4a1b3f4c5078b5b8e Author: ilv Date: Tue Nov 3 16:06:20 2015 -0300 Minor correction to #17211 --- gettor/smtp.py |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gettor/smtp.py b/gettor/smtp.py index 5476189..3697786 100644 --- a/gettor/smtp.py +++ b/gettor/smtp.py @@ -271,7 +271,7 @@ class SMTP(object): # search for OS or mirrors request # if nothing is found, help by default found_request = False -words = re.split('\s+', test.strip()) +words = re.split('\s+', msg.strip()) for word in words: if not found_request: # OS first ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [gettor/develop] Change related to #17211
commit 54ebdf8ec2110dd381e66e07349add7ead190dce Author: ilv Date: Tue Nov 3 16:06:56 2015 -0300 Change related to #17211 --- gettor/xmpp.py |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gettor/xmpp.py b/gettor/xmpp.py index f9b025d..a605f50 100644 --- a/gettor/xmpp.py +++ b/gettor/xmpp.py @@ -283,7 +283,7 @@ class XMPP(object): # first let's find out how many words are in the message # request shouldn't be longer than 3 words, but just in case -words = msg.split(' ') +words = re.split('\s+', msg.strip()) if len(words) > self.max_words: bogus_request = True self.log.info("Message way too long") ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [torspec/master] Rewrite the existing PT spec to be not Tor specific.
commit 0ef45b97b1a935489335fc31d625c463b076c1e3 Author: Yawning Angel Date: Tue Nov 3 17:34:43 2015 + Rewrite the existing PT spec to be not Tor specific. This attempts to make it clear that PTs are not just for Tor, and can be used by any project, and should be sufficient documentation for writing the PT glue code both for Tor and other projects. TODO: Fold in the implemented parts of prop 196/217. I'll do this when I have time, since statistics are useful for everybody. Fixes: #13369, #15545 Completes: #16754 --- pt-spec.txt | 1026 --- 1 file changed, 636 insertions(+), 390 deletions(-) diff --git a/pt-spec.txt b/pt-spec.txt index 43ae73f..aa723aa 100644 --- a/pt-spec.txt +++ b/pt-spec.txt @@ -1,494 +1,740 @@ - Tor Pluggable Transport Specification + Pluggable Transport Specification (Version 1) + +Abstract + + Pluggable Transports (PTs) are a generic mechanism for the rapid + development and deployment of censorship circumvention, + based around the idea of modular sub-processes that transform + traffic to defeat censors. + + This document specifies the sub-process startup, shutdown, + and inter-process communication mechanisms required to utilize + PTs. + +Table of Contents + + 1. Introduction + 1.1. Requirements Notation + 2. Architecture Overview + 3. Specification + 3.1. Pluggable Transport Naming + 3.2. Pluggable Transport Configuration Environment Variables + 3.2.1. Common Environment Variables + 3.2.2. Pluggable Transport Client Environment Variables + 3.2.3. Pluggable Transport Server Environment Variables + 3.3. Pluggable Transport To Parent Process Communication + 3.3.1. Common Messages + 3.3.2. Pluggable Transport Client Messages + 3.3.3. Pluggable Transport Server Messages + 3.4. Pluggable Transport Shutdown + 3.5. Pluggable Transport Client Per-Connection Arguments + 4. Anonymity Considerations + 5 References + 6. Acknowledgments + Appendix A. Example Client Pluggable Transport Session + Appendix B. Example Server Pluggable Transport Session + +1. Introduction + + This specification describes a way to decouple protocol-level + obfuscation from an application's client/server code, in a manner + that promotes rapid development of obfuscation/circumvention + tools and promotes reuse beyond the scope of the Tor Project's + efforts in that area. + + This is accomplished by utilizing helper sub-processes that + implement the necessary forward/reverse proxy servers that handle + the censorship circumvention, with a well defined and + standardized configuration and management interface. + + Any application code that implements the interfaces as specified + in this document will be able to use all spec compliant Pluggable + Transports. + +1.1. Requirements Notation - The Tor PT team + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL + NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + [RFC2119]. + +2. Architecture Overview -A Table of Contents: + +++---+ + | Client App +-- Local Loopback --+ PT Client (SOCKS Proxy) +--+ + +++---+ | + | + Public Internet (Obfuscated/Transformed traffic) ==> | + | + +++---+ | + | Server App +-- Local Loopback --+ PT Server (Reverse Proxy) +--+ + +++---+ - 0. Motivation - 1. Tor PT interface overview - 2. Specification - 2.0. Pluggable Transport names - 2.1. Tor Configuration - 2.1.0. Client Configuration - 2.1.0.0. ClientTransportPlugin torrc lines - 2.1.0.1. Bridge torrc lines - 2.1.0.2. Connecting to a bridge via a client PT proxy - 2.1.0.3. Passing PT-specific parameters to a client PT - 2.1.1. Server (bridge) Configuration - 2.1.1.0. ServerTransportPlugin lines - 2.1.1.1. Passing PT-specific parameters to a server PT - 2.1.1.2. Specify the bind address of a server PT - 2.2. Managed proxy interface - 2.2.0. Tor -> PT communication (environment variables) - 2.2.1. PT -> Tor communication (stdout) - 2.2.1.0. Client PT behaviour (CMETHOD lines) - 2.2.1.1. Server PT behaviour (SMETHOD lines) - 2.2.2. Managed proxy protocol behaviour + On the client's host, the PT Client software exposes a SOCKS proxy + [RFC1928] to the client application, and obfuscates or otherwise + transforms traffic before forwarding it to the server's host
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit be0ec27a55f2aa779f01f06a2ad1d9eeb1f6feed Author: Translation commit bot Date: Tue Nov 3 15:45:19 2015 + Update translations for liveusb-creator --- de/de.po | 15 --- nl/nl.po | 13 +++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/de/de.po b/de/de.po index 3ea1b8d..218b2b8 100644 --- a/de/de.po +++ b/de/de.po @@ -11,6 +11,7 @@ # Christoph Engler , 2015 # trantor , 2014 # tbull , 2009 +# Ettore Atalan , 2015 # gerhard , 2013 # konstibae, 2015 # Marcus Nitzschke , 2008 @@ -36,8 +37,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 12:26+\n" -"Last-Translator: Christoph Engler \n" +"PO-Revision-Date: 2015-11-03 15:28+\n" +"Last-Translator: Ettore Atalan \n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -47,11 +48,11 @@ msgstr "" #: ../liveusb/gui.py:451 msgid "\"Clone & Install\"" -msgstr "nachbilden & Installieren" +msgstr "\"Klonen & Installieren\"" #: ../liveusb/gui.py:453 msgid "\"Install from ISO\"" -msgstr "Von ISO installieren" +msgstr "\"Aus ISO installieren\"" #: ../liveusb/dialog.py:157 ../liveusb/launcher_ui.py:153 #, python-format @@ -234,7 +235,7 @@ msgstr "Wenn Sie keine existierende Live-ISO auswählen, wird die gewählte Vers msgid "" "Install\n" "by cloning" -msgstr "Installieren\ndurch klonen" +msgstr "Durch Klonen\ninstallieren" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -556,13 +557,13 @@ msgstr "Die Eigenschaften der Systempartition %(system_partition)s werden aktual msgid "" "Upgrade\n" "by cloning" -msgstr "Aktualisieren\ndurch klonen" +msgstr "Durch Klonen\naktualisieren" #: ../liveusb/launcher_ui.py:158 msgid "" "Upgrade\n" "from ISO" -msgstr "Aktualisieren\nvon ISO" +msgstr "Aus ISO\naktualisieren" #: ../liveusb/dialog.py:159 msgid "Use existing Live system ISO" diff --git a/nl/nl.po b/nl/nl.po index b7f222a..2d4268f 100644 --- a/nl/nl.po +++ b/nl/nl.po @@ -12,14 +12,15 @@ # Tjeerd , 2013 # Tonko Mulder , 2015 # Lazlo , 2013 +# Volluta , 2015 # BBLN , 2014 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2015-11-03 15:44+\n" +"Last-Translator: Volluta \n" "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -67,7 +68,7 @@ msgid "" "p, li { white-space: pre-wrap; }\n" "\n" "Need help? Read the documentation." -msgstr "" +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nHulp nodig? Lees documentatie." #: ../liveusb/launcher_ui.py:155 msgid "" @@ -216,7 +217,7 @@ msgstr "Als je geen bestaande Live ISO selecteert, zal de geselecteerde release msgid "" "Install\n" "by cloning" -msgstr "" +msgstr "Installeren\nvia klonen" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -538,13 +539,13 @@ msgstr "Bezig met het vernieuwen van eigenschappen van systeempartitie %(system_ msgid "" "Upgrade\n" "by cloning" -msgstr "" +msgstr "Bijwerken\nvia klonen" #: ../liveusb/launcher_ui.py:158 msgid "" "Upgrade\n" "from ISO" -msgstr "" +msgstr "Bijwerken\nvia ISO" #: ../liveusb/dialog.py:159 msgid "Use existing Live system ISO" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Fix filename endings in HACKING. Patch from "ckomlo", ticket #17515.
commit 8976e739afc5e8f41a4e73bb7ce03071822535cd Author: Nick Mathewson Date: Tue Nov 3 08:23:08 2015 -0500 Fix filename endings in HACKING. Patch from "ckomlo", ticket #17515. --- doc/HACKING/README.1st.md | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/HACKING/README.1st.md b/doc/HACKING/README.1st.md index 3bee9ad..a9479de 100644 --- a/doc/HACKING/README.1st.md +++ b/doc/HACKING/README.1st.md @@ -5,20 +5,20 @@ In this directory This directory has helpful information about what you need to know to hack on Tor! -First, read 'GettingStarted.txt' to learn how to get a start in Tor +First, read 'GettingStarted.md' to learn how to get a start in Tor development. If you've decided to write a patch, 'CodingStandards.txt' will give you a bunch of information about how we structure our code. -It's important to get code right! Reading 'WritingTests.txt' will +It's important to get code right! Reading 'WritingTests.md' will tell you how to write and run tests in the Tor codebase. There are a bunch of other programs we use to help maintain and -develop the codebase: 'HelpfulTools.txt' can tell you how to use them +develop the codebase: 'HelpfulTools.md' can tell you how to use them with Tor. -If it's your job to put out Tor releases, see 'ReleasingTor.txt' so +If it's your job to put out Tor releases, see 'ReleasingTor.md' so that you don't miss any steps! @@ -47,7 +47,7 @@ Happy hacking! X also describe -doc/HACKING/WritingTests.txt +doc/HACKING/WritingTests.md torguts.git ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 04fc16b767549af1ce8586cf2fb5f07265f3535a Author: Translation commit bot Date: Tue Nov 3 13:15:28 2015 + Update translations for liveusb-creator --- nb/nb.po | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nb/nb.po b/nb/nb.po index eebcc83..22dc821 100644 --- a/nb/nb.po +++ b/nb/nb.po @@ -4,6 +4,7 @@ # # Translators: # Allan Nordhøy , 2014 +# Allan Nordhøy , 2015 # John Henningsen , 2015 # lateralus, 2013-2014 # trash , 2013 @@ -12,8 +13,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2015-11-03 12:58+\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/otf/torproject/language/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -210,7 +211,7 @@ msgstr "Dersom du ikke har valgt en eksisterende Live ISO, vil den valgte utgive msgid "" "Install\n" "by cloning" -msgstr "" +msgstr "Installer\nved å klone" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -532,13 +533,13 @@ msgstr "Oppdaterer egenskaper for systempartisjon %(system_partition)s" msgid "" "Upgrade\n" "by cloning" -msgstr "" +msgstr "Oppgrader\nved å klone" #: ../liveusb/launcher_ui.py:158 msgid "" "Upgrade\n" "from ISO" -msgstr "" +msgstr "Oppgrader\nfra ISO" #: ../liveusb/dialog.py:159 msgid "Use existing Live system ISO" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 5cc777e6cab723ab6a32d71940a8cddc2aecbdbd Author: Translation commit bot Date: Tue Nov 3 12:45:29 2015 + Update translations for liveusb-creator --- de/de.po |7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/de/de.po b/de/de.po index 9c90cd5..3ea1b8d 100644 --- a/de/de.po +++ b/de/de.po @@ -8,6 +8,7 @@ # cyberfork , 2012 # Berkan , 2013 # Christian Fröhlich , 2013 +# Christoph Engler , 2015 # trantor , 2014 # tbull , 2009 # gerhard , 2013 @@ -35,8 +36,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:49+\n" -"Last-Translator: max weber\n" +"PO-Revision-Date: 2015-11-03 12:26+\n" +"Last-Translator: Christoph Engler \n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -46,7 +47,7 @@ msgstr "" #: ../liveusb/gui.py:451 msgid "\"Clone & Install\"" -msgstr "Kopieren & Installieren" +msgstr "nachbilden & Installieren" #: ../liveusb/gui.py:453 msgid "\"Install from ISO\"" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit 841031a36c5db0fc3da5130165dd6e2a706917db Author: Translation commit bot Date: Tue Nov 3 12:15:32 2015 + Update translations for liveusb-creator --- ru/ru.po |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ru/ru.po b/ru/ru.po index 6dd26fc..94348f1 100644 --- a/ru/ru.po +++ b/ru/ru.po @@ -22,7 +22,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 11:38+\n" +"PO-Revision-Date: 2015-11-03 12:04+\n" "Last-Translator: Antony A. Tolmachev \n" "Language-Team: Russian (http://www.transifex.com/otf/torproject/language/ru/)\n" "MIME-Version: 1.0\n" @@ -83,7 +83,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "" +msgstr "\nУÑÑановиÑÑ Tails на дÑÑгÑÑ ÑлÑÑÐºÑ ÐºÐ¾Ð¿Ð¸Ñованием ÐС Tails, коÑоÑÑÑ ÐÑ Ñже иÑполÑзÑеÑе..\n\nЦелевой накопиÑÐµÐ»Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑÑоÑмаÑиÑован и вÑе даннÑе на нем ÑÑеÑÑÑ\n\nТекÑÑее иÑполÑзÑемое Ðами заÑиÑÑованное Ñ ÑанилиÑе на ÑлÑÑке Ñ ÐС Tails не ÑкопиÑовано.\n\n" #: ../liveusb/launcher_ui.py:157 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [webwml/master] Bug 17445: State Windows 10 support explicitly
commit 377e943624f219745cec3d28dc0bb85d489691b8 Author: Georg Koppen Date: Tue Nov 3 10:56:42 2015 + Bug 17445: State Windows 10 support explicitly --- download/en/download-easy.wml |2 +- download/en/download.wml |4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/download/en/download-easy.wml b/download/en/download-easy.wml index 8b9f0bc..5885a70 100644 --- a/download/en/download-easy.wml +++ b/download/en/download-easy.wml @@ -39,7 +39,7 @@ Tor Browser for Windows - Version - Windows 8, 7, Vista, and XP + Version - Windows 10, 8, 7, Vista, and XP Everything you need to safely browse the Internet. Learn more » diff --git a/download/en/download.wml b/download/en/download.wml index 41996a4..77dee1d 100644 --- a/download/en/download.wml +++ b/download/en/download.wml @@ -54,7 +54,7 @@ you are used to. Please read the full list of warnings fo Tor Browser - Version - Windows 8, 7, Vista, and XP + Version - Windows 10, 8, 7, Vista, and XP Everything you need to safely browse the Internet. Learn more » @@ -67,7 +67,7 @@ you are used to. Please read the full list of warnings fo Expert Bundle - Windows 8, 7, Vista, XP, 2000, 2003 Server, ME, and Windows 98SE + Windows 10, 8, 7, Vista, XP, 2000, 2003 Server, ME, and Windows 98SE Contains just Tor and nothing else. You'll need to configure Tor and all of your applications manually. This installer must be run as Administrator. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator_completed] Update translations for liveusb-creator_completed
commit 122b6cc89101f7b9dfca0ab8789843902685f77b Author: Translation commit bot Date: Tue Nov 3 11:45:39 2015 + Update translations for liveusb-creator_completed --- pt_BR/pt_BR.po | 139 ++-- 1 file changed, 75 insertions(+), 64 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 92dbf45..2d33475 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -14,6 +14,7 @@ # Eduardo Bonsi, 2013 # Eduardo Luis Voltolini Tafner, 2013 # Augustine , 2013 +# Gilberto Coutinho , 2015 # gino silva , 2013 # Igor Pires Soares , 2008 # Matheus Martins, 2013 @@ -25,9 +26,9 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-08-10 16:01+0200\n" -"PO-Revision-Date: 2015-08-13 21:58+\n" -"Last-Translator: CRISTIANO MARQUES DOS SANTOS \n" +"POT-Creation-Date: 2015-11-02 21:23+0100\n" +"PO-Revision-Date: 2015-11-03 11:38+\n" +"Last-Translator: Gilberto Coutinho \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,7 +44,7 @@ msgstr "\"Clonar e Instalar\"" msgid "\"Install from ISO\"" msgstr "\"Instalar de uma ISO\"" -#: ../liveusb/dialog.py:150 ../liveusb/launcher_ui.py:149 +#: ../liveusb/dialog.py:157 ../liveusb/launcher_ui.py:153 #, python-format msgid "%(distribution)s Installer" msgstr "Instalador do %(distribution)s" @@ -68,51 +69,61 @@ msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s" msgid "%s already bootable" msgstr "%s pronto para iniciar" -#: ../liveusb/launcher_ui.py:156 -msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Need help? Read the documentation." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nPrecisa de ajuda? Leia a documentação." - -#: ../liveusb/launcher_ui.py:151 -msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Copy the running Tails onto a USB stick or SD card. All data on the target drive will be lost." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nCopiar o Tails em execução em uma memória USB ou cartão SD. Todos os dados registrados no dispositivo de destino serão perdidos." - -#: ../liveusb/launcher_ui.py:153 +#: ../liveusb/launcher_ui.py:160 msgid "" "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" "\n" "p, li { white-space: pre-wrap; }\n" -"\n" -"Copy the running Tails onto an already installed Tails device. Other partitions found on the stick are preserved." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nCopiar o Tails em execução para um dispositivo onde o Tails já está instalado. Outras partições encontradas no dispositivo serão preservadas." +"\n" +"Need help? Read the documentation." +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nPrecisa de ajuda? Leia isso aqui documentação." #: ../liveusb/launcher_ui.py:155 msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Upgrade an already installed Tails device from a new ISO image." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nAtualizar um dispositivo com o Tails instalado a partir de uma nova imagem ISO." +"\n" +"Install Tails on another USB stick by copying the Tails system that you are currently using..\n" +"\n" +"The USB stick that you install on is formatted and all data is lost.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" +"\n" +"" +msgstr "\nIntalar o Tails em outra unidadade USB, compiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" + +#: ../liveusb/launcher_ui.py:157 +msgid "" +"\n" +"Upgrade another Tails USB stick to the same version of Tails that you are currently using.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you upgrade is preserved.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" +"\n" +"\n" +"" +msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiado.\n\n\n" + +#: ../liveusb/launcher_ui.py:159 +msgid "" +"\n" +"Upgrade another Tail
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit d55209d6b65fab21c6d423b0e211a370ea491595 Author: Translation commit bot Date: Tue Nov 3 11:45:33 2015 + Update translations for liveusb-creator --- pt_BR/pt_BR.po | 19 ++- ru/ru.po | 13 +++-- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/pt_BR/pt_BR.po b/pt_BR/pt_BR.po index 8ea8c5e..2d33475 100644 --- a/pt_BR/pt_BR.po +++ b/pt_BR/pt_BR.po @@ -14,6 +14,7 @@ # Eduardo Bonsi, 2013 # Eduardo Luis Voltolini Tafner, 2013 # Augustine , 2013 +# Gilberto Coutinho , 2015 # gino silva , 2013 # Igor Pires Soares , 2008 # Matheus Martins, 2013 @@ -26,8 +27,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2015-11-03 11:38+\n" +"Last-Translator: Gilberto Coutinho \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/torproject/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -75,7 +76,7 @@ msgid "" "p, li { white-space: pre-wrap; }\n" "\n" "Need help? Read the documentation." -msgstr "" +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nPrecisa de ajuda? Leia isso aqui documentação." #: ../liveusb/launcher_ui.py:155 msgid "" @@ -87,7 +88,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "" +msgstr "\nIntalar o Tails em outra unidadade USB, compiando o sistema Tails que você está usando agora..\n\nA unidade USB que você usar será formatada e todos os dados serão perdidos.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" #: ../liveusb/launcher_ui.py:157 msgid "" @@ -100,7 +101,7 @@ msgid "" "\n" "\n" "" -msgstr "" +msgstr "\nAtualizar outra unidade USB com Tails para a mesma versão do Tails que você está usando agora.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiado.\n\n\n" #: ../liveusb/launcher_ui.py:159 msgid "" @@ -112,7 +113,7 @@ msgid "" "The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" "\n" "" -msgstr "" +msgstr "\nAtualizar outro Tails numa unidade USB a partir de uma imagem ISO.\n\nO armazenamento persistente criptografado no Tails da unidade USB à ser atualizada será mantido.\n\nO armazenamento persistente criptografado na unidade USB do Tails que você esta usando agora não será copiada.\n\n" #: ../liveusb/dialog.py:161 msgid "Alt+B" @@ -224,7 +225,7 @@ msgstr "Se você não selecionar uma Live ISO já existente, a versão seleciona msgid "" "Install\n" "by cloning" -msgstr "" +msgstr "Instalar por clonagem" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -546,13 +547,13 @@ msgstr "Atualizando as propriedades da partição de sistema %(system_partition) msgid "" "Upgrade\n" "by cloning" -msgstr "" +msgstr "Atualizar por cloangem" #: ../liveusb/launcher_ui.py:158 msgid "" "Upgrade\n" "from ISO" -msgstr "" +msgstr "Atualizar de uma ISO" #: ../liveusb/dialog.py:159 msgid "Use existing Live system ISO" diff --git a/ru/ru.po b/ru/ru.po index fb7bb6d..6dd26fc 100644 --- a/ru/ru.po +++ b/ru/ru.po @@ -4,6 +4,7 @@ # # Translators: # ÐнаÑолий ÐÑÑÑков , 2009 +# Antony A. Tolmachev , 2015 # Den Arefyev <>, 2012 # Evgrafov Denis , 2014 # Eugene, 2013 @@ -21,8 +22,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2015-11-03 11:38+\n" +"Last-Translator: Antony A. Tolmachev \n" "Language-Team: Russian (http://www.transifex.com/otf/torproject/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -70,7 +71,7 @@ msgid "" "p, li { white-space: pre-wrap; }\n" "\n" "Need help? Read the documentation." -msgstr "" +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nÐÑжна помоÑÑ? ÐÑоÑиÑайÑе докÑменÑаÑиÑ." #: ../liveusb/launcher_ui.py:155 msgid "" @@ -219,7 +220,7 @@ msgstr "ÐÑли Ð²Ñ Ð½Ðµ вÑбеÑеÑе ÑÑÑеÑÑвÑÑÑий Live ISO, msgid "" "Install\n" "by cloning" -msgstr "" +msgstr "УÑÑановиÑÑ\nклониÑованием" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -541,13 +542,13 @@ msgstr "Ðбновление ÑвойÑÑв ÑиÑÑемного Ñаздела msgid "" "Upgrade\n" "by cloning" -msgstr "" +msgstr "ÐбновиÑÑ\nклониÑованиеÐ
[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator
commit e3e731737e355f6552276fe8b81abda259c5a697 Author: Translation commit bot Date: Tue Nov 3 10:15:20 2015 + Update translations for liveusb-creator --- de/de.po | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/de/de.po b/de/de.po index ddb10a5..9c90cd5 100644 --- a/de/de.po +++ b/de/de.po @@ -16,6 +16,7 @@ # Mario Baier , 2013 # matsa , 2012 # Maximilian Schuster , 2015 +# max weber, 2015 # M H , 2013 # Mike , 2015 # mo , 2013 @@ -34,8 +35,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-11-02 21:23+0100\n" -"PO-Revision-Date: 2015-11-03 09:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2015-11-03 09:49+\n" +"Last-Translator: max weber\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -232,7 +233,7 @@ msgstr "Wenn Sie keine existierende Live-ISO auswählen, wird die gewählte Vers msgid "" "Install\n" "by cloning" -msgstr "" +msgstr "Installieren\ndurch klonen" #: ../liveusb/dialog.py:172 msgid "Install Tails" @@ -554,13 +555,13 @@ msgstr "Die Eigenschaften der Systempartition %(system_partition)s werden aktual msgid "" "Upgrade\n" "by cloning" -msgstr "" +msgstr "Aktualisieren\ndurch klonen" #: ../liveusb/launcher_ui.py:158 msgid "" "Upgrade\n" "from ISO" -msgstr "" +msgstr "Aktualisieren\nvon ISO" #: ../liveusb/dialog.py:159 msgid "Use existing Live system ISO" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/liveusb-creator_completed] Update translations for liveusb-creator_completed
commit 088e702d3a7e5d467a55ea817f7fa58813c79813 Author: Translation commit bot Date: Tue Nov 3 09:47:01 2015 + Update translations for liveusb-creator_completed --- templates/liveusb-creator.pot | 136 ++--- 1 file changed, 73 insertions(+), 63 deletions(-) diff --git a/templates/liveusb-creator.pot b/templates/liveusb-creator.pot index b7fff77..ef4d11d 100644 --- a/templates/liveusb-creator.pot +++ b/templates/liveusb-creator.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-08-04 10:45+0200\n" -"PO-Revision-Date: 2015-08-05 08:28+\n" +"POT-Creation-Date: 2015-11-02 21:23+0100\n" +"PO-Revision-Date: 2015-11-03 09:24+\n" "Last-Translator: carolyn \n" "Language-Team: English (http://www.transifex.com/otf/torproject/language/en/)\n" "MIME-Version: 1.0\n" @@ -25,7 +25,7 @@ msgstr "\"Clone & Install\"" msgid "\"Install from ISO\"" msgstr "\"Install from ISO\"" -#: ../liveusb/dialog.py:150 ../liveusb/launcher_ui.py:149 +#: ../liveusb/dialog.py:157 ../liveusb/launcher_ui.py:153 #, python-format msgid "%(distribution)s Installer" msgstr "%(distribution)s Installer" @@ -50,51 +50,61 @@ msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s" msgid "%s already bootable" msgstr "%s already bootable" -#: ../liveusb/launcher_ui.py:156 -msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Need help? Read the documentation." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nNeed help? Read the documentation." - -#: ../liveusb/launcher_ui.py:151 -msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Copy the running Tails onto a USB stick or SD card. All data on the target drive will be lost." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nCopy the running Tails onto a USB stick or SD card. All data on the target drive will be lost." - -#: ../liveusb/launcher_ui.py:153 +#: ../liveusb/launcher_ui.py:160 msgid "" "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" "\n" "p, li { white-space: pre-wrap; }\n" -"\n" -"Copy the running Tails onto an already installed Tails device. Other partitions found on the stick are preserved." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nCopy the running Tails onto an already installed Tails device. Other partitions found on the stick are preserved." +"\n" +"Need help? Read the documentation." +msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nNeed help? Read the documentation." #: ../liveusb/launcher_ui.py:155 msgid "" -"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n" -"\n" -"p, li { white-space: pre-wrap; }\n" -"\n" -"Upgrade an already installed Tails device from a new ISO image." -msgstr "http://www.w3.org/TR/REC-html40/strict.dtd\";>\n\np, li { white-space: pre-wrap; }\n\nUpgrade an already installed Tails device from a new ISO image." +"\n" +"Install Tails on another USB stick by copying the Tails system that you are currently using..\n" +"\n" +"The USB stick that you install on is formatted and all data is lost.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" +"\n" +"" +msgstr "\nInstall Tails on another USB stick by copying the Tails system that you are currently using..\n\nThe USB stick that you install on is formatted and all data is lost.\n\nThe encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n\n" + +#: ../liveusb/launcher_ui.py:157 +msgid "" +"\n" +"Upgrade another Tails USB stick to the same version of Tails that you are currently using.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you upgrade is preserved.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" +"\n" +"\n" +"" +msgstr "\nUpgrade another Tails USB stick to the same version of Tails that you are currently using.\n\nThe encrypted persistent storage of the Tails USB stick that you upgrade is preserved.\n\nThe encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n\n\n" + +#: ../liveusb/launcher_ui.py:159 +msgid "" +"\n" +"Upgrade another Tails USB stick to the version of an ISO image.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you upgrade is preserved.\n" +"\n" +"The encrypted persistent storage of the Tails USB stick that you are currently using is not copied.\n" +"\n" +"" +msgstr "\nUpgrade another Tails USB stick to the version of an ISO image.\n\nThe encrypted persistent storage of the Tails USB stick that you upgrade is preserved.\n\nThe encrypte
[tor-commits] [tor-browser-bundle/master] Bug 17511: fix sha256sums file in continuous builds
commit 7643c10134ff66c427974e36130bfdc1faa044fd Author: Nicolas Vigier Date: Mon Nov 2 20:01:02 2015 +0100 Bug 17511: fix sha256sums file in continuous builds --- tools/continuous-builds/build-tbb.sh|4 ++-- tools/continuous-builds/park-nightly.sh |8 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/continuous-builds/build-tbb.sh b/tools/continuous-builds/build-tbb.sh index f1be4ef..6c8d248 100755 --- a/tools/continuous-builds/build-tbb.sh +++ b/tools/continuous-builds/build-tbb.sh @@ -61,8 +61,8 @@ if [ $status = done ]; then echo "$0: renaming $DESTDIR -> $NEWDESTDIR" | tee -a $logfile mv $DESTDIR $NEWDESTDIR cd $NEWDESTDIR || exit 3 - sha256sum *.tar.xz *.zip *.dmg *.exe > sha256sums.txt - gpg -a --clearsign $PGPKEYID sha256sums.txt || exit 2 + sha256sum *.tar.xz *.zip *.dmg *.exe > sha256sums-unsigned-build.txt + gpg $PGPKEYID -abs sha256sums-unsigned-build.txt || exit 2 cd .. D=$(basename $NEWDESTDIR) tar cf - $D/sha256sums* $D/*.tar.xz $D/*.zip $D/*.exe $D/*.dmg | ssh -i $PUBLISH_SSH_KEY $PUBLISH_HOST | tee -a $logfile diff --git a/tools/continuous-builds/park-nightly.sh b/tools/continuous-builds/park-nightly.sh index dbc01e4..0f418b2 100755 --- a/tools/continuous-builds/park-nightly.sh +++ b/tools/continuous-builds/park-nightly.sh @@ -16,10 +16,10 @@ DSTDIR=tbb-nightly-$(date +%F) do_check() { [ -z "$1" ] || cd $1 || exit 5 -[ -z "$V" ] || echo "Verifying sha256sums.txt" -gpg -q --verify sha256sums.txt.asc > /dev/null || exit 3 -[ -z "$V" ] || echo "Checking sha256sums.txt" -sha256sum --strict --quiet -c sha256sums.txt || exit 4 +[ -z "$V" ] || echo "Verifying sha256sums-unsigned-build.txt" +gpg -q --verify sha256sums-unsigned-build.txt.asc sha256sums-unsigned-build.txt > /dev/null || exit 3 +[ -z "$V" ] || echo "Checking sha256sums-unsigned-build.txt" +sha256sum --strict --quiet -c sha256sums-unsigned-build.txt || exit 4 } if [ -d $DIR/$DSTDIR ] && [ -e $DIR/$DSTDIR/tbb-nightly.stamp ]; then ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits