[tor-commits] [translation/tpo-web_completed] https://gitweb.torproject.org/translation.git/commit/?h=tpo-web_completed

2020-11-17 Thread translation
commit af8c644668399e9bc245ed141e283358abd63bc5
Author: Translation commit bot 
Date:   Wed Nov 18 07:48:59 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tpo-web_completed
---
 contents+hu.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contents+hu.po b/contents+hu.po
index dc40356e9f..d2399b3e35 100644
--- a/contents+hu.po
+++ b/contents+hu.po
@@ -1636,4 +1636,4 @@ msgstr "Használjon maszkot, használjon Tor-t."
 
 #: lego/templates/banner.html:20 templates/banner.html:20
 msgid "Resist the surveillance pandemic."
-msgstr ""
+msgstr "Álljon ellen a lehallgatási pandémiának."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot

2020-11-17 Thread translation
commit b03244a6c2d05b90ee8bf319bb3476744c8b37ec
Author: Translation commit bot 
Date:   Wed Nov 18 01:47:02 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
 contents+ja.po | 20 +---
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/contents+ja.po b/contents+ja.po
index 967c6e89b4..f19f1e7872 100644
--- a/contents+ja.po
+++ b/contents+ja.po
@@ -3,7 +3,7 @@
 # 石上敬祐 , 2019
 # erinm, 2019
 # ue zaeco, 2019
-# Songbo Gong , 2019
+# Songbo Gong, 2019
 # Tokumei Nanashi, 2019
 # maruyuki , 2019
 # Emma Peel, 2020
@@ -15,6 +15,7 @@
 # Gus, 2020
 # 323484, 2020
 # Kaede, 2020
+# タカハシ, 2020
 # 
 msgid ""
 msgstr ""
@@ -22,7 +23,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-04-12 08:00+CET\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Kaede, 2020\n"
+"Last-Translator: タカハシ, 2020\n"
 "Language-Team: Japanese (https://www.transifex.com/otf/teams/1519/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -627,13 +628,14 @@ msgid ""
 "connect to the Tor network and no other solutions have worked, check the "
 "checkbox."
 msgstr ""
+"接続が検閲されていることがわかっているå 
´åˆã€ã¾ãŸã¯Torネットワークへの接続を試みて失敗し、他の解決策がうまくいかなかったå
 ´åˆã¯ã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã‚’入れてください。"
 
 #: https//tb-manual.torproject.org/running-tor-browser/
 #: (content/running-tor-browser/contents+en.lrtopic.body)
 msgid ""
 "This will display the [Circumvention](../circumvention) section to configure"
 " a pluggable transport."
-msgstr ""
+msgstr 
"これは、プラガブル・トランスポートを設定するための[Circumvention](./circumvention)セクションを表示します。"
 
 #: https//tb-manual.torproject.org/running-tor-browser/
 #: (content/running-tor-browser/contents+en.lrtopic.body)
@@ -648,11 +650,13 @@ msgid ""
 "checkbox because the same settings will be used for other browsers on your "
 "system."
 msgstr ""
+"次の画面では、接続の際にプロキシを使用するかどうかを尋ねられます。\n"
+"ほとんどの場合、この操作は必要ありません。システム
上の他のブラウザにも同じ設定が使用されるため、通常、チェックボックスにチェックすべきかどうかはわかります。"
 
 #: https//tb-manual.torproject.org/running-tor-browser/
 #: (content/running-tor-browser/contents+en.lrtopic.body)
 msgid "If possible, ask your network administrator for guidance."
-msgstr ""
+msgstr "可能であれば、ネットワーク管理者
に指示を求めてください。"
 
 #: https//tb-manual.torproject.org/running-tor-browser/
 #: (content/running-tor-browser/contents+en.lrtopic.body)
@@ -754,6 +758,8 @@ msgid ""
 "of using Tor. meek-azure makes it look like you are using a Microsoft web "
 "site."
 msgstr ""
+"meek 
トランスポートを使うと、Torを使わずにメジャーなサイトを見ているように見せかけることができます。meek-"
+"azureを使うと、Microsoftのサイトを使っているように見えます。"
 
 #: https//tb-manual.torproject.org/circumvention/
 #: (content/circumvention/contents+en.lrtopic.body)
@@ -794,7 +800,7 @@ msgstr "使用可能なトランスポートの種類"
 msgid ""
 "To use a pluggable transport, click \"Configure\" when starting Tor Browser "
 "for the first time."
-msgstr ""
+msgstr "plugaable transportを使用するには、Tor 
Browserを初めて起動するときに「構成」をクリックします。"
 
 #: https//tb-manual.torproject.org/circumvention/
 #: (content/circumvention/contents+en.lrtopic.body)
@@ -859,7 +865,7 @@ msgstr ""
 msgid ""
 "If you are trying to circumvent a blocked connection for the first time, you"
 " should try the different transports: obfs4, snowflake, or meek-azure."
-msgstr ""
+msgstr "接続のブロックを初めて回避しようとしているå 
´åˆã¯ã€obfs4、snowflake、meek-azureを試してください。"
 
 #: https//tb-manual.torproject.org/circumvention/
 #: (content/circumvention/contents+en.lrtopic.body)
@@ -2434,7 +2440,7 @@ msgstr ""
 msgid ""
 "With the \"Select a bridge\" option, you will have two options: \"obfs4\" "
 "and \"meek-azure\"."
-msgstr ""
+msgstr "ブリッジを選択オプションを使うå 
´åˆã€äºŒã¤ã®é¸æŠžè‚¢ãŒã‚ります。「obfs4」と「meek-azure」です。"
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit fe635cbc53bff3944a3de427fc80247909fec485
Author: Translation commit bot 
Date:   Wed Nov 18 01:46:41 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 ja.po | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ja.po b/ja.po
index 03c025bef6..e2440ec191 100644
--- a/ja.po
+++ b/ja.po
@@ -11,9 +11,9 @@
 # Arbert Sporocyst , 2018
 # Emma Peel, 2019
 # sunpower92 , 2014
-# タカハシ , 2013-2014
+# タカハシ, 2013-2014
 # h345u37g3 h345u37g3, 2019
-# タカハシ , 2015,2020
+# タカハシ, 2015,2020
 # Ippei Shinozaki , 2019
 # Ito Takeshi, 2020
 # Jon Doe , 2020
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-18 01:15+\n"
-"Last-Translator: タカハシ \n"
+"PO-Revision-Date: 2020-11-18 01:29+\n"
+"Last-Translator: タカハシ\n"
 "Language-Team: Japanese 
(http://www.transifex.com/otf/torproject/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit db0fa488c14851c3959c43496a7fe1ced5053ab1
Author: Translation commit bot 
Date:   Wed Nov 18 01:45:53 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 ja.po | 36 ++--
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/ja.po b/ja.po
index a9e9de086e..94e753fa36 100644
--- a/ja.po
+++ b/ja.po
@@ -11,9 +11,9 @@
 # Arbert Sporocyst , 2018
 # Emma Peel, 2019
 # sunpower92 , 2014
-# タカハシ , 2013-2014
+# タカハシ, 2013-2014
 # h345u37g3 h345u37g3, 2019
-# タカハシ , 2015,2020
+# タカハシ, 2015,2020
 # Ippei Shinozaki , 2019
 # Ito Takeshi, 2020
 # Jon Doe , 2020
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-18 01:15+\n"
-"Last-Translator: タカハシ \n"
+"PO-Revision-Date: 2020-11-18 01:29+\n"
+"Last-Translator: タカハシ\n"
 "Language-Team: Japanese 
(http://www.transifex.com/otf/torproject/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -882,7 +882,7 @@ msgid ""
 "There was a problem executing `%(cmd)s`.\n"
 "%(out)s\n"
 "%(err)s"
-msgstr "`%(cmd)s` 
の実行時に問題が派生しました。\n%(out)s\n%(err)s"
+msgstr "`%(cmd)s` 
の実行時に問題が発生しました。\n%(out)s\n%(err)s"
 
 #: 
config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/source.py:60
 #, python-format
@@ -904,7 +904,7 @@ msgstr "'%(filename)s'を飛ばします"
 msgid ""
 "There was a problem executing `%(cmd)s`.%(out)s\n"
 "%(err)s"
-msgstr ""
+msgstr 
"`%(cmd)s`.%(out)sの実行時に問題が発生しました。\n%(err)s"
 
 #: 
config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/utils.py:134
 msgid "Could not open device for writing."
@@ -946,7 +946,7 @@ msgid ""
 "A {size} persistent volume will be created on the {vendor} {model} "
 "device. Data on this volume will be stored in an encrypted form protected by"
 " a passphrase."
-msgstr ""
+msgstr "{size}の永続的ボリュームは{vendor} 
{model}のデバイス上に作成されます。このボリューム
上のデータはパスフレーズによって保護された、暗号化されたé
 ˜åŸŸã«ä¿å­˜ã•ã‚Œã¾ã™ã€‚"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:105
 msgid "Create"
@@ -1032,7 +1032,7 @@ msgstr "永続的ボリューム
で保存されるファイルを明示する"
 msgid ""
 "The selected files will be stored in the encrypted partition {partition} "
 "({size}), on the {vendor} {model} device."
-msgstr ""
+msgstr "選択されたファイルは{vendor} 
{model}のデバイス上の暗号化されたパーティション 
{partition} ({size})に保存されます。"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:98
 msgid "Save"
@@ -1059,7 +1059,7 @@ msgstr 
"あなたの永続データが削除されます。"
 msgid ""
 "The persistent volume {partition} ({size}), on the {vendor} {model} "
 "device, will be deleted."
-msgstr ""
+msgstr "{vendor} {model}のデバイス上の永続的ボリューム 
{partition} ({size}) は削除されます。"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:64
 msgid "Delete"
@@ -1123,7 +1123,7 @@ msgstr "Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:150
 msgid "Thunderbird emails, feeds, and OpenPGP keys"
-msgstr ""
+msgstr "Thunderbird のメール、フィード、設定"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:163
 msgid "GnuPG"
@@ -1131,7 +1131,7 @@ msgstr "GnuPG"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:165
 msgid "OpenPGP keys outside of Thunderbird"
-msgstr ""
+msgstr "Thunderbirdの外部のOpenPGPキー"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:178
 msgid "Bitcoin Client"
@@ -1223,7 +1223,7 @@ msgstr "Tails は現在 USB または SDIO 
以外のデバイスで動作して
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:449
 msgid "Device is optical."
-msgstr ""
+msgstr "デバイスは光学機器です。"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:456
 msgid "Device was not created using a USB image or Tails Installer."
@@ -1236,7 +1236,7 @@ msgstr "永続ウィザード -終了"
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:701
 msgid ""
 "Any changes you have made will only take effect after restarting Tails."
-msgstr ""
+msgstr 

[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit 64f17ffccffd1175e6b3a02fdc01b8f39236
Author: Translation commit bot 
Date:   Wed Nov 18 01:16:26 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 ja.po | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ja.po b/ja.po
index d461c72907..03c025bef6 100644
--- a/ja.po
+++ b/ja.po
@@ -13,7 +13,7 @@
 # sunpower92 , 2014
 # タカハシ , 2013-2014
 # h345u37g3 h345u37g3, 2019
-# タカハシ , 2015
+# タカハシ , 2015,2020
 # Ippei Shinozaki , 2019
 # Ito Takeshi, 2020
 # Jon Doe , 2020
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-18 01:15+\n"
+"Last-Translator: タカハシ \n"
 "Language-Team: Japanese 
(http://www.transifex.com/otf/torproject/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit df7aa3d6b681c72ffa213f49ef4e3cac9707c098
Author: Translation commit bot 
Date:   Wed Nov 18 01:15:50 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 ja.po | 24 
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/ja.po b/ja.po
index e79699ae59..a9e9de086e 100644
--- a/ja.po
+++ b/ja.po
@@ -13,7 +13,7 @@
 # sunpower92 , 2014
 # タカハシ , 2013-2014
 # h345u37g3 h345u37g3, 2019
-# タカハシ , 2015
+# タカハシ , 2015,2020
 # Ippei Shinozaki , 2019
 # Ito Takeshi, 2020
 # Jon Doe , 2020
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-18 01:15+\n"
+"Last-Translator: タカハシ \n"
 "Language-Team: Japanese 
(http://www.transifex.com/otf/torproject/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -179,7 +179,7 @@ msgstr "このシステム
は十分なメモリがないので利用できませ
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:338
 #, perl-brace-format
 msgid "No explanation available for reason '{reason}'."
-msgstr ""
+msgstr "理由「{reason}」のため説明が利用できません。"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:359
 msgid "The system is up-to-date"
@@ -194,14 +194,14 @@ msgstr "Tails 
のこのバージョンは旧く、セキュリティ上の問題
 msgid ""
 "The available incremental upgrade requires {space_needed} of free space on "
 "Tails system partition,  but only {free_space} is available."
-msgstr ""
+msgstr "利用できる逐次的アップグレードは Tails のシステム
パーティション上に {space_needed} の空き容量が必要ですが、 
{free_space}  しか空き容量がありません。"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:407
 #, perl-brace-format
 msgid ""
 "The available incremental upgrade requires {memory_needed} of free memory, "
 "but only {free_memory} is available."
-msgstr ""
+msgstr "利用できる逐次的アップグレードは {memory_needed} 
のメモリ空き容量が必要ですが、  {free_memory} 
しかメモリ空き容量がありません。"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:426
 msgid ""
@@ -226,7 +226,7 @@ msgid ""
 "Download size: {size}\n"
 "\n"
 "Do you want to upgrade now?"
-msgstr ""
+msgstr "{name} {version} 
にアップグレードするべきです。\n\nこの新バージョンについての詳細は、{details_url}
 を開いてくだ
さい。\n\nアップグレード中は開いているアプリケーションをすべて閉じることが推奨されます。\nアップグレードのダウンロードには、数分から2、3時間程度の長い時間がかかるå
 ´åˆãŒã‚ります。\n\nダウンロードサイズ: 
{size}\n\n今すぐアップグレードしますか?"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:451
 msgid "Upgrade available"
@@ -250,7 +250,7 @@ msgid ""
 "It is not possible to automatically upgrade your device to this new version: 
{explanation}.\n"
 "\n"
 "To learn how to do a manual upgrade, go to 
https://tails.boum.org/doc/upgrade/#manual;
-msgstr ""
+msgstr " {name} {version}に手動でアップグレードする必
要があります。\n\nこの新しいバージョンの詳細については、{details_url}にアクセスしてくã
 ã•ã„\n\n{explanation}  
により、デバイスをこの新しいバージョンに自動的にアップグレードすることはできません。\n\n手動アップグレードの方法については、https://tails.boum.org/doc/upgrade/#manual
 をご覧ください。"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:471
 msgid "New version available"
@@ -283,7 +283,7 @@ msgstr 
"アップグレードのダウンロード中にエラー"
 msgid ""
 "Output file '{output_file}' does not exist, but tails-iuk-get-target-file "
 "did not complain. Please report a bug."
-msgstr ""
+msgstr "出力ファイル 「{output_file}」 は存在しませんが、 
tails-iuk-get-target-file はエラーを出しませんでした。バグをå 
±å‘Šã—てください。"
 
 #: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:651
 msgid "Error while creating temporary downloading directory"
@@ -541,7 +541,7 @@ msgstr 
"以下のコマンドの実行に問題がありました: `%(command)s`
 msgid ""
 "Not enough free space on device.\n"
 "%(iso_size)dMB ISO + %(overlay_size)dMB overlay > %(free_space)dMB free space"
-msgstr ""
+msgstr "デバイス上に十分な空きé 
˜åŸŸãŒã‚りません。\n%(iso_size)dMB ISO + %(overlay_size)dMB 
オーバーレイ> %(free_space)dMB 空き容量"
 
 #: 

[tor-commits] [tpo/master] Add new Tor Browser version 10.0.5 (Desktop)

2020-11-17 Thread sysrqb
commit c2d152959a4f04535cd6c308d727a0608468a0ce
Author: Matthew Finkel 
Date:   Tue Nov 17 22:59:00 2020 +

Add new Tor Browser version 10.0.5 (Desktop)
---
 content/projects/torbrowser/RecommendedTBBVersions/contents.lr | 4 
 databags/versions.ini  | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/content/projects/torbrowser/RecommendedTBBVersions/contents.lr 
b/content/projects/torbrowser/RecommendedTBBVersions/contents.lr
index 9188c01a..110473bd 100644
--- a/content/projects/torbrowser/RecommendedTBBVersions/contents.lr
+++ b/content/projects/torbrowser/RecommendedTBBVersions/contents.lr
@@ -13,6 +13,10 @@ body:
 "10.0.4-MacOS",
 "10.0.4-Linux",
 "10.0.4-Windows",
+"10.0.5",
+"10.0.5-MacOS",
+"10.0.5-Linux",
+"10.0.5-Windows",
 "10.5a2",
 "10.5a2-MacOS",
 "10.5a2-Linux",
diff --git a/databags/versions.ini b/databags/versions.ini
index 31cc085f..df96933f 100644
--- a/databags/versions.ini
+++ b/databags/versions.ini
@@ -1,6 +1,6 @@
 [torbrowser-stable]
-version = 10.0.4
-win32 = 0.4.4.5
+version = 10.0.5
+win32 = 0.4.4.6
 
 [torbrowser-android-stable]
 version = 10.0.4

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot

2020-11-17 Thread translation
commit 77d8b48037cdc37c9bdce35177724b32ef5c6a7e
Author: Translation commit bot 
Date:   Tue Nov 17 22:15:10 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
---
 contents+ka.po | 56 
 1 file changed, 52 insertions(+), 4 deletions(-)

diff --git a/contents+ka.po b/contents+ka.po
index 85abb43046..9dfad163ac 100644
--- a/contents+ka.po
+++ b/contents+ka.po
@@ -5354,11 +5354,14 @@ msgid ""
 
"Settings](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/2;
 ".Tor_Browser_Desktop_-_Security_Settings.pdf)"
 msgstr ""
+"* [სამომხმარებლო კვლევა: უსაფრ
თხოების "
+"პარამეტრ
ები](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/2;
+".Tor_Browser_Desktop_-_Security_Settings.pdf)"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
 msgid "* User Research: New Identity"
-msgstr ""
+msgstr "* სამომხმარებლო კვლევა: 
ახალი ვინაობა"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
@@ -5367,6 +5370,9 @@ msgid ""
 
"Discovery](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/1;
 "._User_Needs_Discovery_-_Tor_Browser_Desktop.pdf)"
 msgstr ""
+"* [სამომხმარებლო საჭირ
ოებების "
+"დადგენა](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/1;
+"._User_Needs_Discovery_-_Tor_Browser_Desktop.pdf)"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
@@ -5380,11 +5386,14 @@ msgid ""
 
"Onboarding](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/3;
 "._Tor_Browser_Android_-_download__launch__browse.pdf)"
 msgstr ""
+"* [სამომხმარებლო კვლევა: 
გამოყენების "
+"დაწყება](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/3;
+"._Tor_Browser_Android_-_download__launch__browse.pdf)"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
 msgid "* User Research: Security Settings"
-msgstr ""
+msgstr "* სამომხმარებლო კვლევა: 
უსაფრთხოების პარამეტრები"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
@@ -5394,7 +5403,7 @@ msgstr "### Onion-მომსახურებები"
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
 msgid "* User Research: Onion Security Indicator"
-msgstr ""
+msgstr "* სამომხმარებლო კვლევა: 
Onion-ის უსაფრთხოების 
მაჩვენებელი"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
@@ -5409,11 +5418,15 @@ msgid ""
 "please [get in touch.](https://lists.torproject.org/cgi-;
 "bin/mailman/listinfo/ux)"
 msgstr ""
+"ჩვენ ერთგულნი ვართ 
გახსნილობისა და გამჭვირ
ვალობის, შესაბამისად, 
შეგიძლიათ "
+"იხილოთ ჩვენ მიერ ჩატარებული 
კვლევა, რომელიც მოიცავს 
გლობალურ სამხრეთს. თუ "
+"გსურთ ჩვენთან ერთად ატაროთ 
კვლევები, გთხოვთ "
+"[გამოგვეხმაურ
ოთ.](https://lists.torproject.org/cgi-bin/mailman/listinfo/ux)"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
 msgid "| Project  | Methodology | Locations | Dates | Reporting |"
-msgstr ""
+msgstr "| პროექტი | მეთოდოლოგია | 
მდებარეობა | თარიღი | ანგარიში 
|"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)
@@ -5427,6 +5440,9 @@ msgid ""
 
"([.pdf](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2018/1.India_User_testing_Tor_Launcher_Test.pdf))"
 " | Mumbai(IN) | Q118 | .pdf |"
 msgstr ""
+"| Tor-გამშვები | სარგებლიანობის 
შემოწმება "

[tor-commits] [translation/torbutton-torbuttonproperties_completed] https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties_completed

2020-11-17 Thread translation
commit d58001c41b4a36bc3282661e4a5738cbaf886468
Author: Translation commit bot 
Date:   Tue Nov 17 21:47:45 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties_completed
---
 sv-SE/torbutton.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sv-SE/torbutton.properties b/sv-SE/torbutton.properties
index be3d782422..5bb683763b 100644
--- a/sv-SE/torbutton.properties
+++ b/sv-SE/torbutton.properties
@@ -36,7 +36,7 @@ torbutton.popup.confirm_newnym = Tor Browser kommer att 
stänga alla fönster oc
 torbutton.maximize_warning = Att maximera Tor Browser kan ge webbplatser 
möjlighet att upptäcka din skärmstorlek, vilket kan användas för att 
spåra dig. Vi rekommenderar att du lämnar Tor Browser fönstret i dess 
ursprungliga storlek.
 
 # Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Denna webbplats (%S) försökte komma åt HTML5-bilddata på 
ett kanvas, som skulle kunna användas för att identifiera just din 
dator.\n\nSka Tor Browser tillåta den här webbplatsen att använda 
HTML5-bilddata på kanvas?
+canvas.siteprompt=Denna webbplats (%S) försökte extrahera 
HTML5-kanvasbilddata, som skulle kunna användas för att identifiera just din 
dator.\n\nSka Tor Browser tillåta denna webbplats att extrahera 
HTML5-kanvasbilddata?
 canvas.notNow=Inte just nu
 canvas.notNowAccessKey=N
 canvas.allow=Tillåt i framtiden

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbutton-torbuttonproperties] https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties

2020-11-17 Thread translation
commit a660809ac6b7378f57aab9fd5ffbd57080ea1bb1
Author: Translation commit bot 
Date:   Tue Nov 17 21:47:43 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties
---
 sv-SE/torbutton.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sv-SE/torbutton.properties b/sv-SE/torbutton.properties
index 8ad3affd9a..dc1ac76a23 100644
--- a/sv-SE/torbutton.properties
+++ b/sv-SE/torbutton.properties
@@ -36,7 +36,7 @@ torbutton.popup.confirm_newnym = Tor Browser kommer att 
stänga alla fönster oc
 torbutton.maximize_warning = Att maximera Tor Browser kan ge webbplatser 
möjlighet att upptäcka din skärmstorlek, vilket kan användas för att 
spåra dig. Vi rekommenderar att du lämnar Tor Browser fönstret i dess 
ursprungliga storlek.
 
 # Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Denna webbplats (%S) försökte komma åt HTML5-bilddata på 
ett kanvas, som skulle kunna användas för att identifiera just din 
dator.\n\nSka Tor Browser tillåta den här webbplatsen att använda 
HTML5-bilddata på kanvas?
+canvas.siteprompt=Denna webbplats (%S) försökte extrahera 
HTML5-kanvasbilddata, som skulle kunna användas för att identifiera just din 
dator.\n\nSka Tor Browser tillåta denna webbplats att extrahera 
HTML5-kanvasbilddata?
 canvas.notNow=Inte just nu
 canvas.notNowAccessKey=N
 canvas.allow=Tillåt i framtiden

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit 65c2f38931ac3a3598ba4a2ec5107a1b7b561b55
Author: Translation commit bot 
Date:   Tue Nov 17 21:46:47 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 sv.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sv.po b/sv.po
index b713dfcc08..429d55538e 100644
--- a/sv.po
+++ b/sv.po
@@ -25,8 +25,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 21:29+\n"
+"Last-Translator: Jonatan Nyberg \n"
 "Language-Team: Swedish 
(http://www.transifex.com/otf/torproject/language/sv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit a7913127429b166d352a4fd8ce8f2f923cd4d052
Author: Translation commit bot 
Date:   Tue Nov 17 21:45:58 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 sv.po | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/sv.po b/sv.po
index 44a37e9f5b..c0bea22461 100644
--- a/sv.po
+++ b/sv.po
@@ -25,8 +25,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 21:29+\n"
+"Last-Translator: Jonatan Nyberg \n"
 "Language-Team: Swedish 
(http://www.transifex.com/otf/torproject/language/sv/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1114,7 +1114,7 @@ msgstr "Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:150
 msgid "Thunderbird emails, feeds, and OpenPGP keys"
-msgstr ""
+msgstr "Thunderbird-e-post, flöden och OpenPGP-nycklar"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:163
 msgid "GnuPG"
@@ -1122,7 +1122,7 @@ msgstr "GnuPG"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:165
 msgid "OpenPGP keys outside of Thunderbird"
-msgstr ""
+msgstr "OpenPGP-nycklar utanför Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:178
 msgid "Bitcoin Client"
@@ -1625,22 +1625,22 @@ msgstr "Mer information"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:40
 msgid "You need to migrate your OpenPGP keys"
-msgstr ""
+msgstr "Du måste migrera dina OpenPGP-nycklar"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:42
 msgid ""
 "Thunderbird 78 now replaces the Enigmail extension with built-"
 "in support for OpenPGP encryption. To continue using your OpenPGP keys in "
 "Thunderbird, follow our migration instructions."
-msgstr ""
+msgstr "Thunderbird 78 ersätter nu tillägget Enigmail med 
inbyggt stöd för OpenPGP-kryptering. För att fortsätta använda dina 
OpenPGP-nycklar i Thunderbird, följ våra migreringsinstruktioner."
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:44
 msgid "_Open Migration Instructions"
-msgstr ""
+msgstr "_Öppna migreringsinstruktioner"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:45
 msgid "_Migrate Later"
-msgstr ""
+msgstr "_Migrera senare"
 
 #: config/chroot_local-includes/usr/local/bin/tor-browser:46
 msgid "Tor is not ready"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot

2020-11-17 Thread translation
commit 2a2b2ad82acc8643e4ec38206a72995ec53c199d
Author: Translation commit bot 
Date:   Tue Nov 17 21:45:18 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
---
 contents+ka.po | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/contents+ka.po b/contents+ka.po
index c60f947cff..85abb43046 100644
--- a/contents+ka.po
+++ b/contents+ka.po
@@ -5343,6 +5343,9 @@ msgid ""
 
"Onboarding](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/4;
 "._Tor_Browser_Desktop_-_download__launch__browse.pdf)"
 msgstr ""
+"* [სამომხმარებლო კვლევა: 
გამოყენების "
+"დაწყება](https://dip.torproject.org/torproject/ux/research/blob/master/scripts%20and%20activities/2019/4;
+"._Tor_Browser_Desktop_-_download__launch__browse.pdf)"
 
 #: https//community.torproject.org/user-research/open/
 #: (content/user-research/open/contents+en.lrpage.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit 15f9fe8e91912e791e393f1bd56a0c41be875484
Author: Translation commit bot 
Date:   Tue Nov 17 21:16:40 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 ka.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ka.po b/ka.po
index c98afef9e5..43fe4a3407 100644
--- a/ka.po
+++ b/ka.po
@@ -11,8 +11,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 21:15+\n"
+"Last-Translator: Georgianization\n"
 "Language-Team: Georgian 
(http://www.transifex.com/otf/torproject/language/ka/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit 7de6e4416183eef97c9cdb92d88f809ba8bbad07
Author: Translation commit bot 
Date:   Tue Nov 17 21:15:47 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 ka.po | 16 
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/ka.po b/ka.po
index 022b40d372..81219e2d68 100644
--- a/ka.po
+++ b/ka.po
@@ -11,8 +11,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 21:15+\n"
+"Last-Translator: Georgianization\n"
 "Language-Team: Georgian 
(http://www.transifex.com/otf/torproject/language/ka/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1100,7 +1100,7 @@ msgstr "Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:150
 msgid "Thunderbird emails, feeds, and OpenPGP keys"
-msgstr ""
+msgstr "Thunderbird-ის ელფოსტები, არხები 
და OpenPGP-გასაღებები"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:163
 msgid "GnuPG"
@@ -1108,7 +1108,7 @@ msgstr "GnuPG"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:165
 msgid "OpenPGP keys outside of Thunderbird"
-msgstr ""
+msgstr "OpenPGP-გასაღებები Thunderbird-ის გარ
ეთ"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:178
 msgid "Bitcoin Client"
@@ -1611,22 +1611,22 @@ msgstr "იხილეთ ვრცლად"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:40
 msgid "You need to migrate your OpenPGP keys"
-msgstr ""
+msgstr "დაგჭირდებათ თქვენი 
OpenPGP-გასაღებების გადატანა"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:42
 msgid ""
 "Thunderbird 78 now replaces the Enigmail extension with built-"
 "in support for OpenPGP encryption. To continue using your OpenPGP keys in "
 "Thunderbird, follow our migration instructions."
-msgstr ""
+msgstr "Thunderbird 78 ახლა უკვე 
ანაცვლებს გაფართოებას Enigmail 
ჩაშენებული  OpenPGP- დაშიფვრის 
მხარდაჭერით. თუ გსურთ განაგრ
ძოთ OpenPGP-გასაღებების 
გამოყენება Thunderbird-ში, 
მიჰყევით ჩვენს მითითებებს 
გადასატანად."
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:44
 msgid "_Open Migration Instructions"
-msgstr ""
+msgstr "_გადატანის მითითებების 
გახსნა"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:45
 msgid "_Migrate Later"
-msgstr ""
+msgstr "_გადატანა მოგვიანებით"
 
 #: config/chroot_local-includes/usr/local/bin/tor-browser:46
 msgid "Tor is not ready"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [community/master] Add it to htaccess

2020-11-17 Thread gus
commit 2e66f78c44ee4720fea540f8bcf3bce20ac36166
Author: gus 
Date:   Tue Nov 17 15:43:02 2020 -0500

Add it to htaccess
---
 .htaccess | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.htaccess b/.htaccess
index 7db5e94..7da81c3 100644
--- a/.htaccess
+++ b/.htaccess
@@ -9,7 +9,7 @@ RewriteRule ^(en|en-US)$ / [R=302,L]
 RewriteRule ^(en|en-US)/(.*) /$2 [R=302,L]
 
 # Rewrites for languages that have a different mapping in the page than in TBB
-RewriteRule ^(es-ES|es-MX|es-CO|es-AR)(.*) /es$2 [R=302,L]
+RewriteRule ^(es-ES|es-MX|es-CO)(.*) /es$2 [R=302,L]
 
 # we have only one translation for this locales
 RewriteRule ^(bn-BD|bn-IN)(.*) /bn$2 [R=302,L]
@@ -19,4 +19,4 @@ RewriteRule ^ga-IE/(.*) /ga$1 [R=302,L]
 # but don't have a community page
 # You can see them at https://dist.torproject.org/torbrowser/, pick the last 
alpha for the most languages
 # this languages are the translation priority for the community portal!
-RewriteRule 
^(ar|ca|cs|da|de|el|fa|fr|ga|he|hu|id|is|ja|ka|ko|lt|mk|ms|nb-NO|nl|pl|pt-BR|pt-PT|ro|ru|sv-SE|th|tr|vi|zh-CN|zh-TW)(.*)
 /$2 [R=302,L]
+RewriteRule 
^(ar|ca|cs|da|de|el|fa|fr|ga|he|hu|id|is|it|ja|ka|ko|lt|mk|ms|nb-NO|nl|pl|pt-BR|pt-PT|ro|ru|sv-SE|th|tr|vi|zh-CN|zh-TW)(.*)
 /$2 [R=302,L]

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [community/master] Remove ES redirect in htacces file

2020-11-17 Thread gus
commit 21d318e322e15bc41e397d0e4a9eefdb7352c7ac
Author: gus 
Date:   Tue Nov 17 15:30:51 2020 -0500

Remove ES redirect in htacces file
---
 .htaccess | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.htaccess b/.htaccess
index ba7c37a..7db5e94 100644
--- a/.htaccess
+++ b/.htaccess
@@ -19,4 +19,4 @@ RewriteRule ^ga-IE/(.*) /ga$1 [R=302,L]
 # but don't have a community page
 # You can see them at https://dist.torproject.org/torbrowser/, pick the last 
alpha for the most languages
 # this languages are the translation priority for the community portal!
-RewriteRule 
^(ar|ca|cs|da|de|el|es|fa|fr|ga|he|hu|id|is|ja|ka|ko|lt|mk|ms|nb-NO|nl|pl|pt-BR|pt-PT|ro|ru|sv-SE|th|tr|vi|zh-CN|zh-TW)/(.*)
 /$2 [R=302,L]
+RewriteRule 
^(ar|ca|cs|da|de|el|fa|fr|ga|he|hu|id|is|ja|ka|ko|lt|mk|ms|nb-NO|nl|pl|pt-BR|pt-PT|ro|ru|sv-SE|th|tr|vi|zh-CN|zh-TW)(.*)
 /$2 [R=302,L]

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [community/master] Add es_AR locale

2020-11-17 Thread gus
commit b30739334769000121013c87069343e9f3b4d2c3
Author: gus 
Date:   Tue Nov 17 15:02:11 2020 -0500

Add es_AR locale
---
 community.lektorproject   | 6 ++
 configs/i18n.ini  | 2 +-
 databags/alternatives.ini | 6 ++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/community.lektorproject b/community.lektorproject
index e75ff45..1725581 100644
--- a/community.lektorproject
+++ b/community.lektorproject
@@ -9,3 +9,9 @@ name = English (en)
 primary = yes
 url_prefix = /
 locale = en
+
+[alternatives.es-AR]
+name = Español Arg (es-AR)
+primary = yes
+url_prefix = /es-AR/
+locale = es-AR
diff --git a/configs/i18n.ini b/configs/i18n.ini
index 4145dc0..38f6d4b 100644
--- a/configs/i18n.ini
+++ b/configs/i18n.ini
@@ -1,5 +1,5 @@
 content = en
-translations = es,de,fr,it,pt-BR,ru
+translations = es,es-AR,de,fr,it,pt-BR,ru
 i18npath = i18n
 translate_paragraphwise = False
 url_prefix = https://community.torproject.org/
diff --git a/databags/alternatives.ini b/databags/alternatives.ini
index 5ac0263..1bd9fd2 100644
--- a/databags/alternatives.ini
+++ b/databags/alternatives.ini
@@ -3,3 +3,9 @@ direction = text-left
 order = order-last
 url =  /
 language = English (en)
+
+[es-AR]
+direction = text-left
+order = order-last
+url = /es-AR/
+language = Español Arg. (es-AR)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [lego/master] Fix donate localized links

2020-11-17 Thread hiro
commit 460205517611df64805c2555fffc0d7c6004a3cf
Author: hiro 
Date:   Tue Nov 17 19:43:37 2020 +0100

Fix donate localized links
---
 databags/links.ini | 34 +-
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/databags/links.ini b/databags/links.ini
index 8d977e9..28ae3cc 100644
--- a/databags/links.ini
+++ b/databags/links.ini
@@ -17,7 +17,7 @@ press = https://www.torproject.org/press/
 [ca]
 about = https://www.torproject.org/ca/about/history/
 support = https://support.torproject.org/ca
-donate = https://donate.torproject.org/
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/ca/about/jobs/
 contact = https://www.torproject.org/ca/contact/
 press = https://www.torproject.org/ca/press/
@@ -25,7 +25,7 @@ press = https://www.torproject.org/ca/press/
 [de]
 about = https://www.torproject.org/de/about/history/
 support = https://support.torproject.org/de
-donate = https://donate.torproject.org/de
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/de/about/jobs/
 contact = https://www.torproject.org/de/contact/
 press = https://www.torproject.org/de/press/
@@ -33,7 +33,7 @@ press = https://www.torproject.org/de/press/
 [es]
 about = https://www.torproject.org/es/about/history/
 support = https://support.torproject.org/es
-donate = https://donate.torproject.org/es_ES
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/es/about/jobs/
 contact = https://www.torproject.org/es/contact/
 press = https://www.torproject.org/es/press/
@@ -41,7 +41,7 @@ press = https://www.torproject.org/es/press/
 [es-AR]
 about = https://www.torproject.org/es/about/history/
 support = https://support.torproject.org/es
-donate = https://donate.torproject.org/es_AR
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/es/about/jobs/
 contact = https://www.torproject.org/es/contact/
 press = https://www.torproject.org/es/press/
@@ -49,7 +49,7 @@ press = https://www.torproject.org/es/press/
 [fr]
 about = https://www.torproject.org/fr/about/history/
 support = https://support.torproject.org/fr
-donate = https://donate.torproject.org/fr
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/fr/about/jobs/
 contact = https://www.torproject.org/fr/contact/
 press = https://www.torproject.org/fr/press/
@@ -58,7 +58,7 @@ press = https://www.torproject.org/fr/press/
 [ga]
 about = https://www.torproject.org/about/history/
 support = https://support.torproject.org/ga
-donate = https://donate.torproject.org/
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/about/jobs/
 contact = https://www.torproject.org/contact/
 press = https://www.torproject.org/press/
@@ -67,15 +67,15 @@ press = https://www.torproject.org/press/
 [id]
 about = https://www.torproject.org/about/history/
 support = https://support.torproject.org/id
-donate = https://donate.torproject.org/
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/about/jobs/
 contact = https://www.torproject.org/contact/
 press = https://www.torproject.org/press/
 
 [is]
 about = https://www.torproject.org/is/about/history/
-support = https://support.torproject.org/is
-donate = https://donate.torproject.org/is
+support = https://suppo
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/is/about/jobs/
 contact = https://www.torproject.org/is/contact/
 press = https://www.torproject.org/is/press/
@@ -83,7 +83,7 @@ press = https://www.torproject.org/is/press/
 [it]
 about = https://www.torproject.org/it/about/history/
 support = https://support.torproject.org/it
-donate = https://donate.torproject.org/it
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/it/about/jobs/
 contact = https://www.torproject.org/it/contact/
 press = https://www.torproject.org/it/press/
@@ -91,7 +91,7 @@ press = https://www.torproject.org/it/press/
 [ka]
 about = https://www.torproject.org/ka/about/history/
 support = https://support.torproject.org/
-donate = https://donate.torproject.org/ka
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/ka/about/jobs/
 contact = https://www.torproject.org/ka/contact/
 press = https://www.torproject.org/ka/press/
@@ -99,7 +99,7 @@ press = https://www.torproject.org/ka/press/
 [pt-BR]
 about = https://www.torproject.org/pt-BR/about/history/
 support = https://support.torproject.org/pt-BR
-donate = https://donate.torproject.org/pt_BR
+donate = https://donate.torproject.org
 jobs = https://www.torproject.org/pt-BR/about/jobs/
 contact = https://www.torproject.org/pt-BR/contact/
 press = https://www.torproject.org/pt-BR/press/
@@ -107,7 +107,7 @@ press = https://www.torproject.org/pt-BR/press/
 [pt-PT]
 about = https://www.torproject.org/pt-BR/about/history/
 support = https://support.torproject.org/pt-BR
-donate = https://donate.torproject.org/pt_PT
+donate = https://donate.torproject.org
 jobs = 

[tor-commits] [tpo/master] Update TBA screenshot

2020-11-17 Thread gus
commit b76020637c3bb19c58f960b923f4022377ca59ff
Author: antonela 
Date:   Tue Nov 3 09:48:52 2020 -0300

Update TBA screenshot
---
 .../images/tor-browser-mobile-window/png/TBA10.0.png| Bin 0 -> 85818 bytes
 templates/download-android.html |   2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/assets/static/images/tor-browser-mobile-window/png/TBA10.0.png 
b/assets/static/images/tor-browser-mobile-window/png/TBA10.0.png
new file mode 100644
index ..dd50be37
Binary files /dev/null and 
b/assets/static/images/tor-browser-mobile-window/png/TBA10.0.png differ
diff --git a/templates/download-android.html b/templates/download-android.html
index aaa9e03c..57feacf0 100644
--- a/templates/download-android.html
+++ b/templates/download-android.html
@@ -37,7 +37,7 @@
   
 
 
-  
+  
 
 
 https://onionbrowser.com; target="_blank">{{ _('Are you an iOS user? We encourage you 
to try Onion Browser.') }} 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tbmanual-contentspot_completed] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot_completed

2020-11-17 Thread translation
commit 4ea40cfd473f3634fbfbb12f046700d2a22970ce
Author: Translation commit bot 
Date:   Tue Nov 17 17:47:50 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot_completed
---
 contents+it.po | 28 
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/contents+it.po b/contents+it.po
index 7700410f0d..c2c627a781 100644
--- a/contents+it.po
+++ b/contents+it.po
@@ -34,7 +34,7 @@ msgstr ""
 
 #: https//tb-manual.torproject.org/ (content/contents+en.lrshowcase.title)
 msgid "Tor Browser User Manual"
-msgstr "Manuale utente del browser Tor"
+msgstr "Manuale utente del Browser Tor"
 
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -284,7 +284,7 @@ msgid ""
 "relay."
 msgstr ""
 "L'immagine qui sopra rappresenta un utente che visita diversi siti web "
-"utilizzando Tor. I computer verdi nel mezzo rappresentano dei relay nel "
+"utilizzando Tor. I computer verdi nel mezzo rappresentano dei relays nel "
 "network Tor, mentre le tre chiavi rappresentano i livelli di cifratura tra "
 "l'utente e ogni relay."
 
@@ -979,7 +979,7 @@ msgid ""
 "relays."
 msgstr ""
 "La maggior parte dei Pluggable Transports, come obfs4, si basano sull'uso di"
-" \"bridge\" relè (ponti). "
+" \"bridge\" relays (ponti). "
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -988,7 +988,7 @@ msgid ""
 "of “bridge” relays."
 msgstr ""
 "La maggior parte dei [Pluggable Transports](/it/circumvention), come obfs4, "
-"si basano sull'uso di \"bridge\" relè."
+"si basano sull'uso di \"bridge\" relays."
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -997,8 +997,8 @@ msgid ""
 "relays, however, they are not listed publicly, so an adversary cannot "
 "identify them easily."
 msgstr ""
-"Come i normali Tor relè, i bridge sono gestiti da volontari; a differenza "
-"dei normali relè, tuttavia, non sono elencati pubblicamente, quindi un "
+"Come i normali Tor relays, i bridge sono gestiti da volontari; a differenza "
+"dei normali relays, tuttavia, non sono elencati pubblicamente, quindi un "
 "avversario non può identificarli facilmente."
 
 #: https//tb-manual.torproject.org/bridges/
@@ -1010,7 +1010,7 @@ msgid ""
 msgstr ""
 "L'uso di bridge in combinazione con i pluggable transports aiuta a "
 "nascondere il fatto che stai utilizzando Tor, ma può rallentare la "
-"connessione rispetto all'utilizzo dei normali Tor relè."
+"connessione rispetto all'utilizzo dei normali Tor relays."
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -1433,7 +1433,7 @@ msgid ""
 " does not clear any private information or unlink your activity, nor does it"
 " affect your current connections to other websites."
 msgstr ""
-"Questa opzione è utile se il [relè di uscita](/it/about/#how-tor-works) in "
+"Questa opzione è utile se il [relay di uscita](/it/about/#how-tor-works) in "
 "uso non è in grado di connettersi al sito Web richiesto o non lo sta "
 "caricando correttamente. Selezionandolo, la scheda o la finestra attualmente"
 " attiva verrà ricaricata su un nuovo circuito Tor. Anche le altre schede e "
@@ -2424,7 +2424,7 @@ msgstr ""
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "### DOWNLOADING AND INSTALLATION"
-msgstr ""
+msgstr "### DOWNLOAD ED INSTALLAZIONE"
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2517,12 +2517,12 @@ msgstr "3. Vai alle impostazioni, nell'angolo a destra 
in basso. "
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "4. Under the \"My Apps\" section, open Repositories."
-msgstr ""
+msgstr "4. Sotto la sezione \"Mie App\" apri Repository."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "5. Toggle \"Guardian Project Official Releases\" as enabled."
-msgstr ""
+msgstr "5. Abilita \"Guardian Project Official Releases\"."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2677,6 +2677,8 @@ msgid ""
 "You will then be taken to the [Circumvention](/mobile-tor/#circumvention) "
 "screen to configure a pluggable transport."
 msgstr ""
+"Verrà quindi visualizzata la schermata [Elusione](/mobile-tor/#elusione) per"
+" configurare un pluggable transport."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2689,7 +2691,7 @@ msgid ""
 "Bridge relays are Tor relays that are not listed in the public Tor "
 "directory."
 msgstr ""
-"I bridge (o \"ponti\") sono dei relay che non sono presenti nell'elenco "
+"I bridge (o \"ponti\") sono dei relays che non sono presenti nell'elenco "
 "pubblico di Tor."
 
 #: https//tb-manual.torproject.org/mobile-tor/
@@ 

[tor-commits] [translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot

2020-11-17 Thread translation
commit 5eb3228dd9e6cd61e4a68420d7b5e9e850fa028e
Author: Translation commit bot 
Date:   Tue Nov 17 17:47:44 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
 contents+it.po | 24 
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/contents+it.po b/contents+it.po
index 9a3b8da079..c2c627a781 100644
--- a/contents+it.po
+++ b/contents+it.po
@@ -34,7 +34,7 @@ msgstr ""
 
 #: https//tb-manual.torproject.org/ (content/contents+en.lrshowcase.title)
 msgid "Tor Browser User Manual"
-msgstr "Manuale utente del browser Tor"
+msgstr "Manuale utente del Browser Tor"
 
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
@@ -284,7 +284,7 @@ msgid ""
 "relay."
 msgstr ""
 "L'immagine qui sopra rappresenta un utente che visita diversi siti web "
-"utilizzando Tor. I computer verdi nel mezzo rappresentano dei relay nel "
+"utilizzando Tor. I computer verdi nel mezzo rappresentano dei relays nel "
 "network Tor, mentre le tre chiavi rappresentano i livelli di cifratura tra "
 "l'utente e ogni relay."
 
@@ -979,7 +979,7 @@ msgid ""
 "relays."
 msgstr ""
 "La maggior parte dei Pluggable Transports, come obfs4, si basano sull'uso di"
-" \"bridge\" relè (ponti). "
+" \"bridge\" relays (ponti). "
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -988,7 +988,7 @@ msgid ""
 "of “bridge” relays."
 msgstr ""
 "La maggior parte dei [Pluggable Transports](/it/circumvention), come obfs4, "
-"si basano sull'uso di \"bridge\" relè."
+"si basano sull'uso di \"bridge\" relays."
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -997,8 +997,8 @@ msgid ""
 "relays, however, they are not listed publicly, so an adversary cannot "
 "identify them easily."
 msgstr ""
-"Come i normali Tor relè, i bridge sono gestiti da volontari; a differenza "
-"dei normali relè, tuttavia, non sono elencati pubblicamente, quindi un "
+"Come i normali Tor relays, i bridge sono gestiti da volontari; a differenza "
+"dei normali relays, tuttavia, non sono elencati pubblicamente, quindi un "
 "avversario non può identificarli facilmente."
 
 #: https//tb-manual.torproject.org/bridges/
@@ -1010,7 +1010,7 @@ msgid ""
 msgstr ""
 "L'uso di bridge in combinazione con i pluggable transports aiuta a "
 "nascondere il fatto che stai utilizzando Tor, ma può rallentare la "
-"connessione rispetto all'utilizzo dei normali Tor relè."
+"connessione rispetto all'utilizzo dei normali Tor relays."
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -1433,7 +1433,7 @@ msgid ""
 " does not clear any private information or unlink your activity, nor does it"
 " affect your current connections to other websites."
 msgstr ""
-"Questa opzione è utile se il [relè di uscita](/it/about/#how-tor-works) in "
+"Questa opzione è utile se il [relay di uscita](/it/about/#how-tor-works) in "
 "uso non è in grado di connettersi al sito Web richiesto o non lo sta "
 "caricando correttamente. Selezionandolo, la scheda o la finestra attualmente"
 " attiva verrà ricaricata su un nuovo circuito Tor. Anche le altre schede e "
@@ -2424,7 +2424,7 @@ msgstr ""
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "### DOWNLOADING AND INSTALLATION"
-msgstr "### SCARICAMENTO ED INSTALLAZIONE"
+msgstr "### DOWNLOAD ED INSTALLAZIONE"
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2517,12 +2517,12 @@ msgstr "3. Vai alle impostazioni, nell'angolo a destra 
in basso. "
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "4. Under the \"My Apps\" section, open Repositories."
-msgstr "4. Sotto la sezione \"Mie App\" apri Repository"
+msgstr "4. Sotto la sezione \"Mie App\" apri Repository."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "5. Toggle \"Guardian Project Official Releases\" as enabled."
-msgstr "5. Abilita \"Guardian Project Official Releases\""
+msgstr "5. Abilita \"Guardian Project Official Releases\"."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2691,7 +2691,7 @@ msgid ""
 "Bridge relays are Tor relays that are not listed in the public Tor "
 "directory."
 msgstr ""
-"I bridge (o \"ponti\") sono dei relay che non sono presenti nell'elenco "
+"I bridge (o \"ponti\") sono dei relays che non sono presenti nell'elenco "
 "pubblico di Tor."
 
 #: https//tb-manual.torproject.org/mobile-tor/

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Deliberately close OR connections if proxies leave extra data

2020-11-17 Thread dgoulet
commit ffa7b15950a3274a03b0957425bcaa9952213046
Author: Nick Mathewson 
Date:   Thu Nov 12 11:07:33 2020 -0500

Deliberately close OR connections if proxies leave extra data

We already did this, but we did it by accident, which is pretty
risky: if we hadn't, then our code would have treated extra data in
the inbuf as having been transmitted as TLS-authenticated data.

Closes ticket 40017; Found by opara.
---
 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/changes/bug40017 b/changes/bug40017
new file mode 100644
index 00..3f5c2da968
--- /dev/null
+++ b/changes/bug40017
@@ -0,0 +1,5 @@
+  o Minor features (protocol, proxy support, defense in depth):
+- Respond more deliberately to misbehaving proxies that leave leftover
+  data on their connections, so as to be even less likely as to allow
+  them to pass their data off as having come from a relay.
+  Closes ticket 40017.
diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index bf29cd2c3a..3be0b65f47 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -566,11 +566,6 @@ connection_or_reached_eof(or_connection_t *conn)
 int
 connection_or_process_inbuf(or_connection_t *conn)
 {
-  /** Don't let the inbuf of a nonopen OR connection grow beyond this many
-   * bytes: it's either a broken client, a non-Tor client, or a DOS
-   * attempt. */
-#define MAX_OR_INBUF_WHEN_NONOPEN 0
-
   int ret = 0;
   tor_assert(conn);
 
@@ -581,6 +576,15 @@ connection_or_process_inbuf(or_connection_t *conn)
   /* start TLS after handshake completion, or deal with error */
   if (ret == 1) {
 tor_assert(TO_CONN(conn)->proxy_state == PROXY_CONNECTED);
+if (buf_datalen(conn->base_.inbuf) != 0) {
+  log_fn(LOG_PROTOCOL_WARN, LD_NET, "Found leftover (%d bytes) "
+ "when transitioning from PROXY_HANDSHAKING state on %s: "
+ "closing.",
+ (int)buf_datalen(conn->base_.inbuf),
+ connection_describe(TO_CONN(conn)));
+  connection_or_close_for_error(conn, 0);
+  return -1;
+}
 if (connection_tls_start_handshake(conn, 0) < 0)
   ret = -1;
 /* Touch the channel's active timestamp if there is one */
@@ -601,14 +605,12 @@ connection_or_process_inbuf(or_connection_t *conn)
   break; /* don't do anything */
   }
 
-  /* This check was necessary with 0.2.2, when the TLS_SERVER_RENEGOTIATING
-   * check would otherwise just let data accumulate.  It serves no purpose
-   * in 0.2.3.
-   *
-   *  Remove this check once we verify that the above paragraph is
-   * 100% true. */
-  if (buf_datalen(conn->base_.inbuf) > MAX_OR_INBUF_WHEN_NONOPEN) {
-log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated too much data (%d bytes) "
+  /* This check makes sure that we don't have any data on the inbuf if we're
+   * doing our TLS handshake: if we did, they were probably put there by a
+   * SOCKS proxy trying to trick us into accepting unauthenticated data.
+   */
+  if (buf_datalen(conn->base_.inbuf) != 0) {
+log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated data (%d bytes) "
"on non-open %s; closing.",
(int)buf_datalen(conn->base_.inbuf),
connection_describe(TO_CONN(conn)));



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'maint-0.4.5' into master

2020-11-17 Thread dgoulet
commit 0921fdf633f99cda0df3dab17e996d41dd596c9b
Merge: bc968097f2 07006785fd
Author: David Goulet 
Date:   Tue Nov 17 12:25:56 2020 -0500

Merge branch 'maint-0.4.5' into master

 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.5] Deliberately close OR connections if proxies leave extra data

2020-11-17 Thread dgoulet
commit ffa7b15950a3274a03b0957425bcaa9952213046
Author: Nick Mathewson 
Date:   Thu Nov 12 11:07:33 2020 -0500

Deliberately close OR connections if proxies leave extra data

We already did this, but we did it by accident, which is pretty
risky: if we hadn't, then our code would have treated extra data in
the inbuf as having been transmitted as TLS-authenticated data.

Closes ticket 40017; Found by opara.
---
 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/changes/bug40017 b/changes/bug40017
new file mode 100644
index 00..3f5c2da968
--- /dev/null
+++ b/changes/bug40017
@@ -0,0 +1,5 @@
+  o Minor features (protocol, proxy support, defense in depth):
+- Respond more deliberately to misbehaving proxies that leave leftover
+  data on their connections, so as to be even less likely as to allow
+  them to pass their data off as having come from a relay.
+  Closes ticket 40017.
diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index bf29cd2c3a..3be0b65f47 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -566,11 +566,6 @@ connection_or_reached_eof(or_connection_t *conn)
 int
 connection_or_process_inbuf(or_connection_t *conn)
 {
-  /** Don't let the inbuf of a nonopen OR connection grow beyond this many
-   * bytes: it's either a broken client, a non-Tor client, or a DOS
-   * attempt. */
-#define MAX_OR_INBUF_WHEN_NONOPEN 0
-
   int ret = 0;
   tor_assert(conn);
 
@@ -581,6 +576,15 @@ connection_or_process_inbuf(or_connection_t *conn)
   /* start TLS after handshake completion, or deal with error */
   if (ret == 1) {
 tor_assert(TO_CONN(conn)->proxy_state == PROXY_CONNECTED);
+if (buf_datalen(conn->base_.inbuf) != 0) {
+  log_fn(LOG_PROTOCOL_WARN, LD_NET, "Found leftover (%d bytes) "
+ "when transitioning from PROXY_HANDSHAKING state on %s: "
+ "closing.",
+ (int)buf_datalen(conn->base_.inbuf),
+ connection_describe(TO_CONN(conn)));
+  connection_or_close_for_error(conn, 0);
+  return -1;
+}
 if (connection_tls_start_handshake(conn, 0) < 0)
   ret = -1;
 /* Touch the channel's active timestamp if there is one */
@@ -601,14 +605,12 @@ connection_or_process_inbuf(or_connection_t *conn)
   break; /* don't do anything */
   }
 
-  /* This check was necessary with 0.2.2, when the TLS_SERVER_RENEGOTIATING
-   * check would otherwise just let data accumulate.  It serves no purpose
-   * in 0.2.3.
-   *
-   *  Remove this check once we verify that the above paragraph is
-   * 100% true. */
-  if (buf_datalen(conn->base_.inbuf) > MAX_OR_INBUF_WHEN_NONOPEN) {
-log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated too much data (%d bytes) "
+  /* This check makes sure that we don't have any data on the inbuf if we're
+   * doing our TLS handshake: if we did, they were probably put there by a
+   * SOCKS proxy trying to trick us into accepting unauthenticated data.
+   */
+  if (buf_datalen(conn->base_.inbuf) != 0) {
+log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated data (%d bytes) "
"on non-open %s; closing.",
(int)buf_datalen(conn->base_.inbuf),
connection_describe(TO_CONN(conn)));



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

2020-11-17 Thread dgoulet
commit 07006785fd47e6ce3303659a03004e133d204cc2
Merge: d04a27bed2 ffa7b15950
Author: David Goulet 
Date:   Tue Nov 17 12:25:48 2020 -0500

Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.5] Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

2020-11-17 Thread dgoulet
commit 07006785fd47e6ce3303659a03004e133d204cc2
Merge: d04a27bed2 ffa7b15950
Author: David Goulet 
Date:   Tue Nov 17 12:25:48 2020 -0500

Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.5] Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

2020-11-17 Thread dgoulet
commit 07006785fd47e6ce3303659a03004e133d204cc2
Merge: d04a27bed2 ffa7b15950
Author: David Goulet 
Date:   Tue Nov 17 12:25:48 2020 -0500

Merge branch 'tor-gitlab/mr/203' into maint-0.4.5

 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.5] Deliberately close OR connections if proxies leave extra data

2020-11-17 Thread dgoulet
commit ffa7b15950a3274a03b0957425bcaa9952213046
Author: Nick Mathewson 
Date:   Thu Nov 12 11:07:33 2020 -0500

Deliberately close OR connections if proxies leave extra data

We already did this, but we did it by accident, which is pretty
risky: if we hadn't, then our code would have treated extra data in
the inbuf as having been transmitted as TLS-authenticated data.

Closes ticket 40017; Found by opara.
---
 changes/bug40017|  5 +
 src/core/or/connection_or.c | 28 +++-
 2 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/changes/bug40017 b/changes/bug40017
new file mode 100644
index 00..3f5c2da968
--- /dev/null
+++ b/changes/bug40017
@@ -0,0 +1,5 @@
+  o Minor features (protocol, proxy support, defense in depth):
+- Respond more deliberately to misbehaving proxies that leave leftover
+  data on their connections, so as to be even less likely as to allow
+  them to pass their data off as having come from a relay.
+  Closes ticket 40017.
diff --git a/src/core/or/connection_or.c b/src/core/or/connection_or.c
index bf29cd2c3a..3be0b65f47 100644
--- a/src/core/or/connection_or.c
+++ b/src/core/or/connection_or.c
@@ -566,11 +566,6 @@ connection_or_reached_eof(or_connection_t *conn)
 int
 connection_or_process_inbuf(or_connection_t *conn)
 {
-  /** Don't let the inbuf of a nonopen OR connection grow beyond this many
-   * bytes: it's either a broken client, a non-Tor client, or a DOS
-   * attempt. */
-#define MAX_OR_INBUF_WHEN_NONOPEN 0
-
   int ret = 0;
   tor_assert(conn);
 
@@ -581,6 +576,15 @@ connection_or_process_inbuf(or_connection_t *conn)
   /* start TLS after handshake completion, or deal with error */
   if (ret == 1) {
 tor_assert(TO_CONN(conn)->proxy_state == PROXY_CONNECTED);
+if (buf_datalen(conn->base_.inbuf) != 0) {
+  log_fn(LOG_PROTOCOL_WARN, LD_NET, "Found leftover (%d bytes) "
+ "when transitioning from PROXY_HANDSHAKING state on %s: "
+ "closing.",
+ (int)buf_datalen(conn->base_.inbuf),
+ connection_describe(TO_CONN(conn)));
+  connection_or_close_for_error(conn, 0);
+  return -1;
+}
 if (connection_tls_start_handshake(conn, 0) < 0)
   ret = -1;
 /* Touch the channel's active timestamp if there is one */
@@ -601,14 +605,12 @@ connection_or_process_inbuf(or_connection_t *conn)
   break; /* don't do anything */
   }
 
-  /* This check was necessary with 0.2.2, when the TLS_SERVER_RENEGOTIATING
-   * check would otherwise just let data accumulate.  It serves no purpose
-   * in 0.2.3.
-   *
-   *  Remove this check once we verify that the above paragraph is
-   * 100% true. */
-  if (buf_datalen(conn->base_.inbuf) > MAX_OR_INBUF_WHEN_NONOPEN) {
-log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated too much data (%d bytes) "
+  /* This check makes sure that we don't have any data on the inbuf if we're
+   * doing our TLS handshake: if we did, they were probably put there by a
+   * SOCKS proxy trying to trick us into accepting unauthenticated data.
+   */
+  if (buf_datalen(conn->base_.inbuf) != 0) {
+log_fn(LOG_PROTOCOL_WARN, LD_NET, "Accumulated data (%d bytes) "
"on non-open %s; closing.",
(int)buf_datalen(conn->base_.inbuf),
connection_describe(TO_CONN(conn)));



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot

2020-11-17 Thread translation
commit c2a43066b6c4ab920a4ea35377450c41387926dd
Author: Translation commit bot 
Date:   Tue Nov 17 17:18:20 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
 contents+it.po | 25 +
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/contents+it.po b/contents+it.po
index 73c6dc5764..9a3b8da079 100644
--- a/contents+it.po
+++ b/contents+it.po
@@ -1108,7 +1108,7 @@ msgid ""
 msgstr ""
 "Nella sezione \"Bridges\", seleziona la casella di controllo \"Usa un "
 "bridge\" e dall'opzione \"Richiedi un bridge da torproject.org\", fare clic "
-"su \"Richiedi un Nuovo Bridge..\" affinché BridgeDB fornisca un bridge."
+"su \"Richiedi un Nuovo Bridge...\" affinché BridgeDB fornisca un bridge."
 
 #: https//tb-manual.torproject.org/bridges/
 #: (content/bridges/contents+en.lrtopic.body)
@@ -2447,7 +2447,7 @@ msgid ""
 "Tor Browser for Android is available on Play Store, F-droid and the Tor "
 "Project website."
 msgstr ""
-"Tor Browser per Android è disponibile su Play Store, F-droid e sul sito Web "
+"Tor Browser per Android è disponibile su Play Store, F-droid e sul sito web "
 "Tor Project."
 
 #: https//tb-manual.torproject.org/mobile-tor/
@@ -2667,7 +2667,7 @@ msgid ""
 "connect to the Tor network and no other solutions have worked, click the "
 "switch."
 msgstr ""
-"Se sai che la connessione è censurata o hai è tentato senza riuscire a "
+"Se sai che la connessione è censurata o hai tentato senza riuscire a "
 "connetterti alla rete Tor e nessuna altra soluzione ha funzionato, fare clic"
 " sul pulsante."
 
@@ -2781,8 +2781,9 @@ msgid ""
 "If you choose the \"Provide a Bridge I know\" option, then you have to enter"
 " a [bridge address](https://tb-manual.torproject.org/bridges/)."
 msgstr ""
-"Se scegli l'opzione \"Fornisci un bridge\", è necessario immettere un "
-"[indirizzo del bridge](https://tb-manual.torproject.org/it/bridges/)."
+"Se scegli l'opzione \"Fornisci un bridge conosciuto\", è necessario "
+"immettere un [indirizzo del bridge](https://tb-;
+"manual.torproject.org/it/bridges/)."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2879,7 +2880,7 @@ msgid ""
 "anonymity."
 msgstr ""
 "[Impostazioni di sicurezza](https://tb-manual.torproject.org/it/security-;
-"settings/) disattivare alcune funzionalità Web che possono essere utilizzate"
+"settings/) disattivare alcune funzionalità web che possono essere utilizzate"
 " per aggirare la sicurezza e l'anonimato."
 
 #: https//tb-manual.torproject.org/mobile-tor/
@@ -2889,7 +2890,7 @@ msgid ""
 "available on desktop."
 msgstr ""
 "Tor Browser per Android fornisce gli stessi tre livelli di protezione "
-"disponibili sul desktop."
+"disponibili su desktop."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2900,7 +2901,7 @@ msgstr ""
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "* Tap on a button of 3 vertical dots in URL bar."
-msgstr "* Toccare un pulsante di 3 punti verticali nella barra dell'URL."
+msgstr "* Toccare il pulsante con i 3 punti verticali nella barra dell'URL."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -2911,8 +2912,8 @@ msgstr "* Scorri verso il basso e tocca \"Impostazioni di 
sicurezza\"."
 #: (content/mobile-tor/contents+en.lrtopic.body)
 msgid "* You can now select an option from the security level slider."
 msgstr ""
-"* Ora è possibile selezionare un'opzione dal dispositivo a scorrimento del "
-"livello di sicurezza."
+"* Ora è possibile selezionare un'opzione dalla lista dei vari livelli di "
+"sicurezza."
 
 #: https//tb-manual.torproject.org/mobile-tor/
 #: (content/mobile-tor/contents+en.lrtopic.body)
@@ -3098,7 +3099,7 @@ msgid ""
 "Select Tor Browser from the list of installed apps, then press the "
 "\"Uninstall\" button."
 msgstr ""
-"Seleziona Tor Browser dall'elenco delle app installate, quindi premeri il "
+"Selezionare Tor Browser dall'elenco delle app installate, quindi premere il "
 "pulsante \"Disinstalla\"."
 
 #: https//tb-manual.torproject.org/mobile-tor/
@@ -3243,7 +3244,7 @@ msgid ""
 "censorship and access blocked sites and critical resources."
 msgstr ""
 "rispetto ai browser standard, Orfox è stato fondamentale per aiutare le "
-"persone ad aggirare la censura e ad accedere ai siti bloccati ed a risorse "
+"persone ad aggirare la censura e ad accedere ai siti bloccati e risorse "
 "critiche."
 
 #: https//tb-manual.torproject.org/mobile-tor/

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot

2020-11-17 Thread translation
commit c5201802883db4e26a106d95da0d25fb35099639
Author: Translation commit bot 
Date:   Tue Nov 17 17:15:17 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
---
 contents+fr.po | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/contents+fr.po b/contents+fr.po
index 878944d692..22cac633e3 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -1000,10 +1000,10 @@ msgid ""
 " has a record in prosecuting individuals engaging in similar types of "
 "activities."
 msgstr ""
-"2. **Les lois et réglementations du pays.** Consultez des avocats locaux et "
-"des associations locales oeuvrant pour la liberté d'expression pour "
-"découvrir si le pays a un historique de poursuite des individus engagés 
dans"
-" des activités similaires."
+"2. **Les lois et règlements du pays.** Consultez des avocats locaux et des "
+"associations locales qui défendent la liberté d’expression pour apprendre 
si"
+" votre pays a l’habitude de poursuivre les particuliers qui s’adonnent à 
de "
+"telles activités."
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal

2020-11-17 Thread translation
commit 5e91a8ec6742a5f009e07fad8c82aab828d8d860
Author: Translation commit bot 
Date:   Tue Nov 17 16:50:20 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
 contents+it.po | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/contents+it.po b/contents+it.po
index 010e8df86b..684290ab5a 100644
--- a/contents+it.po
+++ b/contents+it.po
@@ -23,8 +23,8 @@
 # Random_R, 2020
 # Luke <94lukecatell...@gmail.com>, 2020
 # Gus, 2020
-# Davide Sant , 2020
 # fbd, 2020
+# Davide Sant , 2020
 # 
 msgid ""
 msgstr ""
@@ -32,7 +32,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-04-15 19:40+CET\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: fbd, 2020\n"
+"Last-Translator: Davide Sant , 2020\n"
 "Language-Team: Italian (https://www.transifex.com/otf/teams/1519/it/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -125,7 +125,7 @@ msgstr "Operatori"
 #: https//support.torproject.org/glossary/metrics/
 #: (content/glossary/metrics/contents+en.lrword.term)
 msgid "Tor Metrics"
-msgstr "Misurazioni di Tor"
+msgstr "Metriche di Tor"
 
 #: https//support.torproject.org/onionservices/
 #: (content/onionservices/contents+en.lrtopic.title)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot

2020-11-17 Thread translation
commit 78c0a8ab110fa58559df530fb7411d9851728655
Author: Translation commit bot 
Date:   Tue Nov 17 16:45:17 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
---
 contents+fr.po | 33 -
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/contents+fr.po b/contents+fr.po
index 2e3f3c30ee..878944d692 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -947,10 +947,11 @@ msgid ""
 "placement on government watch lists, and targeting for surveillance."
 msgstr ""
 "Cependant, dans certains pays et dans certaines circonstances, il est "
-"possible qu'un simple rassemblement en tant que défenseurs des droits de la "
-"personne soit risqué, illégal ou même qu'il conduise à un emprisonnement, 
à "
-"des attaques physiques, à de larges amendes, à des menaces, à un placement 
"
-"sous surveillance d'état ou à un ciblage pour surveillance."
+"possible qu’un simple rassemblement en tant que défenseurs des droits de 
la "
+"personne soit risqué, illégal ou entraîne même un emprisonnement, des "
+"attaques physiques, de lourdes amendes, des menaces, l’inscription sur des "
+"listes gouvernementales de surveillance d’état et le début d’une "
+"surveillance."
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)
@@ -960,10 +961,10 @@ msgid ""
 "read this document and, in case of doubt, to reach out to the Tor Community "
 "Team privately."
 msgstr ""
-"Si vous voulez exécuter une formation Tor pour la première fois et que vous 
"
-"ne savez pas comment évaluer l'environnement politique et social, nous vous "
-"encourageons à lire ce document et, en cas de doute, à joindre l'équipe de 
"
-"la Tor Community en privé."
+"Si vous voulez mener pour la première fois une formation sur Tor et que vous"
+" ne savez pas comment évaluer l’environnement politique et social, nous 
vous"
+" encourageons fortement de lire ce document et, en cas de doute, de joindre "
+"confidentiellement l’équipe de la communauté Tor."
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)
@@ -971,15 +972,13 @@ msgid ""
 "Some potential risks of running a digital security training are only valid "
 "in specific contexts."
 msgstr ""
-"Certains risques potentiels liés à la tenue d'une formation à la 
sécurité "
-"informatique sont seulement valides dans certains contexts."
+"Certains risques liés à la tenue d’une formation sur la sécurité 
numérique "
+"ne sont valides que dans certains contextes particuliers."
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)
 msgid "The potential risks associated with running a Tor training depend on:"
-msgstr ""
-"Les risques potentiels associés avec la tenue de formation à Tor dépendent 
"
-"de :"
+msgstr "Les risques liés à la tenue d’une formation sur Tor dépendent de 
:"
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)
@@ -988,10 +987,10 @@ msgid ""
 "surveillance, for example, might attract more attention when reaching out to"
 " other activists to run a digital security training."
 msgstr ""
-"1. **Votre modèle de menace.** Un activiste de haut niveau déjà sous forte 
"
-"surveillance, par exemple, attirera probablement plus l'attention quand il "
-"se rapprochera d'autres activistes pour mener des formations en sécurité "
-"informatique."
+"1. **Votre modèle de menace.** Par exemple, un activiste très en vue qui "
+"ferait l’objet d’une surveillance renforcée pourrait plus attirer "
+"l’attention en contactant d’autres activistes pour mener une formation en 
"
+"sécurité numérique."
 
 #: https//community.torproject.org/training/risks/
 #: (content/training/risks/contents+en.lrpage.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Allow listing ed25519 fingerprints on the command line

2020-11-17 Thread dgoulet
commit 1588767e655f87f49cf0f71d6e604117be52a135
Author: Neel Chauhan 
Date:   Tue Oct 20 16:13:26 2020 -0700

Allow listing ed25519 fingerprints on the command line
---
 changes/ticket33632 |  5 +
 doc/man/tor.1.txt   |  5 +++--
 src/app/config/config.c |  1 +
 src/app/main/main.c | 40 
 4 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/changes/ticket33632 b/changes/ticket33632
new file mode 100644
index 00..9d813feaf2
--- /dev/null
+++ b/changes/ticket33632
@@ -0,0 +1,5 @@
+  o Minor features (relay fingerprint, command line):
+- Allow a relay operator to list the ed25519 keys on the command line
+  by adding the `rsa` and `ed25519` arguments to the --list-fingerprint
+  flag to show the respective RSA and ed25519 relay fingerprint. Closes
+  ticket 33632. Patch by Neel Chauhan.
diff --git a/doc/man/tor.1.txt b/doc/man/tor.1.txt
index ab273925b1..e886d6f801 100644
--- a/doc/man/tor.1.txt
+++ b/doc/man/tor.1.txt
@@ -91,8 +91,9 @@ The following options in this section are only recognized on 
the
 [[opt-hash-password]] **`--hash-password`** __PASSWORD__::
 Generate a hashed password for control port access.
 
-[[opt-list-fingerprint]] **`--list-fingerprint`**::
-Generate your keys and output your nickname and fingerprint.
+[[opt-list-fingerprint]] **`--list-fingerprint`** [__key type__]::
+Generate your keys and output your nickname and fingerprint. Optionally,
+you can specify the key type as `rsa` (default) or `ed25519`.
 
 [[opt-verify-config]] **`--verify-config`**::
 Verify whether the configuration file is valid.
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 04a82a5c43..b5cc382258 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -2466,6 +2466,7 @@ static const struct {
 .command=CMD_DUMP_CONFIG,
 .quiet=QUIET_SILENT },
   { .name="--list-fingerprint",
+.takes_argument=ARGUMENT_OPTIONAL,
 .command=CMD_LIST_FINGERPRINT },
   { .name="--keygen",
 .command=CMD_KEYGEN },
diff --git a/src/app/main/main.c b/src/app/main/main.c
index 31a6fa52ba..e7ffb31b4f 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -58,6 +58,7 @@
 #include "feature/stats/rephist.h"
 #include "lib/compress/compress.h"
 #include "lib/buf/buffers.h"
+#include "lib/crypt_ops/crypto_format.h"
 #include "lib/crypt_ops/crypto_rand.h"
 #include "lib/crypt_ops/crypto_s2k.h"
 #include "lib/net/resolve.h"
@@ -735,29 +736,52 @@ tor_remove_file(const char *filename)
 static int
 do_list_fingerprint(void)
 {
-  char buf[FINGERPRINT_LEN+1];
+  const or_options_t *options = get_options();
+  const char *arg = options->command_arg;
+  char rsa[FINGERPRINT_LEN + 1];
   crypto_pk_t *k;
-  const char *nickname = get_options()->Nickname;
+  const ed25519_public_key_t *edkey;
+  const char *nickname = options->Nickname;
   sandbox_disable_getaddrinfo_cache();
-  if (!server_mode(get_options())) {
+
+  bool show_rsa = !strcmp(arg, "") || !strcmp(arg, "rsa");
+  bool show_ed25519 = !strcmp(arg, "ed25519");
+  if (!show_rsa && !show_ed25519) {
+log_err(LD_GENERAL,
+  "If you give a key type, you must specify 'rsa' or 'ed25519'. Exiting.");
+return -1;
+  }
+
+  if (!server_mode(options)) {
 log_err(LD_GENERAL,
 "Clients don't have long-term identity keys. Exiting.");
 return -1;
   }
   tor_assert(nickname);
   if (init_keys() < 0) {
-log_err(LD_GENERAL,"Error initializing keys; exiting.");
+log_err(LD_GENERAL, "Error initializing keys; exiting.");
 return -1;
   }
   if (!(k = get_server_identity_key())) {
-log_err(LD_GENERAL,"Error: missing identity key.");
+log_err(LD_GENERAL, "Error: missing RSA identity key.");
+return -1;
+  }
+  if (crypto_pk_get_fingerprint(k, rsa, 1) < 0) {
+log_err(LD_BUG, "Error computing RSA fingerprint");
 return -1;
   }
-  if (crypto_pk_get_fingerprint(k, buf, 1)<0) {
-log_err(LD_BUG, "Error computing fingerprint");
+  if (!(edkey = get_master_identity_key())) {
+log_err(LD_GENERAL,"Error: missing ed25519 identity key.");
 return -1;
   }
-  printf("%s %s\n", nickname, buf);
+  if (show_rsa) {
+printf("%s %s\n", nickname, rsa);
+  }
+  if (show_ed25519) {
+char ed25519[ED25519_BASE64_LEN + 1];
+digest256_to_base64(ed25519, (const char *) edkey->pubkey);
+printf("%s %s\n", nickname, ed25519);
+  }
   return 0;
 }
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Fix script failures

2020-11-17 Thread dgoulet
commit bc968097f288286b403eb09107591fc66bf337ca
Author: Neel Chauhan 
Date:   Tue Oct 27 08:41:57 2020 -0700

Fix script failures
---
 src/test/test_key_expiration.sh |  2 +-
 src/test/test_keygen.sh | 14 +++---
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/test/test_key_expiration.sh b/src/test/test_key_expiration.sh
index 1ba8179aa1..2e2745e0a3 100755
--- a/src/test/test_key_expiration.sh
+++ b/src/test/test_key_expiration.sh
@@ -107,7 +107,7 @@ TOR="${TOR_BINARY} --DisableNetwork 1 --ShutdownWaitLength 
0 --ORPort 12345 --Ex
 
 # Step 1: Start Tor with --list-fingerprint --quiet.  Make sure everything is 
there.
 echo "Setup step #1"
-${TOR} --list-fingerprint ${SILENTLY} > /dev/null
+${TOR} ${SILENTLY} --list-fingerprint > /dev/null
 
 check_dir "${DATA_DIR}/keys"
 check_file "${DATA_DIR}/keys/ed25519_master_id_public_key"
diff --git a/src/test/test_keygen.sh b/src/test/test_keygen.sh
index 6812f8883d..be1fde9e32 100755
--- a/src/test/test_keygen.sh
+++ b/src/test/test_keygen.sh
@@ -120,7 +120,7 @@ TOR="${TOR_BINARY} ${QUIETLY} --DisableNetwork 1 
--ShutdownWaitLength 0 --ORPort
 
 # Step 1: Start Tor with --list-fingerprint --quiet.  Make sure everything is 
there.
 mkdir "${DATA_DIR}/orig"
-${TOR} --DataDirectory "${DATA_DIR}/orig" --list-fingerprint ${SILENTLY} > 
/dev/null
+${TOR} --DataDirectory "${DATA_DIR}/orig" ${SILENTLY} --list-fingerprint > 
/dev/null
 
 check_dir "${DATA_DIR}/orig/keys"
 check_file "${DATA_DIR}/orig/keys/ed25519_master_id_public_key"
@@ -206,7 +206,7 @@ SRC="${DATA_DIR}/orig"
 
 mkdir -p "${ME}/keys"
 cp "${SRC}/keys/ed25519_master_id_"* "${ME}/keys/"
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} >/dev/null || 
die "Tor failed when starting with only master key"
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint >/dev/null || 
die "Tor failed when starting with only master key"
 check_files_eq "${SRC}/keys/ed25519_master_id_public_key" 
"${ME}/keys/ed25519_master_id_public_key"
 check_files_eq "${SRC}/keys/ed25519_master_id_secret_key" 
"${ME}/keys/ed25519_master_id_secret_key"
 check_file "${ME}/keys/ed25519_signing_cert"
@@ -264,11 +264,11 @@ SRC="${DATA_DIR}/orig"
 
 mkdir -p "${ME}/keys"
 cp "${SRC}/keys/ed25519_master_id_secret_key" "${ME}/keys/"
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} > "${ME}/fp1" || 
die "Tor wouldn't start with only unencrypted secret key"
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint > "${ME}/fp1" || 
die "Tor wouldn't start with only unencrypted secret key"
 check_file "${ME}/keys/ed25519_master_id_public_key"
 check_file "${ME}/keys/ed25519_signing_cert"
 check_file "${ME}/keys/ed25519_signing_secret_key"
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} > "${ME}/fp2" || 
die "Tor wouldn't start again after starting once with only unencrypted secret 
key."
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint > "${ME}/fp2" || 
die "Tor wouldn't start again after starting once with only unencrypted secret 
key."
 
 check_files_eq "${ME}/fp1" "${ME}/fp2"
 
@@ -330,7 +330,7 @@ cp "${SRC}/keys/ed25519_master_id_secret_key" "${ME}/keys/"
 cp "${SRC}/keys/ed25519_signing_cert" "${ME}/keys/"
 cp "${SRC}/keys/ed25519_signing_secret_key" "${ME}/keys/"
 
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} >/dev/null || 
die "Failed when starting with missing public key"
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint >/dev/null || 
die "Failed when starting with missing public key"
 check_keys_eq ed25519_master_id_secret_key
 check_keys_eq ed25519_master_id_public_key
 check_keys_eq ed25519_signing_secret_key
@@ -352,7 +352,7 @@ cp "${SRC}/keys/ed25519_master_id_public_key" "${ME}/keys/"
 cp "${SRC}/keys/ed25519_signing_cert" "${ME}/keys/"
 cp "${SRC}/keys/ed25519_signing_secret_key" "${ME}/keys/"
 
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} >/dev/null || 
die "Failed when starting with offline secret key"
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint >/dev/null || 
die "Failed when starting with offline secret key"
 check_no_file "${ME}/keys/ed25519_master_id_secret_key"
 check_keys_eq ed25519_master_id_public_key
 check_keys_eq ed25519_signing_secret_key
@@ -373,7 +373,7 @@ mkdir -p "${ME}/keys"
 cp "${SRC}/keys/ed25519_signing_cert" "${ME}/keys/"
 cp "${SRC}/keys/ed25519_signing_secret_key" "${ME}/keys/"
 
-${TOR} --DataDirectory "${ME}" --list-fingerprint ${SILENTLY} >/dev/null || 
die "Failed when starting with only signing material"
+${TOR} --DataDirectory "${ME}" ${SILENTLY} --list-fingerprint >/dev/null || 
die "Failed when starting with only signing material"
 check_no_file "${ME}/keys/ed25519_master_id_secret_key"
 check_file "${ME}/keys/ed25519_master_id_public_key"
 check_keys_eq ed25519_signing_secret_key

___
tor-commits mailing list
tor-commits@lists.torproject.org

[tor-commits] [translation/communitytpo-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot

2020-11-17 Thread translation
commit b5d8a5055f4dd042a79d19057daa0f7a1aff907e
Author: Translation commit bot 
Date:   Tue Nov 17 16:15:14 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=communitytpo-contentspot
---
 contents+fr.po | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/contents+fr.po b/contents+fr.po
index c1c083696e..2e3f3c30ee 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -8,9 +8,9 @@
 # Gus, 2020
 # David Georges, 2020
 # erinm, 2020
-# AO , 2020
 # Emeric Vallespi , 2020
 # Cor l3ss , 2020
+# AO , 2020
 # 
 msgid ""
 msgstr ""
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-05 12:55+EST\n"
 "PO-Revision-Date: 2019-12-11 10:50+\n"
-"Last-Translator: Cor l3ss , 2020\n"
+"Last-Translator: AO , 2020\n"
 "Language-Team: French (https://www.transifex.com/otf/teams/1519/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -590,7 +590,7 @@ msgstr ""
 #: (content/training/best-practices/contents+en.lrpage.body)
 msgid "This includes downloads and PDFs of handouts."
 msgstr ""
-"Cela inclut des téléchargements et des documents d'information en PDF."
+"Cela comprend les téléchargements et les PDF de feuillets à distribuer."
 
 #: https//community.torproject.org/training/best-practices/
 #: (content/training/best-practices/contents+en.lrpage.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'maint-0.4.5' into master

2020-11-17 Thread nickm
commit 3900b1937973141b5c75f7221162375f7a2e1f9c
Merge: 7c06707750 d04a27bed2
Author: Nick Mathewson 
Date:   Tue Nov 17 10:53:39 2020 -0500

Merge branch 'maint-0.4.5' into master

 changes/ticket40195  | 5 +
 src/feature/relay/relay_config.c | 4 
 2 files changed, 9 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] config: Really ignore non ORPorts when removing duplicates

2020-11-17 Thread nickm
commit d04a27bed20cf44766fc30583c7a00108f42a09a
Author: David Goulet 
Date:   Tue Nov 17 09:40:16 2020 -0500

config: Really ignore non ORPorts when removing duplicates

The function in charge of removing duplicate ORPorts from our configured 
ports
was skipping all non ORPorts port but only for the outer loop thus resulting
in comparing an ORPort with a non-ORPort which lead to problems.

For example, tor configured with the following would fail:

  ORPort auto
  DirPort auto

Both end up being the same configuration except that one is a OR listener 
and
one is a Dir listener. Thus because of the missing check in the inner loop,
they looked exactly the same and thus one is removed.

Fixes #40195

Signed-off-by: David Goulet 
---
 changes/ticket40195  | 5 +
 src/feature/relay/relay_config.c | 4 
 2 files changed, 9 insertions(+)

diff --git a/changes/ticket40195 b/changes/ticket40195
new file mode 100644
index 00..caa0bace94
--- /dev/null
+++ b/changes/ticket40195
@@ -0,0 +1,5 @@
+  o Minor bugfixes (configuration, ports):
+- Fix an issue where an ORPort was validated against other type of ports
+  when it should have been only checked against other ORPorts. This lead to
+  "DirPort auto" to be ignored and failing to be used. Fixes bug 40195;
+  bugfix on 0.4.5.1-alpha.
diff --git a/src/feature/relay/relay_config.c b/src/feature/relay/relay_config.c
index ea03f43e13..e8c29fa7ed 100644
--- a/src/feature/relay/relay_config.c
+++ b/src/feature/relay/relay_config.c
@@ -227,6 +227,10 @@ remove_duplicate_orports(smartlist_t *ports)
   if (removing[j]) {
 continue;
   }
+  /* Skip non ORPorts. */
+  if (next->type != CONN_TYPE_OR_LISTENER) {
+continue;
+  }
   /* Same address family and same port number, we have a match. */
   if (tor_addr_family(>addr) == tor_addr_family(>addr) &&
   current->port == next->port) {



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.5] config: Really ignore non ORPorts when removing duplicates

2020-11-17 Thread nickm
commit d04a27bed20cf44766fc30583c7a00108f42a09a
Author: David Goulet 
Date:   Tue Nov 17 09:40:16 2020 -0500

config: Really ignore non ORPorts when removing duplicates

The function in charge of removing duplicate ORPorts from our configured 
ports
was skipping all non ORPorts port but only for the outer loop thus resulting
in comparing an ORPort with a non-ORPort which lead to problems.

For example, tor configured with the following would fail:

  ORPort auto
  DirPort auto

Both end up being the same configuration except that one is a OR listener 
and
one is a Dir listener. Thus because of the missing check in the inner loop,
they looked exactly the same and thus one is removed.

Fixes #40195

Signed-off-by: David Goulet 
---
 changes/ticket40195  | 5 +
 src/feature/relay/relay_config.c | 4 
 2 files changed, 9 insertions(+)

diff --git a/changes/ticket40195 b/changes/ticket40195
new file mode 100644
index 00..caa0bace94
--- /dev/null
+++ b/changes/ticket40195
@@ -0,0 +1,5 @@
+  o Minor bugfixes (configuration, ports):
+- Fix an issue where an ORPort was validated against other type of ports
+  when it should have been only checked against other ORPorts. This lead to
+  "DirPort auto" to be ignored and failing to be used. Fixes bug 40195;
+  bugfix on 0.4.5.1-alpha.
diff --git a/src/feature/relay/relay_config.c b/src/feature/relay/relay_config.c
index ea03f43e13..e8c29fa7ed 100644
--- a/src/feature/relay/relay_config.c
+++ b/src/feature/relay/relay_config.c
@@ -227,6 +227,10 @@ remove_duplicate_orports(smartlist_t *ports)
   if (removing[j]) {
 continue;
   }
+  /* Skip non ORPorts. */
+  if (next->type != CONN_TYPE_OR_LISTENER) {
+continue;
+  }
   /* Same address family and same port number, we have a match. */
   if (tor_addr_family(>addr) == tor_addr_family(>addr) &&
   current->port == next->port) {

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.5] config: Really ignore non ORPorts when removing duplicates

2020-11-17 Thread nickm
commit d04a27bed20cf44766fc30583c7a00108f42a09a
Author: David Goulet 
Date:   Tue Nov 17 09:40:16 2020 -0500

config: Really ignore non ORPorts when removing duplicates

The function in charge of removing duplicate ORPorts from our configured 
ports
was skipping all non ORPorts port but only for the outer loop thus resulting
in comparing an ORPort with a non-ORPort which lead to problems.

For example, tor configured with the following would fail:

  ORPort auto
  DirPort auto

Both end up being the same configuration except that one is a OR listener 
and
one is a Dir listener. Thus because of the missing check in the inner loop,
they looked exactly the same and thus one is removed.

Fixes #40195

Signed-off-by: David Goulet 
---
 changes/ticket40195  | 5 +
 src/feature/relay/relay_config.c | 4 
 2 files changed, 9 insertions(+)

diff --git a/changes/ticket40195 b/changes/ticket40195
new file mode 100644
index 00..caa0bace94
--- /dev/null
+++ b/changes/ticket40195
@@ -0,0 +1,5 @@
+  o Minor bugfixes (configuration, ports):
+- Fix an issue where an ORPort was validated against other type of ports
+  when it should have been only checked against other ORPorts. This lead to
+  "DirPort auto" to be ignored and failing to be used. Fixes bug 40195;
+  bugfix on 0.4.5.1-alpha.
diff --git a/src/feature/relay/relay_config.c b/src/feature/relay/relay_config.c
index ea03f43e13..e8c29fa7ed 100644
--- a/src/feature/relay/relay_config.c
+++ b/src/feature/relay/relay_config.c
@@ -227,6 +227,10 @@ remove_duplicate_orports(smartlist_t *ports)
   if (removing[j]) {
 continue;
   }
+  /* Skip non ORPorts. */
+  if (next->type != CONN_TYPE_OR_LISTENER) {
+continue;
+  }
   /* Same address family and same port number, we have a match. */
   if (tor_addr_family(>addr) == tor_addr_family(>addr) &&
   current->port == next->port) {

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [torspec/master] Merge branch 'tor-gitlab/mr/15' into master

2020-11-17 Thread dgoulet
commit ae025d53979dc62136843c1917fad499ce1abe9b
Merge: bfaf4c2 1337eb2
Author: David Goulet 
Date:   Tue Nov 17 10:50:27 2020 -0500

Merge branch 'tor-gitlab/mr/15' into master

 dir-spec.txt | 6 ++
 1 file changed, 6 insertions(+)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'tor-gitlab/mr/182' into master

2020-11-17 Thread dgoulet
commit 7c06707750f549fc22b74bdba7b9743d7b536e19
Merge: 6c61011781 0812ecd517
Author: David Goulet 
Date:   Tue Nov 17 10:36:05 2020 -0500

Merge branch 'tor-gitlab/mr/182' into master

 changes/bug23126 |   4 +
 src/app/main/main.c  |   2 +
 src/core/mainloop/mainloop.c |   6 +-
 src/core/or/command.c|  29 ++-
 src/core/or/or_circuit_st.h  |   6 +
 src/feature/hs/hs_cache.c|   6 +-
 src/feature/hs_common/shared_random_client.c |  21 +-
 src/feature/relay/router.c   |   5 +
 src/feature/rend/rendcache.c |   2 +-
 src/feature/stats/rephist.c  | 346 +++
 src/feature/stats/rephist.h  |  53 +++-
 src/test/hs_test_helpers.c   |  19 +-
 src/test/hs_test_helpers.h   |   4 +
 src/test/test_stats.c| 129 ++
 14 files changed, 513 insertions(+), 119 deletions(-)

diff --cc src/feature/stats/rephist.c
index 3c22fda3b8,1501e46b14..59f38fe603
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@@ -1765,71 -1851,110 +1851,110 @@@ hs_v3_stats_free_(hs_v3_stats_t *victim
  /** Clear history of hidden service statistics and set the measurement
   * interval start to now. */
  static void
- rep_hist_reset_hs_stats(time_t now)
+ rep_hist_reset_hs_v3_stats(time_t now)
  {
-   if (!hs_stats) {
- hs_stats = hs_stats_new();
+   if (!hs_v3_stats) {
+ hs_v3_stats = hs_v3_stats_new();
}
  
-   hs_stats->rp_relay_cells_seen = 0;
+   digest256map_free(hs_v3_stats->v3_onions_seen_this_period, NULL);
+   hs_v3_stats->v3_onions_seen_this_period = digest256map_new();
  
-   digestmap_free(hs_stats->onions_seen_this_period, NULL);
-   hs_stats->onions_seen_this_period = digestmap_new();
+   hs_v3_stats->rp_v3_relay_cells_seen = 0;
  
-   start_of_hs_stats_interval = now;
+   start_of_hs_v3_stats_interval = now;
  }
  
- /** Stop collecting hidden service stats in a way that we can re-start
-  * doing so in rep_hist_buffer_stats_init(). */
- void
- rep_hist_hs_stats_term(void)
+ /** Return true if it's a good time to collect v3 stats.
+  *
+  *  v3 stats have a strict stats collection period (from 12:00UTC to 12:00UTC
+  *  on the real network). We don't want to collect statistics if (for example)
+  *  we just booted and it's 03:00UTC; we will wait until 12:00UTC before we
+  *  start collecting statistics to make sure that the final result represents
+  *  the whole collection period. This behavior is controlled by
+  *  rep_hist_hs_stats_init().
+  */
+ MOCK_IMPL(STATIC bool,
+ should_collect_v3_stats,(void))
  {
-   rep_hist_reset_hs_stats(0);
+   return start_of_hs_v3_stats_interval <= approx_time();
  }
  
- /** We saw a new HS relay cell, Count it! */
+ /** We just received a new descriptor with blinded_key. See if we've
+  * seen this blinded key before, and if not add it to the stats.  */
  void
- rep_hist_seen_new_rp_cell(void)
+ rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t *blinded_key)
  {
-   if (!hs_stats) {
- return; // We're not collecting stats
+   /* Return early if we don't collect HSv3 stats, or if it's not yet the time
+* to collect them. */
+   if (!hs_v3_stats || !should_collect_v3_stats()) {
+ return;
}
  
-   hs_stats->rp_relay_cells_seen++;
+   bool seen_before =
+ !!digest256map_get(hs_v3_stats->v3_onions_seen_this_period,
+blinded_key);
+ 
+   log_info(LD_GENERAL, "Considering v3 descriptor with %s (%sseen before)",
+safe_str(hex_str((char*)blinded_key, 32)),
+seen_before ? "" : "not ");
+ 
+   /* Count it if we haven't seen it before. */
+   if (!seen_before) {
+ digest256map_set(hs_v3_stats->v3_onions_seen_this_period,
+   blinded_key, (void*)(uintptr_t)1);
+   }
  }
  
- /** As HSDirs, we saw another hidden service with public key
-  *  pubkey. Check whether we have counted it before, if not
-  *  count it now! */
+ /** We saw a new HS relay cell: count it!
+  *  If is_v2 is set then it's a v2 RP cell, otherwise it's a v3. */
  void
- rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey)
+ rep_hist_seen_new_rp_cell(bool is_v2)
  {
-   char pubkey_hash[DIGEST_LEN];
+   log_debug(LD_GENERAL, "New RP cell (%d)", is_v2);
  
-   if (!hs_stats) {
- return; // We're not collecting stats
+   if (is_v2 && hs_v2_stats) {
+ hs_v2_stats->rp_v2_relay_cells_seen++;
+   } else if (!is_v2 && hs_v3_stats && should_collect_v3_stats()) {
+ hs_v3_stats->rp_v3_relay_cells_seen++;
}
+ }
  
-   /* Get the digest of the pubkey which will be used to detect whether
-  we've seen this hidden service before or not.  */
-   if (crypto_pk_get_digest(pubkey, pubkey_hash) < 0) {
- /*  This fail should not happen; key has been validated by
- descriptor parsing code first. */
- return;
+ /** Generic HS 

[tor-commits] [tor/master] Abstract v2/v3 "write stats to file" logic into a single function.

2020-11-17 Thread dgoulet
commit 6178a64fcf86b280890a222864ea1c09960d058f
Author: George Kadianakis 
Date:   Wed Oct 21 16:43:39 2020 +0300

Abstract v2/v3 "write stats to file" logic into a single function.
---
 src/core/mainloop/mainloop.c |  4 +--
 src/feature/stats/rephist.c  | 63 +---
 src/feature/stats/rephist.h  |  7 ++---
 3 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c
index 2a3f22..c64f0a8e82 100644
--- a/src/core/mainloop/mainloop.c
+++ b/src/core/mainloop/mainloop.c
@@ -1937,11 +1937,11 @@ write_stats_file_callback(time_t now, const 
or_options_t *options)
   next_time_to_write_stats_files = next_write;
   }
   if (options->HiddenServiceStatistics) {
-time_t next_write = rep_hist_hs_v2_stats_write(now);
+time_t next_write = rep_hist_hs_stats_write(now, false);
 if (next_write && next_write < next_time_to_write_stats_files)
   next_time_to_write_stats_files = next_write;
 
-next_write = rep_hist_hs_v3_stats_write(now);
+next_write = rep_hist_hs_stats_write(now, true);
 if (next_write && next_write < next_time_to_write_stats_files)
   next_time_to_write_stats_files = next_write;
   }
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index ada19b447a..91def19019 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -2013,41 +2013,6 @@ rep_hist_format_hs_v2_stats(time_t now)
   return hs_v2_stats_string;
 }
 
-/** If 24 hours have passed since the beginning of the current HS
- * stats period, write buffer stats to $DATADIR/stats/hidserv-stats
- * (possibly overwriting an existing file) and reset counters.  Return
- * when we would next want to write buffer stats or 0 if we never want to
- * write. */
-time_t
-rep_hist_hs_v2_stats_write(time_t now)
-{
-  char *str = NULL;
-
-  if (!start_of_hs_v2_stats_interval) {
-return 0; /* Not initialized. */
-  }
-
-  if (start_of_hs_v2_stats_interval + WRITE_STATS_INTERVAL > now) {
-goto done; /* Not ready to write */
-  }
-
-  /* Generate history string. */
-  str = rep_hist_format_hs_v2_stats(now);
-
-  /* Reset HS history. */
-  rep_hist_reset_hs_v2_stats(now);
-
-  /* Try to write to disk. */
-  if (!check_or_create_data_subdir("stats")) {
-write_to_data_subdir("stats", "hidserv-stats", str,
- "hidden service stats");
-  }
-
- done:
-  tor_free(str);
-  return start_of_hs_v2_stats_interval + WRITE_STATS_INTERVAL;
-}
-
 /** Allocate and return a string containing hidden service stats that
  *  are meant to be placed in the extra-info descriptor. */
 STATIC char *
@@ -2093,35 +2058,45 @@ rep_hist_format_hs_v3_stats(time_t now)
  * stats period, write buffer stats to $DATADIR/stats/hidserv-v3-stats
  * (possibly overwriting an existing file) and reset counters.  Return
  * when we would next want to write buffer stats or 0 if we never want to
- * write. */
+ * write. Function works for both v2 and v3 stats depending on is_v3.
+ */
 time_t
-rep_hist_hs_v3_stats_write(time_t now)
+rep_hist_hs_stats_write(time_t now, bool is_v3)
 {
   char *str = NULL;
 
-  if (!start_of_hs_v3_stats_interval) {
+  time_t start_of_hs_stats_interval = is_v3 ?
+start_of_hs_v3_stats_interval : start_of_hs_v2_stats_interval;
+
+  if (!start_of_hs_stats_interval) {
 return 0; /* Not initialized. */
   }
 
-  if (start_of_hs_v3_stats_interval + WRITE_STATS_INTERVAL > now) {
+  if (start_of_hs_stats_interval + WRITE_STATS_INTERVAL > now) {
 goto done; /* Not ready to write */
   }
 
   /* Generate history string. */
-  str = rep_hist_format_hs_v3_stats(now);
+  str = is_v3 ?
+rep_hist_format_hs_v3_stats(now) : rep_hist_format_hs_v2_stats(now);
 
   /* Reset HS history. */
-  rep_hist_reset_hs_v3_stats(now);
+  if (is_v3) {
+rep_hist_reset_hs_v3_stats(now);
+  } else {
+rep_hist_reset_hs_v2_stats(now);
+  }
 
   /* Try to write to disk. */
   if (!check_or_create_data_subdir("stats")) {
-write_to_data_subdir("stats", "hidserv-v3-stats", str,
- "hidden service stats");
+write_to_data_subdir("stats",
+ is_v3 ? "hidserv-v3-stats" : "hidserv-stats",
+ str, "hidden service stats");
   }
 
  done:
   tor_free(str);
-  return start_of_hs_v3_stats_interval + WRITE_STATS_INTERVAL;
+  return start_of_hs_stats_interval + WRITE_STATS_INTERVAL;
 }
 
 static uint64_t link_proto_count[MAX_LINK_PROTO+1][2];
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index b2a4a5048d..c68b854242 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -63,13 +63,14 @@ void rep_hist_log_circuit_handshake_stats(time_t now);
 MOCK_DECL(int, rep_hist_get_circuit_handshake_requested, (uint16_t type));
 MOCK_DECL(int, rep_hist_get_circuit_handshake_assigned, (uint16_t type));
 
-void rep_hist_hs_v2_stats_init(time_t now);
-time_t rep_hist_hs_v2_stats_write(time_t 

[tor-commits] [torspec/master] dir-spec.txt: Introduce extrainfo fields for v3 stats.

2020-11-17 Thread dgoulet
commit 1337eb21c8d4368979fb207306e6fcb7ad006463
Author: George Kadianakis 
Date:   Tue Oct 27 11:04:00 2020 +0200

dir-spec.txt: Introduce extrainfo fields for v3 stats.
---
 dir-spec.txt | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/dir-spec.txt b/dir-spec.txt
index 1aca15b..858114d 100644
--- a/dir-spec.txt
+++ b/dir-spec.txt
@@ -1213,6 +1213,8 @@
 
 "hidserv-stats-end" -MM-DD HH:MM:SS (NSEC s) NL
 [At most once.]
+"hidserv-v3-stats-end" -MM-DD HH:MM:SS (NSEC s) NL
+[At most once.]
 
 -MM-DD HH:MM:SS defines the end of the included measurement
 interval of length NSEC seconds (86400 seconds by default).
@@ -1223,6 +1225,8 @@
 
 "hidserv-rend-relayed-cells" SP NUM SP key=val SP key=val ... NL
 [At most once.]
+"hidserv-rend-v3-relayed-cells" SP NUM SP key=val SP key=val ... NL
+[At most once.]
 
 Approximate number of RELAY cells seen in either direction on a
 circuit after receiving and successfully processing a RENDEZVOUS1
@@ -1241,6 +1245,8 @@
 
 "hidserv-dir-onions-seen" SP NUM SP key=val SP key=val ... NL
 [At most once.]
+"hidserv-dir-v3-onions-seen" SP NUM SP key=val SP key=val ... NL
+[At most once.]
 
 Approximate number of unique hidden-service identities seen in
 descriptors published to and accepted by this hidden-service



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Use CONST_TO_OR_CIRCUIT() in v2/v3 rend cell detection.

2020-11-17 Thread dgoulet
commit 7ae576edaf94159c824900ef09bee5bea99c8255
Author: George Kadianakis 
Date:   Tue Nov 3 17:36:18 2020 +0200

Use CONST_TO_OR_CIRCUIT() in v2/v3 rend cell detection.
---
 src/core/or/command.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/or/command.c b/src/core/or/command.c
index 35dadb9fc8..7767217275 100644
--- a/src/core/or/command.c
+++ b/src/core/or/command.c
@@ -597,19 +597,19 @@ command_process_relay_cell(cell_t *cell, channel_t *chan)
  onion service stats */
   if (options->HiddenServiceStatistics &&
   !CIRCUIT_IS_ORIGIN(circ) &&
-  TO_OR_CIRCUIT(circ)->circuit_carries_hs_traffic_stats) {
+  CONST_TO_OR_CIRCUIT(circ)->circuit_carries_hs_traffic_stats) {
 /** We need to figure out of this is a v2 or v3 RP circuit to count it
  *  appropriately. v2 services always use the TAP legacy handshake to
  *  connect to the RP; we use this feature to distinguish between v2/v3. */
 bool is_v2 = false;
-if (TO_OR_CIRCUIT(circ)->used_legacy_circuit_handshake) {
+if (CONST_TO_OR_CIRCUIT(circ)->used_legacy_circuit_handshake) {
   is_v2 = true;
-} else if (TO_OR_CIRCUIT(circ)->rend_splice) {
+} else if (CONST_TO_OR_CIRCUIT(circ)->rend_splice) {
   /* If this is a client->RP circuit we need to check the spliced circuit
* (which is the service->RP circuit) to see if it was using TAP and
* hence if it's a v2 circuit. That's because client->RP circuits can
* still use ntor even on v2; but service->RP will always use TAP. */
-  or_circuit_t *splice = TO_OR_CIRCUIT(circ)->rend_splice;
+  or_circuit_t *splice = CONST_TO_OR_CIRCUIT(circ)->rend_splice;
   if (splice->used_legacy_circuit_handshake) {
 is_v2 = true;
   }



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Add changes file for v3 metrics.

2020-11-17 Thread dgoulet
commit f2da7b05b0a8e6d353b94ea496f0ce99aa076ffa
Author: George Kadianakis 
Date:   Tue Oct 27 11:40:08 2020 +0200

Add changes file for v3 metrics.

Closes ticket #23126.
---
 changes/bug23126 | 4 
 1 file changed, 4 insertions(+)

diff --git a/changes/bug23126 b/changes/bug23126
new file mode 100644
index 00..76ba393205
--- /dev/null
+++ b/changes/bug23126
@@ -0,0 +1,4 @@
+  o Major features (statistics):
+- Relays will now also publish statistics about the number of v3 onion
+  services and volume of v3 onion service traffic, in the same manner they
+  already do for v2 onions.  Closes ticket 23126.
\ No newline at end of file



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Abstract v2/v3 "format stats to str" logic into a single function.

2020-11-17 Thread dgoulet
commit a96432ab06f2d6699b89ed522afd2661ca7e9860
Author: George Kadianakis 
Date:   Wed Oct 21 17:00:08 2020 +0300

Abstract v2/v3 "format stats to str" logic into a single function.
---
 src/feature/stats/rephist.c | 84 ++---
 src/feature/stats/rephist.h |  4 +--
 src/test/test_stats.c   |  2 +-
 3 files changed, 27 insertions(+), 63 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 91def19019..37250108d1 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1972,86 +1972,53 @@ rep_hist_hs_stats_term(void)
 #define ONIONS_SEEN_BIN_SIZE 8
 
 /** Allocate and return a string containing hidden service stats that
- *  are meant to be placed in the extra-info descriptor. */
-STATIC char *
-rep_hist_format_hs_v2_stats(time_t now)
-{
-  char t[ISO_TIME_LEN+1];
-  char *hs_v2_stats_string;
-  int64_t obfuscated_cells_seen;
-  int64_t obfuscated_onions_seen;
-
-  uint64_t rounded_cells_seen
-= round_uint64_to_next_multiple_of(hs_v2_stats->rp_v2_relay_cells_seen,
-   REND_CELLS_BIN_SIZE);
-  rounded_cells_seen = MIN(rounded_cells_seen, INT64_MAX);
-  obfuscated_cells_seen = add_laplace_noise((int64_t)rounded_cells_seen,
-  crypto_rand_double(),
-  REND_CELLS_DELTA_F, REND_CELLS_EPSILON);
-
-  uint64_t rounded_onions_seen =
-round_uint64_to_next_multiple_of((size_t)digestmap_size(
-
hs_v2_stats->v2_onions_seen_this_period),
- ONIONS_SEEN_BIN_SIZE);
-  rounded_onions_seen = MIN(rounded_onions_seen, INT64_MAX);
-  obfuscated_onions_seen = add_laplace_noise((int64_t)rounded_onions_seen,
-   crypto_rand_double(), ONIONS_SEEN_DELTA_F,
-   ONIONS_SEEN_EPSILON);
-
-  format_iso_time(t, now);
-  tor_asprintf(_v2_stats_string, "hidserv-stats-end %s (%d s)\n"
-   "hidserv-rend-relayed-cells %"PRId64" delta_f=%d "
-   "epsilon=%.2f bin_size=%d\n"
-   "hidserv-dir-onions-seen %"PRId64" delta_f=%d "
-"epsilon=%.2f bin_size=%d\n",
-   t, (unsigned) (now - start_of_hs_v2_stats_interval),
-   (obfuscated_cells_seen), REND_CELLS_DELTA_F,
-   REND_CELLS_EPSILON, REND_CELLS_BIN_SIZE,
-   (obfuscated_onions_seen), ONIONS_SEEN_DELTA_F,
-   ONIONS_SEEN_EPSILON, ONIONS_SEEN_BIN_SIZE);
-
-  return hs_v2_stats_string;
-}
-
-/** Allocate and return a string containing hidden service stats that
- *  are meant to be placed in the extra-info descriptor. */
+ *  are meant to be placed in the extra-info descriptor.
+ *
+ *  Function works for both v2 and v3 stats depending on is_v3. */
 STATIC char *
-rep_hist_format_hs_v3_stats(time_t now)
+rep_hist_format_hs_stats(time_t now, bool is_v3)
 {
   char t[ISO_TIME_LEN+1];
-  char *hs_v3_stats_string;
+  char *hs_stats_string;
   int64_t obfuscated_onions_seen, obfuscated_cells_seen;
 
+  uint64_t rp_cells_seen = is_v3 ?
+hs_v3_stats->rp_v3_relay_cells_seen : hs_v2_stats->rp_v2_relay_cells_seen;
+  size_t onions_seen = is_v3 ?
+digestmap_size(hs_v3_stats->v3_onions_seen_this_period) :
+digestmap_size(hs_v2_stats->v2_onions_seen_this_period);
+  time_t start_of_hs_stats_interval = is_v3 ?
+start_of_hs_v3_stats_interval : start_of_hs_v2_stats_interval;
+
   uint64_t rounded_cells_seen
-= round_uint64_to_next_multiple_of(hs_v3_stats->rp_v3_relay_cells_seen,
-   REND_CELLS_BIN_SIZE);
+= round_uint64_to_next_multiple_of(rp_cells_seen, REND_CELLS_BIN_SIZE);
   rounded_cells_seen = MIN(rounded_cells_seen, INT64_MAX);
   obfuscated_cells_seen = add_laplace_noise((int64_t)rounded_cells_seen,
   crypto_rand_double(),
   REND_CELLS_DELTA_F, REND_CELLS_EPSILON);
 
   uint64_t rounded_onions_seen =
-round_uint64_to_next_multiple_of((size_t)digestmap_size(
-
hs_v3_stats->v3_onions_seen_this_period),
- ONIONS_SEEN_BIN_SIZE);
+round_uint64_to_next_multiple_of(onions_seen, ONIONS_SEEN_BIN_SIZE);
   rounded_onions_seen = MIN(rounded_onions_seen, INT64_MAX);
   obfuscated_onions_seen = add_laplace_noise((int64_t)rounded_onions_seen,
crypto_rand_double(), ONIONS_SEEN_DELTA_F,
ONIONS_SEEN_EPSILON);
 
   format_iso_time(t, now);
-  tor_asprintf(_v3_stats_string, "hidserv-v3-stats-end %s (%d s)\n"
-   "hidserv-rend-v3-relayed-cells %"PRId64" delta_f=%d "
-   "epsilon=%.2f bin_size=%d\n"
-   "hidserv-dir-v3-onions-seen %"PRId64" delta_f=%d "
-   "epsilon=%.2f bin_size=%d\n",
-   t, 

[tor-commits] [tor/master] Write unittests for v3 metrics.

2020-11-17 Thread dgoulet
commit 131da887d75bd112e668db3c1695ad8cc5a76433
Author: George Kadianakis 
Date:   Wed Oct 21 14:17:30 2020 +0300

Write unittests for v3 metrics.
---
 src/feature/stats/rephist.c |   6 +--
 src/feature/stats/rephist.h |  11 ++--
 src/test/hs_test_helpers.c  |  19 +--
 src/test/hs_test_helpers.h  |   4 ++
 src/test/test_stats.c   | 124 
 5 files changed, 152 insertions(+), 12 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 24712707ca..ada19b447a 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1871,8 +1871,8 @@ rep_hist_reset_hs_v3_stats(time_t now)
  *  on the real network) and hence we don't want to collect statistics if it's
  *  not yet the time to do so.
  */
-static bool
-should_collect_v3_stats(void)
+MOCK_IMPL(STATIC bool,
+should_collect_v3_stats,(void))
 {
   return start_of_hs_v3_stats_interval <= approx_time();
 }
@@ -1973,7 +1973,7 @@ rep_hist_hs_stats_term(void)
 
 /** Allocate and return a string containing hidden service stats that
  *  are meant to be placed in the extra-info descriptor. */
-static char *
+STATIC char *
 rep_hist_format_hs_v2_stats(time_t now)
 {
   char t[ISO_TIME_LEN+1];
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index 3bb4f996a2..b2a4a5048d 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -117,6 +117,9 @@ typedef struct hs_v3_stats_t {
 
 STATIC char *rep_hist_format_hs_v2_stats(time_t now);
 STATIC char *rep_hist_format_hs_v3_stats(time_t now);
+
+MOCK_DECL(STATIC bool, should_collect_v3_stats,(void));
+
 #endif /* defined(REPHIST_PRIVATE) */
 
 /**
@@ -145,10 +148,10 @@ void rep_hist_prep_published_padding_counts(time_t now);
 void rep_hist_padding_count_timers(uint64_t num_timers);
 
 #ifdef TOR_UNIT_TESTS
-typedef struct hs_v2_stats_t hs_v2_stats_t;
-const hs_v2_stats_t *rep_hist_get_hs_v2_stats(void);
-typedef struct hs_v3_stats_t hs_v3_stats_t;
-const hs_v3_stats_t *rep_hist_get_hs_v3_stats(void);
+struct hs_v2_stats_t;
+const struct hs_v2_stats_t *rep_hist_get_hs_v2_stats(void);
+struct hs_v3_stats_t;
+const struct hs_v3_stats_t *rep_hist_get_hs_v3_stats(void);
 #endif
 
 #endif /* !defined(TOR_REPHIST_H) */
diff --git a/src/test/hs_test_helpers.c b/src/test/hs_test_helpers.c
index e9aafa4760..e1ecf9fe56 100644
--- a/src/test/hs_test_helpers.c
+++ b/src/test/hs_test_helpers.c
@@ -134,7 +134,8 @@ hs_helper_build_intro_point(const ed25519_keypair_t 
*signing_kp, time_t now,
  * points are added. */
 static hs_descriptor_t *
 hs_helper_build_hs_desc_impl(unsigned int no_ip,
- const ed25519_keypair_t *signing_kp)
+ const ed25519_keypair_t *signing_kp,
+ uint64_t rev_counter)
 {
   int ret;
   int i;
@@ -161,7 +162,7 @@ hs_helper_build_hs_desc_impl(unsigned int no_ip,
 _kp->pubkey, now, 3600,
 CERT_FLAG_INCLUDE_SIGNING_KEY);
   tt_assert(desc->plaintext_data.signing_key_cert);
-  desc->plaintext_data.revision_counter = 42;
+  desc->plaintext_data.revision_counter = rev_counter;
   desc->plaintext_data.lifetime_sec = 3 * 60 * 60;
 
   hs_get_subcredential(_kp->pubkey, _kp.pubkey,
@@ -226,18 +227,26 @@ 
hs_helper_get_subcred_from_identity_keypair(ed25519_keypair_t *signing_kp,
subcred_out);
 }
 
+/* Build a descriptor with a specific rev counter. */
+hs_descriptor_t *
+hs_helper_build_hs_desc_with_rev_counter(const ed25519_keypair_t *signing_kp,
+ uint64_t revision_counter)
+{
+  return hs_helper_build_hs_desc_impl(0, signing_kp, revision_counter);
+}
+
 /* Build a descriptor with introduction points. */
 hs_descriptor_t *
 hs_helper_build_hs_desc_with_ip(const ed25519_keypair_t *signing_kp)
 {
-  return hs_helper_build_hs_desc_impl(0, signing_kp);
+  return hs_helper_build_hs_desc_impl(0, signing_kp, 42);
 }
 
 /* Build a descriptor without any introduction points. */
 hs_descriptor_t *
 hs_helper_build_hs_desc_no_ip(const ed25519_keypair_t *signing_kp)
 {
-  return hs_helper_build_hs_desc_impl(1, signing_kp);
+  return hs_helper_build_hs_desc_impl(1, signing_kp, 42);
 }
 
 hs_descriptor_t *
@@ -247,7 +256,7 @@ hs_helper_build_hs_desc_with_client_auth(
 const ed25519_keypair_t *signing_kp)
 {
   curve25519_keypair_t auth_ephemeral_kp;
-  hs_descriptor_t *desc = hs_helper_build_hs_desc_impl(0, signing_kp);
+  hs_descriptor_t *desc = hs_helper_build_hs_desc_impl(0, signing_kp, 42);
   hs_desc_authorized_client_t *desc_client;
 
   /* The number of client authorized auth has tobe a multiple of
diff --git a/src/test/hs_test_helpers.h b/src/test/hs_test_helpers.h
index 23d11f2a4a..e22295b660 100644
--- a/src/test/hs_test_helpers.h
+++ b/src/test/hs_test_helpers.h
@@ -17,6 +17,10 @@ hs_descriptor_t *hs_helper_build_hs_desc_no_ip(
  const 

[tor-commits] [tor/master] Improve string formatting in rep_hist_format_hs_stats().

2020-11-17 Thread dgoulet
commit 810183aaf17aa23eb68260038345cb540a856f75
Author: George Kadianakis 
Date:   Tue Nov 3 17:42:36 2020 +0200

Improve string formatting in rep_hist_format_hs_stats().
---
 src/feature/stats/rephist.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 7b4bc97bda..e0d8669cba 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -2006,17 +2006,17 @@ rep_hist_format_hs_stats(time_t now, bool is_v3)
ONIONS_SEEN_EPSILON);
 
   format_iso_time(t, now);
-  tor_asprintf(_stats_string, "%s %s (%d s)\n"
+  tor_asprintf(_stats_string, "%s %s (%ld s)\n"
"%s %"PRId64" delta_f=%d epsilon=%.2f bin_size=%d\n"
"%s %"PRId64" delta_f=%d epsilon=%.2f bin_size=%d\n",
is_v3 ? "hidserv-v3-stats-end" : "hidserv-stats-end",
-   t, (unsigned) (now - start_of_hs_stats_interval),
+   t, now - start_of_hs_stats_interval,
is_v3 ?
 "hidserv-rend-v3-relayed-cells" : "hidserv-rend-relayed-cells",
-   (obfuscated_cells_seen), REND_CELLS_DELTA_F,
+   obfuscated_cells_seen, REND_CELLS_DELTA_F,
REND_CELLS_EPSILON, REND_CELLS_BIN_SIZE,
is_v3 ? "hidserv-dir-v3-onions-seen" :"hidserv-dir-onions-seen",
-   (obfuscated_onions_seen), ONIONS_SEEN_DELTA_F,
+   obfuscated_onions_seen, ONIONS_SEEN_DELTA_F,
ONIONS_SEEN_EPSILON, ONIONS_SEEN_BIN_SIZE);
 
   return hs_stats_string;



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Add more docs about the HSv3 stat collection period.

2020-11-17 Thread dgoulet
commit 0812ecd517af406aa82e5a5deddbbe799e9d8b49
Author: George Kadianakis 
Date:   Tue Nov 3 19:19:02 2020 +0200

Add more docs about the HSv3 stat collection period.
---
 src/feature/stats/rephist.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index e0d8669cba..1501e46b14 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1868,8 +1868,11 @@ rep_hist_reset_hs_v3_stats(time_t now)
 /** Return true if it's a good time to collect v3 stats.
  *
  *  v3 stats have a strict stats collection period (from 12:00UTC to 12:00UTC
- *  on the real network) and hence we don't want to collect statistics if it's
- *  not yet the time to do so.
+ *  on the real network). We don't want to collect statistics if (for example)
+ *  we just booted and it's 03:00UTC; we will wait until 12:00UTC before we
+ *  start collecting statistics to make sure that the final result represents
+ *  the whole collection period. This behavior is controlled by
+ *  rep_hist_hs_stats_init().
  */
 MOCK_IMPL(STATIC bool,
 should_collect_v3_stats,(void))



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Switch v3_onions_seen_this_period to digest256map_t.

2020-11-17 Thread dgoulet
commit 9a98d1da30a25b1f263859cae21a3c0863d8c91d
Author: George Kadianakis 
Date:   Tue Nov 3 17:34:46 2020 +0200

Switch v3_onions_seen_this_period to digest256map_t.
---
 src/feature/stats/rephist.c | 19 ++-
 src/feature/stats/rephist.h |  2 +-
 src/test/test_stats.c   | 15 ++-
 3 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 37250108d1..7b4bc97bda 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1828,7 +1828,7 @@ static hs_v3_stats_t *
 hs_v3_stats_new(void)
 {
   hs_v3_stats_t *new_hs_v3_stats = tor_malloc_zero(sizeof(hs_v3_stats_t));
-  new_hs_v3_stats->v3_onions_seen_this_period = digestmap_new();
+  new_hs_v3_stats->v3_onions_seen_this_period = digest256map_new();
 
   return new_hs_v3_stats;
 }
@@ -1844,7 +1844,7 @@ hs_v3_stats_free_(hs_v3_stats_t *victim_hs_v3_stats)
 return;
   }
 
-  digestmap_free(victim_hs_v3_stats->v3_onions_seen_this_period, NULL);
+  digest256map_free(victim_hs_v3_stats->v3_onions_seen_this_period, NULL);
   tor_free(victim_hs_v3_stats);
 }
 
@@ -1857,8 +1857,8 @@ rep_hist_reset_hs_v3_stats(time_t now)
 hs_v3_stats = hs_v3_stats_new();
   }
 
-  digestmap_free(hs_v3_stats->v3_onions_seen_this_period, NULL);
-  hs_v3_stats->v3_onions_seen_this_period = digestmap_new();
+  digest256map_free(hs_v3_stats->v3_onions_seen_this_period, NULL);
+  hs_v3_stats->v3_onions_seen_this_period = digest256map_new();
 
   hs_v3_stats->rp_v3_relay_cells_seen = 0;
 
@@ -1888,8 +1888,9 @@ rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t 
*blinded_key)
 return;
   }
 
-  bool seen_before = !!digestmap_get(hs_v3_stats->v3_onions_seen_this_period,
- (char*)blinded_key);
+  bool seen_before =
+!!digest256map_get(hs_v3_stats->v3_onions_seen_this_period,
+   blinded_key);
 
   log_info(LD_GENERAL, "Considering v3 descriptor with %s (%sseen before)",
safe_str(hex_str((char*)blinded_key, 32)),
@@ -1897,8 +1898,8 @@ rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t 
*blinded_key)
 
   /* Count it if we haven't seen it before. */
   if (!seen_before) {
-digestmap_set(hs_v3_stats->v3_onions_seen_this_period,
-  (char*)blinded_key, (void*)(uintptr_t)1);
+digest256map_set(hs_v3_stats->v3_onions_seen_this_period,
+  blinded_key, (void*)(uintptr_t)1);
   }
 }
 
@@ -1985,7 +1986,7 @@ rep_hist_format_hs_stats(time_t now, bool is_v3)
   uint64_t rp_cells_seen = is_v3 ?
 hs_v3_stats->rp_v3_relay_cells_seen : hs_v2_stats->rp_v2_relay_cells_seen;
   size_t onions_seen = is_v3 ?
-digestmap_size(hs_v3_stats->v3_onions_seen_this_period) :
+digest256map_size(hs_v3_stats->v3_onions_seen_this_period) :
 digestmap_size(hs_v2_stats->v2_onions_seen_this_period);
   time_t start_of_hs_stats_interval = is_v3 ?
 start_of_hs_v3_stats_interval : start_of_hs_v2_stats_interval;
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index a2caa4fc15..de27b16ae0 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -113,7 +113,7 @@ typedef struct hs_v3_stats_t {
 
   /* The number of unique v3 onion descriptors (actually, unique v3 blind keys)
* we've seen during the measurement period */
-  digestmap_t *v3_onions_seen_this_period;
+  digest256map_t *v3_onions_seen_this_period;
 } hs_v3_stats_t;
 
 MOCK_DECL(STATIC bool, should_collect_v3_stats,(void));
diff --git a/src/test/test_stats.c b/src/test/test_stats.c
index dc02c9e784..64d89cf1e9 100644
--- a/src/test/test_stats.c
+++ b/src/test/test_stats.c
@@ -528,7 +528,8 @@ test_rephist_v3_onions(void *arg)
 
   /* HS stats should be zero here */
   hs_v3_stats = rep_hist_get_hs_v3_stats();
-  tt_int_op(digestmap_size(hs_v3_stats->v3_onions_seen_this_period), OP_EQ, 0);
+  tt_int_op(digest256map_size(hs_v3_stats->v3_onions_seen_this_period),
+OP_EQ, 0);
 
   /* Generate a valid descriptor */
   ret = ed25519_keypair_generate(_kp1, 0);
@@ -542,7 +543,8 @@ test_rephist_v3_onions(void *arg)
   ret = hs_cache_store_as_dir(desc1_str);
   tt_int_op(ret, OP_EQ, 0);
   hs_v3_stats = rep_hist_get_hs_v3_stats();
-  tt_int_op(digestmap_size(hs_v3_stats->v3_onions_seen_this_period), OP_EQ, 1);
+  tt_int_op(digest256map_size(hs_v3_stats->v3_onions_seen_this_period),
+OP_EQ, 1);
 
   /* cleanup */
   hs_descriptor_free(desc1);
@@ -560,7 +562,8 @@ test_rephist_v3_onions(void *arg)
   ret = hs_cache_store_as_dir(desc1_str);
   tt_int_op(ret, OP_EQ, 0);
   hs_v3_stats = rep_hist_get_hs_v3_stats();
-  tt_int_op(digestmap_size(hs_v3_stats->v3_onions_seen_this_period), OP_EQ, 2);
+  tt_int_op(digest256map_size(hs_v3_stats->v3_onions_seen_this_period),
+OP_EQ, 2);
 
   /* Check that storing the same descriptor twice does not work */
   ret = hs_cache_store_as_dir(desc1_str);
@@ -580,7 +583,8 @@ test_rephist_v3_onions(void *arg)
   

[tor-commits] [tor/master] Implement support for "v3 rend traffic" stat.

2020-11-17 Thread dgoulet
commit 3cbc513ae767aa872f690ab23f94535aa121975d
Author: George Kadianakis 
Date:   Wed Oct 21 13:50:32 2020 +0300

Implement support for "v3 rend traffic" stat.
---
 src/core/or/command.c   | 27 +--
 src/core/or/or_circuit_st.h |  6 ++
 src/feature/stats/rephist.c | 14 ++
 src/feature/stats/rephist.h |  2 +-
 4 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/src/core/or/command.c b/src/core/or/command.c
index 9226309ff7..35dadb9fc8 100644
--- a/src/core/or/command.c
+++ b/src/core/or/command.c
@@ -331,6 +331,13 @@ command_process_create_cell(cell_t *cell, channel_t *chan)
 return;
   }
 
+  /* Mark whether this circuit used TAP in case we need to use this
+   * information for onion service statistics later on. */
+  if (create_cell->handshake_type == ONION_HANDSHAKE_TYPE_FAST ||
+  create_cell->handshake_type == ONION_HANDSHAKE_TYPE_TAP) {
+circ->used_legacy_circuit_handshake = true;
+  }
+
   if (!channel_is_client(chan)) {
 /* remember create types we've seen, but don't remember them from
  * clients, to be extra conservative about client statistics. */
@@ -587,11 +594,27 @@ command_process_relay_cell(cell_t *cell, channel_t *chan)
   }
 
   /* If this is a cell in an RP circuit, count it as part of the
- hidden service stats */
+ onion service stats */
   if (options->HiddenServiceStatistics &&
   !CIRCUIT_IS_ORIGIN(circ) &&
   TO_OR_CIRCUIT(circ)->circuit_carries_hs_traffic_stats) {
-rep_hist_seen_new_rp_cell();
+/** We need to figure out of this is a v2 or v3 RP circuit to count it
+ *  appropriately. v2 services always use the TAP legacy handshake to
+ *  connect to the RP; we use this feature to distinguish between v2/v3. */
+bool is_v2 = false;
+if (TO_OR_CIRCUIT(circ)->used_legacy_circuit_handshake) {
+  is_v2 = true;
+} else if (TO_OR_CIRCUIT(circ)->rend_splice) {
+  /* If this is a client->RP circuit we need to check the spliced circuit
+   * (which is the service->RP circuit) to see if it was using TAP and
+   * hence if it's a v2 circuit. That's because client->RP circuits can
+   * still use ntor even on v2; but service->RP will always use TAP. */
+  or_circuit_t *splice = TO_OR_CIRCUIT(circ)->rend_splice;
+  if (splice->used_legacy_circuit_handshake) {
+is_v2 = true;
+  }
+}
+rep_hist_seen_new_rp_cell(is_v2);
   }
 }
 
diff --git a/src/core/or/or_circuit_st.h b/src/core/or/or_circuit_st.h
index 4e17b1c143..4da9ce 100644
--- a/src/core/or/or_circuit_st.h
+++ b/src/core/or/or_circuit_st.h
@@ -63,6 +63,12 @@ struct or_circuit_t {
*  statistics. */
   unsigned int circuit_carries_hs_traffic_stats : 1;
 
+  /** True iff this circuit was made with a CREATE_FAST cell, or a CREATE[2]
+   * cell with a TAP handshake. If this is the case and this is a rend circuit,
+   * this is a v2 circuit, otherwise if this is a rend circuit it's a v3
+   * circuit. */
+  bool used_legacy_circuit_handshake;
+
   /** Number of cells that were removed from circuit queue; reset every
* time when writing buffer stats to disk. */
   uint32_t processed_cells;
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 5858f14245..2ad86ff6d9 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1932,6 +1932,20 @@ rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t 
*blinded_key)
   }
 }
 
+/** We saw a new HS relay cell: count it!
+ *  If is_v2 is set then it's a v2 RP cell, otherwise it's a v3. */
+void
+rep_hist_seen_new_rp_cell(bool is_v2)
+{
+  log_debug(LD_GENERAL, "New RP cell (%d)", is_v2);
+
+  if (is_v2 && hs_v2_stats) {
+hs_v2_stats->rp_v2_relay_cells_seen++;
+  } else if (!is_v2 && hs_v3_stats && should_collect_v3_stats()) {
+hs_v3_stats->rp_v3_relay_cells_seen++;
+  }
+}
+
 /* The number of cells that are supposed to be hidden from the adversary
  * by adding noise from the Laplace distribution.  This value, divided by
  * EPSILON, is Laplace parameter b. It must be greather than 0. */
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index 5873594781..3bb4f996a2 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -66,7 +66,7 @@ MOCK_DECL(int, rep_hist_get_circuit_handshake_assigned, 
(uint16_t type));
 void rep_hist_hs_v2_stats_init(time_t now);
 time_t rep_hist_hs_v2_stats_write(time_t now);
 char *rep_hist_get_hs_v2_stats_string(void);
-void rep_hist_seen_new_rp_cell(void);
+void rep_hist_seen_new_rp_cell(bool is_v2);
 void rep_hist_hsdir_stored_maybe_new_v2_onion(const crypto_pk_t *pubkey);
 
 time_t rep_hist_hs_v3_stats_write(time_t now);



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Extend get_voting_interval() so that it's callable by relays.

2020-11-17 Thread dgoulet
commit d0be2ae7f99fe1fe4d97f30b0ea565930f63c698
Author: George Kadianakis 
Date:   Mon Nov 2 12:42:08 2020 +0200

Extend get_voting_interval() so that it's callable by relays.

In the past, only authorities and clients had to use that function because 
of
the SRV subsystem. However, because of its use in rep_hist_hs_stats_init() 
it
will now also be used by relays when bootstrapping without a consensus. 
Make it
do something sensible.

Another approach (instead of using magic values) would be to wait
initialization of HSv3 stats until we get a consensus but that seems messy 
to
schedule.

Another approach would be to make dirauth_sched_get_configured_interval() 
also
work for relays (particularly when TestingNetwork is enabled), but that also
seems a good amount of work.
---
 src/feature/hs_common/shared_random_client.c | 21 +++--
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/feature/hs_common/shared_random_client.c 
b/src/feature/hs_common/shared_random_client.c
index c2ea5afe32..2c7d6c8d90 100644
--- a/src/feature/hs_common/shared_random_client.c
+++ b/src/feature/hs_common/shared_random_client.c
@@ -33,12 +33,11 @@ srv_to_control_string(const sr_srv_t *srv)
 }
 
 /**
- * If we have no consensus and we are not an authority, assume that this is
- * the voting interval.  We should never actually use this: only authorities
- * should be trying to figure out the schedule when they don't have a
- * consensus.
- **/
+ * If we have no consensus and we are not an authority, assume that this is the
+ * voting interval. This can be used while bootstrapping as a relay and we are
+ * asked to initialize HS stats (see rep_hist_hs_stats_init()) */
 #define DEFAULT_NETWORK_VOTING_INTERVAL (3600)
+#define TESTING_DEFAULT_NETWORK_VOTING_INTERVAL (20)
 
 /* This is an unpleasing workaround for tests.  Our unit tests assume that we
  * are scheduling all of our shared random stuff as if we were a directory
@@ -69,11 +68,13 @@ get_voting_interval(void)
  * It's better than falling back to the non-consensus case. */
 interval = (int)(consensus->fresh_until - consensus->valid_after);
   } else {
-/* We should never be reaching this point, since a client should never
- * call this code unless they have some kind of a consensus. All we can
- * do is hope that this network is using the default voting interval. */
-tor_assert_nonfatal_unreached_once();
-interval = DEFAULT_NETWORK_VOTING_INTERVAL;
+/* We can reach this as a relay when bootstrapping and we are asked to
+ * initialize HS stats (see rep_hist_hs_stats_init()). */
+if (get_options()->TestingTorNetwork) {
+  interval = TESTING_DEFAULT_NETWORK_VOTING_INTERVAL;
+} else {
+  interval = DEFAULT_NETWORK_VOTING_INTERVAL;
+}
   }
   tor_assert(interval > 0);
   return interval;



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Introduce v3 stat formatting functions.

2020-11-17 Thread dgoulet
commit 5c00bee1b1cde4bb77a2e3fa1f5110850ddede6e
Author: George Kadianakis 
Date:   Wed Oct 21 14:43:29 2020 +0300

Introduce v3 stat formatting functions.

They will be merged with the v2 ones in later commits.
---
 src/feature/stats/rephist.c | 76 +
 1 file changed, 76 insertions(+)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 7f5ec93597..24712707ca 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -2048,6 +2048,82 @@ rep_hist_hs_v2_stats_write(time_t now)
   return start_of_hs_v2_stats_interval + WRITE_STATS_INTERVAL;
 }
 
+/** Allocate and return a string containing hidden service stats that
+ *  are meant to be placed in the extra-info descriptor. */
+STATIC char *
+rep_hist_format_hs_v3_stats(time_t now)
+{
+  char t[ISO_TIME_LEN+1];
+  char *hs_v3_stats_string;
+  int64_t obfuscated_onions_seen, obfuscated_cells_seen;
+
+  uint64_t rounded_cells_seen
+= round_uint64_to_next_multiple_of(hs_v3_stats->rp_v3_relay_cells_seen,
+   REND_CELLS_BIN_SIZE);
+  rounded_cells_seen = MIN(rounded_cells_seen, INT64_MAX);
+  obfuscated_cells_seen = add_laplace_noise((int64_t)rounded_cells_seen,
+  crypto_rand_double(),
+  REND_CELLS_DELTA_F, REND_CELLS_EPSILON);
+
+  uint64_t rounded_onions_seen =
+round_uint64_to_next_multiple_of((size_t)digestmap_size(
+
hs_v3_stats->v3_onions_seen_this_period),
+ ONIONS_SEEN_BIN_SIZE);
+  rounded_onions_seen = MIN(rounded_onions_seen, INT64_MAX);
+  obfuscated_onions_seen = add_laplace_noise((int64_t)rounded_onions_seen,
+   crypto_rand_double(), ONIONS_SEEN_DELTA_F,
+   ONIONS_SEEN_EPSILON);
+
+  format_iso_time(t, now);
+  tor_asprintf(_v3_stats_string, "hidserv-v3-stats-end %s (%d s)\n"
+   "hidserv-rend-v3-relayed-cells %"PRId64" delta_f=%d "
+   "epsilon=%.2f bin_size=%d\n"
+   "hidserv-dir-v3-onions-seen %"PRId64" delta_f=%d "
+   "epsilon=%.2f bin_size=%d\n",
+   t, (unsigned) (now - start_of_hs_v3_stats_interval),
+   (obfuscated_cells_seen), REND_CELLS_DELTA_F,
+   REND_CELLS_EPSILON, REND_CELLS_BIN_SIZE,
+   (obfuscated_onions_seen), ONIONS_SEEN_DELTA_F,
+   ONIONS_SEEN_EPSILON, ONIONS_SEEN_BIN_SIZE);
+
+  return hs_v3_stats_string;
+}
+
+/** If 24 hours have passed since the beginning of the current HS
+ * stats period, write buffer stats to $DATADIR/stats/hidserv-v3-stats
+ * (possibly overwriting an existing file) and reset counters.  Return
+ * when we would next want to write buffer stats or 0 if we never want to
+ * write. */
+time_t
+rep_hist_hs_v3_stats_write(time_t now)
+{
+  char *str = NULL;
+
+  if (!start_of_hs_v3_stats_interval) {
+return 0; /* Not initialized. */
+  }
+
+  if (start_of_hs_v3_stats_interval + WRITE_STATS_INTERVAL > now) {
+goto done; /* Not ready to write */
+  }
+
+  /* Generate history string. */
+  str = rep_hist_format_hs_v3_stats(now);
+
+  /* Reset HS history. */
+  rep_hist_reset_hs_v3_stats(now);
+
+  /* Try to write to disk. */
+  if (!check_or_create_data_subdir("stats")) {
+write_to_data_subdir("stats", "hidserv-v3-stats", str,
+ "hidden service stats");
+  }
+
+ done:
+  tor_free(str);
+  return start_of_hs_v3_stats_interval + WRITE_STATS_INTERVAL;
+}
+
 static uint64_t link_proto_count[MAX_LINK_PROTO+1][2];
 
 /** Note that we negotiated link protocol version link_proto, on



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Make room for v3: Complete move from hs_stats_t to hs_v2_stats_t.

2020-11-17 Thread dgoulet
commit 5ed7fcec41db16820c3777451d083d0d74f124ce
Author: George Kadianakis 
Date:   Mon Oct 26 18:27:16 2020 +0200

Make room for v3: Complete move from hs_stats_t to hs_v2_stats_t.
---
 src/feature/stats/rephist.c | 31 +++
 src/feature/stats/rephist.h | 40 ++--
 2 files changed, 53 insertions(+), 18 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 739ead195f..bde65ea9d9 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1712,20 +1712,11 @@ rep_hist_log_circuit_handshake_stats(time_t now)
  * not collecting hidden service statistics. */
 static time_t start_of_hs_v2_stats_interval;
 
-/** Carries the various hidden service statistics, and any other
- *  information needed. */
-typedef struct hs_v2_stats_t {
-  /** How many relay cells have we seen as rendezvous points? */
-  uint64_t rp_relay_cells_seen;
-
-  /** Set of unique public key digests we've seen this stat period
-   * (could also be implemented as sorted smartlist). */
-  digestmap_t *v2_onions_seen_this_period;
-} hs_v2_stats_t;
-
-/** Our statistics structure singleton. */
+/** Our v2 statistics structure singleton. */
 static hs_v2_stats_t *hs_v2_stats = NULL;
 
+/** HSv2 stats */
+
 /** Allocate, initialize and return an hs_v2_stats_t structure. */
 static hs_v2_stats_t *
 hs_v2_stats_new(void)
@@ -1771,7 +1762,7 @@ rep_hist_reset_hs_v2_stats(time_t now)
 hs_v2_stats = hs_v2_stats_new();
   }
 
-  hs_v2_stats->rp_relay_cells_seen = 0;
+  hs_v2_stats->rp_v2_relay_cells_seen = 0;
 
   digestmap_free(hs_v2_stats->v2_onions_seen_this_period, NULL);
   hs_v2_stats->v2_onions_seen_this_period = digestmap_new();
@@ -1861,7 +1852,7 @@ rep_hist_format_hs_v2_stats(time_t now)
   int64_t obfuscated_onions_seen;
 
   uint64_t rounded_cells_seen
-= round_uint64_to_next_multiple_of(hs_v2_stats->rp_relay_cells_seen,
+= round_uint64_to_next_multiple_of(hs_v2_stats->rp_v2_relay_cells_seen,
REND_CELLS_BIN_SIZE);
   rounded_cells_seen = MIN(rounded_cells_seen, INT64_MAX);
   obfuscated_cells_seen = add_laplace_noise((int64_t)rounded_cells_seen,
@@ -1886,8 +1877,7 @@ rep_hist_format_hs_v2_stats(time_t now)
t, (unsigned) (now - start_of_hs_v2_stats_interval),
(obfuscated_cells_seen), REND_CELLS_DELTA_F,
REND_CELLS_EPSILON, REND_CELLS_BIN_SIZE,
-   (obfuscated_onions_seen),
-   ONIONS_SEEN_DELTA_F,
+   (obfuscated_onions_seen), ONIONS_SEEN_DELTA_F,
ONIONS_SEEN_EPSILON, ONIONS_SEEN_BIN_SIZE);
 
   return hs_v2_stats_string;
@@ -2155,3 +2145,12 @@ rep_hist_free_all(void)
   tor_assert_nonfatal(rephist_total_alloc == 0);
   tor_assert_nonfatal_once(rephist_total_num == 0);
 }
+
+#ifdef TOR_UNIT_TESTS
+/* only exists for unit tests: get HSv2 stats object */
+const hs_v2_stats_t *
+rep_hist_get_hs_v2_stats(void)
+{
+  return hs_v2_stats;
+}
+
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index abcb70249f..d5ad21e228 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -64,11 +64,10 @@ MOCK_DECL(int, rep_hist_get_circuit_handshake_requested, 
(uint16_t type));
 MOCK_DECL(int, rep_hist_get_circuit_handshake_assigned, (uint16_t type));
 
 void rep_hist_hs_v2_stats_init(time_t now);
-void rep_hist_hs_v2_stats_term(void);
 time_t rep_hist_hs_v2_stats_write(time_t now);
 char *rep_hist_get_hs_v2_stats_string(void);
 void rep_hist_seen_new_rp_cell(void);
-void rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey);
+void rep_hist_hsdir_stored_maybe_new_v2_onion(const crypto_pk_t *pubkey);
 
 void rep_hist_free_all(void);
 
@@ -83,6 +82,38 @@ extern int 
onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
 extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
 #endif
 
+#ifdef REPHIST_PRIVATE
+/** Carries the various hidden service statistics, and any other
+ *  information needed. */
+typedef struct hs_v2_stats_t {
+  /** How many v2 relay cells have we seen as rendezvous points? */
+  uint64_t rp_v2_relay_cells_seen;
+
+  /** Set of unique public key digests we've seen this stat period
+   * (could also be implemented as sorted smartlist). */
+  digestmap_t *v2_onions_seen_this_period;
+} hs_v2_stats_t;
+
+/** Structure that contains the various statistics we keep about v3
+ *  services.
+ *
+ *  Because of the time period logic of v3 services, v3 statistics are more
+ *  sensitive to time than v2 stats. For this reason, we collect v3
+ *  statistics strictly from 12:00UTC to 12:00UTC as dictated by
+ *  'start_of_hs_v3_stats_interval'.
+ **/
+typedef struct hs_v3_stats_t {
+  /** How many v3 relay cells have we seen as a rendezvous point? */
+  uint64_t rp_v3_relay_cells_seen;
+
+  /* The number of unique v3 onion descriptors (actually, unique v3 blind keys)
+   * we've seen during the measurement period */
+  digestmap_t 

[tor-commits] [tor/master] Make room for v3: s/hs_stats/hs_v2_stats/

2020-11-17 Thread dgoulet
commit 1de7843658e00baa2271048fb3e3e436639e70c4
Author: George Kadianakis 
Date:   Mon Oct 26 18:19:25 2020 +0200

Make room for v3: s/hs_stats/hs_v2_stats/
---
 src/core/mainloop/mainloop.c |  2 +-
 src/feature/stats/rephist.c  | 98 ++--
 src/feature/stats/rephist.h  |  8 ++--
 3 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c
index c75039b378..4b4ac5c4a7 100644
--- a/src/core/mainloop/mainloop.c
+++ b/src/core/mainloop/mainloop.c
@@ -1937,7 +1937,7 @@ write_stats_file_callback(time_t now, const or_options_t 
*options)
   next_time_to_write_stats_files = next_write;
   }
   if (options->HiddenServiceStatistics) {
-time_t next_write = rep_hist_hs_stats_write(now);
+time_t next_write = rep_hist_hs_v2_stats_write(now);
 if (next_write && next_write < next_time_to_write_stats_files)
   next_time_to_write_stats_files = next_write;
   }
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index b66eed80ef..739ead195f 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1710,92 +1710,92 @@ rep_hist_log_circuit_handshake_stats(time_t now)
 
 /** Start of the current hidden service stats interval or 0 if we're
  * not collecting hidden service statistics. */
-static time_t start_of_hs_stats_interval;
+static time_t start_of_hs_v2_stats_interval;
 
 /** Carries the various hidden service statistics, and any other
  *  information needed. */
-typedef struct hs_stats_t {
+typedef struct hs_v2_stats_t {
   /** How many relay cells have we seen as rendezvous points? */
   uint64_t rp_relay_cells_seen;
 
   /** Set of unique public key digests we've seen this stat period
* (could also be implemented as sorted smartlist). */
   digestmap_t *v2_onions_seen_this_period;
-} hs_stats_t;
+} hs_v2_stats_t;
 
 /** Our statistics structure singleton. */
-static hs_stats_t *hs_stats = NULL;
+static hs_v2_stats_t *hs_v2_stats = NULL;
 
-/** Allocate, initialize and return an hs_stats_t structure. */
-static hs_stats_t *
-hs_stats_new(void)
+/** Allocate, initialize and return an hs_v2_stats_t structure. */
+static hs_v2_stats_t *
+hs_v2_stats_new(void)
 {
-  hs_stats_t *new_hs_stats = tor_malloc_zero(sizeof(hs_stats_t));
-  new_hs_stats->v2_onions_seen_this_period = digestmap_new();
+  hs_v2_stats_t *new_hs_v2_stats = tor_malloc_zero(sizeof(hs_v2_stats_t));
+  new_hs_v2_stats->v2_onions_seen_this_period = digestmap_new();
 
-  return new_hs_stats;
+  return new_hs_v2_stats;
 }
 
-#define hs_stats_free(val) \
-  FREE_AND_NULL(hs_stats_t, hs_stats_free_, (val))
+#define hs_v2_stats_free(val) \
+  FREE_AND_NULL(hs_v2_stats_t, hs_v2_stats_free_, (val))
 
-/** Free an hs_stats_t structure. */
+/** Free an hs_v2_stats_t structure. */
 static void
-hs_stats_free_(hs_stats_t *victim_hs_stats)
+hs_v2_stats_free_(hs_v2_stats_t *victim_hs_v2_stats)
 {
-  if (!victim_hs_stats) {
+  if (!victim_hs_v2_stats) {
 return;
   }
 
-  digestmap_free(victim_hs_stats->v2_onions_seen_this_period, NULL);
-  tor_free(victim_hs_stats);
+  digestmap_free(victim_hs_v2_stats->v2_onions_seen_this_period, NULL);
+  tor_free(victim_hs_v2_stats);
 }
 
 /** Initialize hidden service statistics. */
 void
-rep_hist_hs_stats_init(time_t now)
+rep_hist_hs_v2_stats_init(time_t now)
 {
-  if (!hs_stats) {
-hs_stats = hs_stats_new();
+  if (!hs_v2_stats) {
+hs_v2_stats = hs_v2_stats_new();
   }
 
-  start_of_hs_stats_interval = now;
+  start_of_hs_v2_stats_interval = now;
 }
 
 /** Clear history of hidden service statistics and set the measurement
  * interval start to now. */
 static void
-rep_hist_reset_hs_stats(time_t now)
+rep_hist_reset_hs_v2_stats(time_t now)
 {
-  if (!hs_stats) {
-hs_stats = hs_stats_new();
+  if (!hs_v2_stats) {
+hs_v2_stats = hs_v2_stats_new();
   }
 
-  hs_stats->rp_relay_cells_seen = 0;
+  hs_v2_stats->rp_relay_cells_seen = 0;
 
-  digestmap_free(hs_stats->v2_onions_seen_this_period, NULL);
-  hs_stats->v2_onions_seen_this_period = digestmap_new();
+  digestmap_free(hs_v2_stats->v2_onions_seen_this_period, NULL);
+  hs_v2_stats->v2_onions_seen_this_period = digestmap_new();
 
-  start_of_hs_stats_interval = now;
+  start_of_hs_v2_stats_interval = now;
 }
 
 /** Stop collecting hidden service stats in a way that we can re-start
  * doing so in rep_hist_buffer_stats_init(). */
 void
-rep_hist_hs_stats_term(void)
+rep_hist_hs_v2_stats_term(void)
 {
-  rep_hist_reset_hs_stats(0);
+  rep_hist_reset_hs_v2_stats(0);
 }
 
 /** We saw a new HS relay cell, Count it! */
 void
 rep_hist_seen_new_rp_cell(void)
 {
-  if (!hs_stats) {
+  if (!hs_v2_stats) {
 return; // We're not collecting stats
   }
 
-  hs_stats->rp_relay_cells_seen++;
+  hs_v2_stats->rp_relay_cells_seen++;
 }
 
 /** As HSDirs, we saw another hidden service with public key
@@ -1806,7 +1806,7 @@ rep_hist_hsdir_stored_maybe_new_v2_onion(const 
crypto_pk_t *pubkey)
 {
   char 

[tor-commits] [tor/master] Make room for v3: Rename rephist objects to signify they are v2-only.

2020-11-17 Thread dgoulet
commit 62d682e62422eecd40f2e2ba4d222bb2795dad53
Author: George Kadianakis 
Date:   Wed Jul 1 13:29:33 2020 +0300

Make room for v3: Rename rephist objects to signify they are v2-only.
---
 src/feature/rend/rendcache.c |  2 +-
 src/feature/stats/rephist.c  | 18 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/feature/rend/rendcache.c b/src/feature/rend/rendcache.c
index 53fec7532f..715e70eba7 100644
--- a/src/feature/rend/rendcache.c
+++ b/src/feature/rend/rendcache.c
@@ -718,7 +718,7 @@ rend_cache_store_v2_desc_as_dir(const char *desc)
  safe_str(desc_id_base32), (int)encoded_size);
 /* Statistics: Note down this potentially new HS. */
 if (options->HiddenServiceStatistics) {
-  rep_hist_stored_maybe_new_hs(e->parsed->pk);
+  rep_hist_hsdir_stored_maybe_new_v2_onion(e->parsed->pk);
 }
 
 number_stored++;
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index b6730e1226..b66eed80ef 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1720,7 +1720,7 @@ typedef struct hs_stats_t {
 
   /** Set of unique public key digests we've seen this stat period
* (could also be implemented as sorted smartlist). */
-  digestmap_t *onions_seen_this_period;
+  digestmap_t *v2_onions_seen_this_period;
 } hs_stats_t;
 
 /** Our statistics structure singleton. */
@@ -1731,7 +1731,7 @@ static hs_stats_t *
 hs_stats_new(void)
 {
   hs_stats_t *new_hs_stats = tor_malloc_zero(sizeof(hs_stats_t));
-  new_hs_stats->onions_seen_this_period = digestmap_new();
+  new_hs_stats->v2_onions_seen_this_period = digestmap_new();
 
   return new_hs_stats;
 }
@@ -1747,7 +1747,7 @@ hs_stats_free_(hs_stats_t *victim_hs_stats)
 return;
   }
 
-  digestmap_free(victim_hs_stats->onions_seen_this_period, NULL);
+  digestmap_free(victim_hs_stats->v2_onions_seen_this_period, NULL);
   tor_free(victim_hs_stats);
 }
 
@@ -1773,8 +1773,8 @@ rep_hist_reset_hs_stats(time_t now)
 
   hs_stats->rp_relay_cells_seen = 0;
 
-  digestmap_free(hs_stats->onions_seen_this_period, NULL);
-  hs_stats->onions_seen_this_period = digestmap_new();
+  digestmap_free(hs_stats->v2_onions_seen_this_period, NULL);
+  hs_stats->v2_onions_seen_this_period = digestmap_new();
 
   start_of_hs_stats_interval = now;
 }
@@ -1802,7 +1802,7 @@ rep_hist_seen_new_rp_cell(void)
  *  pubkey. Check whether we have counted it before, if not
  *  count it now! */
 void
-rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey)
+rep_hist_hsdir_stored_maybe_new_v2_onion(const crypto_pk_t *pubkey)
 {
   char pubkey_hash[DIGEST_LEN];
 
@@ -1820,9 +1820,9 @@ rep_hist_stored_maybe_new_hs(const crypto_pk_t *pubkey)
 
   /* Check if this is the first time we've seen this hidden
  service. If it is, count it as new. */
-  if (!digestmap_get(hs_stats->onions_seen_this_period,
+  if (!digestmap_get(hs_stats->v2_onions_seen_this_period,
  pubkey_hash)) {
-digestmap_set(hs_stats->onions_seen_this_period,
+digestmap_set(hs_stats->v2_onions_seen_this_period,
   pubkey_hash, (void*)(uintptr_t)1);
   }
 }
@@ -1870,7 +1870,7 @@ rep_hist_format_hs_stats(time_t now)
 
   uint64_t rounded_onions_seen =
 round_uint64_to_next_multiple_of((size_t)digestmap_size(
-hs_stats->onions_seen_this_period),
+hs_stats->v2_onions_seen_this_period),
  ONIONS_SEEN_BIN_SIZE);
   rounded_onions_seen = MIN(rounded_onions_seen, INT64_MAX);
   obfuscated_onions_seen = add_laplace_noise((int64_t)rounded_onions_seen,



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Introduce v3_stats_t structure and some of its methods.

2020-11-17 Thread dgoulet
commit bd28551763bd008be5a6f676410d9b6b1d011bf6
Author: George Kadianakis 
Date:   Wed Oct 21 14:32:30 2020 +0300

Introduce v3_stats_t structure and some of its methods.
---
 src/app/main/main.c  |  2 +
 src/core/mainloop/mainloop.c |  4 ++
 src/feature/hs/hs_cache.c|  1 +
 src/feature/relay/router.c   |  5 +++
 src/feature/stats/rephist.c  | 98 
 src/feature/stats/rephist.h  |  8 +++-
 6 files changed, 117 insertions(+), 1 deletion(-)

diff --git a/src/app/main/main.c b/src/app/main/main.c
index ff530c0ad0..c2ced30851 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -1070,6 +1070,7 @@ sandbox_init_filter(void)
 OPEN_DATADIR2_SUFFIX("stats", "buffer-stats", ".tmp");
 OPEN_DATADIR2_SUFFIX("stats", "conn-stats", ".tmp");
 OPEN_DATADIR2_SUFFIX("stats", "hidserv-stats", ".tmp");
+OPEN_DATADIR2_SUFFIX("stats", "hidserv-v3-stats", ".tmp");
 
 OPEN_DATADIR("approved-routers");
 OPEN_DATADIR_SUFFIX("fingerprint", ".tmp");
@@ -1095,6 +1096,7 @@ sandbox_init_filter(void)
 RENAME_SUFFIX2("stats", "buffer-stats", ".tmp");
 RENAME_SUFFIX2("stats", "conn-stats", ".tmp");
 RENAME_SUFFIX2("stats", "hidserv-stats", ".tmp");
+RENAME_SUFFIX2("stats", "hidserv-v3-stats", ".tmp");
 RENAME_SUFFIX("hashed-fingerprint", ".tmp");
 RENAME_SUFFIX("router-stability", ".tmp");
 
diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c
index 4b4ac5c4a7..2a3f22 100644
--- a/src/core/mainloop/mainloop.c
+++ b/src/core/mainloop/mainloop.c
@@ -1940,6 +1940,10 @@ write_stats_file_callback(time_t now, const or_options_t 
*options)
 time_t next_write = rep_hist_hs_v2_stats_write(now);
 if (next_write && next_write < next_time_to_write_stats_files)
   next_time_to_write_stats_files = next_write;
+
+next_write = rep_hist_hs_v3_stats_write(now);
+if (next_write && next_write < next_time_to_write_stats_files)
+  next_time_to_write_stats_files = next_write;
   }
   if (options->ExitPortStatistics) {
 time_t next_write = rep_hist_exit_stats_write(now);
diff --git a/src/feature/hs/hs_cache.c b/src/feature/hs/hs_cache.c
index 44cd2505fd..0688d7765d 100644
--- a/src/feature/hs/hs_cache.c
+++ b/src/feature/hs/hs_cache.c
@@ -19,6 +19,7 @@
 #include "feature/hs/hs_descriptor.h"
 #include "feature/nodelist/networkstatus.h"
 #include "feature/rend/rendcache.h"
+#include "feature/stats/rephist.h"
 
 #include "feature/hs/hs_cache.h"
 
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 5ca21964b6..ea631e18fe 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -3288,6 +3288,11 @@ extrainfo_dump_to_string_stats_helper(smartlist_t 
*chunks,
 "hidserv-stats-end", now, ) > 0) {
   smartlist_add(chunks, contents);
 }
+if (options->HiddenServiceStatistics &&
+load_stats_file("stats"PATH_SEPARATOR"hidserv-v3-stats",
+"hidserv-v3-stats-end", now, ) > 0) {
+  smartlist_add(chunks, contents);
+}
 if (options->EntryStatistics &&
 load_stats_file("stats"PATH_SEPARATOR"entry-stats",
 "entry-stats-end", now, ) > 0) {
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index bde65ea9d9..daf9db074c 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1818,6 +1818,96 @@ rep_hist_hsdir_stored_maybe_new_v2_onion(const 
crypto_pk_t *pubkey)
   }
 }
 
+/*** HSv3 stats **/
+
+/** Start of the current hidden service stats interval or 0 if we're not
+ *  collecting hidden service statistics.
+ *
+ *  This is particularly important for v3 statistics since this variable
+ *  controls the start time of initial v3 stats collection. It's initialized by
+ *  rep_hist_hs_stats_init() to the next time period start (i.e. 12:00UTC), and
+ *  should_collect_v3_stats() ensures that functions that collect v3 stats do
+ *  not do so sooner than that.
+ *
+ *  Collecting stats from 12:00UTC to 12:00UTC is extremely important for v3
+ *  stats because rep_hist_hsdir_stored_maybe_new_v3_onion() uses the blinded
+ *  key of each onion service as its double-counting index. Onion services
+ *  rotate their descriptor at around 00:00UTC which means that their blinded
+ *  key also changes around that time. However the precise time that onion
+ *  services rotate their descriptors is actually when they fetch a new
+ *  00:00UTC consensus and that happens at a random time (e.g. it can even
+ *  happen at 02:00UTC). This means that if we started keeping v3 stats at
+ *  around 00:00UTC we wouldn't be able to tell when onion services change
+ *  their blinded key and hence we would double count an unpredictable amount
+ *  of them (for example, if an onion service fetches the 00:00UTC consensus at
+ *  01:00UTC it would upload to its old HSDir at 00:45UTC, and then to a
+ *  different HSDir at 01:50UTC).
+ *
+ *  For this reason, we 

[tor-commits] [tor/master] Introduce generic HS stats methods that apply to v2 and v3.

2020-11-17 Thread dgoulet
commit f2eff171264595de9a534c01628909d0ba6cb9fb
Author: George Kadianakis 
Date:   Tue Nov 3 11:04:13 2020 +0200

Introduce generic HS stats methods that apply to v2 and v3.
---
 src/feature/stats/rephist.c | 62 +++--
 1 file changed, 32 insertions(+), 30 deletions(-)

diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index 2ad86ff6d9..7f5ec93597 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1742,17 +1742,6 @@ hs_v2_stats_free_(hs_v2_stats_t *victim_hs_v2_stats)
   tor_free(victim_hs_v2_stats);
 }
 
-/** Initialize hidden service statistics. */
-void
-rep_hist_hs_v2_stats_init(time_t now)
-{
-  if (!hs_v2_stats) {
-hs_v2_stats = hs_v2_stats_new();
-  }
-
-  start_of_hs_v2_stats_interval = now;
-}
-
 /** Clear history of hidden service statistics and set the measurement
  * interval start to now. */
 static void
@@ -1770,25 +1759,6 @@ rep_hist_reset_hs_v2_stats(time_t now)
   start_of_hs_v2_stats_interval = now;
 }
 
-/** Stop collecting hidden service stats in a way that we can re-start
- * doing so in rep_hist_buffer_stats_init(). */
-void
-rep_hist_hs_v2_stats_term(void)
-{
-  rep_hist_reset_hs_v2_stats(0);
-}
-
-/** We saw a new HS relay cell, Count it! */
-void
-rep_hist_seen_new_rp_cell(void)
-{
-  if (!hs_v2_stats) {
-return; // We're not collecting stats
-  }
-
-  hs_v2_stats->rp_relay_cells_seen++;
-}
-
 /** As HSDirs, we saw another v2 onion with public key pubkey. Check
  *  whether we have counted it before, if not count it now! */
 void
@@ -1946,6 +1916,38 @@ rep_hist_seen_new_rp_cell(bool is_v2)
   }
 }
 
+/** Generic HS stats code */
+
+/** Initialize v2 and v3 hidden service statistics. */
+void
+rep_hist_hs_stats_init(time_t now)
+{
+  if (!hs_v2_stats) {
+hs_v2_stats = hs_v2_stats_new();
+  }
+
+  /* Start collecting v2 stats straight away */
+  start_of_hs_v2_stats_interval = now;
+
+  if (!hs_v3_stats) {
+hs_v3_stats = hs_v3_stats_new();
+  }
+
+  /* Start collecting v3 stats at the next 12:00 UTC */
+  start_of_hs_v3_stats_interval = hs_get_start_time_of_next_time_period(now);
+}
+
+/** Stop collecting hidden service stats in a way that we can re-start
+ * doing so in rep_hist_buffer_stats_init(). */
+void
+rep_hist_hs_stats_term(void)
+{
+  rep_hist_reset_hs_v2_stats(0);
+  rep_hist_reset_hs_v3_stats(0);
+}
+
+/** Stats reporting code */
+
 /* The number of cells that are supposed to be hidden from the adversary
  * by adding noise from the Laplace distribution.  This value, divided by
  * EPSILON, is Laplace parameter b. It must be greather than 0. */



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Implement support for "unique v3 onions" stat.

2020-11-17 Thread dgoulet
commit 05880d238a95b09c08b600e546870d0870f856fd
Author: George Kadianakis 
Date:   Wed Jul 1 13:57:11 2020 +0300

Implement support for "unique v3 onions" stat.
---
 src/feature/hs/hs_cache.c   |  5 -
 src/feature/stats/rephist.c | 30 +++---
 src/feature/stats/rephist.h |  1 +
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/src/feature/hs/hs_cache.c b/src/feature/hs/hs_cache.c
index 0688d7765d..b57f133362 100644
--- a/src/feature/hs/hs_cache.c
+++ b/src/feature/hs/hs_cache.c
@@ -175,7 +175,10 @@ cache_store_v3_as_dir(hs_cache_dir_descriptor_t *desc)
* old HS protocol cache subsystem for which we are tied with. */
   rend_cache_increment_allocation(cache_get_dir_entry_size(desc));
 
-  /* XXX: Update HS statistics. We should have specific stats for v3. */
+  /* Update HSv3 statistics */
+  if (get_options()->HiddenServiceStatistics) {
+rep_hist_hsdir_stored_maybe_new_v3_onion(desc->key);
+  }
 
   return 0;
 
diff --git a/src/feature/stats/rephist.c b/src/feature/stats/rephist.c
index daf9db074c..5858f14245 100644
--- a/src/feature/stats/rephist.c
+++ b/src/feature/stats/rephist.c
@@ -1789,9 +1789,8 @@ rep_hist_seen_new_rp_cell(void)
   hs_v2_stats->rp_relay_cells_seen++;
 }
 
-/** As HSDirs, we saw another hidden service with public key
- *  pubkey. Check whether we have counted it before, if not
- *  count it now! */
+/** As HSDirs, we saw another v2 onion with public key pubkey. Check
+ *  whether we have counted it before, if not count it now! */
 void
 rep_hist_hsdir_stored_maybe_new_v2_onion(const crypto_pk_t *pubkey)
 {
@@ -1908,6 +1907,31 @@ should_collect_v3_stats(void)
   return start_of_hs_v3_stats_interval <= approx_time();
 }
 
+/** We just received a new descriptor with blinded_key. See if we've
+ * seen this blinded key before, and if not add it to the stats.  */
+void
+rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t *blinded_key)
+{
+  /* Return early if we don't collect HSv3 stats, or if it's not yet the time
+   * to collect them. */
+  if (!hs_v3_stats || !should_collect_v3_stats()) {
+return;
+  }
+
+  bool seen_before = !!digestmap_get(hs_v3_stats->v3_onions_seen_this_period,
+ (char*)blinded_key);
+
+  log_info(LD_GENERAL, "Considering v3 descriptor with %s (%sseen before)",
+   safe_str(hex_str((char*)blinded_key, 32)),
+   seen_before ? "" : "not ");
+
+  /* Count it if we haven't seen it before. */
+  if (!seen_before) {
+digestmap_set(hs_v3_stats->v3_onions_seen_this_period,
+  (char*)blinded_key, (void*)(uintptr_t)1);
+  }
+}
+
 /* The number of cells that are supposed to be hidden from the adversary
  * by adding noise from the Laplace distribution.  This value, divided by
  * EPSILON, is Laplace parameter b. It must be greather than 0. */
diff --git a/src/feature/stats/rephist.h b/src/feature/stats/rephist.h
index e6c1509498..5873594781 100644
--- a/src/feature/stats/rephist.h
+++ b/src/feature/stats/rephist.h
@@ -71,6 +71,7 @@ void rep_hist_hsdir_stored_maybe_new_v2_onion(const 
crypto_pk_t *pubkey);
 
 time_t rep_hist_hs_v3_stats_write(time_t now);
 char *rep_hist_get_hs_v3_stats_string(void);
+void rep_hist_hsdir_stored_maybe_new_v3_onion(const uint8_t *blinded_key);
 
 void rep_hist_free_all(void);
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Stop forcing IPv4 and IPv6 traffic on non-SOCKSPorts

2020-11-17 Thread nickm
commit 09b3af578d3dd57f91d3d21c74e86a36c32cbd0e
Author: Neel Chauhan 
Date:   Tue Oct 27 17:57:48 2020 -0700

Stop forcing IPv4 and IPv6 traffic on non-SOCKSPorts
---
 changes/bug33607   | 5 +
 src/core/mainloop/connection.c | 7 ---
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/changes/bug33607 b/changes/bug33607
new file mode 100644
index 00..c18d37b0d3
--- /dev/null
+++ b/changes/bug33607
@@ -0,0 +1,5 @@
+  o Minor bugfixes (ipv6):
+- Allow non-SOCKSPorts to disable IPv4, IPv6, and Prefer IPv4. Some rare
+  configs might break, but in this case you can disable NoIPv4Traffic and
+  NoIPv6Traffic as needed. Fixes bug 33607; bugfix on 0.4.1.1-alpha. Patch
+  by Neel Chauhan.
diff --git a/src/core/mainloop/connection.c b/src/core/mainloop/connection.c
index 3d551c4ba8..41d67183aa 100644
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@ -1718,13 +1718,6 @@ connection_listener_new(const struct sockaddr 
*listensockaddr,
 }
   }
 
-  /* Force IPv4 and IPv6 traffic on for non-SOCKSPorts.
-   * Forcing options on isn't a good idea, see #32994 and #33607. */
-  if (type != CONN_TYPE_AP_LISTENER) {
-lis_conn->entry_cfg.ipv4_traffic = 1;
-lis_conn->entry_cfg.ipv6_traffic = 1;
-  }
-
   if (connection_add(conn) < 0) { /* no space, forget it */
 log_warn(LD_NET,"connection_add for listener failed. Giving up.");
 goto err;



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge remote-tracking branch 'tor-gitlab/mr/184' into master

2020-11-17 Thread nickm
commit 6c610117819a99eb33403be08ed7a11567ca65f9
Merge: 1b21d716ec 09b3af578d
Author: Nick Mathewson 
Date:   Tue Nov 17 08:22:44 2020 -0500

Merge remote-tracking branch 'tor-gitlab/mr/184' into master

 changes/bug33607   | 5 +
 src/core/mainloop/connection.c | 7 ---
 2 files changed, 5 insertions(+), 7 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Add {release, maint}-0.4.5 to git-list-tor-branches.sh

2020-11-17 Thread nickm
commit 1b21d716ec4bcbcae68ba8aa3e81e4a9ff5ca483
Author: Nick Mathewson 
Date:   Tue Nov 17 08:04:55 2020 -0500

Add {release,maint}-0.4.5 to git-list-tor-branches.sh
---
 scripts/git/git-list-tor-branches.sh | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/scripts/git/git-list-tor-branches.sh 
b/scripts/git/git-list-tor-branches.sh
index 5a527ffc05..61ec9809e9 100755
--- a/scripts/git/git-list-tor-branches.sh
+++ b/scripts/git/git-list-tor-branches.sh
@@ -145,6 +145,9 @@ branch release-0.4.3
 branch maint-0.4.4
 branch release-0.4.4
 
+branch maint-0.4.5
+branch release-0.4.5
+
 branch master
 
 finish

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Bump version to 0.4.6.0-alpha-dev

2020-11-17 Thread nickm
commit aed2a48c664dad17f58f51c161731a62f876a706
Author: Nick Mathewson 
Date:   Tue Nov 17 08:01:08 2020 -0500

Bump version to 0.4.6.0-alpha-dev
---
 configure.ac| 4 ++--
 contrib/win32build/tor-mingw.nsi.in | 2 +-
 src/win32/orconfig.h| 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/configure.ac b/configure.ac
index c880375988..132179a5a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ dnl Copyright (c) 2007-2019, The Tor Project, Inc.
 dnl See LICENSE for licensing information
 
 AC_PREREQ([2.63])
-AC_INIT([tor],[0.4.5.1-alpha-dev])
+AC_INIT([tor],[0.4.6.0-alpha-dev])
 AC_CONFIG_SRCDIR([src/app/main/tor_main.c])
 AC_CONFIG_MACRO_DIR([m4])
 
@@ -16,7 +16,7 @@ configure_flags="$*"
 # version number changes.  Tor uses it to make sure that it
 # only shuts down for missing "required protocols" when those protocols
 # are listed as required by a consensus after this date.
-AC_DEFINE(APPROX_RELEASE_DATE, ["2020-11-01"], # for 0.4.5.1-alpha-dev
+AC_DEFINE(APPROX_RELEASE_DATE, ["2020-11-17"], # for 0.4.6.0-alpha-dev
   [Approximate date when this software was released. (Updated when the 
version changes.)])
 
 # "foreign" means we don't follow GNU package layout standards
diff --git a/contrib/win32build/tor-mingw.nsi.in 
b/contrib/win32build/tor-mingw.nsi.in
index 9e5ccfa6bc..6c5e368dc1 100644
--- a/contrib/win32build/tor-mingw.nsi.in
+++ b/contrib/win32build/tor-mingw.nsi.in
@@ -8,7 +8,7 @@
 !include "LogicLib.nsh"
 !include "FileFunc.nsh"
 !insertmacro GetParameters
-!define VERSION "0.4.5.1-alpha-dev"
+!define VERSION "0.4.6.0-alpha-dev"
 !define INSTALLER "tor-${VERSION}-win32.exe"
 !define WEBSITE "https://www.torproject.org/;
 !define LICENSE "LICENSE"
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 57ec53cf34..908ea08d3a 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -217,7 +217,7 @@
 #define USING_TWOS_COMPLEMENT
 
 /* Version number of package */
-#define VERSION "0.4.5.1-alpha-dev"
+#define VERSION "0.4.6.0-alpha-dev"
 
 #define HAVE_STRUCT_SOCKADDR_IN6
 #define HAVE_STRUCT_IN6_ADDR

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'ticket40071_045_01_squashed' into master

2020-11-17 Thread nickm
commit b13f32ee97e9a10e578c6f01775a1e2449b28693
Merge: 41bea71adc 9aaac94cc3
Author: Nick Mathewson 
Date:   Tue Nov 17 07:58:37 2020 -0500

Merge branch 'ticket40071_045_01_squashed' into master

 changes/ticket40071 |  7 
 src/core/or/circuitlist.h   |  4 ++-
 src/feature/nodelist/routerlist.c   | 54 ++---
 src/feature/relay/relay_find_addr.c | 68 +
 src/feature/relay/relay_find_addr.h |  2 ++
 src/feature/relay/router.c  | 21 ++--
 6 files changed, 101 insertions(+), 55 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] relay: Launch dummy circuit only when descriptor build fails

2020-11-17 Thread nickm
commit bc5f26ff7006f50acd23f9eb1a99449612b95198
Author: David Goulet 
Date:   Fri Sep 18 13:07:11 2020 -0400

relay: Launch dummy circuit only when descriptor build fails

First, this commit moves the launch_dummy_circuit_as_needed() function into
relay_find_addr.c and renames it to relay_addr_learn_from_dirauth(). This is
an attempt to centralize anything relate with address discovery in the right
module.

Second, when building a descriptor and we fail to discover our address,
immediately launch a dummy circuit to an authority in an attempt to learn 
our
descriptor.

It is still only done every 20 minutes even though the descriptor build is
done every minute. We ought to avoid load on the authority and if we can't
learn in the first place our address from them, chances are more things are
wrong.

Related to #40071

Signed-off-by: David Goulet 
---
 src/feature/nodelist/routerlist.c   | 65 ---
 src/feature/relay/relay_find_addr.c | 68 +
 src/feature/relay/relay_find_addr.h |  2 ++
 src/feature/relay/router.c  |  4 ++-
 4 files changed, 73 insertions(+), 66 deletions(-)

diff --git a/src/feature/nodelist/routerlist.c 
b/src/feature/nodelist/routerlist.c
index c1b02b586d..a1a348edb9 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -140,8 +140,6 @@ static int 
signed_desc_digest_is_recognized(signed_descriptor_t *desc);
 static const char *signed_descriptor_get_body_impl(
   const signed_descriptor_t *desc,
   int with_annotations);
-static void launch_dummy_circuit_as_needed(time_t now,
-   const or_options_t *options);
 
 //
 
@@ -2309,7 +2307,6 @@ update_all_descriptor_downloads(time_t now)
 return;
   update_router_descriptor_downloads(now);
   update_microdesc_downloads(now);
-  launch_dummy_circuit_as_needed(now, get_options());
 }
 
 /** Clear all our timeouts for fetching v3 directory stuff, and then
@@ -2763,68 +2760,6 @@ update_consensus_router_descriptor_downloads(time_t now, 
int is_vote,
   smartlist_free(no_longer_old);
 }
 
-/** How often should we launch a circuit to an authority to be sure of getting
- * a guess for our IP? */
-#define DUMMY_DOWNLOAD_INTERVAL (20*60)
-
-/** As needed, launch a dummy router descriptor fetch to see if our
- * address has changed. */
-static void
-launch_dummy_circuit_as_needed(time_t now, const or_options_t *options)
-{
-  static time_t last_dummy_circuit = 0;
-  bool have_addr;
-  tor_addr_t addr_out;
-
-  /* This dummy circuit only matter for relays. */
-  if (!server_mode(options)) {
-return;
-  }
-
-  /* Lookup the address cache to learn if we have a good usable address. We
-   * still force relays to have an IPv4 so that alone is enough to learn if we
-   * need a lookup. In case we don't have one, we might want to attempt a
-   * dummy circuit to learn our address as a suggestion from an authority. */
-  have_addr = relay_find_addr_to_publish(options, AF_INET,
- RELAY_FIND_ADDR_CACHE_ONLY,
- _out);
-
-  /* If we're a relay or bridge for which we were unable to discover our
-   * public address, we rely on learning our address from a directory
-   * authority from the NETINFO cell. */
-  if (!have_addr && last_dummy_circuit + DUMMY_DOWNLOAD_INTERVAL < now) {
-last_dummy_circuit = now;
-
-const routerstatus_t *rs = router_pick_trusteddirserver(V3_DIRINFO, 0);
-if (BUG(!rs)) {
-  /* We should really always have trusted directories configured at this
-   * stage. They are loaded early either from default list or the one
-   * given in the configuration file. */
-  return;
-}
-const node_t *node = node_get_by_id(rs->identity_digest);
-if (BUG(!node)) {
-  /* If there is a routerstatus_t, there is a node_t thus this should
-   * never fail. */
-  return;
-}
-extend_info_t *ei = extend_info_from_node(node, 1);
-if (BUG(!ei)) {
-  return;
-}
-
-log_debug(LD_GENERAL, "Attempting dummy testing circuit to an authority "
-  "in order to learn our address.");
-
-/* Launch a one-hop testing circuit to a trusted authority so we can learn
- * our address through the NETINFO cell. */
-circuit_launch_by_extend_info(CIRCUIT_PURPOSE_TESTING, ei,
-  CIRCLAUNCH_IS_INTERNAL |
-  CIRCLAUNCH_ONEHOP_TUNNEL);
-extend_info_free(ei);
-  }
-}
-
 /** Launch downloads for router status as needed. */
 void
 update_router_descriptor_downloads(time_t now)
diff --git a/src/feature/relay/relay_find_addr.c 
b/src/feature/relay/relay_find_addr.c

[tor-commits] [tor/master] changes: Add file for #40071

2020-11-17 Thread nickm
commit 9aaac94cc3d2b4768bbac1e40396b74373f7bc5a
Author: David Goulet 
Date:   Thu Nov 12 12:39:25 2020 -0500

changes: Add file for #40071

Signed-off-by: David Goulet 
---
 changes/ticket40071 | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/changes/ticket40071 b/changes/ticket40071
new file mode 100644
index 00..1e294a68e7
--- /dev/null
+++ b/changes/ticket40071
@@ -0,0 +1,7 @@
+  o Minor bugfixes (relay, address):
+- Don't trigger an IP change if no new valid IP can be found. Fixes bug
+  40071; bugfix on 0.4.5.1-alpha.
+- When attempting to discover our IP, don't launch a descriptor fetch
+  anymore but rather a simple test circuit since the address discovery is
+  through the NETINFO cell now from the authorities. Fixes bug 40071; 
bugfix
+  on 0.4.5.1-alpha.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] relay: Look at our cache when looking for an IP change

2020-11-17 Thread nickm
commit a5538a36037641e49ca05aa3e90fec256794412b
Author: David Goulet 
Date:   Fri Sep 18 12:22:23 2020 -0400

relay: Look at our cache when looking for an IP change

Regularly, tor looks if its IP has changed. It does the entire auto 
discovery
process again. However, it is possible that it does not find anything.

Instead of thinking the IP changed to an unknown address, look at our cache
and see if that value has changed.

The reason for this is because if tor gets its address as a suggestion from 
a
directory authority, it is because the auto discovery failed and thus that
address should be consider for the IP change check.

Related to #40071

Signed-off-by: David Goulet 
---
 src/feature/relay/router.c | 17 +++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index 29103ed6c6..259c38f162 100644
--- a/src/feature/relay/router.c
+++ b/src/feature/relay/router.c
@@ -2679,8 +2679,21 @@ check_descriptor_ipaddress_changed(time_t now)
 
 /* Ignore returned value because we want to notice not only an address
  * change but also if an address is lost (current == UNSPEC). */
-find_my_address(get_options(), family, LOG_INFO, , ,
-);
+bool found = find_my_address(get_options(), family, LOG_INFO, ,
+ , );
+if (!found) {
+  /* Address was possibly not found because it is simply not configured or
+   * discoverable. Fallback to our cache, which includes any suggestion
+   * sent by a trusted directory server. */
+  found = relay_find_addr_to_publish(get_options(), family,
+ RELAY_FIND_ADDR_CACHE_ONLY,
+ );
+}
+
+/* The "current" address might be UNSPEC meaning it was not discovered nor
+ * found in our current cache. If we had an address before and we have
+ * none now, we consider this an IP change since it appears the relay lost
+ * its address. */
 
 if (!tor_addr_eq(previous, )) {
   char *source;



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] relay: Use testing circuit instead of dummy descriptor fetch

