[tor-commits] [translation/tails-greeter] Update translations for tails-greeter
commit b82878474074be4402cc781bd02444ec512d5415 Author: Translation commit bot Date: Thu Jun 22 05:45:40 2017 + Update translations for tails-greeter --- el/el.po | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/el/el.po b/el/el.po index 194201b..7fd3beb 100644 --- a/el/el.po +++ b/el/el.po @@ -17,7 +17,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-06-10 12:27+0200\n" -"PO-Revision-Date: 2017-06-20 05:28+\n" +"PO-Revision-Date: 2017-06-22 05:24+\n" "Last-Translator: ilias_ \n" "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n" "MIME-Version: 1.0\n" @@ -28,18 +28,18 @@ msgstr "" #: ../data/greeter.ui.h:1 msgid "Administration Password" -msgstr "" +msgstr "ÎÏδικÏÏ Î´Î¹Î±ÏειÏιÏÏή" #: ../data/greeter.ui.h:2 msgid "" "Set up an administration password if you need to perform administrative " "tasks. Otherwise, the administration password is disabled for better " "security." -msgstr "" +msgstr "ΠάνÏÎÏιÏε Îνα κÏÎ´Î¹ÎºÏ Î´Î¹Î±ÏειÏιÏÏή εάν ÏÏειάζεÏαι να ÏÏαγμαÏοÏοιηθοÏν διεÏγαÏÎ¯ÎµÏ Î´Î¹ÏειÏιÏμοÏ. ÎιαÏοÏεÏικά ο κÏδικÏÏ Î´Î¹Î±ÏειÏιÏÏή είναι αÏενεÏγοÏοιημÎÎ½Î¿Ï Î³Î¹Î± ÏεÏιÏÏÏÏεÏη αÏÏάλεια." #: ../data/greeter.ui.h:3 msgid "Enter an administration password" -msgstr "" +msgstr "ÎÏάÏε Ïον κÏÎ´Î¹ÎºÏ Î´Î¹Î±ÏειÏιÏÏή" #: ../data/greeter.ui.h:4 msgid "Confirm" @@ -47,11 +47,11 @@ msgstr "ÎÏιβεβαίÏÏη" #: ../data/greeter.ui.h:5 msgid "Confirm your administration password" -msgstr "" +msgstr "ÎÏιβεβαίÏÏε Ïον κÏÎ´Î¹ÎºÏ Î´Î¹Î±ÏειÏιÏÏή" #: ../data/greeter.ui.h:6 msgid "Disable" -msgstr "" +msgstr "ÎÏενεÏγοοίηÏη" #. This string will never be displayed in the 1st version of the greeter. #: ../data/greeter.ui.h:8 ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] make assign_onionskin_to_cpuworker failure case more clear
commit 005500e14d5a956601feb94712ea86e810d557f7 Author: Roger Dingledine Date: Wed Jun 21 17:42:10 2017 -0400 make assign_onionskin_to_cpuworker failure case more clear now it looks like the other time we call it --- src/or/cpuworker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index 1013fa5..06d45f9 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -474,7 +474,7 @@ queue_pending_tasks(void) if (!circ) return; -if (assign_onionskin_to_cpuworker(circ, onionskin)) +if (assign_onionskin_to_cpuworker(circ, onionskin) < 0) log_info(LD_OR,"assign_to_cpuworker failed. Ignoring."); } } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-browser-manual] Update translations for tor-browser-manual
commit 2f7fd8637436485fbdb9f180cede63b889d9f053 Author: Translation commit bot Date: Wed Jun 21 20:48:32 2017 + Update translations for tor-browser-manual --- hy/hy.po | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hy/hy.po b/hy/hy.po index 087f26a..5cf2f99 100644 --- a/hy/hy.po +++ b/hy/hy.po @@ -1,12 +1,13 @@ # Translators: # Hrach Mkrtchyan , 2016 # Tor Project , 2016 +# Sarkis Andreyan , 2017 msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2016-12-06 16:36-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Tor Project , 2016\n" +"Last-Translator: Sarkis Andreyan , 2017\n" "Language-Team: Armenian (https://www.transifex.com/otf/teams/1519/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +18,7 @@ msgstr "" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" -msgstr "" +msgstr "Õ©Õ¡ÖÕ£Õ´Õ¡Õ¶Õ¹Õ«-Õ¿Õ¾Õ¡Õ¬Õ¶Õ¥Ö" #: about-tor-browser.page:7 msgid "Learn what Tor Browser can do to protect your privacy and anonymity" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/exoneratorproperties] Update translations for exoneratorproperties
commit e37dd22ac9af6702748e7ab7d02f02cac62a8e24 Author: Translation commit bot Date: Wed Jun 21 20:48:26 2017 + Update translations for exoneratorproperties --- hy/exonerator.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/exonerator.properties b/hy/exonerator.properties index 9a9a321..025e3bd 100644 --- a/hy/exonerator.properties +++ b/hy/exonerator.properties @@ -2,7 +2,7 @@ form.explanation=Enter an IP address and date to find out whether that address w form.ip.label=IP address form.timestamp.label=Date form.search.label=Search -summary.heading=Summary +summary.heading=Ô±Õ´ÖÕ¸ÖÕ¸ÖÕ´ summary.serverproblem.dbnoconnect.title=Server problem summary.serverproblem.dbnoconnect.body.text=Unable to connect to the database. Please try again later. If this problem persists, please %s\! summary.serverproblem.dbnoconnect.body.link=let us know ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Extract channel_do_open_actions() from non-open _change_state cases
commit 1c0a2335cd27ed4f4a61f99ce19b5ba08639eeff Author: Nick Mathewson Date: Sun Mar 26 19:33:44 2017 +0200 Extract channel_do_open_actions() from non-open _change_state cases This reduces the size of the largest SCC in the callgraph by 30 functions, from 58 to 28. --- changes/ticket22608 | 6 ++ src/or/channel.c | 47 +-- src/or/channel.h | 1 + src/or/channeltls.c | 2 +- src/test/test_channel.c | 30 +++--- src/test/test_scheduler.c | 4 ++-- 6 files changed, 58 insertions(+), 32 deletions(-) diff --git a/changes/ticket22608 b/changes/ticket22608 new file mode 100644 index 000..5aa9db2 --- /dev/null +++ b/changes/ticket22608 @@ -0,0 +1,6 @@ + o Code simplification and refactoring: +- Extract the code for handling newly-open channels into a separate + function from the general code to handle channel state transitions. + This change simplifies our callgraph, reducing the size of the largest + strongly connected component by roughly a factor of two. + Closes ticket 22608 diff --git a/src/or/channel.c b/src/or/channel.c index e79fc07..68ebc4d 100644 --- a/src/or/channel.c +++ b/src/or/channel.c @@ -1972,8 +1972,8 @@ channel_write_var_cell(channel_t *chan, var_cell_t *var_cell) * are appropriate to the state transition in question. */ -void -channel_change_state(channel_t *chan, channel_state_t to_state) +static void +channel_change_state_(channel_t *chan, channel_state_t to_state) { channel_state_t from_state; unsigned char was_active, is_active; @@ -2092,18 +2092,8 @@ channel_change_state(channel_t *chan, channel_state_t to_state) estimated_total_queue_size += chan->bytes_in_queue; } - /* Tell circuits if we opened and stuff */ - if (to_state == CHANNEL_STATE_OPEN) { -channel_do_open_actions(chan); -chan->has_been_open = 1; - -/* Check for queued cells to process */ -if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue)) - channel_process_cells(chan); -if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue)) - channel_flush_cells(chan); - } else if (to_state == CHANNEL_STATE_CLOSED || - to_state == CHANNEL_STATE_ERROR) { + if (to_state == CHANNEL_STATE_CLOSED || + to_state == CHANNEL_STATE_ERROR) { /* Assert that all queues are empty */ tor_assert(TOR_SIMPLEQ_EMPTY(&chan->incoming_queue)); tor_assert(TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue)); @@ -2111,6 +2101,35 @@ channel_change_state(channel_t *chan, channel_state_t to_state) } /** + * As channel_change_state_, but change the state to any state but open. + */ +void +channel_change_state(channel_t *chan, channel_state_t to_state) +{ + tor_assert(to_state != CHANNEL_STATE_OPEN); + channel_change_state_(chan, to_state); +} + +/** + * As channel_change_state, but change the state to open. + */ +void +channel_change_state_open(channel_t *chan) +{ + channel_change_state_(chan, CHANNEL_STATE_OPEN); + + /* Tell circuits if we opened and stuff */ + channel_do_open_actions(chan); + chan->has_been_open = 1; + + /* Check for queued cells to process */ + if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue)) +channel_process_cells(chan); + if (! TOR_SIMPLEQ_EMPTY(&chan->outgoing_queue)) +channel_flush_cells(chan); +} + +/** * Change channel listener state * * This internal and subclass use only function is used to change channel diff --git a/src/or/channel.h b/src/or/channel.h index 33dceb1..803ab6c 100644 --- a/src/or/channel.h +++ b/src/or/channel.h @@ -436,6 +436,7 @@ void channel_listener_free(channel_listener_t *chan_l); /* State/metadata setters */ void channel_change_state(channel_t *chan, channel_state_t to_state); +void channel_change_state_open(channel_t *chan); void channel_clear_identity_digest(channel_t *chan); void channel_clear_remote_end(channel_t *chan); void channel_mark_local(channel_t *chan); diff --git a/src/or/channeltls.c b/src/or/channeltls.c index 9d9e744..300304f 100644 --- a/src/or/channeltls.c +++ b/src/or/channeltls.c @@ -979,7 +979,7 @@ channel_tls_handle_state_change_on_orconn(channel_tls_t *chan, * We can go to CHANNEL_STATE_OPEN from CHANNEL_STATE_OPENING or * CHANNEL_STATE_MAINT on this. */ -channel_change_state(base_chan, CHANNEL_STATE_OPEN); +channel_change_state_open(base_chan); /* We might have just become writeable; check and tell the scheduler */ if (connection_or_num_cells_writeable(conn) > 0) { scheduler_channel_wants_writes(base_chan); diff --git a/src/test/test_channel.c b/src/test/test_channel.c index f5999b8..347aca7 100644 --- a/src/test/test_channel.c +++ b/src/test/test_channel.c @@ -811,7 +811,7 @@ test_channel_incoming(void *arg) tt_assert(ch->registered); /* Open it */ - channel_change_state(ch, CHANNEL_STATE_OPEN); + channel_change_state_open(ch); tt_int_op(ch->state, ==, CHANNEL_STATE_OPEN); /*
[tor-commits] [tor/master] Merge branch 'callgraph_reduction_v2'
commit 3a8a92fddd7a21b8e6b0b5a463e86639f1d04fc8 Merge: 5d3f484 1c0a233 Author: Nick Mathewson Date: Wed Jun 21 16:47:55 2017 -0400 Merge branch 'callgraph_reduction_v2' changes/ticket22608 | 6 ++ src/or/channel.c | 47 +-- src/or/channel.h | 1 + src/or/channeltls.c | 2 +- src/test/test_channel.c | 30 +++--- src/test/test_scheduler.c | 4 ++-- 6 files changed, 58 insertions(+), 32 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-authproperties_completed] Update translations for tor-messenger-authproperties_completed
commit 68c9a2feb82d4b620156c4a5a2d53b5e92ef066c Author: Translation commit bot Date: Wed Jun 21 20:47:41 2017 + Update translations for tor-messenger-authproperties_completed --- hy/auth.properties | 7 +++ 1 file changed, 7 insertions(+) diff --git a/hy/auth.properties b/hy/auth.properties new file mode 100644 index 000..0d1818d --- /dev/null +++ b/hy/auth.properties @@ -0,0 +1,7 @@ +auth.title=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ¥Õ¬ %S-Õ« Õ«Õ¶ÖÕ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¨ +auth.yourFingerprint=ÕÕ¡Õ¿Õ¶Õ¡Õ°Õ¥Õ¿Ö ÕÕ¥Õ¦ Õ°Õ¡Õ´Õ¡Ö, %S.\n%S +auth.theirFingerprint=ÕÕ¯Õ¡ÕµÕ¾Õ¡Õ® Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¥Õ¿Ö %S-Õ« Õ°Õ¡Õ´Õ¡Ö.\n%S +auth.help=Ô¿Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ« Õ«Õ¶ÖÕ¶Õ¸ÖÕ©ÕµÕ¡Õ¶ Õ°Õ¡Õ½Õ¿Õ¡Õ¿Õ¸ÖÕ´Õ¨ Ö Õ£Õ¶Õ¸ÖÕ´ Õ§ Õ°Õ¡Õ´Õ¸Õ¦Õ¾Õ¥Õ¬, Õ¸Ö Õ¡ÕµÕ¶ Õ´Õ¡ÖÕ¤Õ¨, Õ¸ÖÕ´ Õ°Õ¥Õ¿ Ô´Õ¸ÖÖ ÕÕ¸Õ½Õ¸ÖÕ´ Õ¥Ö, Õ«ÖÕ¸ÕÖ Õ¶Õ¡ Õ§, Õ¸Õ¾ Õ¶Õ¥ÖÕ¯Õ¡ÕµÕ¡Õ¶Õ¸ÖÕ´ Õ§: +auth.helpTitle=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ´Õ¡Õ¶ Ö Õ£Õ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶ +auth.question=Ô±ÕµÕ½ Õ°Õ¡ÖÖÕ¨ ÕÕ¥Õ¦ Õ§ Õ°Õ²Õ¥Õ¬.\n\n%S\n\nÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ« ÕºÕ¡Õ¿Õ¡Õ½ÕÕ¡Õ¶Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ² (Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼-ÖÕ¸ÖÖÕ¡Õ¿Õ¡Õ¼Õ¥ÖÕ¨ Õ¸ÖÕ¸Õ·Õ«Õ¹ Õ¥Õ¶). +auth.secret=ÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ« Õ°Õ¡ÖÖÕ¶ Õ¡ÕµÕ½Õ¿Õ¥Õ². ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-authproperties] Update translations for tor-messenger-authproperties
commit 1625bba865d6207a36687c24d9390c474db403a4 Author: Translation commit bot Date: Wed Jun 21 20:47:45 2017 + Update translations for tor-messenger-authproperties --- hy/auth.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hy/auth.properties b/hy/auth.properties index 470262e..0d1818d 100644 --- a/hy/auth.properties +++ b/hy/auth.properties @@ -1,7 +1,7 @@ auth.title=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ¥Õ¬ %S-Õ« Õ«Õ¶ÖÕ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¨ auth.yourFingerprint=ÕÕ¡Õ¿Õ¶Õ¡Õ°Õ¥Õ¿Ö ÕÕ¥Õ¦ Õ°Õ¡Õ´Õ¡Ö, %S.\n%S -auth.theirFingerprint=Purported fingerprint for %S:\n%S -auth.help=Verifying a contact's identity helps ensure that the person you are talking to is who they claim to be. +auth.theirFingerprint=ÕÕ¯Õ¡ÕµÕ¾Õ¡Õ® Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¥Õ¿Ö %S-Õ« Õ°Õ¡Õ´Õ¡Ö.\n%S +auth.help=Ô¿Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ« Õ«Õ¶ÖÕ¶Õ¸ÖÕ©ÕµÕ¡Õ¶ Õ°Õ¡Õ½Õ¿Õ¡Õ¿Õ¸ÖÕ´Õ¨ Ö Õ£Õ¶Õ¸ÖÕ´ Õ§ Õ°Õ¡Õ´Õ¸Õ¦Õ¾Õ¥Õ¬, Õ¸Ö Õ¡ÕµÕ¶ Õ´Õ¡ÖÕ¤Õ¨, Õ¸ÖÕ´ Õ°Õ¥Õ¿ Ô´Õ¸ÖÖ ÕÕ¸Õ½Õ¸ÖÕ´ Õ¥Ö, Õ«ÖÕ¸ÕÖ Õ¶Õ¡ Õ§, Õ¸Õ¾ Õ¶Õ¥ÖÕ¯Õ¡ÕµÕ¡Õ¶Õ¸ÖÕ´ Õ§: auth.helpTitle=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ´Õ¡Õ¶ Ö Õ£Õ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶ auth.question=Ô±ÕµÕ½ Õ°Õ¡ÖÖÕ¨ ÕÕ¥Õ¦ Õ§ Õ°Õ²Õ¥Õ¬.\n\n%S\n\nÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ« ÕºÕ¡Õ¿Õ¡Õ½ÕÕ¡Õ¶Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ² (Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼-ÖÕ¸ÖÖÕ¡Õ¿Õ¡Õ¼Õ¥ÖÕ¨ Õ¸ÖÕ¸Õ·Õ«Õ¹ Õ¥Õ¶). -auth.secret=ÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¶ Õ¡ÕµÕ½Õ¿Õ¥Õ². +auth.secret=ÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ« Õ°Õ¡ÖÖÕ¶ Õ¡ÕµÕ½Õ¿Õ¥Õ². ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/whisperback_completed] Update translations for whisperback_completed
commit 4430a007a8fcd3d21c33ab76861bb6facc51cbc4 Author: Translation commit bot Date: Wed Jun 21 20:45:20 2017 + Update translations for whisperback_completed --- hy/hy.po | 215 +++ 1 file changed, 215 insertions(+) diff --git a/hy/hy.po b/hy/hy.po new file mode 100644 index 000..86dcbc6 --- /dev/null +++ b/hy/hy.po @@ -0,0 +1,215 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Sarkis Andreyan , 2017 +msgid "" +msgstr "" +"Project-Id-Version: The Tor Project\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-20 12:09+\n" +"PO-Revision-Date: 2017-06-21 20:42+\n" +"Last-Translator: Sarkis Andreyan \n" +"Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. XXX use a better exception +#: ../whisperBack/whisperback.py:56 +#, python-format +msgid "Invalid contact email: %s" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ Õ§Õ¬. ÖÕ¸Õ½Õ¿. %s" + +#: ../whisperBack/whisperback.py:73 +#, python-format +msgid "Invalid contact OpenPGP key: %s" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ OpenPGP Õ¢Õ¡Õ¶Õ¡Õ¬Õ«. %s" + +#: ../whisperBack/whisperback.py:75 +msgid "Invalid contact OpenPGP public key block" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ OpenPGP Õ¢Õ¡Ö Õ¢Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ¢Õ¬Õ¸Õ¯" + +#: ../whisperBack/exceptions.py:41 +#, python-format +msgid "" +"The %s variable was not found in any of the configuration files " +"/etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py" +msgstr "%s ÖÕ¸ÖÕ¸ÕÕ¡Õ¯Õ¡Õ¶Õ¨ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ¯Õ¡ÖÕ£Õ¡Õ¾Õ¸ÖÕ´Õ¡Õ¶ ÖÕ¡ÕµÕ¬Õ¥ÖÕ«Ö Õ¸Õ¹ Õ´Õ¥Õ¯Õ¸ÖÕ´Õ /etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py" + +#: ../whisperBack/gui.py:110 +msgid "Name of the affected software" +msgstr "Ô±ÕÕ¿Õ¡Õ°Õ¡ÖÕ¾Õ¡Õ® Õ®ÖÕ¡Õ£ÖÕ« Õ¡Õ¶Õ¸ÖÕ¶Õ¨" + +#: ../whisperBack/gui.py:112 +msgid "Exact steps to reproduce the error" +msgstr "ÕÕÕ¡Õ¬Õ´Õ¸ÖÕ¶ÖÕ¨ Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ¯Õ¸Õ¶Õ¯ÖÕ¥Õ¿ ÖÕ¡ÕµÕ¬Õ¥ÖÕ¨" + +#: ../whisperBack/gui.py:114 +msgid "Actual result and description of the error" +msgstr "ÕÕ¥ÖÕ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¤ÕµÕ¸ÖÕ¶ÖÕ¨ Ö Õ½ÕÕ¡Õ¬Õ« Õ¶Õ¯Õ¡ÖÕ¡Õ£ÖÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¨" + +#: ../whisperBack/gui.py:116 +msgid "Desired result" +msgstr "ÕÕ¡ÕÕ¨Õ¶Õ¿ÖÕ¥Õ¬Õ« Õ¡ÖÕ¤ÕµÕ¸ÖÕ¶Ö" + +#: ../whisperBack/gui.py:152 +msgid "Unable to load a valid configuration." +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ³Õ·Õ£ÖÕ«Õ¿ Õ¯Õ¡ÖÕ£Õ¡Õ¾Õ¸ÖÕ¸ÖÕ´Õ¶Õ¥Ö:" + +#: ../whisperBack/gui.py:218 +msgid "Sending mail..." +msgstr "ÕÖÕ²Õ¡ÖÕ¯Õ¾Õ¸ÖÕ´ Õ§ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨..." + +#: ../whisperBack/gui.py:219 +msgid "Sending mail" +msgstr "ÕÖÕ²Õ¡ÖÕ¯Õ¾Õ¸ÖÕ´ Õ§ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨" + +#. pylint: disable=C0301 +#: ../whisperBack/gui.py:221 +msgid "This could take a while..." +msgstr "ÕÕ¡ Õ¯Õ¡ÖÕ¸Õ² Õ´Õ« ÖÕ¸ÖÖ Õ·Õ¡Õ¿ Õ¿ÖÕ¥Õ¬..." + +#: ../whisperBack/gui.py:236 +msgid "The contact email adress doesn't seem valid." +msgstr "Ô¿Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ« Õ§Õ¬. Õ°Õ¡Õ½ÖÕ¥Õ¶ Õ¯Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ Õ³Õ«Õ·Õ¿ Õ¹Õ§:" + +#: ../whisperBack/gui.py:253 +msgid "Unable to send the mail: SMTP error." +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨. SMTP Õ½ÕÕ¡Õ¬Õ´Õ¸ÖÕ¶Ö:" + +#: ../whisperBack/gui.py:255 +msgid "Unable to connect to the server." +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¯Õ¡ÕºÕ¾Õ¥Õ¬ Õ½Õ¥ÖÕ¾Õ¥ÖÕ«Õ¶:" + +#: ../whisperBack/gui.py:257 +msgid "Unable to create or to send the mail." +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨:" + +#: ../whisperBack/gui.py:260 +msgid "" +"\n" +"\n" +"The bug report could not be sent, likely due to network problems. Please try to reconnect to the network and click send again.\n" +"\n" +"If it does not work, you will be offered to save the bug report." +msgstr "\n\nÕÕÕ¡Õ¬Õ« Õ¦Õ¥Õ¯Õ¸ÖÕµÖÕ¨ Õ¹Õ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬, Õ¯Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ ÖÕ¡Õ¶ÖÕ« ÕÕ¶Õ¤Õ«ÖÕ¶Õ¥Ö ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¸Õ¾: Ô½Õ¶Õ¤ÖÕ¸ÖÕ´ Õ¥Õ¶Ö Õ¾Õ¥ÖÕ¡Õ´Õ«Õ¡Õ¶Õ¡Õ¬ ÖÕ¡Õ¶ÖÕ«Õ¶ Ö Õ½Õ¥Õ²Õ´Õ¥Õ¬ «ÕÖÕ²Õ¡Öկել»-Õ¨ Õ¶Õ¸ÖÕ«Ö:\n\nÔµÕ©Õ¥ Õ¤Õ¡ Õ§Õ¬ Õ¹Õ¡Õ·ÕÕ¡Õ¿Õ«Õ ÕÕ¥Õ¦ Õ¯Õ¡Õ¼Õ¡Õ»Õ¡ÖÕ¯Õ¾Õ« ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ Õ½ÕÕ¡Õ¬Õ« Õ¦Õ¥Õ¯Õ¸ÖÕµÖÕ¨:" + +#: ../whisperBack/gui.py:273 +msgid "Your message has been sent." +msgstr "ÕÕ¥Ö Õ¶Õ¡Õ´Õ¡Õ¯Õ¶ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¾Õ¥Õ¬ Õ§:" + +#: ../whisperBack/gui.py:280 +msgid "An error occured during encryption." +msgstr "ÕÕÕ¡Õ¬Õ´Õ¸ÖÕ¶Ö Õ¿Õ¥Õ²Õ« Õ¸ÖÕ¶Õ¥ÖÕ¡Õ¾ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸ÖÕ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖÕ¸ÖÕ´:" + +#: ../whisperBack/gui.py:300 +#, python-format +msgid "Unable to save %s." +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ %s-Õ¨:" + +#: ../whisperBack/gui.py:323 +#, python-format +msgid "" +"The bug report could not be sent, likely due to network problems.\n" +"\n" +"As a work-around you can save the bug report as a file on a USB drive and try to send it
[tor-commits] [translation/whisperback] Update translations for whisperback
commit 68ed054875e4269b78d540c1e01301ab5f8eb161 Author: Translation commit bot Date: Wed Jun 21 20:45:16 2017 + Update translations for whisperback --- hy/hy.po | 85 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/hy/hy.po b/hy/hy.po index 1cae452..86dcbc6 100644 --- a/hy/hy.po +++ b/hy/hy.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Sarkis Andreyan , 2017 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-03-20 12:09+\n" -"PO-Revision-Date: 2017-03-21 08:24+\n" -"Last-Translator: carolyn \n" +"PO-Revision-Date: 2017-06-21 20:42+\n" +"Last-Translator: Sarkis Andreyan \n" "Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,72 +22,72 @@ msgstr "" #: ../whisperBack/whisperback.py:56 #, python-format msgid "Invalid contact email: %s" -msgstr "" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ Õ§Õ¬. ÖÕ¸Õ½Õ¿. %s" #: ../whisperBack/whisperback.py:73 #, python-format msgid "Invalid contact OpenPGP key: %s" -msgstr "" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ OpenPGP Õ¢Õ¡Õ¶Õ¡Õ¬Õ«. %s" #: ../whisperBack/whisperback.py:75 msgid "Invalid contact OpenPGP public key block" -msgstr "" +msgstr "ÕÕÕ¡Õ¬ Õ¯Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ¡ÕµÕ«Õ¶ OpenPGP Õ¢Õ¡Ö Õ¢Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ¢Õ¬Õ¸Õ¯" #: ../whisperBack/exceptions.py:41 #, python-format msgid "" "The %s variable was not found in any of the configuration files " "/etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py" -msgstr "" +msgstr "%s ÖÕ¸ÖÕ¸ÕÕ¡Õ¯Õ¡Õ¶Õ¨ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬ Õ¯Õ¡ÖÕ£Õ¡Õ¾Õ¸ÖÕ´Õ¡Õ¶ ÖÕ¡ÕµÕ¬Õ¥ÖÕ«Ö Õ¸Õ¹ Õ´Õ¥Õ¯Õ¸ÖÕ´Õ /etc/whisperback/config.py, ~/.whisperback/config.py, ./config.py" #: ../whisperBack/gui.py:110 msgid "Name of the affected software" -msgstr "" +msgstr "Ô±ÕÕ¿Õ¡Õ°Õ¡ÖÕ¾Õ¡Õ® Õ®ÖÕ¡Õ£ÖÕ« Õ¡Õ¶Õ¸ÖÕ¶Õ¨" #: ../whisperBack/gui.py:112 msgid "Exact steps to reproduce the error" -msgstr "" +msgstr "ÕÕÕ¡Õ¬Õ´Õ¸ÖÕ¶ÖÕ¨ Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ¯Õ¸Õ¶Õ¯ÖÕ¥Õ¿ ÖÕ¡ÕµÕ¬Õ¥ÖÕ¨" #: ../whisperBack/gui.py:114 msgid "Actual result and description of the error" -msgstr "" +msgstr "ÕÕ¥ÖÕ»Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¤ÕµÕ¸ÖÕ¶ÖÕ¨ Ö Õ½ÕÕ¡Õ¬Õ« Õ¶Õ¯Õ¡ÖÕ¡Õ£ÖÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¨" #: ../whisperBack/gui.py:116 msgid "Desired result" -msgstr "" +msgstr "ÕÕ¡ÕÕ¨Õ¶Õ¿ÖÕ¥Õ¬Õ« Õ¡ÖÕ¤ÕµÕ¸ÖÕ¶Ö" #: ../whisperBack/gui.py:152 msgid "Unable to load a valid configuration." -msgstr "" +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ³Õ·Õ£ÖÕ«Õ¿ Õ¯Õ¡ÖÕ£Õ¡Õ¾Õ¸ÖÕ¸ÖÕ´Õ¶Õ¥Ö:" #: ../whisperBack/gui.py:218 msgid "Sending mail..." -msgstr "" +msgstr "ÕÖÕ²Õ¡ÖÕ¯Õ¾Õ¸ÖÕ´ Õ§ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨..." #: ../whisperBack/gui.py:219 msgid "Sending mail" -msgstr "" +msgstr "ÕÖÕ²Õ¡ÖÕ¯Õ¾Õ¸ÖÕ´ Õ§ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨" #. pylint: disable=C0301 #: ../whisperBack/gui.py:221 msgid "This could take a while..." -msgstr "" +msgstr "ÕÕ¡ Õ¯Õ¡ÖÕ¸Õ² Õ´Õ« ÖÕ¸ÖÖ Õ·Õ¡Õ¿ Õ¿ÖÕ¥Õ¬..." #: ../whisperBack/gui.py:236 msgid "The contact email adress doesn't seem valid." -msgstr "" +msgstr "Ô¿Õ¸Õ¶Õ¿Õ¡Õ¯Õ¿Õ« Õ§Õ¬. Õ°Õ¡Õ½ÖÕ¥Õ¶ Õ¯Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ Õ³Õ«Õ·Õ¿ Õ¹Õ§:" #: ../whisperBack/gui.py:253 msgid "Unable to send the mail: SMTP error." -msgstr "" +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨. SMTP Õ½ÕÕ¡Õ¬Õ´Õ¸ÖÕ¶Ö:" #: ../whisperBack/gui.py:255 msgid "Unable to connect to the server." -msgstr "" +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¯Õ¡ÕºÕ¾Õ¥Õ¬ Õ½Õ¥ÖÕ¾Õ¥ÖÕ«Õ¶:" #: ../whisperBack/gui.py:257 msgid "Unable to create or to send the mail." -msgstr "" +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨:" #: ../whisperBack/gui.py:260 msgid "" @@ -95,20 +96,20 @@ msgid "" "The bug report could not be sent, likely due to network problems. Please try to reconnect to the network and click send again.\n" "\n" "If it does not work, you will be offered to save the bug report." -msgstr "" +msgstr "\n\nÕÕÕ¡Õ¬Õ« Õ¦Õ¥Õ¯Õ¸ÖÕµÖÕ¨ Õ¹Õ½Õ¿Õ¡ÖÕ¾Õ¥Ö Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬, Õ¯Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ ÖÕ¡Õ¶ÖÕ« ÕÕ¶Õ¤Õ«ÖÕ¶Õ¥Ö ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¸Õ¾: Ô½Õ¶Õ¤ÖÕ¸ÖÕ´ Õ¥Õ¶Ö Õ¾Õ¥ÖÕ¡Õ´Õ«Õ¡Õ¶Õ¡Õ¬ ÖÕ¡Õ¶ÖÕ«Õ¶ Ö Õ½Õ¥Õ²Õ´Õ¥Õ¬ «ÕÖÕ²Õ¡Öկել»-Õ¨ Õ¶Õ¸ÖÕ«Ö:\n\nÔµÕ©Õ¥ Õ¤Õ¡ Õ§Õ¬ Õ¹Õ¡Õ·ÕÕ¡Õ¿Õ«Õ ÕÕ¥Õ¦ Õ¯Õ¡Õ¼Õ¡Õ»Õ¡ÖÕ¯Õ¾Õ« ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ Õ½ÕÕ¡Õ¬Õ« Õ¦Õ¥Õ¯Õ¸ÖÕµÖÕ¨:" #: ../whisperBack/gui.py:273 msgid "Your message has been sent." -msgstr "" +msgstr "ÕÕ¥Ö Õ¶Õ¡Õ´Õ¡Õ¯Õ¶ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¾Õ¥Õ¬ Õ§:" #: ../whisperBack/gui.py:280 msgid "An error occured during encryption." -msgstr "" +msgstr "ÕÕÕ¡Õ¬Õ´Õ¸ÖÕ¶Ö Õ¿Õ¥Õ²Õ« Õ¸ÖÕ¶Õ¥ÖÕ¡Õ¾ Õ¯Õ¸Õ¤Õ¡Õ¾Õ¸ÖÕ´Õ¡Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖÕ¸ÖÕ´:" #: ../whisperBack/gui.py:300 #, python-format msgid "Unable to save %s." -msgstr "" +msgstr "ÕÕ½Õ¿Õ¡ÖÕ¾Õ¥Ö ÕºÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ %s-Õ¨:" #: ../whisperBack/gui.py:323 #, python-format @@ -118,39 +119,39 @@ msgid "" "As a work-around you can s
[tor-commits] [translation/tor-messenger-authproperties] Update translations for tor-messenger-authproperties
commit 66ebf500d8fb4640f63e333faf6772b72c48e66d Author: Translation commit bot Date: Wed Jun 21 20:17:49 2017 + Update translations for tor-messenger-authproperties --- hy/auth.properties | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hy/auth.properties b/hy/auth.properties index 17410b1..470262e 100644 --- a/hy/auth.properties +++ b/hy/auth.properties @@ -1,7 +1,7 @@ -auth.title=Verify %S's identity -auth.yourFingerprint=Fingerprint for you, %S:\n%S +auth.title=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ¥Õ¬ %S-Õ« Õ«Õ¶ÖÕ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¨ +auth.yourFingerprint=ÕÕ¡Õ¿Õ¶Õ¡Õ°Õ¥Õ¿Ö ÕÕ¥Õ¦ Õ°Õ¡Õ´Õ¡Ö, %S.\n%S auth.theirFingerprint=Purported fingerprint for %S:\n%S auth.help=Verifying a contact's identity helps ensure that the person you are talking to is who they claim to be. -auth.helpTitle=Verification help -auth.question=This is the question asked by your contact:\n\n%S\n\nEnter secret answer here (case sensitive): -auth.secret=Enter secret here: +auth.helpTitle=ÕÕ¡Õ½Õ¿Õ¡Õ¿Õ´Õ¡Õ¶ Ö Õ£Õ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶ +auth.question=Ô±ÕµÕ½ Õ°Õ¡ÖÖÕ¨ ÕÕ¥Õ¦ Õ§ Õ°Õ²Õ¥Õ¬.\n\n%S\n\nÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ« ÕºÕ¡Õ¿Õ¡Õ½ÕÕ¡Õ¶Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ² (Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼-ÖÕ¸ÖÖÕ¡Õ¿Õ¡Õ¼Õ¥ÖÕ¨ Õ¸ÖÕ¸Õ·Õ«Õ¹ Õ¥Õ¶). +auth.secret=ÕÕ¸ÖÕ¿ÖÕ¡Õ£ÖÕ¥Ö Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¶ Õ¡ÕµÕ½Õ¿Õ¥Õ². ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-authdtd] Update translations for tor-messenger-authdtd
commit 06fcb0a7c141e743289c76b2eabe2c1bc57eebbd Author: Translation commit bot Date: Wed Jun 21 20:17:40 2017 + Update translations for tor-messenger-authdtd --- hy/auth.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/auth.dtd b/hy/auth.dtd index 193ac7a..4d87e28 100644 --- a/hy/auth.dtd +++ b/hy/auth.dtd @@ -17,5 +17,5 @@ - + \ 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] [translation/torbutton-abouttorproperties_completed] Update translations for torbutton-abouttorproperties_completed
commit 60fa33ba1ee562a4c30a97666ba5dcb9c76930d0 Author: Translation commit bot Date: Wed Jun 21 20:17:20 2017 + Update translations for torbutton-abouttorproperties_completed --- hy/abouttor.properties | 9 + 1 file changed, 9 insertions(+) diff --git a/hy/abouttor.properties b/hy/abouttor.properties new file mode 100644 index 000..ee8789a --- /dev/null +++ b/hy/abouttor.properties @@ -0,0 +1,9 @@ +# Copyright (c) 2014, The Tor Project, Inc. +# See LICENSE for licensing information. +# vim: set sw=2 sts=2 ts=8 et: + +aboutTor.searchDDG.privacy=ÕÖÕ¸Õ¶Õ¥Ö Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ DuckDuckGo-Õ¸Õ¾: +# The following string is a link which replaces %1$S above. +aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html +# The following string is a link which replaces %2$S above. +aboutTor.searchDDG.search.link=https://duckduckgo.com/ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbutton-abouttorproperties] Update translations for torbutton-abouttorproperties
commit 846f3e3add734661574f04b1caa0abbdb1f0d3e0 Author: Translation commit bot Date: Wed Jun 21 20:17:16 2017 + Update translations for torbutton-abouttorproperties --- hy/abouttor.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/abouttor.properties b/hy/abouttor.properties index f9723bf..ee8789a 100644 --- a/hy/abouttor.properties +++ b/hy/abouttor.properties @@ -2,7 +2,7 @@ # See LICENSE for licensing information. # vim: set sw=2 sts=2 ts=8 et: -aboutTor.searchDDG.privacy=Search securely with DuckDuckGo. +aboutTor.searchDDG.privacy=ÕÖÕ¸Õ¶Õ¥Ö Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ DuckDuckGo-Õ¸Õ¾: # The following string is a link which replaces %1$S above. aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html # The following string is a link which replaces %2$S above. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/bridgedb_completed] Update translations for bridgedb_completed
commit f34c19d9eaad8b8054e506006ab3744bf9a740dd Author: Translation commit bot Date: Wed Jun 21 20:15:09 2017 + Update translations for bridgedb_completed --- hy/LC_MESSAGES/bridgedb.po | 382 + 1 file changed, 382 insertions(+) diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po new file mode 100644 index 000..e773baa --- /dev/null +++ b/hy/LC_MESSAGES/bridgedb.po @@ -0,0 +1,382 @@ +# Translations template for BridgeDB. +# Copyright (C) 2015 'The Tor Project, Inc.' +# This file is distributed under the same license as the BridgeDB project. +# +# Translators: +# Hrach Mkrtchyan , 2016 +# Sarkis Andreyan , 2017 +msgid "" +msgstr "" +"Project-Id-Version: The Tor Project\n" +"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" +"POT-Creation-Date: 2015-07-25 03:40+\n" +"PO-Revision-Date: 2017-06-21 20:11+\n" +"Last-Translator: Sarkis Andreyan \n" +"Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 1.3\n" +"Language: hy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANSLATORS: Please DO NOT translate the following words and/or phrases in +#. any string (regardless of capitalization and/or punctuation): +#. "BridgeDB" +#. "pluggable transport" +#. "pluggable transports" +#. "obfs2" +#. "obfs3" +#. "scramblesuit" +#. "fteproxy" +#. "Tor" +#. "Tor Browser" +#: bridgedb/https/server.py:167 +msgid "Sorry! Something went wrong with your request." +msgstr "ÕÕ¥ÖÕ¥ÖÕ¥ÕÖ, ÕÕ¥Ö Õ°Õ¡ÖÖÕ¸ÖÕ´Õ¨ Õ½ÕÕ¡Õ¬ Õ¨Õ¶Õ©Õ¡ÖÖ Õ½Õ¿Õ¡ÖÕ¡Õ¾:" + +#: bridgedb/https/templates/base.html:79 +msgid "Report a Bug" +msgstr "ÕÕ¡ÕµÕ¿Õ¶Õ¥Õ¬ Õ½ÕÕ¡Õ¬Õ« Õ´Õ¡Õ½Õ«Õ¶" + +#: bridgedb/https/templates/base.html:82 +msgid "Source Code" +msgstr "ÔµÕ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤" + +#: bridgedb/https/templates/base.html:85 +msgid "Changelog" +msgstr "ÕÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ« Õ´Õ¡Õ¿ÕµÕ¡Õ¶" + +#: bridgedb/https/templates/base.html:88 +msgid "Contact" +msgstr "Ô¿Õ¡ÕºÕ¾Õ¥Õ¬" + +#: bridgedb/https/templates/bridges.html:35 +msgid "Select All" +msgstr "Ô¸Õ¶Õ¿ÖÕ¥Õ¬ Õ¢Õ¸Õ¬Õ¸ÖÕ¨" + +#: bridgedb/https/templates/bridges.html:40 +msgid "Show QRCode" +msgstr "ÕÕ¸ÖÖÕ¡Õ¤ÖÕ¥Õ¬ QRCode-Õ¨" + +#: bridgedb/https/templates/bridges.html:52 +msgid "QRCode for your bridge lines" +msgstr "QRCodeÕ ÕÕ¥Ö bridge line-Õ¥ÖÕ« Õ°Õ¡Õ´Õ¡Ö" + +#. TRANSLATORS: Please translate this into some silly way to say +#. "There was a problem!" in your language. For example, +#. for Italian, you might translate this into "Mama mia!", +#. or for French: "Sacrebleu!". :) +#: bridgedb/https/templates/bridges.html:67 +#: bridgedb/https/templates/bridges.html:125 +msgid "Uh oh, spaghettios!" +msgstr "ÕÖÖ, Õ´Õ« Õ¢Õ¡Õ¶ Õ¶Õ¥Õ¶Ö Õ¹Õ¥Õ²Õ¡Õ¾:" + +#: bridgedb/https/templates/bridges.html:68 +msgid "It seems there was an error getting your QRCode." +msgstr "Ô¿Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ Õ½ÕÕ¡Õ¬ Õ¿Õ¥Õ²Õ« Õ¸ÖÕ¶Õ¥ÖÕ¡Õ¾ ÕÕ¥Ö QRCode-Õ¨ Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ«Õ½:" + +#: bridgedb/https/templates/bridges.html:73 +msgid "" +"This QRCode contains your bridge lines. Scan it with a QRCode reader to copy" +" your bridge lines onto mobile and other devices." +msgstr "Ô±ÕµÕ½ QRCode-Õ¨ ÕºÕ¡ÖÕ¸ÖÕ¶Õ¡Õ¯Õ¸ÖÕ´ Õ§ ÕÕ¥Ö bridge line-Õ¥ÖÕ¨: ÕÕ¯Õ¡Õ¶Õ¡Õ¾Õ¸ÖÕ¥ÕÖ Õ¡ÕµÕ¶ QRCode-Õ¨ Õ¯Õ¡ÖÕ¤Õ¡ÖÕ¸Õ² Õ®ÖÕ¡Õ£ÖÕ¸Õ¾Õ ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬Õ¸Ö Õ°Õ¡Õ´Õ¡Ö ÕÕ¥Ö bridge line-Õ¥ÖÕ¨ Õ·Õ¡ÖÕªÕ¡Õ¯Õ¡Õ¶ Ö Õ¡ÕµÕ¬ Õ½Õ¡ÖÖÕ¥ÖÕ¸ÖÕ´:" + +#: bridgedb/https/templates/bridges.html:131 +msgid "There currently aren't any bridges available..." +msgstr "Ô±ÕµÕªÕ´ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¸Õ¹ Õ´Õ« bridge Õ¹Õ¯Õ¡..." + +#: bridgedb/https/templates/bridges.html:132 +#, python-format +msgid "" +" Perhaps you should try %s going back %s and choosing a different bridge " +"type!" +msgstr "ÕÕ¡Õ¾Õ¡Õ¶Õ¡Õ¢Õ¡ÖÕ ÖÕ¸ÖÕ±Õ¥Ö %sÕ¥Õ¿ Õ¾Õ¥ÖÕ¡Õ¤Õ¡Õ¼Õ¶Õ¡Õ¬%s Ö Õ¨Õ¶Õ¿ÖÕ¥Õ¬ Õ¸ÖÖÕ«Õ· bridge-Õ« Õ¿Õ¥Õ½Õ¡Õ¯:" + +#: bridgedb/https/templates/index.html:11 +#, python-format +msgid "Step %s1%s" +msgstr "ÕÕ¡ÕµÕ¬ %s1%s" + +#: bridgedb/https/templates/index.html:13 +#, python-format +msgid "Download %s Tor Browser %s" +msgstr "ÕÕ¥ÖÕ¢Õ¥Õ¼Õ¶Õ¥ÕÖ %s«Tor Browser»-Õ¨%s" + +#: bridgedb/https/templates/index.html:25 +#, python-format +msgid "Step %s2%s" +msgstr "ÕÕ¡ÕµÕ¬ %s2%s" + +#: bridgedb/https/templates/index.html:27 +#, python-format +msgid "Get %s bridges %s" +msgstr "ÕÕ¿Õ¡ÖÕ¥ÕÖ %sbridge-Õ¶Õ¥Ö%s" + +#: bridgedb/https/templates/index.html:36 +#, python-format +msgid "Step %s3%s" +msgstr "ÕÕ¡ÕµÕ¬ %s3%s" + +#: bridgedb/https/templates/index.html:38 +#, python-format +msgid "Now %s add the bridges to Tor Browser %s" +msgstr "Ô±ÕµÕªÕ´ %sÕ¡Õ¾Õ¥Õ¬Õ¡ÖÖÕ¥ÕÖ bridge-Õ¶Õ¥ÖÕ¨ «Tor Browser»-Õ«Õ¶%s:" + +#. TRANSLATORS: Please make sure the '%s' surrounding single letters at the +#. beginning of words are pre
[tor-commits] [translation/bridgedb] Update translations for bridgedb
commit 90e16630226f22fdabac6f97d5446954261222f0 Author: Translation commit bot Date: Wed Jun 21 20:15:04 2017 + Update translations for bridgedb --- hy/LC_MESSAGES/bridgedb.po | 26 +- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po index 3120657..e773baa 100644 --- a/hy/LC_MESSAGES/bridgedb.po +++ b/hy/LC_MESSAGES/bridgedb.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" "POT-Creation-Date: 2015-07-25 03:40+\n" -"PO-Revision-Date: 2017-06-21 19:42+\n" +"PO-Revision-Date: 2017-06-21 20:11+\n" "Last-Translator: Sarkis Andreyan \n" "Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" "MIME-Version: 1.0\n" @@ -178,7 +178,7 @@ msgstr "Ô´Õ¸ÖÖ Õ£Õ¥ÖÕ¡Õ¦Õ¡Õ¶ÖÕ¥Õ¬ Õ¥Ö Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¡Õ¹Õ¡ÖÕ¨, Õ¤Õ¡Õ¶Õ¤Õ¡Õ² #: bridgedb/strings.py:50 msgid "" "COMMANDs: (combine COMMANDs to specify multiple options simultaneously)" -msgstr "" +msgstr "COMMAND-Õ¶Õ¥Ö (Õ´Õ«Õ¡Õ¾Õ¸ÖÕ¥ÕÖ COMMAND-Õ¶Õ¥ÖÕ¨Õ Õ°Õ¡Õ¿Õ¯Õ¸ÖÕ¸Õ·Õ¥Õ¬Õ¸Ö Õ°Õ¡Õ´Õ¡Ö Õ´Õ« ÖÕ¡Õ¶Õ« Õ¿Õ¡ÖÕ¢Õ¥ÖÕ¡Õ¯Õ¶Õ¥Ö Õ´Õ«Õ¡ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯)." #. TRANSLATORS: Please DO NOT translate the word "BridgeDB". #: bridgedb/strings.py:53 @@ -225,7 +225,7 @@ msgid "" "difficult for anyone watching your internet traffic to determine that you are\n" "using Tor.\n" "\n" -msgstr "" +msgstr "Bridge DB-Õ¶ Õ¯Õ¡ÖÕ¸Õ² Õ§ Õ¿ÖÕ¡Õ´Õ¡Õ¤ÖÕ¥Õ¬ bridge-Õ¶Õ¥Ö Õ¸ÖÕ¸Õ·Õ¡Õ¯Õ« %sPluggable Transport-Õ¶Õ¥ÖÕ« Õ¿Õ¥Õ½Õ¡Õ¯Õ¶Õ¥ÖÕ¸Õ¾%s,\nÕ¸ÖÕ¨ Õ¯Õ¡ÖÕ¸Õ² Õ§ Ö Õ£Õ¶Õ¥Õ¬ ÖÕ¸Õ²Õ¡ÖÕ¯Õ¥Õ¬ ÕÕ¥Ö Õ´Õ«Õ¡ÖÕ¸ÖÕ´Õ¶Õ¥ÖÕ¨ Tor-Õ« ÖÕ¡Õ¶ÖÕ«Õ¶Õ Õ¤Õ¡ÖÕ±Õ¶Õ¥Õ¬Õ¸Õ¾\nÕÕ¥Ö Õ«Õ¶Õ¿Õ¥ÖÕ¶Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ°Õ¸Õ½ÖÕ«Õ¶ Õ°Õ¥Õ¿ÖÕ¥Õ¬Õ¨ Ö ÕÕ¥Õ¦ Õ¢Õ¡ÖÕ¡Õ°Õ¡ÕµÕ¿Õ¥Õ¬Õ¨\n Õ¡Õ¾Õ¥Õ¬Õ« Õ¤ÕªÕ¾Õ¡Ö:\n\n" #. TRANSLATORS: Please DO NOT translate "Pluggable Transports". #: bridgedb/strings.py:79 @@ -233,7 +233,7 @@ msgid "" "Some bridges with IPv6 addresses are also available, though some Pluggable\n" "Transports aren't IPv6 compatible.\n" "\n" -msgstr "" +msgstr "ÕÖÕ¸Õ· IPv6 Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥ÖÕ¸Õ¾ bridge-Õ¶Õ¥Ö Õ¶Õ¸ÖÕµÕ¶ÕºÕ¥Õ½ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¥Õ¶, Õ¹Õ¶Õ¡ÕµÕ¡Õ®, Õ¸Ö Õ¸ÖÕ¸Õ· Pluggable\nTransport-Õ¶Õ¥Ö IPv6-Õ°Õ¡Õ´Õ¡Õ¿Õ¥Õ²Õ¥Õ¬Õ« Õ¹Õ¥Õ¶:\n" #. TRANSLATORS: Please DO NOT translate "BridgeDB". #. TRANSLATORS: The phrase "plain-ol'-vanilla" means "plain, boring, @@ -247,7 +247,7 @@ msgid "" "Pluggable Transports %s which maybe doesn't sound as cool, but they can still\n" "help to circumvent internet censorship in many cases.\n" "\n" -msgstr "" +msgstr "ÕÕ¡Õ¾Õ¥Õ¬Õ¥Õ¶Ö, Õ¸Ö BridgeDB-Õ¶ Õ·Õ¡Õ¿ Õ¸ÖÕ¶Õ« Õ¶Õ¡Ö ÕºÕ¡ÖÕ¦-Õ°Õ¡Õ½Õ¡ÖÕ¡Õ¯ Bridge-Õ¶Õ¥Ö %s Õ¡Õ¼Õ¡Õ¶Ö Õ¸ÖÖÕ§\nPluggable Transport-Õ¶Õ¥ÖÕ«, %s Õ¸ÖÕ¸Õ¶Ö, Õ£Õ¸ÖÖÕ¥, Õ¡ÕµÕ¶ÖÕ¡Õ¶ Õ§Õ¬ Õ¦Õ«Õ¬ Õ¹Õ¥Õ¶ Õ°Õ¶Õ¹Õ¸ÖÕ´, Õ¢Õ¡ÕµÖ Õ¯Õ¡ÖÕ¸Õ² Ö Õ£Õ¶Õ¥Õ¬ ÕÕ¸ÖÕ½Õ¡ÖÕ¥Õ¬ Õ°Õ¥Õ¿Õ¡ÖÕ¶Õ¶Õ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ«Ö Õ·Õ¡Õ¿ Õ¤Õ¥ÕºÖÕ¥ÖÕ¸ÖÕ´:\n\n" #: bridgedb/strings.py:101 msgid "What are bridges?" @@ -256,7 +256,7 @@ msgstr "Ô»ÕÕ¶Õ¹ Õ¥Õ¶ bridge-Õ¶Õ¥ÖÕ¨:" #: bridgedb/strings.py:102 #, python-format msgid "%s Bridges %s are Tor relays that help you circumvent censorship." -msgstr "" +msgstr "%sBridge-Õ¶Õ¥ÖÕ¨%s Tor-Õ« «աÖÕ£Õ¥Õ¬Õ¡Õ¯Õ¶Õ¥Ö» Õ¥Õ¶, Õ¸ÖÕ¸Õ¶Ö Õ¯Ö Õ£Õ¶Õ¥Õ¶ ÕÕ¥Ö Õ·ÖÕ»Õ¡Õ¶ÖÕ¥Õ¬ Õ°Õ¥Õ¿Õ¡ÖÕ¶Õ¶Õ¸ÖÕ´Õ¶Õ¥ÖÕ¨:" #: bridgedb/strings.py:107 msgid "I need an alternative way of getting bridges!" @@ -268,11 +268,11 @@ msgid "" "Another way to get bridges is to send an email to %s. Please note that you must\n" "send the email using an address from one of the following email providers:\n" "%s, %s or %s." -msgstr "" +msgstr "Bridge-Õ¶Õ¥Ö Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ´Õ¥Õ¯ Õ¡ÕµÕ¬ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯ Õ§ Õ§Õ¬Õ¥Õ¯Õ¿ÖÕ¸Õ¶Õ¡ÕµÕ«Õ¶ Õ¶Õ¡Õ´Õ¡Õ¯ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬Õ¨ %s-Õ«Õ¶: ÕÕ¡Õ·Õ¾Õ« Õ¡Õ¼Õ¥Ö, Õ¸Ö Ô´Õ¸ÖÖ\nÕºÕ¥Õ¿Ö Õ§ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Ö Õ§Õ¬Õ¥Õ¯Õ¿ÖÕ¸Õ¶Õ¡ÕµÕ«Õ¶ Õ¶Õ¡Õ´Õ¡Õ¯Õ¨ Õ°Õ¥Õ¿ÖÕµÕ¡Õ¬ Õ§Õ¬. ÖÕ¸Õ½Õ¿Õ¡ÕµÕ«Õ¶ Õ®Õ¡Õ¼Õ¡ÕµÕ¸ÖÕ©ÕµÕ¸ÖÕ¶ Õ´Õ¡Õ¿Õ¸ÖÖÕ¸Õ²Õ¶Õ¥ÖÕ«Ö Õ¸ÖÖÕ§ Õ´Õ¥Õ¯Õ« Õ´Õ«Õ»Õ¸ÖÕ¸Õ¾.\n%s,%s Õ¯Õ¡Õ´ %s:" #: bridgedb/strings.py:115 msgid "My bridges don't work! I need help!" -msgstr "" +msgstr "Ô»Õ´ bridge-Õ¥ÖÕ¨ Õ¹Õ¥ÕÕ¶ Õ¡Õ·ÕÕ¡Õ¿Õ¸ÖÕ´: ÕÕ£Õ¶Õ¸ÖÕ©ÕµÕ¸ÕÖÕ¶:" #. TRANSLATORS: Please DO NOT translate "Tor". #: bridgedb/strings.py:117 @@ -288,7 +288,7 @@ msgid "" "Try including as much info about your case as you can, including the list of\n" "bridges and Pluggable Transports you tried to use, your Tor Browser version,\n" "and any messages which Tor gave out, etc." -msgstr "" +msgstr "ÕÕ¸ÖÕ±Õ¥Ö Õ¶Õ¥ÖÕ¡Õ¼Õ¥Õ¬ Õ¸ÖÖÕ¡Õ¶ Õ°Õ¶Õ¡ÖÕ¡Õ¾Õ¸Ö Õ§ Õ·Õ¡Õ¿ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö ÕÕ¥Ö Õ¤Õ¥ÕºÖÕ« Õ¾Õ¥ÖÕ¡Õ¢Õ¥ÖÕµÕ¡Õ¬, Õ¶Õ¥ÖÕ¡Õ¼ÕµÕ¡Õ¬ Õ¡ÕµÕ¶ bridge-Õ¶Õ¥ÖÕ«\nÖ Pluggable Transport-Õ¶Õ¥ÖÕ« ÖÕ¡Õ¶Õ¯Õ¨, Õ¸ÖÕ¸Õ¶Ö ÖÕ¸ÖÕ±Õ¥Õ¬ Õ¥Ö Ö Õ£Õ¿Õ¡Õ£Õ¸ÖÕ®Õ¥Õ¬, ÕÕ¥Ö Tor Browser-Õ« Õ¿Õ¡ÖÕ¢Õ¥ÖÕ¡Õ¯Õ¨,\n ÖÕ¡Õ¶Õ¯Õ¡ÖÕ¡Õ® Õ¡ÕµÕ
[tor-commits] [translation/bridgedb] Update translations for bridgedb
commit c8735602a725a91b500991c8677d7702388e6c99 Author: Translation commit bot Date: Wed Jun 21 19:45:04 2017 + Update translations for bridgedb --- hy/LC_MESSAGES/bridgedb.po | 52 +++--- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po index b9641e4..3120657 100644 --- a/hy/LC_MESSAGES/bridgedb.po +++ b/hy/LC_MESSAGES/bridgedb.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" "POT-Creation-Date: 2015-07-25 03:40+\n" -"PO-Revision-Date: 2017-06-21 19:14+\n" +"PO-Revision-Date: 2017-06-21 19:42+\n" "Last-Translator: Sarkis Andreyan \n" "Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" "MIME-Version: 1.0\n" @@ -49,7 +49,7 @@ msgstr "ÕÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ« Õ´Õ¡Õ¿ÕµÕ¡Õ¶" #: bridgedb/https/templates/base.html:88 msgid "Contact" -msgstr "" +msgstr "Ô¿Õ¡ÕºÕ¾Õ¥Õ¬" #: bridgedb/https/templates/bridges.html:35 msgid "Select All" @@ -61,7 +61,7 @@ msgstr "ÕÕ¸ÖÖÕ¡Õ¤ÖÕ¥Õ¬ QRCode-Õ¨" #: bridgedb/https/templates/bridges.html:52 msgid "QRCode for your bridge lines" -msgstr "" +msgstr "QRCodeÕ ÕÕ¥Ö bridge line-Õ¥ÖÕ« Õ°Õ¡Õ´Õ¡Ö" #. TRANSLATORS: Please translate this into some silly way to say #. "There was a problem!" in your language. For example, @@ -80,7 +80,7 @@ msgstr "Ô¿Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ Õ½ÕÕ¡Õ¬ Õ¿Õ¥Õ²Õ« Õ¸ÖÕ¶Õ¥ÖÕ¡Õ¾ ÕÕ¥Ö QRCode-Õ¨ Õ½Õ¿ msgid "" "This QRCode contains your bridge lines. Scan it with a QRCode reader to copy" " your bridge lines onto mobile and other devices." -msgstr "" +msgstr "Ô±ÕµÕ½ QRCode-Õ¨ ÕºÕ¡ÖÕ¸ÖÕ¶Õ¡Õ¯Õ¸ÖÕ´ Õ§ ÕÕ¥Ö bridge line-Õ¥ÖÕ¨: ÕÕ¯Õ¡Õ¶Õ¡Õ¾Õ¸ÖÕ¥ÕÖ Õ¡ÕµÕ¶ QRCode-Õ¨ Õ¯Õ¡ÖÕ¤Õ¡ÖÕ¸Õ² Õ®ÖÕ¡Õ£ÖÕ¸Õ¾Õ ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬Õ¸Ö Õ°Õ¡Õ´Õ¡Ö ÕÕ¥Ö bridge line-Õ¥ÖÕ¨ Õ·Õ¡ÖÕªÕ¡Õ¯Õ¡Õ¶ Ö Õ¡ÕµÕ¬ Õ½Õ¡ÖÖÕ¥ÖÕ¸ÖÕ´:" #: bridgedb/https/templates/bridges.html:131 msgid "There currently aren't any bridges available..." @@ -183,25 +183,25 @@ msgstr "" #. TRANSLATORS: Please DO NOT translate the word "BridgeDB". #: bridgedb/strings.py:53 msgid "Welcome to BridgeDB!" -msgstr "" +msgstr "Ô²Õ¡ÖÕ« Õ£Õ¡Õ¬Õ¸ÖÕ½Õ¿ «BridgeDB»:" #. TRANSLATORS: Please DO NOT translate the words "transport" or "TYPE". #: bridgedb/strings.py:55 msgid "Currently supported transport TYPEs:" -msgstr "" +msgstr "Ô²Õ¸Õ¬Õ¸Ö Õ½ÕºÕ¡Õ½Õ¡ÖÕ¯Õ¾Õ¸Õ² transport TYPE-Õ¥ÖÕ¨." #: bridgedb/strings.py:56 #, python-format msgid "Hey, %s!" -msgstr "" +msgstr "ÕÕ¥ÕÕµ, %s:" #: bridgedb/strings.py:57 msgid "Hello, friend!" -msgstr "" +msgstr "Ô²Õ¡ÖÖÕ, Õ¨Õ¶Õ¯Õ¥ÖÕ½:" #: bridgedb/strings.py:58 bridgedb/https/templates/base.html:90 msgid "Public Keys" -msgstr "" +msgstr "Public Key-Õ¥Ö" #. TRANSLATORS: This string will end up saying something like: #. "This email was generated with rainbows, unicorns, and sparkles @@ -211,7 +211,7 @@ msgstr "" msgid "" "This email was generated with rainbows, unicorns, and sparkles\n" "for %s on %s at %s." -msgstr "" +msgstr "Ô±ÕµÕ½ Õ§Õ¬. Õ¶Õ¡Õ´Õ¡Õ¯Õ¨ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¥Õ¶Ö Õ®Õ«Õ¡Õ®Õ¡Õ¶Õ¶Õ¥ÖÕ¸Õ¾, Õ´Õ«Õ¡Õ¥Õ²Õ»ÕµÕ¸ÖÖÕ¶Õ¥ÖÕ¸Õ¾ Õ¸Ö ÖÕ¡ÕµÕ¬Õ¥ÖÕ¸Õ¾\n%s-Õ« Õ°Õ¡Õ´Õ¡Ö, %s-Õ«Õ¶, ÕªÕ¡Õ´Õ¨ %s-Õ«Õ¶:" #. TRANSLATORS: Please DO NOT translate "BridgeDB". #. TRANSLATORS: Please DO NOT translate "Pluggable Transports". @@ -251,7 +251,7 @@ msgstr "" #: bridgedb/strings.py:101 msgid "What are bridges?" -msgstr "" +msgstr "Ô»ÕÕ¶Õ¹ Õ¥Õ¶ bridge-Õ¶Õ¥ÖÕ¨:" #: bridgedb/strings.py:102 #, python-format @@ -260,7 +260,7 @@ msgstr "" #: bridgedb/strings.py:107 msgid "I need an alternative way of getting bridges!" -msgstr "" +msgstr "Ô»Õ¶Õ± ÕºÕ¥Õ¿Ö Õ§ bridge-Õ¶Õ¥Ö Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ¸Ö Õ¡ÕÕµÕ¬ Õ¥Õ²Õ¡Õ¶Õ¡Õ¯:" #: bridgedb/strings.py:108 #, python-format @@ -278,7 +278,7 @@ msgstr "" #: bridgedb/strings.py:117 #, python-format msgid "If your Tor doesn't work, you should email %s." -msgstr "" +msgstr "ÔµÕ©Õ¥ ÕÕ¥Ö Tor-Õ¨ Õ¹Õ« Õ¡Õ·ÕÕ¡Õ¿Õ¸ÖÕ´, ÕºÕ¥Õ¿Ö Õ§ Õ§Õ¬Õ¥Õ¯Õ¿ÖÕ¸Õ¶Õ¡ÕµÕ«Õ¶ Õ¶Õ¡Õ´Õ¡Õ¯ Õ¸ÖÕ²Õ¡ÖÕ¯Õ¥Õ¬ %s: " #. TRANSLATORS: Please DO NOT translate "Pluggable Transports". #. TRANSLATORS: Please DO NOT translate "Tor Browser". @@ -292,36 +292,36 @@ msgstr "" #: bridgedb/strings.py:128 msgid "Here are your bridge lines:" -msgstr "" +msgstr "Ô±Õ°Õ¡ ÕÕ¥Ö bridge line-Õ¥ÖÕ¨." #: bridgedb/strings.py:129 msgid "Get Bridges!" -msgstr "" +msgstr "ÕÕ¿Õ¡ÖÕ¥ÕÖ Bridge-Õ¶Õ¥Ö:" #: bridgedb/strings.py:133 msgid "Please select options for bridge type:" -msgstr "" +msgstr "Ô½Õ¶Õ¤ÖÕ¸ÖÕ´ Õ¥Õ¶Ö Õ¨Õ¶Õ¿ÖÕ¥Õ¬ bridge-Õ« Õ¿Õ¥Õ½Õ¡Õ¯Õ« Õ¿Õ¡ÖÕ¢Õ¥ÖÕ¡Õ¯Õ¶Õ¥ÖÕ¨." #: bridgedb/strings.py:134 msgid "Do you need IPv6 addresses?" -msgstr "" +msgstr "ÕÕ¥Õ¦ ÕºÕ¥ÕÕ¿Ö Õ¥Õ¶ IPv6 Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö:" #: bridgedb/strings.py:135 #, python-format msgid "Do you need a %s?" -msgstr "" +msg
[tor-commits] [translation/exoneratorproperties] Update translations for exoneratorproperties
commit 0cfa620d6c9e33b7e13f0107df8026ad8bc0c194 Author: Translation commit bot Date: Wed Jun 21 19:18:26 2017 + Update translations for exoneratorproperties --- hy/exonerator.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/exonerator.properties b/hy/exonerator.properties index cc38b64..9a9a321 100644 --- a/hy/exonerator.properties +++ b/hy/exonerator.properties @@ -38,7 +38,7 @@ technicaldetails.colheader.exit=Exit relay technicaldetails.nickname.unknown=Unknown technicaldetails.exit.unknown=Unknown technicaldetails.exit.yes=Yes -technicaldetails.exit.no=No +technicaldetails.exit.no=ÕÕ¹ permanentlink.heading=Permanent link footer.abouttor.heading=About Tor footer.abouttor.body.text=Tor is an international software project to anonymize Internet traffic by %s. Therefore, if you see traffic from a Tor relay, this traffic usually originates from someone using Tor, rather than from the relay operator. The Tor Project and Tor relay operators have no records of the traffic that passes over the network and therefore cannot provide any information about its origin. Be sure to %s, and don't hesitate to %s for more information. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-authdtd] Update translations for tor-messenger-authdtd
commit 6d7141b0f5a691c843cac75d0f21645c77a35143 Author: Translation commit bot Date: Wed Jun 21 19:17:37 2017 + Update translations for tor-messenger-authdtd --- hy/auth.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/auth.dtd b/hy/auth.dtd index 8df5727..193ac7a 100644 --- a/hy/auth.dtd +++ b/hy/auth.dtd @@ -3,7 +3,7 @@ - + ___ 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] Update translations for tor-launcher-network-settings
commit 15d7cb941f50632c1b5ad2df19c714c812db0b7d Author: Translation commit bot Date: Wed Jun 21 19:16:14 2017 + Update translations for tor-launcher-network-settings --- hy/network-settings.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/network-settings.dtd b/hy/network-settings.dtd index 0d2e9dc..026b607 100644 --- a/hy/network-settings.dtd +++ b/hy/network-settings.dtd @@ -9,7 +9,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/https_everywhere] Update translations for https_everywhere
commit 77561f32f364a8228d9ec0dfb4b82260d6b6 Author: Translation commit bot Date: Wed Jun 21 19:15:25 2017 + Update translations for https_everywhere --- hy/ssl-observatory.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/ssl-observatory.dtd b/hy/ssl-observatory.dtd index 69f1cfd..a6016b9 100644 --- a/hy/ssl-observatory.dtd +++ b/hy/ssl-observatory.dtd @@ -1,7 +1,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/bridgedb] Update translations for bridgedb
commit bf6a628af05806b510761bb031a5d7313ba774b2 Author: Translation commit bot Date: Wed Jun 21 19:15:03 2017 + Update translations for bridgedb --- hy/LC_MESSAGES/bridgedb.po | 49 +++--- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/hy/LC_MESSAGES/bridgedb.po b/hy/LC_MESSAGES/bridgedb.po index 5d5ea4a..b9641e4 100644 --- a/hy/LC_MESSAGES/bridgedb.po +++ b/hy/LC_MESSAGES/bridgedb.po @@ -4,13 +4,14 @@ # # Translators: # Hrach Mkrtchyan , 2016 +# Sarkis Andreyan , 2017 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywords=bridgedb-reported,msgid&cc=isis,sysrqb&owner=isis'\n" "POT-Creation-Date: 2015-07-25 03:40+\n" -"PO-Revision-Date: 2016-07-20 13:28+\n" -"Last-Translator: Hrach Mkrtchyan \n" +"PO-Revision-Date: 2017-06-21 19:14+\n" +"Last-Translator: Sarkis Andreyan \n" "Language-Team: Armenian (http://www.transifex.com/otf/torproject/language/hy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,19 +33,19 @@ msgstr "" #. "Tor Browser" #: bridgedb/https/server.py:167 msgid "Sorry! Something went wrong with your request." -msgstr "" +msgstr "ÕÕ¥ÖÕ¥ÖÕ¥ÕÖ, ÕÕ¥Ö Õ°Õ¡ÖÖÕ¸ÖÕ´Õ¨ Õ½ÕÕ¡Õ¬ Õ¨Õ¶Õ©Õ¡ÖÖ Õ½Õ¿Õ¡ÖÕ¡Õ¾:" #: bridgedb/https/templates/base.html:79 msgid "Report a Bug" -msgstr "" +msgstr "ÕÕ¡ÕµÕ¿Õ¶Õ¥Õ¬ Õ½ÕÕ¡Õ¬Õ« Õ´Õ¡Õ½Õ«Õ¶" #: bridgedb/https/templates/base.html:82 msgid "Source Code" -msgstr "" +msgstr "ÔµÕ¬Õ¡Õ¯Õ¥Õ¿Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤" #: bridgedb/https/templates/base.html:85 msgid "Changelog" -msgstr "" +msgstr "ÕÕ¸ÖÕ¸ÕÕ¸ÖÕ©ÕµÕ¸ÖÕ¶Õ¶Õ¥ÖÕ« Õ´Õ¡Õ¿ÕµÕ¡Õ¶" #: bridgedb/https/templates/base.html:88 msgid "Contact" @@ -52,7 +53,7 @@ msgstr "" #: bridgedb/https/templates/bridges.html:35 msgid "Select All" -msgstr "Ô´Õ«Õ¿Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸ÖÕ¨" +msgstr "Ô¸Õ¶Õ¿ÖÕ¥Õ¬ Õ¢Õ¸Õ¬Õ¸ÖÕ¨" #: bridgedb/https/templates/bridges.html:40 msgid "Show QRCode" @@ -69,11 +70,11 @@ msgstr "" #: bridgedb/https/templates/bridges.html:67 #: bridgedb/https/templates/bridges.html:125 msgid "Uh oh, spaghettios!" -msgstr "" +msgstr "ÕÖÖ, Õ´Õ« Õ¢Õ¡Õ¶ Õ¶Õ¥Õ¶Ö Õ¹Õ¥Õ²Õ¡Õ¾:" #: bridgedb/https/templates/bridges.html:68 msgid "It seems there was an error getting your QRCode." -msgstr "" +msgstr "Ô¿Õ¡ÖÕ®Õ¥Õ½ Õ©Õ¥ Õ½ÕÕ¡Õ¬ Õ¿Õ¥Õ²Õ« Õ¸ÖÕ¶Õ¥ÖÕ¡Õ¾ ÕÕ¥Ö QRCode-Õ¨ Õ½Õ¿Õ¡Õ¶Õ¡Õ¬Õ«Õ½:" #: bridgedb/https/templates/bridges.html:73 msgid "" @@ -83,14 +84,14 @@ msgstr "" #: bridgedb/https/templates/bridges.html:131 msgid "There currently aren't any bridges available..." -msgstr "" +msgstr "Ô±ÕµÕªÕ´ Õ°Õ¡Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ¸Õ¹ Õ´Õ« bridge Õ¹Õ¯Õ¡..." #: bridgedb/https/templates/bridges.html:132 #, python-format msgid "" " Perhaps you should try %s going back %s and choosing a different bridge " "type!" -msgstr "" +msgstr "ÕÕ¡Õ¾Õ¡Õ¶Õ¡Õ¢Õ¡ÖÕ ÖÕ¸ÖÕ±Õ¥Ö %sÕ¥Õ¿ Õ¾Õ¥ÖÕ¡Õ¤Õ¡Õ¼Õ¶Õ¡Õ¬%s Ö Õ¨Õ¶Õ¿ÖÕ¥Õ¬ Õ¸ÖÖÕ«Õ· bridge-Õ« Õ¿Õ¥Õ½Õ¡Õ¯:" #: bridgedb/https/templates/index.html:11 #, python-format @@ -100,7 +101,7 @@ msgstr "ÕÕ¡ÕµÕ¬ %s1%s" #: bridgedb/https/templates/index.html:13 #, python-format msgid "Download %s Tor Browser %s" -msgstr "" +msgstr "ÕÕ¥ÖÕ¢Õ¥Õ¼Õ¶Õ¥ÕÖ %s«Tor Browser»-Õ¨%s" #: bridgedb/https/templates/index.html:25 #, python-format @@ -110,17 +111,17 @@ msgstr "ÕÕ¡ÕµÕ¬ %s2%s" #: bridgedb/https/templates/index.html:27 #, python-format msgid "Get %s bridges %s" -msgstr "" +msgstr "ÕÕ¿Õ¡ÖÕ¥ÕÖ %sbridge-Õ¶Õ¥Ö%s" #: bridgedb/https/templates/index.html:36 #, python-format msgid "Step %s3%s" -msgstr "" +msgstr "ÕÕ¡ÕµÕ¬ %s3%s" #: bridgedb/https/templates/index.html:38 #, python-format msgid "Now %s add the bridges to Tor Browser %s" -msgstr "" +msgstr "Ô±ÕµÕªÕ´ %sÕ¡Õ¾Õ¥Õ¬Õ¡ÖÖÕ¥ÕÖ bridge-Õ¶Õ¥ÖÕ¨ «Tor Browser»-Õ«Õ¶%s:" #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the #. beginning of words are present in your final translation. Thanks! @@ -129,19 +130,19 @@ msgstr "" #: bridgedb/https/templates/options.html:38 #, python-format msgid "%sJ%sust give me bridges!" -msgstr "" +msgstr "%sÔ¸%sÕ¶Õ¤Õ¡Õ´Õ¥Õ¶Õ¨ Õ«Õ¶Õ± bridge-Õ¶Õ¥ÕÖ Õ¿Õ¸ÖÖ:" #: bridgedb/https/templates/options.html:51 msgid "Advanced Options" -msgstr "" +msgstr "Ô±Õ¾Õ¥Õ¬Õ« Õ·Õ¡Õ¿ Õ¨Õ¶Õ¿ÖÕ¡Õ¶ÖÕ¥Ö" #: bridgedb/https/templates/options.html:86 msgid "No" -msgstr "" +msgstr "ÕÕ¹" #: bridgedb/https/templates/options.html:87 msgid "none" -msgstr "" +msgstr "Õ¸Õ¹ Õ´Õ¥Õ¯Õ¨" #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the #. beginning of words are present in your final translation. Thanks! @@ -149,7 +150,7 @@ msgstr "" #: bridgedb/https/templates/options.html:124 #, python-format msgid "%sY%ses!" -msgstr "" +msgstr "%sÔ±%sÕµÕ¸Õ, Õ«Õ¶Õ± ÕºÕ¥Õ¿Ö Õ¥Õ¶ IPv6 Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö:" #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the #. beginning of words are present in your fi
[tor-commits] [tor/master] Merge branch 'bug22356_029' into maint-0.3.1
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908 Merge: e51e7bd e3efc07 Author: Nick Mathewson Date: Wed Jun 21 13:54:02 2017 -0400 Merge branch 'bug22356_029' into maint-0.3.1 changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.3.1] Merge branch 'bug22356_029' into maint-0.3.1
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908 Merge: e51e7bd e3efc07 Author: Nick Mathewson Date: Wed Jun 21 13:54:02 2017 -0400 Merge branch 'bug22356_029' into maint-0.3.1 changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.3.1] Downgrade "assign_to_cpuworker failed" to INFO.
commit e3efc076c53467be4785301b3f1872bcb52630b1 Author: Nick Mathewson Date: Mon Jun 19 15:24:33 2017 -0400 Downgrade "assign_to_cpuworker failed" to INFO. Closes ticket 22356 --- changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changes/bug22356 b/changes/bug22356 new file mode 100644 index 000..0082b54 --- /dev/null +++ b/changes/bug22356 @@ -0,0 +1,5 @@ + o Minor bugfixes (logging, relay): +- Downgrade "assigned_to_cpuworker failed" message to INFO-level + severity. In every case that can reach it, either a better warning + has already been logged, or no warning is warranted. Fixes bug 22356; + bugfix on 0.2.6.3-alpha. diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index fd6de6e..884b2d0 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -475,7 +475,7 @@ queue_pending_tasks(void) return; if (assign_onionskin_to_cpuworker(circ, onionskin)) - log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring."); + log_info(LD_OR,"assign_to_cpuworker failed. Ignoring."); } } ___ 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.3.1'
commit 5d3f484f4ac4f45c0404b1f8b998983636f2a693 Merge: 72b132e 784b29a Author: Nick Mathewson Date: Wed Jun 21 13:54:07 2017 -0400 Merge branch 'maint-0.3.1' changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.3.1] Downgrade "assign_to_cpuworker failed" to INFO.
commit e3efc076c53467be4785301b3f1872bcb52630b1 Author: Nick Mathewson Date: Mon Jun 19 15:24:33 2017 -0400 Downgrade "assign_to_cpuworker failed" to INFO. Closes ticket 22356 --- changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changes/bug22356 b/changes/bug22356 new file mode 100644 index 000..0082b54 --- /dev/null +++ b/changes/bug22356 @@ -0,0 +1,5 @@ + o Minor bugfixes (logging, relay): +- Downgrade "assigned_to_cpuworker failed" message to INFO-level + severity. In every case that can reach it, either a better warning + has already been logged, or no warning is warranted. Fixes bug 22356; + bugfix on 0.2.6.3-alpha. diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index fd6de6e..884b2d0 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -475,7 +475,7 @@ queue_pending_tasks(void) return; if (assign_onionskin_to_cpuworker(circ, onionskin)) - log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring."); + log_info(LD_OR,"assign_to_cpuworker failed. Ignoring."); } } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Downgrade "assign_to_cpuworker failed" to INFO.
commit e3efc076c53467be4785301b3f1872bcb52630b1 Author: Nick Mathewson Date: Mon Jun 19 15:24:33 2017 -0400 Downgrade "assign_to_cpuworker failed" to INFO. Closes ticket 22356 --- changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/changes/bug22356 b/changes/bug22356 new file mode 100644 index 000..0082b54 --- /dev/null +++ b/changes/bug22356 @@ -0,0 +1,5 @@ + o Minor bugfixes (logging, relay): +- Downgrade "assigned_to_cpuworker failed" message to INFO-level + severity. In every case that can reach it, either a better warning + has already been logged, or no warning is warranted. Fixes bug 22356; + bugfix on 0.2.6.3-alpha. diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index fd6de6e..884b2d0 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -475,7 +475,7 @@ queue_pending_tasks(void) return; if (assign_onionskin_to_cpuworker(circ, onionskin)) - log_warn(LD_OR,"assign_to_cpuworker failed. Ignoring."); + log_info(LD_OR,"assign_to_cpuworker failed. Ignoring."); } } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.3.1] Merge branch 'bug22356_029' into maint-0.3.1
commit 784b29a2bfc7b7ce5ef355629528a38c50b81908 Merge: e51e7bd e3efc07 Author: Nick Mathewson Date: Wed Jun 21 13:54:02 2017 -0400 Merge branch 'bug22356_029' into maint-0.3.1 changes/bug22356 | 5 + src/or/cpuworker.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] changes file for ticket22311
commit 72b132e2a4e0f2ae5865b5a40e62ee139512adba Author: Nick Mathewson Date: Wed Jun 21 12:45:18 2017 -0400 changes file for ticket22311 --- changes/ticket22311 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changes/ticket22311 b/changes/ticket22311 new file mode 100644 index 000..0bfd465 --- /dev/null +++ b/changes/ticket22311 @@ -0,0 +1,3 @@ + o Code simplification and refactoring: +- Remove several now-obsolete functions for asking about old variants + directory authority status. Closes ticket 22311; patch from "huyvq". ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Remove obsolete authdir_mode_any_nonhidserv()
commit ad97714f22ace023bda9f334687239127a71413a Author: huyvq Date: Fri Jun 2 23:33:40 2017 +0700 Remove obsolete authdir_mode_any_nonhidserv() - Replace it with authdir_mode() --- src/or/router.c | 12 ++-- src/or/router.h | 1 - src/or/routerlist.c | 2 +- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/or/router.c b/src/or/router.c index e12f138..f2052f4 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1596,14 +1596,6 @@ authdir_mode_v3(const or_options_t *options) { return authdir_mode(options) && options->V3AuthoritativeDir != 0; } -/** Return true if we believe ourselves to be any kind of - * authoritative directory beyond just a hidserv authority. */ -int -authdir_mode_any_nonhidserv(const or_options_t *options) -{ - return options->BridgeAuthoritativeDir || - authdir_mode_any_main(options); -} /** Return true iff we are an authoritative directory server that is * authoritative about receiving and serving descriptors of type * purpose on its dirport. Use -1 for "any purpose". */ @@ -1611,7 +1603,7 @@ int authdir_mode_handles_descs(const or_options_t *options, int purpose) { if (purpose < 0) -return authdir_mode_any_nonhidserv(options); +return authdir_mode(options); else if (purpose == ROUTER_PURPOSE_GENERAL) return authdir_mode_v3(options); else if (purpose == ROUTER_PURPOSE_BRIDGE) @@ -1627,7 +1619,7 @@ authdir_mode_publishes_statuses(const or_options_t *options) { if (authdir_mode_bridge(options)) return 0; - return authdir_mode_any_nonhidserv(options); + return authdir_mode(options); } /** Return true iff we are an authoritative directory server that * tests reachability of the descriptors it learns about. diff --git a/src/or/router.h b/src/or/router.h index 2e62185..97f3317 100644 --- a/src/or/router.h +++ b/src/or/router.h @@ -54,7 +54,6 @@ int net_is_disabled(void); int authdir_mode(const or_options_t *options); int authdir_mode_v3(const or_options_t *options); -int authdir_mode_any_nonhidserv(const or_options_t *options); int authdir_mode_handles_descs(const or_options_t *options, int purpose); int authdir_mode_publishes_statuses(const or_options_t *options); int authdir_mode_tests_reachability(const or_options_t *options); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index da072be..8adaaf6 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -5033,7 +5033,7 @@ launch_descriptor_downloads(int purpose, } } - if (!authdir_mode_any_nonhidserv(options)) { + if (!authdir_mode(options)) { /* If we wind up going to the authorities, we want to only open one * connection to each authority at a time, so that we don't overload * them. We do this by setting PDS_NO_EXISTING_SERVERDESC_FETCH ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Remove obsolete authdir_mode_any_main()
commit 0471c905a18760413a63f05f50535313c76ca0c4 Author: huyvq Date: Fri Jun 2 23:23:39 2017 +0700 Remove obsolete authdir_mode_any_main() --- src/or/config.c | 2 +- src/or/router.c | 8 +--- src/or/router.h | 1 - 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 3413442..e17ae86 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -3161,7 +3161,7 @@ options_validate(or_options_t *old_options, or_options_t *options, "UseEntryGuards. Disabling."); options->UseEntryGuards = 0; } -if (!options->DownloadExtraInfo && authdir_mode_any_main(options)) { +if (!options->DownloadExtraInfo && authdir_mode_v3(options)) { log_info(LD_CONFIG, "Authoritative directories always try to download " "extra-info documents. Setting DownloadExtraInfo."); options->DownloadExtraInfo = 1; diff --git a/src/or/router.c b/src/or/router.c index 2187a76..849cffd 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1596,12 +1596,6 @@ authdir_mode_v3(const or_options_t *options) { return authdir_mode(options) && options->V3AuthoritativeDir != 0; } -/** Return true iff we are a v3 directory authority. */ -int -authdir_mode_any_main(const or_options_t *options) -{ - return options->V3AuthoritativeDir; -} /** Return true if we believe ourselves to be any kind of * authoritative directory beyond just a hidserv authority. */ int @@ -1619,7 +1613,7 @@ authdir_mode_handles_descs(const or_options_t *options, int purpose) if (purpose < 0) return authdir_mode_any_nonhidserv(options); else if (purpose == ROUTER_PURPOSE_GENERAL) -return authdir_mode_any_main(options); +return authdir_mode_v3(options); else if (purpose == ROUTER_PURPOSE_BRIDGE) return (options->BridgeAuthoritativeDir); else diff --git a/src/or/router.h b/src/or/router.h index 9c5def5..2e62185 100644 --- a/src/or/router.h +++ b/src/or/router.h @@ -54,7 +54,6 @@ int net_is_disabled(void); int authdir_mode(const or_options_t *options); int authdir_mode_v3(const or_options_t *options); -int authdir_mode_any_main(const or_options_t *options); int authdir_mode_any_nonhidserv(const or_options_t *options); int authdir_mode_handles_descs(const or_options_t *options, int purpose); int authdir_mode_publishes_statuses(const or_options_t *options); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Convert authdir_mode_handles_descs(options, -1) with authdir_mode(options)
commit d92b999757336249bcff15c5c498e6e5353d38c4 Author: huyvq Date: Fri Jun 2 23:26:53 2017 +0700 Convert authdir_mode_handles_descs(options, -1) with authdir_mode(options) --- src/or/directory.c | 2 +- src/or/main.c | 4 ++-- src/or/router.c| 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/or/directory.c b/src/or/directory.c index b680b13..5e8e663 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -4850,7 +4850,7 @@ directory_handle_command_post,(dir_connection_t *conn, const char *headers, goto done; } - if (authdir_mode_handles_descs(options, -1) && + if (authdir_mode(options) && !strcmp(url,"/tor/")) { /* server descriptor post */ const char *msg = "[None]"; uint8_t purpose = authdir_mode_bridge(options) ? diff --git a/src/or/main.c b/src/or/main.c index 9699c8d..9709aeb 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -2355,7 +2355,7 @@ do_hup(void) tor_free(msg); } } - if (authdir_mode_handles_descs(options, -1)) { + if (authdir_mode(options)) { /* reload the approved-routers file */ if (dirserv_load_fingerprint_file() < 0) { /* warnings are logged from dirserv_load_fingerprint_file() directly */ @@ -3478,7 +3478,7 @@ sandbox_init_filter(void) if (options->BridgeAuthoritativeDir) OPEN_DATADIR_SUFFIX("networkstatus-bridges", ".tmp"); - if (authdir_mode_handles_descs(options, -1)) + if (authdir_mode(options)) OPEN_DATADIR("approved-routers"); if (options->ServerDNSResolvConfFile) diff --git a/src/or/router.c b/src/or/router.c index 849cffd..a264af1 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1635,7 +1635,7 @@ authdir_mode_publishes_statuses(const or_options_t *options) int authdir_mode_tests_reachability(const or_options_t *options) { - return authdir_mode_handles_descs(options, -1); + return authdir_mode(options); } /** Return true iff we believe ourselves to be a bridge authoritative * directory server. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Convert authdir_mode_handles_descs() to alternative wrappers
commit 18cd1993ca852b25a18b266ae7d8dcecf573525a Author: huyvq Date: Fri Jun 2 23:32:41 2017 +0700 Convert authdir_mode_handles_descs() to alternative wrappers -authdir_mode_handles_descs(options, ROUTER_PURPOSE_BRIDGE) to authdir_mode_bridge(options). - authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL) to authdir_mode_v3(options). --- src/or/router.c | 4 ++-- src/or/routerlist.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/or/router.c b/src/or/router.c index a264af1..e12f138 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1065,7 +1065,7 @@ init_keys(void) /* 4. Build our router descriptor. */ /* Must be called after keys are initialized. */ mydesc = router_get_my_descriptor(); - if (authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)) { + if (authdir_mode_v3(options)) { const char *m = NULL; routerinfo_t *ri; /* We need to add our own fingerprint so it gets recognized. */ @@ -1615,7 +1615,7 @@ authdir_mode_handles_descs(const or_options_t *options, int purpose) else if (purpose == ROUTER_PURPOSE_GENERAL) return authdir_mode_v3(options); else if (purpose == ROUTER_PURPOSE_BRIDGE) -return (options->BridgeAuthoritativeDir); +return authdir_mode_bridge(options); else return 0; } diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 0e45f63..da072be 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -5164,7 +5164,7 @@ update_consensus_router_descriptor_downloads(time_t now, int is_vote, smartlist_add(downloadable, rs->descriptor_digest); } SMARTLIST_FOREACH_END(rsp); - if (!authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL) + if (!authdir_mode_v3(options) && smartlist_len(no_longer_old)) { routerlist_t *rl = router_get_routerlist(); log_info(LD_DIR, "%d router descriptors listed in consensus are " ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Call it a BUG to use -1 in authdir_mode_handles_descs
commit 35d6313500f3ea07a10b565515d5e9953fc7f1da Author: Nick Mathewson Date: Wed Jun 21 12:38:02 2017 -0400 Call it a BUG to use -1 in authdir_mode_handles_descs --- src/or/router.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/or/router.c b/src/or/router.c index f2052f4..100c4cc 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1598,11 +1598,12 @@ authdir_mode_v3(const or_options_t *options) } /** Return true iff we are an authoritative directory server that is * authoritative about receiving and serving descriptors of type - * purpose on its dirport. Use -1 for "any purpose". */ + * purpose on its dirport. + */ int authdir_mode_handles_descs(const or_options_t *options, int purpose) { - if (purpose < 0) + if (BUG(purpose < 0)) /* Deprecated. */ return authdir_mode(options); else if (purpose == ROUTER_PURPOSE_GENERAL) return authdir_mode_v3(options); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [stem/master] Python3 support for server descriptor signing
commit 78eaa445c9344b878e55c3e114f73358faa8d008 Author: Damian Johnson Date: Wed Jun 21 08:51:24 2017 -0700 Python3 support for server descriptor signing While writing it I consciously didn't invest effort into making it compatible. Now that we've got it working fixing that. Most interesting issue was... == ERROR: test_descriptor_signing -- Traceback (most recent call last): File "/home/atagar/Desktop/stem/test/require.py", line 58, in wrapped return func(self, *args, **kwargs) File "/home/atagar/Desktop/stem/test/unit/descriptor/server_descriptor.py", line 260, in test_descriptor_signing RelayDescriptor.create(sign = True) File "/home/atagar/Desktop/stem/stem/descriptor/server_descriptor.py", line 873, in create return cls(cls.content(attr, exclude, sign, private_signing_key), validate = validate, skip_crypto_validation = not sign) File "/home/atagar/Desktop/stem/stem/descriptor/server_descriptor.py", line 865, in content signature = base64.b64encode(private_signing_key.sign(content, padding.PKCS1v15(), hashes.SHA1())) File "/usr/local/lib/python3.2/dist-packages/cryptography/hazmat/backends/openssl/rsa.py", line 463, in sign algorithm, self, data File "/usr/local/lib/python3.2/dist-packages/cryptography/hazmat/backends/openssl/rsa.py", line 199, in _rsa_sig_sign backend.openssl_assert(res > 0) TypeError: unorderable types: NoneType() > int() -- This was due to one of our no_op mocks. --- stem/descriptor/__init__.py | 2 +- stem/descriptor/server_descriptor.py | 8 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py index 96cf0b4..bf336fb 100644 --- a/stem/descriptor/__init__.py +++ b/stem/descriptor/__init__.py @@ -391,7 +391,7 @@ def _descriptor_content(attr = None, exclude = (), sign = False, header_template if keyword in exclude: continue - value = attr.pop(keyword, value) + value = stem.util.str_tools._to_unicode(attr.pop(keyword, value)) if value is None: continue diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py index 4e55ee2..2c7258a 100644 --- a/stem/descriptor/server_descriptor.py +++ b/stem/descriptor/server_descriptor.py @@ -847,7 +847,7 @@ class RelayDescriptor(ServerDescriptor): # ewww. def no_op(*args, **kwargs): - pass + return 1 private_signing_key._backend._lib.EVP_PKEY_CTX_set_signature_md = no_op private_signing_key._backend.openssl_assert = no_op @@ -855,15 +855,15 @@ class RelayDescriptor(ServerDescriptor): # create descriptor content without the router-signature, then # appending the content signature - attr['signing-key'] = '\n' + private_signing_key.public_key().public_bytes( + attr['signing-key'] = b'\n' + private_signing_key.public_key().public_bytes( encoding = serialization.Encoding.PEM, format = serialization.PublicFormat.PKCS1, ).strip() - content = _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER) + '\nrouter-signature\n' + content = _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER) + b'\nrouter-signature\n' signature = base64.b64encode(private_signing_key.sign(content, padding.PKCS1v15(), hashes.SHA1())) - return content + '\n'.join(['-BEGIN SIGNATURE-'] + stem.util.str_tools._split_by_length(signature, 64) + ['-END SIGNATURE-\n']) + return content + b'\n'.join([b'-BEGIN SIGNATURE-'] + stem.util.str_tools._split_by_length(signature, 64) + [b'-END SIGNATURE-\n']) else: return _descriptor_content(attr, exclude, sign, RELAY_SERVER_HEADER, RELAY_SERVER_FOOTER) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [stem/master] Authentication failures could cause incorrect response
commit a275838663a716287110eec7250360a9ab14a670 Author: Damian Johnson Date: Wed Jun 21 10:08:37 2017 -0700 Authentication failures could cause incorrect response Oops. To best ensure we performed post-authentication activities I hacked it directly into the BaseController, but these didn't take into account that authentication could fail. The post-auth requests then failed because tor closes the socket. Caught thanks to daftaupe on... https://trac.torproject.org/projects/tor/ticket/22679 While troubleshooting this I ran into another bug that might be an issue with tor. When authentication failed we called 'QUIT'. Tor will sometimes respond with 'closing connection' and other times just hang. Reached out to Nick to see if this is something we'd care to address, but on Stem's side now simply omitting a QUIT call if unauthenticated. --- docs/change_log.rst | 1 + stem/connection.py | 3 +++ stem/control.py | 14 ++ test/integ/connection/authentication.py | 19 +++ 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/change_log.rst b/docs/change_log.rst index 06341b4..96690ac 100644 --- a/docs/change_log.rst +++ b/docs/change_log.rst @@ -46,6 +46,7 @@ The following are only available within Stem's `git repository * **Controller** * :func:`~stem.process.launch_tor` raised a ValueError if invoked when outside the main thread + * Failure to authenticate could raise an improper response or hang (:trac:`22679`) * Renamed :class:`~stem.response.events.ConnectionBandwidthEvent` type attribute to conn_type to avoid conflict with parent class (:trac:`21774`) * Added the GUARD_WAIT :data:`~stem.CircStatus` (:spec:`6446210`) * Unable to use cookie auth when path includes wide characters (chinese, japanese, etc) diff --git a/stem/connection.py b/stem/connection.py index a3f27a0..db3f218 100644 --- a/stem/connection.py +++ b/stem/connection.py @@ -584,6 +584,9 @@ def authenticate(controller, password = None, chroot_path = None, protocolinfo_r else: authenticate_cookie(controller, cookie_path, False) + if isinstance(controller, stem.control.BaseController): +controller._post_authentication() + return # success! except OpenAuthRejected as exc: auth_exceptions.append(exc) diff --git a/stem/control.py b/stem/control.py index 65e3401..8c01d94 100644 --- a/stem/control.py +++ b/stem/control.py @@ -633,13 +633,6 @@ class BaseController(object): if isinstance(response, stem.ControllerError): raise response else: - # I really, really don't like putting hooks into this method, but - # this is the most reliable method I can think of for taking actions - # immediately after successfully authenticating to a connection. - - if message.upper().startswith('AUTHENTICATE'): -self._post_authentication() - return response except stem.SocketClosed: # If the recv() thread caused the SocketClosed then we could still be @@ -693,10 +686,7 @@ class BaseController(object): and **False** otherwise """ -if self.is_alive(): - return self._is_authenticated - -return False +return self._is_authenticated if self.is_alive() else False def connect(self): """ @@ -1051,7 +1041,7 @@ class Controller(BaseController): def close(self): # making a best-effort attempt to quit before detaching the socket -if self.is_alive(): +if self.is_authenticated(): try: self.msg('QUIT') except: diff --git a/test/integ/connection/authentication.py b/test/integ/connection/authentication.py index 3a2fcb0..a8c0c82 100644 --- a/test/integ/connection/authentication.py +++ b/test/integ/connection/authentication.py @@ -268,6 +268,25 @@ class TestAuthenticate(unittest.TestCase): self.assertRaises(exc_type, self._check_auth, auth_type, auth_value) @test.require.controller + def test_wrong_password_with_controller(self): +""" +We ran into a race condition where providing the wrong password to the +Controller caused inconsistent responses. Checking for that... + +https://trac.torproject.org/projects/tor/ticket/22679 +""" + +runner = test.runner.get_runner() + +if test.runner.Torrc.PASSWORD not in runner.get_options(): + self.skipTest('(requires password auth)') + return + +for i in range(10): + with runner.get_tor_controller(False) as controller: +self.assertRaises(stem.connection.IncorrectPassword, controller.authenticate, 'wrong_password') + + @test.require.controller def test_authenticate_cookie(self): """ Tests the authenticate_cookie function. ___ tor-commits mailing list tor-commits@lists.torproject.org https://
[tor-commits] [stem/master] Python3 compatability for networkstatus unit test
commit 657a2b89b65c4b2c468d784e6ae2ac667ba84706 Author: Damian Johnson Date: Wed Jun 21 08:43:09 2017 -0700 Python3 compatability for networkstatus unit test Trivial fix. Just some missing unicode/bytes normalization. == ERROR: test_signature_validation -- Traceback (most recent call last): File "/home/atagar/Desktop/stem/test/require.py", line 58, in wrapped return func(self, *args, **kwargs) File "/home/atagar/Desktop/stem/test/unit/descriptor/networkstatus/document_v3.py", line 421, in test_signature_validation consensus = stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace('test002r', 'different_nickname')) TypeError: expected an object with the buffer interface -- --- test/unit/descriptor/networkstatus/document_v3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/descriptor/networkstatus/document_v3.py b/test/unit/descriptor/networkstatus/document_v3.py index efdf1bb..68d7270 100644 --- a/test/unit/descriptor/networkstatus/document_v3.py +++ b/test/unit/descriptor/networkstatus/document_v3.py @@ -418,7 +418,7 @@ DnN5aFtYKiTc19qIC7Nmo+afPdDEf0MlJvEOP5EWl3w= # change a relay's nickname in the consensus so it's no longer validly signed -consensus = stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace('test002r', 'different_nickname')) +consensus = stem.descriptor.networkstatus.NetworkStatusDocumentV3(consensus_content.replace(b'test002r', b'different_nickname')) self.assertRaisesRegexp(ValueError, 'Network Status Document has 0 valid signatures out of 2 total, needed 1', consensus.validate_signatures, certs) def test_handlers(self): ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [stem/master] Add blank lines after functions
commit 4ef767c9e07ac0d835355706625dafea19a57147 Author: Damian Johnson Date: Tue Jun 20 13:44:25 2017 -0700 Add blank lines after functions Evidently another new pycodestyle constraint. * /home/atagar/Desktop/stem/stem/connection.py line 1301 - E305 expected 2 blank lines after class or function definition, found 1 | AUTHENTICATE_EXCEPTIONS = ( * /home/atagar/Desktop/stem/stem/util/log.py line 94 - E305 expected 2 blank lines after class or function definition, found 1 | if not LOGGER.handlers: * /home/atagar/Desktop/stem/stem/util/test_tools.py line 622 - E305 expected 2 blank lines after class or function definition, found 1 | get_stylistic_issues = stylistic_issues * /home/atagar/Desktop/stem/stem/descriptor/hidden_service_descriptor.py line 189 - E305 expected 2 blank lines after class or function definition, found 1 | _parse_rendezvous_service_descriptor_line = _parse_simple_line('rendezvous-service-descriptor', 'descriptor_id') * /home/atagar/Desktop/stem/stem/util/connection.py line 757 - E305 expected 2 blank lines after class or function definition, found 1 | get_system_resolvers = system_resolvers * /home/atagar/Desktop/stem/stem/__init__.py line 615 - E305 expected 2 blank lines after class or function definition, found 1 | Runlevel = stem.util.enum.UppercaseEnum( * /home/atagar/Desktop/stem/stem/version.py line 335 - E305 expected 2 blank lines after class or function definition, found 1 | safecookie_req = _VersionRequirements() * /home/atagar/Desktop/stem/stem/util/proc.py line 577 - E305 expected 2 blank lines after class or function definition, found 1 | get_system_start_time = system_start_time --- stem/__init__.py | 1 + stem/connection.py | 2 ++ stem/descriptor/__init__.py | 1 + stem/descriptor/hidden_service_descriptor.py | 1 + stem/util/connection.py | 1 + stem/util/log.py | 1 + stem/util/proc.py| 1 + stem/util/str_tools.py | 1 + stem/util/test_tools.py | 1 + stem/version.py | 1 + 10 files changed, 11 insertions(+) diff --git a/stem/__init__.py b/stem/__init__.py index e9e621c..a033745 100644 --- a/stem/__init__.py +++ b/stem/__init__.py @@ -612,6 +612,7 @@ class SocketError(ControllerError): class SocketClosed(SocketError): 'Control socket was closed before completing the message.' + Runlevel = stem.util.enum.UppercaseEnum( 'DEBUG', 'INFO', diff --git a/stem/connection.py b/stem/connection.py index 967b766..a3f27a0 100644 --- a/stem/connection.py +++ b/stem/connection.py @@ -1297,7 +1297,9 @@ class NoAuthCookie(MissingAuthInfo): super(NoAuthCookie, self).__init__(message) self.is_safecookie = is_safecookie + # authentication exceptions ordered as per the authenticate function's pydocs + AUTHENTICATE_EXCEPTIONS = ( IncorrectSocketType, UnrecognizedAuthMethods, diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py index be28c7a..96cf0b4 100644 --- a/stem/descriptor/__init__.py +++ b/stem/descriptor/__init__.py @@ -1050,6 +1050,7 @@ def _descriptor_components(raw_contents, validate, extra_keywords = (), non_asci else: return entries + # importing at the end to avoid circular dependencies on our Descriptor class import stem.descriptor.server_descriptor diff --git a/stem/descriptor/hidden_service_descriptor.py b/stem/descriptor/hidden_service_descriptor.py index b188012..d752369 100644 --- a/stem/descriptor/hidden_service_descriptor.py +++ b/stem/descriptor/hidden_service_descriptor.py @@ -186,6 +186,7 @@ def _parse_introduction_points_line(descriptor, entries): except TypeError: raise ValueError("'introduction-points' isn't base64 encoded content:\n%s" % block_contents) + _parse_rendezvous_service_descriptor_line = _parse_simple_line('rendezvous-service-descriptor', 'descriptor_id') _parse_permanent_key_line = _parse_key_block('permanent-key', 'permanent_key', 'RSA PUBLIC KEY') _parse_secret_id_part_line = _parse_simple_line('secret-id-part', 'secret_id_part') diff --git a/stem/util/connection.py b/stem/util/connection.py index a5d1edc..0925461 100644 --- a/stem/util/connection.py +++ b/stem/util/connection.py @@ -750,6 +750,7 @@ def _cryptovariables_equal(x, y): _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, x) == _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, y)) + # TODO: drop with stem 2.x # We renamed our methods to drop a redundant 'get_*' prefix, so alias the old # names for backward compatability. diff --git a/stem/util/log.py b/stem/util/log.py index adcdc41..e157c7c 100644 --- a/stem/util/log.py +++ b/stem/util/log.py @@ -91,6 +91,7 @@ class _NullHandler(logg
[tor-commits] [stem/master] Replace no-op lambda with function
commit 785f28af5601149dc97bda4646444bde314db6e8 Author: Damian Johnson Date: Tue Jun 20 13:43:48 2017 -0700 Replace no-op lambda with function Forgot pycodestyle dislikes lambda assignment. Not sure why but meh, whatever. --- stem/descriptor/server_descriptor.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py index 499b53e..4e55ee2 100644 --- a/stem/descriptor/server_descriptor.py +++ b/stem/descriptor/server_descriptor.py @@ -846,7 +846,8 @@ class RelayDescriptor(ServerDescriptor): # of excluding these so we need to mock out part of their internals... # ewww. -no_op = lambda *args, **kwargs: None +def no_op(*args, **kwargs): + pass private_signing_key._backend._lib.EVP_PKEY_CTX_set_signature_md = no_op private_signing_key._backend.openssl_assert = no_op ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [stem/master] Stylistic compatability with pycodestyle
commit 3c96963e4be26e1fd9126a4b610153633f8f2e7f Merge: 9a947c6 4ef767c Author: Damian Johnson Date: Wed Jun 21 08:35:59 2017 -0700 Stylistic compatability with pycodestyle Odd. I'm using pycodestyle 2.3.1 with both python 2.7 and 3.2 but these issues only manifest with 3.2. Guess pycodestyle performs extra checks with newer python versions? Meh. Simple things to fix. stem/__init__.py | 1 + stem/connection.py | 2 ++ stem/descriptor/__init__.py | 1 + stem/descriptor/hidden_service_descriptor.py | 1 + stem/descriptor/server_descriptor.py | 3 ++- stem/util/connection.py | 1 + stem/util/log.py | 1 + stem/util/proc.py| 1 + stem/util/str_tools.py | 1 + stem/util/test_tools.py | 1 + stem/version.py | 1 + test/settings.cfg| 9 + 12 files changed, 22 insertions(+), 1 deletion(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [stem/master] Ignore pycodestyle warnings about bare 'except:' clauses
commit 4ebb606dd121a1232aa2f3e24a904aacb8174839 Author: Damian Johnson Date: Tue Jun 20 13:35:51 2017 -0700 Ignore pycodestyle warnings about bare 'except:' clauses Odd this didn't manifest for me before. Seems to only come up when running python3 so maybe a new check? I can see the reasoning around this but I'm a shade more concerned about the alternative. --- test/settings.cfg | 9 + 1 file changed, 9 insertions(+) diff --git a/test/settings.cfg b/test/settings.cfg index 128e987..7ccd733 100644 --- a/test/settings.cfg +++ b/test/settings.cfg @@ -119,6 +119,14 @@ target.torrc RUN_PTRACE => PORT, PTRACE # # Pycodestyle only works with this one if we have four space indents (its # detection is based on multiples of four). +# +# * E722 do not use bare except +# +# Iirc they advise against this because it catches KeyboardInterrups and +# interpreter termination. That's a fair concern, but on the other hand we +# don't have strong assurance that socket errors and the like will be caught +# without it. We've been doing this for years without issue but I'd be +# ameanable to a patch if this causes issues for someone. pycodestyle.ignore E111 pycodestyle.ignore E114 @@ -127,6 +135,7 @@ pycodestyle.ignore E501 pycodestyle.ignore E251 pycodestyle.ignore E127 pycodestyle.ignore E131 +pycodestyle.ignore E722 pycodestyle.ignore stem/__init__.py => E402: import stem.util.enum pycodestyle.ignore stem/descriptor/__init__.py => E402: import stem.descriptor.server_descriptor ___ 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 'Ryman-bug5847-squashed'
commit f0a5416f95e06ebfd27eb95436eb85cd66494b9a Merge: 884c0ff 0a96d11 Author: Nick Mathewson Date: Wed Jun 21 12:19:55 2017 -0400 Merge branch 'Ryman-bug5847-squashed' changes/bug5847 | 5 + src/or/control.c | 36 2 files changed, 33 insertions(+), 8 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Better error message for GETINFO desc/(id|name) whenever microdescriptors are in use. Fixes #5847.
commit 0a96d11539e27f8ef0577cc8ee4e503f046e637b Author: Kevin Butler Date: Wed Sep 4 02:10:18 2013 +0100 Better error message for GETINFO desc/(id|name) whenever microdescriptors are in use. Fixes #5847. --- changes/bug5847 | 5 + src/or/control.c | 36 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/changes/bug5847 b/changes/bug5847 new file mode 100644 index 000..782fc7b --- /dev/null +++ b/changes/bug5847 @@ -0,0 +1,5 @@ + o Minor features (control port): +- Provide better error message for GETINFO desc/(id|name) when + microdescriptors are in use and router descriptors are not fetched. + Closes ticket 5847. Patch by Kevin Butler. + diff --git a/src/or/control.c b/src/or/control.c index 9454a7a..b971725 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -60,6 +60,7 @@ #include "hibernate.h" #include "hs_common.h" #include "main.h" +#include "microdesc.h" #include "networkstatus.h" #include "nodelist.h" #include "policies.h" @@ -1892,6 +1893,12 @@ getinfo_helper_dir(control_connection_t *control_conn, const char *body = signed_descriptor_get_body(&ri->cache_info); if (body) *answer = tor_strndup(body, ri->cache_info.signed_descriptor_len); +} else if (! we_fetch_router_descriptors(get_options())) { + /* Descriptors won't be available, provide proper error */ + *errmsg = "We fetch microdescriptors, not router " +"descriptors. You'll need to use md/id/* " +"instead of desc/id/*."; + return 0; } } else if (!strcmpstart(question, "desc/name/")) { const routerinfo_t *ri = NULL; @@ -1905,6 +1912,12 @@ getinfo_helper_dir(control_connection_t *control_conn, const char *body = signed_descriptor_get_body(&ri->cache_info); if (body) *answer = tor_strndup(body, ri->cache_info.signed_descriptor_len); +} else if (! we_fetch_router_descriptors(get_options())) { + /* Descriptors won't be available, provide proper error */ + *errmsg = "We fetch microdescriptors, not router " +"descriptors. You'll need to use md/name/* " +"instead of desc/name/*."; + return 0; } } else if (!strcmp(question, "desc/all-recent")) { routerlist_t *routerlist = router_get_routerlist(); @@ -2907,7 +2920,8 @@ getinfo_helper_sr(control_connection_t *control_conn, * *a. If an internal error occurs, return -1 and optionally set * *error_out to point to an error message to be delivered to the * controller. On success, _or if the key is not recognized_, return 0. Do not - * set a if the key is not recognized. + * set a if the key is not recognized but you may set error_out + * to improve the error message. */ typedef int (*getinfo_helper_t)(control_connection_t *, const char *q, char **a, @@ -3162,7 +3176,7 @@ handle_control_getinfo(control_connection_t *conn, uint32_t len, smartlist_t *questions = smartlist_new(); smartlist_t *answers = smartlist_new(); smartlist_t *unrecognized = smartlist_new(); - char *msg = NULL, *ans = NULL; + char *ans = NULL; int i; (void) len; /* body is NUL-terminated, so it's safe to ignore the length. */ @@ -3177,20 +3191,26 @@ handle_control_getinfo(control_connection_t *conn, uint32_t len, goto done; } if (!ans) { - smartlist_add(unrecognized, (char*)q); + if (errmsg) /* use provided error message */ +smartlist_add_strdup(unrecognized, errmsg); + else /* use default error message */ +smartlist_add_asprintf(unrecognized, "Unrecognized key \"%s\"", q); } else { smartlist_add_strdup(answers, q); smartlist_add(answers, ans); } } SMARTLIST_FOREACH_END(q); + if (smartlist_len(unrecognized)) { +/* control-spec section 2.3, mid-reply '-' or end of reply ' ' */ for (i=0; i < smartlist_len(unrecognized)-1; ++i) connection_printf_to_buf(conn, - "552-Unrecognized key \"%s\"\r\n", - (char*)smartlist_get(unrecognized, i)); + "552-%s\r\n", + (char *)smartlist_get(unrecognized, i)); + connection_printf_to_buf(conn, - "552 Unrecognized key \"%s\"\r\n", - (char*)smartlist_get(unrecognized, i)); + "552 %s\r\n", + (char *)smartlist_get(unrecognized, i)); goto done; } @@ -3217,8 +3237,8 @@ handle_control_getinfo(control_connection_t *conn, uint32_t len, smartlist_free(answers); SMARTLIST_FOREACH(questions, char *, cp, tor_free(cp)); smartlist_free(questions); + SMARTLIST_FOREACH(unrecognized, char *, cp, tor_free(cp)); smartlist_free(unrecognized); - tor_free(msg); return 0; } ___ tor-commits mailing list tor-c
[tor-commits] [metrics-lib/release] Add a test for the encoding of microdescriptor digests in votes
commit 47a69b342faae83fcd70909c3f03129f7b133364 Author: Karsten Loesing Date: Sat Jun 17 21:18:11 2017 +0200 Add a test for the encoding of microdescriptor digests in votes --- .../descriptor/impl/RelayNetworkStatusVoteImplTest.java | 8 ++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java b/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java index 1152626..8a85145 100644 --- a/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java +++ b/src/test/java/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java @@ -9,6 +9,7 @@ import static org.junit.Assert.assertTrue; import org.torproject.descriptor.DescriptorParseException; import org.torproject.descriptor.DirectorySignature; +import org.torproject.descriptor.NetworkStatusEntry; import org.torproject.descriptor.RelayNetworkStatusVote; import org.junit.Rule; @@ -717,9 +718,12 @@ public class RelayNetworkStatusVoteImplTest { assertTrue(vote.getKnownFlags().contains("Running")); assertEquals(3, (int) vote.getConsensusParams().get( "CircuitPriorityHalflifeMsec")); +NetworkStatusEntry nse = vote.getStatusEntry( +"00343A8024F70E214728F0C5AF7ACE0C1508F073"); assertEquals("Tor 0.2.1.29 (r8e9b25e6c7a2e70c)", -vote.getStatusEntry("00343A8024F70E214728F0C5AF7ACE0C1508F073") -.getVersion()); +nse.getVersion()); +assertTrue(nse.getMicrodescriptorDigestsSha256Base64().contains( +"9ciEx9t0McXk9A06I7qwN7pxuNOdpCP64RV/6cx2Zkc")); assertEquals(3, vote.getDirKeyCertificateVersion()); assertEquals("80550987E1D626E3EBA5E5E75A458DE0626D088C", vote.getIdentity()); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [metrics-lib/master] Bump version to 1.9.0-dev.
commit cad14ead4c72744698ef013404f94dfe3842df0b Author: Karsten Loesing Date: Wed Jun 21 14:21:19 2017 +0200 Bump version to 1.9.0-dev. --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 18ba365..0de365c 100644 --- a/build.xml +++ b/build.xml @@ -6,7 +6,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [metrics-lib/release] Prepare for 1.9.0 release.
commit 3c9845aa4d96b2e5da6cd640c2704dd42e9f Author: Karsten Loesing Date: Tue Jun 20 22:36:58 2017 +0200 Prepare for 1.9.0 release. --- CHANGELOG.md | 2 +- build.xml| 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95cd851..98728b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changes in version 1.9.0 - 2017-06-?? +# Changes in version 1.9.0 - 2017-06-21 * Major changes - Simplify DescriptorReader by returning Descriptor instances diff --git a/build.xml b/build.xml index d5aaa8f..18ba365 100644 --- a/build.xml +++ b/build.xml @@ -6,7 +6,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [metrics-lib/release] Rename two parse* methods to verify*.
commit 0236dc77715c272e7201e6111b98fbe4af747a4b Author: Karsten Loesing Date: Mon Jun 19 11:42:18 2017 +0200 Rename two parse* methods to verify*. --- .../torproject/descriptor/impl/ExtraInfoDescriptorImpl.java | 2 +- .../org/torproject/descriptor/impl/MicrodescriptorImpl.java | 4 ++-- .../torproject/descriptor/impl/NetworkStatusEntryImpl.java | 6 +++--- .../java/org/torproject/descriptor/impl/ParseHelper.java| 13 +++-- .../torproject/descriptor/impl/ServerDescriptorImpl.java| 4 ++-- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java index 0d67af9..ca7d376 100644 --- a/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java +++ b/src/main/java/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java @@ -828,7 +828,7 @@ public abstract class ExtraInfoDescriptorImpl extends DescriptorImpl if (partsNoOpt.length != 2) { throw new DescriptorParseException("Illegal line '" + line + "'."); } -ParseHelper.parseThirtyTwoByteBase64String(line, partsNoOpt[1]); +ParseHelper.verifyThirtyTwoByteBase64String(line, partsNoOpt[1]); this.setDigestSha256Base64(partsNoOpt[1]); } diff --git a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java index 65c20d4..c436120 100644 --- a/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java +++ b/src/main/java/org/torproject/descriptor/impl/MicrodescriptorImpl.java @@ -198,11 +198,11 @@ public class MicrodescriptorImpl extends DescriptorImpl } else { switch (parts[1]) { case "ed25519": - ParseHelper.parseThirtyTwoByteBase64String(line, parts[2]); + ParseHelper.verifyThirtyTwoByteBase64String(line, parts[2]); this.ed25519Identity = parts[2]; break; case "rsa1024": - ParseHelper.parseTwentyByteBase64String(line, parts[2]); + ParseHelper.verifyTwentyByteBase64String(line, parts[2]); this.rsa1024Identity = parts[2]; break; default: diff --git a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java index 337f0b2..64c688e 100644 --- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java +++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java @@ -266,11 +266,11 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { this.microdescriptorDigests = new HashSet<>(); } if (parts.length == 2) { - ParseHelper.parseThirtyTwoByteBase64String(line, parts[1]); + ParseHelper.verifyThirtyTwoByteBase64String(line, parts[1]); this.microdescriptorDigests.add(parts[1]); } else if (parts.length == 3 && parts[2].length() > 7) { /* 7 == "sha256=".length() */ - ParseHelper.parseThirtyTwoByteBase64String(line, + ParseHelper.verifyThirtyTwoByteBase64String(line, parts[2].substring(7)); this.microdescriptorDigests.add(parts[2].substring(7)); } @@ -283,7 +283,7 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { } else if ("none".equals(parts[2])) { this.masterKeyEd25519 = "none"; } else { - ParseHelper.parseThirtyTwoByteBase64String(line, parts[2]); + ParseHelper.verifyThirtyTwoByteBase64String(line, parts[2]); this.masterKeyEd25519 = parts[2]; } } diff --git a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java index dec33f5..1c7aa93 100644 --- a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java +++ b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java @@ -21,6 +21,15 @@ import java.util.regex.Pattern; import javax.xml.bind.DatatypeConverter; +/** + * Parse helper for descriptor contents. + * + * Naming convention: methods starting with {@code parse} return valid and + * sometimes changed data items (e.g. string to port int), methods starting with + * {@code verify} only check data items without returning them, and methods + * starting with {@code convert} return checked and explicitly changed data + * items (e.g. base64 to hex encoding). + */ public class ParseHelper { private static Pattern keywordPattern = Pattern.compile("^[A-Za-z0-9-]+$"); @@ -281,7 +290,7 @@ public class ParseHelper { private static Pattern twentyByteBase64Pattern = Pattern.compile("^[0-9a-zA-Z+/]{27}$"); - protected static void parseTwentyByteBase64String(String line, + protected static void verifyTwentyByteBase64String(String line, String base64String) throws DescriptorParseException { convertTwentyByteBase64StringToHex(line, base64String);
[tor-commits] [metrics-lib/release] Change encoding of microdescriptor digests in network status entries.
commit de9600a5dc937c4c453ed261266f38f21978f61e Author: Karsten Loesing Date: Sat Jun 17 21:20:01 2017 +0200 Change encoding of microdescriptor digests in network status entries. Fixes #22640. --- CHANGELOG.md | 8 .../java/org/torproject/descriptor/NetworkStatusEntry.java | 12 ++-- .../torproject/descriptor/impl/NetworkStatusEntryImpl.java | 14 +++--- .../java/org/torproject/descriptor/impl/ParseHelper.java | 14 -- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 409d0e8..e79811a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# Changes in version 1.9.0 - 2017-06-?? + + * Minor changes + - Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests() + and getMicrodescriptorDigestsSha256Base64() return hex strings + rather than base64 strings. + + # Changes in version 1.8.2 - 2017-06-16 * Medium changes diff --git a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java index c59eab9..9c5dae5 100644 --- a/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java +++ b/src/main/java/org/torproject/descriptor/NetworkStatusEntry.java @@ -89,9 +89,9 @@ public interface NetworkStatusEntry { public int getDirPort(); /** - * Return the (possibly empty) set of microdescriptor digests if the - * containing network status is a vote or microdesc consensus, or null - * otherwise. + * Return the (possibly empty) set of microdescriptor digests, encoded as 43 + * base64 characters without padding characters, if the containing network + * status is a vote or microdesc consensus, or null otherwise. * * @deprecated Renamed to {@link #getMicrodescriptorDigestsSha256Base64()}. * @@ -100,9 +100,9 @@ public interface NetworkStatusEntry { public Set getMicrodescriptorDigests(); /** - * Return the (possibly empty) set of microdescriptor digests if the - * containing network status is a vote or microdesc consensus, or null - * otherwise. + * Return the (possibly empty) set of microdescriptor digests, encoded as 43 + * base64 characters without padding characters, if the containing network + * status is a vote or microdesc consensus, or null otherwise. * * @since 1.7.0 */ diff --git a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java index 987b530..337f0b2 100644 --- a/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java +++ b/src/main/java/org/torproject/descriptor/impl/NetworkStatusEntryImpl.java @@ -141,11 +141,11 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { + "fewer space-separated elements than expected."); } this.nickname = ParseHelper.parseNickname(line, parts[1]); -this.fingerprint = ParseHelper.parseTwentyByteBase64String(line, +this.fingerprint = ParseHelper.convertTwentyByteBase64StringToHex(line, parts[2]); int descriptorOffset = 0; if (!this.microdescConsensus) { - this.descriptor = ParseHelper.parseTwentyByteBase64String(line, + this.descriptor = ParseHelper.convertTwentyByteBase64StringToHex(line, parts[3]); descriptorOffset = 1; } @@ -266,13 +266,13 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry { this.microdescriptorDigests = new HashSet<>(); } if (parts.length == 2) { - this.microdescriptorDigests.add( - ParseHelper.parseThirtyTwoByteBase64String(line, parts[1])); + ParseHelper.parseThirtyTwoByteBase64String(line, parts[1]); + this.microdescriptorDigests.add(parts[1]); } else if (parts.length == 3 && parts[2].length() > 7) { /* 7 == "sha256=".length() */ - this.microdescriptorDigests.add( - ParseHelper.parseThirtyTwoByteBase64String(line, - parts[2].substring(7))); + ParseHelper.parseThirtyTwoByteBase64String(line, + parts[2].substring(7)); + this.microdescriptorDigests.add(parts[2].substring(7)); } } diff --git a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java index 31454e5..dec33f5 100644 --- a/src/main/java/org/torproject/descriptor/impl/ParseHelper.java +++ b/src/main/java/org/torproject/descriptor/impl/ParseHelper.java @@ -281,7 +281,12 @@ public class ParseHelper { private static Pattern twentyByteBase64Pattern = Pattern.compile("^[0-9a-zA-Z+/]{27}$"); - protected static String parseTwentyByteBase64String(String line, + protected static void parseTwentyByteBase64String(String line, + String base64String) throws DescriptorParseException { +convertTwentyByteBase64StringToHex(line, base64String); + } + + protected static String c
[tor-commits] [metrics-lib/release] Bump version to 1.8.2-dev.
commit 59dc55fbe1b3c8afa7174e8b6b5f868d92e5c921 Author: Karsten Loesing Date: Fri Jun 16 17:03:41 2017 +0200 Bump version to 1.8.2-dev. --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index d755932..d5aaa8f 100644 --- a/build.xml +++ b/build.xml @@ -6,7 +6,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [metrics-lib/release] Make DescriptorFile obsolete.
commit 1062da637f6f55313f52191314f7fb939355af23 Author: Karsten Loesing Date: Wed Jun 7 17:52:02 2017 +0200 Make DescriptorFile obsolete. This change simplifies the DescriptorReader interface and allows for shorter and more concise application code. The result is that DescriptorReader returns Descriptor instances rather than DescriptorFile instances containing Descriptors and accepts a maximum queue size in Descriptors, DescriptorFile is deprecated, and Descriptor contains a File reference to the descriptor file. Implements #22141. Related to this change, this commit introduces a new UnparseableDescriptor to be returned by DescriptorParser and DescriptorReader if a descriptor cannot be parsed, as opposed to throwing a DescriptorParseException or skipping the entire descriptor file (fixes #22139), respectively. Also related to this change, DescriptorParser now returns an Iterable instead of a List, which prepares parsing large descriptor files descriptor by descriptor (will be tackled in #20395). --- CHANGELOG.md | 13 ++ .../java/org/torproject/descriptor/Descriptor.java | 19 +++ .../org/torproject/descriptor/DescriptorFile.java | 7 + .../torproject/descriptor/DescriptorParser.java| 19 +++ .../torproject/descriptor/DescriptorReader.java| 56 +-- .../descriptor/UnparseableDescriptor.java | 44 ++ .../descriptor/impl/BlockingIteratorImpl.java | 13 +- .../impl/BridgeExtraInfoDescriptorImpl.java| 9 +- .../descriptor/impl/BridgeNetworkStatusImpl.java | 7 +- .../descriptor/impl/BridgePoolAssignmentImpl.java | 9 +- .../impl/BridgeServerDescriptorImpl.java | 9 +- .../torproject/descriptor/impl/DescriptorImpl.java | 23 ++- .../descriptor/impl/DescriptorParserImpl.java | 130 ++-- .../descriptor/impl/DescriptorReaderImpl.java | 164 - .../impl/DirectoryKeyCertificateImpl.java | 9 +- .../torproject/descriptor/impl/ExitListImpl.java | 7 +- .../descriptor/impl/ExtraInfoDescriptorImpl.java | 9 +- .../descriptor/impl/MicrodescriptorImpl.java | 7 +- .../descriptor/impl/NetworkStatusImpl.java | 7 +- .../descriptor/impl/RelayDirectoryImpl.java| 10 +- .../impl/RelayExtraInfoDescriptorImpl.java | 9 +- .../impl/RelayNetworkStatusConsensusImpl.java | 9 +- .../descriptor/impl/RelayNetworkStatusImpl.java| 7 +- .../impl/RelayNetworkStatusVoteImpl.java | 7 +- .../descriptor/impl/RelayServerDescriptorImpl.java | 9 +- .../descriptor/impl/ServerDescriptorImpl.java | 7 +- .../descriptor/impl/TorperfResultImpl.java | 11 +- .../descriptor/impl/UnparseableDescriptorImpl.java | 40 + .../descriptor/impl/BridgeNetworkStatusTest.java | 2 +- .../descriptor/impl/ConsensusBuilder.java | 2 +- .../descriptor/impl/DescriptorImplTest.java| 1 - .../descriptor/impl/DescriptorParserImplTest.java | 9 +- .../descriptor/impl/ExitListImplTest.java | 10 +- .../impl/ExtraInfoDescriptorImplTest.java | 8 +- .../descriptor/impl/MicrodescriptorImplTest.java | 2 +- .../impl/RelayNetworkStatusConsensusImplTest.java | 4 +- .../impl/RelayNetworkStatusImplTest.java | 4 +- .../impl/RelayNetworkStatusVoteImplTest.java | 3 +- .../descriptor/impl/ServerDescriptorImplTest.java | 6 +- .../torproject/descriptor/impl/TestDescriptor.java | 4 +- .../descriptor/impl/TestServerDescriptor.java | 8 +- .../descriptor/impl/TorperfResultImplTest.java | 10 +- 42 files changed, 586 insertions(+), 157 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e79811a..44f1130 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changes in version 1.9.0 - 2017-06-?? + * Major changes + - Simplify DescriptorReader by returning Descriptor instances + rather than DescriptorFile instances containing Descriptors, + deprecate DescriptorFile, and add a File reference to Descriptor. + - Introduce a new UnparseableDescriptor to be returned by + DescriptorParser and DescriptorReader if a descriptor cannot be + parsed, as opposed to throwing a DescriptorParseException or + skipping the entire descriptor file, respectively. + + * Medium changes + - Let DescriptorParser return an Iterable instead of a List, which + prepares parsing large descriptor files descriptor by descriptor. + * Minor changes - Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests() and getMicrodescriptorDigestsSha256Base64() return hex strings diff --git a/src/main/java/org/torproject/descriptor/Descriptor.java b/src/main/java/org/torproject/descriptor/Descriptor.java index be6e02f..fb511bf 100644 --- a/src/main/java/org/torproject/descriptor/Descriptor.java +++ b/src/main/java/org/torproject/descripto
[tor-commits] [metrics-lib/release] Add new method to retrieve raw descriptor length.
commit a113feb2c4f195dbc607e3da8c5fc2be19a6d475 Author: Karsten Loesing Date: Thu Jun 15 14:25:29 2017 +0200 Add new method to retrieve raw descriptor length. When we switched from storing copies of byte[] to storing byte[] references, offset, and length, getRawDescriptor() suddenly became more expensive than before. (Before that, copying bytes in the first place was always expensive.) If an application only calls Descriptor#getRawDescriptorBytes() to learn the array length, there's now a more efficient way to provide that information. --- CHANGELOG.md | 3 +++ src/main/java/org/torproject/descriptor/Descriptor.java | 15 +++ .../org/torproject/descriptor/impl/DescriptorImpl.java| 5 + 3 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44f1130..95cd851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ * Medium changes - Let DescriptorParser return an Iterable instead of a List, which prepares parsing large descriptor files descriptor by descriptor. + - Add new method to retrieve the raw descriptor length, rather than + forcing applications to request (a copy of) raw descriptor bytes + only to determine the raw descriptor length. * Minor changes - Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests() diff --git a/src/main/java/org/torproject/descriptor/Descriptor.java b/src/main/java/org/torproject/descriptor/Descriptor.java index fb511bf..ca2a4cf 100644 --- a/src/main/java/org/torproject/descriptor/Descriptor.java +++ b/src/main/java/org/torproject/descriptor/Descriptor.java @@ -17,11 +17,26 @@ public interface Descriptor { /** * Return the raw descriptor bytes. * + * This method creates a new copy of raw descriptor bytes from a + * potentially larger byte array containing multiple descriptors. + * Applications that only want to learn about raw descriptor length in bytes + * should instead use {@link #getRawDescriptorLength()}. + * * @since 1.0.0 */ public byte[] getRawDescriptorBytes(); /** + * Return the raw descriptor length in bytes. + * + * Returns the exact same result as {@code getRawDescriptorBytes().length}, + * but much more efficiently. + * + * @since 1.9.0 + */ + public int getRawDescriptorLength(); + + /** * Return the (possibly empty) list of annotations in the format * {@code "@key( value)*"}. * diff --git a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java index d88b542..e0f94f0 100644 --- a/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java +++ b/src/main/java/org/torproject/descriptor/impl/DescriptorImpl.java @@ -41,6 +41,11 @@ public abstract class DescriptorImpl implements Descriptor { */ protected int length; + @Override + public int getRawDescriptorLength() { +return this.length; + } + /** * Optional reference to the descriptor file, if this descriptor was read from * a descriptor file. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [metrics-lib/master] Prepare for 1.9.0 release.
commit 3c9845aa4d96b2e5da6cd640c2704dd42e9f Author: Karsten Loesing Date: Tue Jun 20 22:36:58 2017 +0200 Prepare for 1.9.0 release. --- CHANGELOG.md | 2 +- build.xml| 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95cd851..98728b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changes in version 1.9.0 - 2017-06-?? +# Changes in version 1.9.0 - 2017-06-21 * Major changes - Simplify DescriptorReader by returning Descriptor instances diff --git a/build.xml b/build.xml index d5aaa8f..18ba365 100644 --- a/build.xml +++ b/build.xml @@ -6,7 +6,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits