[tor-commits] [translation/tpo-web_completed] https://gitweb.torproject.org/translation.git/commit/?h=tpo-web_completed
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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.
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.
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().
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.
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.
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.
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.
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.
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.
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/
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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