2020-11-17 Thread nickm
commit 4b981407335865795bb99c7297ec49d80455d693
Author: David Goulet 
Date:   Fri Sep 18 11:50:12 2020 -0400

relay: Use testing circuit instead of dummy descriptor fetch

Tor now can learn its address from a NETINFO cell coming from an authority.
Thus, instead from launching a dummy descriptor fetch to learn the address
from the directory response (unauthenticated), we simply now launch a 
one-hop
testing circuit.

Related to #40071

Signed-off-by: David Goulet 
---
 src/core/or/circuitlist.h |  4 ++-
 src/feature/nodelist/routerlist.c | 69 ---
 2 files changed, 46 insertions(+), 27 deletions(-)

diff --git a/src/core/or/circuitlist.h b/src/core/or/circuitlist.h
index fd7e22e4c0..3178e6cd0d 100644
--- a/src/core/or/circuitlist.h
+++ b/src/core/or/circuitlist.h
@@ -114,7 +114,9 @@
 #define CIRCUIT_PURPOSE_S_HSDIR_POST 20
 #define CIRCUIT_PURPOSE_S_HS_MAX_ 20
 
-/** A testing circuit; not meant to be used for actual traffic. */
+/** A testing circuit; not meant to be used for actual traffic. It is used for
+ * bandwidth measurement, reachability test and address discovery from an
+ * authority using the NETINFO cell. */
 #define CIRCUIT_PURPOSE_TESTING 21
 /** A controller made this circuit and Tor should not use it. */
 #define CIRCUIT_PURPOSE_CONTROLLER 22
