[tor-commits] [tor-browser-bundle/master] Bug 17511: fix sha256sums file in continuous builds

2015-11-03 Thread gk
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


[tor-commits] [translation/liveusb-creator_completed] Update translations for liveusb-creator_completed

2015-11-03 Thread translation
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 

[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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 

[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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

2015-11-03 Thread translation
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] [translation/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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] [tor/master] Fix filename endings in HACKING. Patch from "ckomlo", ticket #17515.

2015-11-03 Thread nickm
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] [webwml/master] Bug 17445: State Windows 10 support explicitly

2015-11-03 Thread sebastian
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

2015-11-03 Thread translation
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 

[tor-commits] [torspec/master] Rewrite the existing PT spec to be not Tor specific.

2015-11-03 Thread nickm
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 

[tor-commits] [gettor/master] Merge branch 'develop' of ssh://git-rw.torproject.org/user/ilv/gettor

2015-11-03 Thread ilv
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] Send mirrors option

2015-11-03 Thread ilv
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 

[tor-commits] [gettor/master] Debugging improvements

2015-11-03 Thread ilv
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!
-

[tor-commits] [gettor/master] Improvements on Twitter channel

2015-11-03 Thread ilv
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 

[tor-commits] [gettor/master] Minor correction to #17211

2015-11-03 Thread ilv
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 'master' of ssh://git-rw.torproject.org/gettor

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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] Added option to get links only, and fixed format according to current template for links file.

2015-11-03 Thread ilv
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] Merge branch 'develop'

2015-11-03 Thread ilv
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.

2015-11-03 Thread ilv
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=download
-   ASC signature (32-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjTXVONkhvZ1VRY2c=download
-   Package SHA256 checksum (32-bit): 
03a4ecab9ffb4b579c9d03a0f800d9bcd4446b49eff21eb3e1db255fa9d9b930,
-   Package (64-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjbXp2MUh5RmxTa28=download
-   ASC signature (64-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjNTVZVnJUTnNCOEk=download
-   Package SHA256 checksum (64-bit): 
03a4ecab9ffb4b579c9d03a0f800d9bcd4446b49eff21eb3e1db255fa9d9b930
+fa = 
https://docs.google.com/uc?id=0B76pDbk5No54eDRRUXdHcGIxMUU=download$https://docs.google.com/uc?id=0B76pDbk5No54amdUbGZNdnM5bjA=download$40ade5f6883a70af77de37da8a50bd72b533b1b65d198a0d8f02c2d5f4791355,
+   
https://docs.google.com/uc?id=0B76pDbk5No54ZmFjRUs3VG9nZDA=download$https://docs.google.com/uc?id=0B76pDbk5No54TTBMYmwtdFVROEk=download$569aaeb695045a9263775d108a9fbe04899d3ef70aa27906a58245d713f4
+en = 
https://docs.google.com/uc?id=0B76pDbk5No54bm1DdFZqRGZ6aFk=download$https://docs.google.com/uc?id=0B76pDbk5No54a2tKbXExaXpBdm8=download$0e94498cb83a07895bf8becf76d3c3b071d8cfadd50048971f701819f80a56aa,
+   
https://docs.google.com/uc?id=0B76pDbk5No54SnBWZ3FYWDFZbnc=download$https://docs.google.com/uc?id=0B76pDbk5No54NldQSWpUODBNUW8=download$4b7fed9499915fd95497ccf13af00f6b5226d7066d24f6396d00666a5b8c1ad3
+zh = 
https://docs.google.com/uc?id=0B76pDbk5No54VmV6TkcxVDl0eHc=download$https://docs.google.com/uc?id=0B76pDbk5No54Ymo5NFpuUmVjd1k=download$f1d5a0084d06e838a5acfe4352995c40c54ac4488006acb014ab7cf81360f62e,
+   
https://docs.google.com/uc?id=0B76pDbk5No54R1lRbTM3bzJrQzQ=download$https://docs.google.com/uc?id=0B76pDbk5No54ZjJYTlRJS0ZoVjQ=download$d35a2f1dca74428f167bea96cc49c0c7351274904fafc30194592aa74201376a
+tr = 
https://docs.google.com/uc?id=0B76pDbk5No54STZDTXYzUl9IbFU=download$https://docs.google.com/uc?id=0B76pDbk5No54ZHNIWV84RXZ5ZjQ=download$44bdcd53aaefc894f8556258b42fadc5fd10458db01f568734a47a9f6d070e5c,
+   
https://docs.google.com/uc?id=0B76pDbk5No54MXFjaU9NbkVqS0k=download$https://docs.google.com/uc?id=0B76pDbk5No54VGhOaU1jLWlTWVk=download$79270b1cdcf41a251eb980281c29c2465ac06f299e0bacb9fd0190f87338d167

 
 [windows]
-en = Package (32/64-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjakM4a21iRlQzQVE=download
-   ASC signature (32/64-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjZy1FLVpTLW9INFU=download
-   Package SHA256 checksum (32/64-bit): 
21e54d964366e8a67f379ed402007f59cb3aebfddbc3a30dacc3ac64171145a6
+zh = 
https://docs.google.com/uc?id=0B76pDbk5No54SndJVTJkZkprLUk=download$https://docs.google.com/uc?id=0B76pDbk5No54dHduYlFHRkJrczg=download$54443a66e16c8ffe02d10fe00e3bec50800eb4a93e2360a7d1b8a10f3bb77c0e
+fa = 
https://docs.google.com/uc?id=0B76pDbk5No54OFlHX1Rybmc4b3c=download$https://docs.google.com/uc?id=0B76pDbk5No54Y19UdnMyVE5jMUk=download$15f06a3ad256042dde071690f4d4e53a5952fe9260592d5546cabda779eb8a47
+en = 
https://docs.google.com/uc?id=0B76pDbk5No54OEQ1aG5DNXY2N00=download$https://docs.google.com/uc?id=0B76pDbk5No54YWp2alZKQ1hkNWs=download$443b38f4aa1194125ca3c79157272d5c64006928c9128127788c1cdefa642d85
+tr = 
https://docs.google.com/uc?id=0B76pDbk5No54cUtBeUt4RmEtWVk=download$https://docs.google.com/uc?id=0B76pDbk5No54V1ZOcUotdjh2T2s=download$eff7885186fe3e5fc3bcc404d671175d279707d8e1e05d203a12a176aa4ea189
 
 [osx]
-en = Package (32-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjenRobzJtcWw0UnM=download
-   ASC signature (32-bit): 
https://docs.google.com/uc?id=0B7humfJYX-LjZ0R4Z0I1ZlBRUHc=download
-   Package SHA256 checksum (32-bit): 
dd86727270ba236d85673194782b4cc9860bd886e4abdf2dfc6d716dabddb68f
-
+en = 
https://docs.google.com/uc?id=0B76pDbk5No54Z0oxUnFuaHBpX00=download$https://docs.google.com/uc?id=0B76pDbk5No54ZXZqSFp5dngwN0E=download$f6a38fa3a72c9c60a457be6412f79e1efacd7ff5d993c48791550cc285ff164a
+zh = 
https://docs.google.com/uc?id=0B76pDbk5No54cnhFUXFBaXJWUnM=download$https://docs.google.com/uc?id=0B76pDbk5No54U0h5UUp3QVI4eFE=download$eda5b7377b1a24fc918d9b16d4400a8b64975e57649623aea1e5e8b6b4f27dc6
+fa = 

[tor-commits] [gettor/master] Minor changes to drive script

2015-11-03 Thread ilv
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,

[tor-commits] [gettor/master] Better format for sending the links

2015-11-03 Thread ilv
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)
+

[tor-commits] [gettor/master] Minor changes

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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] deleted unused files

2015-11-03 Thread ilv
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] Replaced by process_chat.py

2015-11-03 Thread ilv
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] Split words on whitespace

2015-11-03 Thread ilv
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.

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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/develop] Change related to #17211

2015-11-03 Thread ilv
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] Added direct link to downloads section in http(s) mirrors

2015-11-03 Thread ilv
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.

2015-11-03 Thread ilv
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 

[tor-commits] [gettor/master] Debugging improvements

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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

2015-11-03 Thread ilv
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 

[tor-commits] [gettor/develop] Minor correction to #17211

2015-11-03 Thread ilv
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] [translation/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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

2015-11-03 Thread translation
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/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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

2015-11-03 Thread translation
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/tails-greeter] Update translations for tails-greeter

2015-11-03 Thread translation
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] [translation/tails-greeter_completed] Update translations for tails-greeter_completed

2015-11-03 Thread translation
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/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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

2015-11-03 Thread translation
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/bridgedb_completed] Update translations for bridgedb_completed

2015-11-03 Thread translation
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=bridgedb-reported,msgid=isis,sysrqb=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=bridgedb-reported,msgid=isis,sysrqb=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 мосты 

[tor-commits] [translation/bridgedb] Update translations for bridgedb

2015-11-03 Thread translation
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=bridgedb-reported,msgid=isis,sysrqb=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=bridgedb-reported,msgid=isis,sysrqb=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"
+
+#: 

[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator

2015-11-03 Thread translation
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