diff --git a/src/feature/nodelist/routerlist.c 
b/src/feature/nodelist/routerlist.c
index 3f6e31bc3a..c1b02b586d 100644
--- a/src/feature/nodelist/routerlist.c
+++ b/src/feature/nodelist/routerlist.c
@@ -65,6 +65,9 @@
 #include "app/config/config.h"
 #include "core/mainloop/connection.h"
 #include "core/mainloop/mainloop.h"
+#include "core/or/circuitlist.h"
+#include "core/or/circuituse.h"
+#include "core/or/extendinfo.h"
 #include "core/or/policies.h"
 #include "feature/client/bridges.h"
 #include "feature/control/control_events.h"
@@ -137,7 +140,7 @@ static int 
signed_desc_digest_is_recognized(signed_descriptor_t *desc);
 static const char *signed_descriptor_get_body_impl(
   const signed_descriptor_t *desc,
   int with_annotations);
-static void launch_dummy_descriptor_download_as_needed(time_t now,
+static void launch_dummy_circuit_as_needed(time_t now,
const or_options_t *options);
 
 //
@@ -2306,7 +2309,7 @@ update_all_descriptor_downloads(time_t now)
 return;
   update_router_descriptor_downloads(now);
   update_microdesc_downloads(now);
-  launch_dummy_descriptor_download_as_needed(now, get_options());
+  launch_dummy_circuit_as_needed(now, get_options());
 }
 
 /** Clear all our timeouts for fetching v3 directory stuff, and then
@@ -2760,23 +2763,20 @@ update_consensus_router_descriptor_downloads(time_t 
now, int is_vote,
   smartlist_free(no_longer_old);
 }
 
-/** How often should we launch a server/authority request to be sure of getting
+/** How often should we launch a circuit to an authority to be sure of getting
  * a guess for our IP? */
-/*+ this info should come from netinfo cells or something, or we should
- * do this only when we aren't seeing incoming data. see bug 652. */
 #define DUMMY_DOWNLOAD_INTERVAL (20*60)
 
 /** As needed, launch a dummy router descriptor fetch to see if our
  * address has changed. */
 static void
-launch_dummy_descriptor_download_as_needed(time_t now,
-   const or_options_t *options)
+launch_dummy_circuit_as_needed(time_t now, const or_options_t *options)
 {
-  static time_t last_dummy_download = 0;
+  static time_t last_dummy_circuit = 0;
   bool have_addr;
   tor_addr_t addr_out;
 
-  /* This dummy fetch only matter for relays. */
+  /* This dummy circuit only matter for relays. */
   if (!server_mode(options)) {
 return;
   }
@@ -2784,27 +2784,44 @@ launch_dummy_descriptor_download_as_needed(time_t now,
   /* Lookup the address cache to learn if we have a good usable address. We
* still force relays to have an IPv4 so that alone is enough to learn if we
* need a lookup. In case we don't have one, we might want to attempt a
-   * dummy fetch to learn our address as a suggestion from an authority. */
+   * dummy circuit to learn our address as a suggestion from an authority. */
   have_addr = relay_find_addr_to_publish(options, AF_INET,
  RELAY_FIND_ADDR_CACHE_ONLY,
  _out);
 
-  /* + we could be smarter here; see notes on bug 652. */
-  /* If we're a server that doesn't have an address, we rely on directory
-   * fetches to learn when our address changes.  So if we haven't tried to get
-   * any routerdescs in a long time, try a dummy fetch now. */
-  if (!have_addr &&
-  last_descriptor_download_attempted + DUMMY_DOWNLOAD_INTERVAL < now &&
-  last_dummy_download + 

[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit d24d3ffd30a39348af0d5031dfea3492555edf87
Author: Translation commit bot 
Date:   Tue Nov 17 12:47:47 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 es.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/es.po b/es.po
index 097c2605b8..cce03c7807 100644
--- a/es.po
+++ b/es.po
@@ -21,7 +21,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-17 12:16+\n"
+"PO-Revision-Date: 2020-11-17 12:17+\n"
 "Last-Translator: eulalio barbero espinosa \n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit 8036df7408282ff9a45aef17499fccb77ac1e9ff
Author: Translation commit bot 
Date:   Tue Nov 17 12:46:53 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 es.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/es.po b/es.po
index 45ac03b535..891e954825 100644
--- a/es.po
+++ b/es.po
@@ -21,7 +21,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-17 12:16+\n"
+"PO-Revision-Date: 2020-11-17 12:17+\n"
 "Last-Translator: eulalio barbero espinosa \n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
@@ -1110,7 +1110,7 @@ msgstr "Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:150
 msgid "Thunderbird emails, feeds, and OpenPGP keys"
-msgstr ""
+msgstr "Correos, feeds y claves OpenPGP de Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:163
 msgid "GnuPG"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release

2020-11-17 Thread translation
commit acc04da137427bf6484e0461149d71da5604740e
Author: Translation commit bot 
Date:   Tue Nov 17 12:17:55 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
 es.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/es.po b/es.po
index dd4e68b229..097c2605b8 100644
--- a/es.po
+++ b/es.po
@@ -21,8 +21,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 12:16+\n"
+"Last-Translator: eulalio barbero espinosa \n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc

2020-11-17 Thread translation
commit fb04528e2ee6fedd49d0c8e1cf69522d79dbde7b
Author: Translation commit bot 
Date:   Tue Nov 17 12:16:45 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
 es.po | 14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/es.po b/es.po
index 13d968ca45..45ac03b535 100644
--- a/es.po
+++ b/es.po
@@ -21,8 +21,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-16 10:33+0100\n"
-"PO-Revision-Date: 2020-11-16 12:13+\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-11-17 12:16+\n"
+"Last-Translator: eulalio barbero espinosa \n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1118,7 +1118,7 @@ msgstr "GnuPG"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:165
 msgid "OpenPGP keys outside of Thunderbird"
-msgstr ""
+msgstr "Claves OpenPGP fuera de Thunderbird"
 
 #: 
config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:178
 msgid "Bitcoin Client"
@@ -1621,22 +1621,22 @@ msgstr "Leer más"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:40
 msgid "You need to migrate your OpenPGP keys"
-msgstr ""
+msgstr "Necesitas migrar tus claves OpenPGP"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:42
 msgid ""
 "Thunderbird 78 now replaces the Enigmail extension with built-"
 "in support for OpenPGP encryption. To continue using your OpenPGP keys in "
 "Thunderbird, follow our migration instructions."
-msgstr ""
+msgstr "Thunderbird 78 ahora reemplaza la extensión Enigmail 
con soporte incorporado para la encriptación OpenPGP.Para continuar usando tus 
claves OpenPGP en Thunderbird, sigue nuestras instrucciones de 
migración."
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:44
 msgid "_Open Migration Instructions"
-msgstr ""
+msgstr "_Open Migration Instructions"
 
 #: config/chroot_local-includes/usr/local/bin/thunderbird:45
 msgid "_Migrate Later"
-msgstr ""
+msgstr "_Migrate Later"
 
 #: config/chroot_local-includes/usr/local/bin/tor-browser:46
 msgid "Tor is not ready"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tor-launcher-network-settings] https://gitweb.torproject.org/translation.git/commit/?h=tor-launcher-network-settings

2020-11-17 Thread translation
commit 0928d09fac1b7bb12724b99cdaeef13b4a3d35e4
Author: Translation commit bot 
Date:   Tue Nov 17 08:48:27 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=tor-launcher-network-settings
---
 gl/network-settings.dtd | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gl/network-settings.dtd b/gl/network-settings.dtd
index adac189f50..52c4383c64 100644
--- a/gl/network-settings.dtd
+++ b/gl/network-settings.dtd
@@ -25,7 +25,7 @@
 
 
 
-
+
 
 
 
@@ -37,8 +37,8 @@
 
 
 
-
-
+
+
 
 
 
@@ -46,7 +46,7 @@
 
 
 
-
+
 
 
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbirdy] https://gitweb.torproject.org/translation.git/commit/?h=torbirdy

2020-11-17 Thread translation
commit 546acda91428009dc7dad0ca0e488f3e46b70d13
Author: Translation commit bot 
Date:   Tue Nov 17 08:47:42 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=torbirdy
---
 gl/torbirdy.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gl/torbirdy.dtd b/gl/torbirdy.dtd
index da9d44d531..f8ad5797a3 100644
--- a/gl/torbirdy.dtd
+++ b/gl/torbirdy.dtd
@@ -42,7 +42,7 @@
 
 
 
-
+
 
 
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbutton-torbuttonproperties] https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties

2020-11-17 Thread translation
commit b1b516a356eda3e32e7b423ede65eafef08aaaf4
Author: Translation commit bot 
Date:   Tue Nov 17 08:47:52 2020 +


https://gitweb.torproject.org/translation.git/commit/?h=torbutton-torbuttonproperties
---
 gl/torbutton.properties | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gl/torbutton.properties b/gl/torbutton.properties
index 0b5aa30910..512c8c5761 100644
--- a/gl/torbutton.properties
+++ b/gl/torbutton.properties
@@ -39,9 +39,9 @@ torbutton.maximize_warning = Maximizing Tor Browser can allow 
websites to determ
 canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image 
data, which may be used to uniquely identify your computer.\n\nShould Tor 
Browser allow this website to extract HTML5 canvas image data?
 canvas.notNow=Not Now
 canvas.notNowAccessKey=N
-canvas.allow=Allow in the future
+canvas.allow=Permitir no futuro
 canvas.allowAccessKey=A
-canvas.never=Never for this site (recommended)
+canvas.never=Nunca para este sitio (recomendado)
 canvas.neverAccessKey=e
 
 # Profile/startup error messages. Strings are kept here for ease of 
translation.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/abouttor-homepage] https://gitweb.torproject.org/translation.git/commit/?h=abouttor-homepage

2020-11-17 Thread translation
commit e6093b99632cc0200fad8493838ac0dc7b64
Author: Translation commit bot 
Date:   Tue Nov 17 08:45:02 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=abouttor-homepage
---
 gl/aboutTor.dtd | 12 
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/gl/aboutTor.dtd b/gl/aboutTor.dtd
index 115db05838..5e3adac225 100644
--- a/gl/aboutTor.dtd
+++ b/gl/aboutTor.dtd
@@ -1,5 +1,5 @@
 
@@ -13,7 +13,7 @@
 
 
 
-
+
 https://duckduckgo.com;>
 
 
@@ -24,9 +24,13 @@
 
 
 
-https://www.torproject.org/getinvolved/volunteer.html.en;>
 
 
 
-
+
 
+
+
+
+
+

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbirdy] https://gitweb.torproject.org/translation.git/commit/?h=torbirdy

2020-11-17 Thread translation
commit d890fdd40dd286089bc4ba9bee92e2a507e95174
Author: Translation commit bot 
Date:   Tue Nov 17 08:17:22 2020 +

https://gitweb.torproject.org/translation.git/commit/?h=torbirdy
---
 gl/torbirdy.dtd | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gl/torbirdy.dtd b/gl/torbirdy.dtd
index a5c2dc5a56..da9d44d531 100644
--- a/gl/torbirdy.dtd
+++ b/gl/torbirdy.dtd
@@ -21,7 +21,7 @@
 
 
 
-
+
 
 
 
@@ -40,7 +40,7 @@
 
 
 
-
+
 
 
 
@@ -52,7 +52,7 @@
 
 
 
-
+
 
-
+
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits