[tor-commits] [tor/master] Fix a brazen memleak in consdiffmgr_add_consensus()
commit b8f7488e94f2cb83bdf83228781a11233d9f0a46 Author: Nick MathewsonDate: Fri Apr 28 15:41:52 2017 -0400 Fix a brazen memleak in consdiffmgr_add_consensus() --- src/or/consdiffmgr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 4329fb2..b134578 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -486,6 +486,7 @@ consdiffmgr_add_consensus(const char *consensus, labels, (const uint8_t *)body_compressed, size_compressed); +tor_free(body_compressed); config_free_lines(labels); } ___ 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 8003347d6b4cca052f6a2a32cd44c99258217150 Author: Translation commit botDate: Fri Apr 28 17:18:19 2017 + Update translations for tor-browser-manual --- da/da.po | 82 ++-- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/da/da.po b/da/da.po index 9fce074..566405f 100644 --- a/da/da.po +++ b/da/da.po @@ -37,6 +37,8 @@ msgid "" "Tor Browser uses the Tor network to protect your privacy and anonymity. " "Using the Tor network has two main properties:" msgstr "" +"Tor-browseren bruger Tor-netværket til at beskytte dit privatliv og " +"anonymitet. Brug af Tor-netværket har to primære egenskaber:" #: about-tor-browser.page:18 msgid "" @@ -89,6 +91,8 @@ msgid "" "external ref='media/how-tor-works.png' " "md5='6fe4151a88b7a518466f0582e40ccc8c'" msgstr "" +"external ref='media/how-tor-works.png' " +"md5='6fe4151a88b7a518466f0582e40ccc8c'" #: about-tor-browser.page:60 msgid "" @@ -139,12 +143,17 @@ msgid "" "href=\"https://bridges.torproject.org/\;>https://bridges.torproject.org/" " and follow the instructions, or" msgstr "" +"Besøg https://bridges.torproject.org/\;>https://bridges.torproject.org/" +" og følg instruktionerne, eller" #: bridges.page:42 msgid "" "Email brid...@torproject.org from a Gmail, Yahoo, or Riseup email address, " "or" msgstr "" +"Send e-mail til brid...@torproject.org fra en Gmail-, Yahoo-, eller " +"Riseup-e-mailadresse, eller" #: bridges.page:51 msgid "Entering bridge addresses" @@ -173,6 +182,8 @@ msgid "" "external ref='media/tor-launcher-custom-bridges_en-US.png' " "md5='93365c2aa3fb4d627497e83f28a39b7e'" msgstr "" +"external ref='media/tor-launcher-custom-bridges_en-US.png' " +"md5='93365c2aa3fb4d627497e83f28a39b7e'" #: bridges.page:65 msgid "" @@ -214,6 +225,8 @@ msgid "" "external ref='media/circumvention/configure.png' " "md5='519d888303eadfe4cb03f178aedd90f5'" msgstr "" +"external ref='media/circumvention/configure.png' " +"md5='519d888303eadfe4cb03f178aedd90f5'" #: circumvention.page:28 msgid "" @@ -244,6 +257,8 @@ msgid "" "external ref='media/circumvention/bridges.png' " "md5='910cdd5e45860b81a1ad4739c589a195'" msgstr "" +"external ref='media/circumvention/bridges.png' " +"md5='910cdd5e45860b81a1ad4739c589a195'" #: circumvention.page:51 msgid "" @@ -303,7 +318,7 @@ msgstr "" #: downloading.page:27 msgid "GetTor" -msgstr "" +msgstr "GetTor" #: downloading.page:28 msgid "" @@ -335,7 +350,7 @@ msgstr "" #: downloading.page:57 msgid "To use GetTor via Twitter:" -msgstr "" +msgstr "Brug GetTor via Twitter:" #: downloading.page:62 msgid "" @@ -346,7 +361,7 @@ msgstr "" #: downloading.page:70 msgid "To use GetTor via Jabber/XMPP (Tor Messenger, Jitsi, CoyIM):" -msgstr "" +msgstr "Brug GetTor via Jabber/XMPP (Tor Messenger, Jitsi, CoyIM):" #: downloading.page:75 msgid "" @@ -356,7 +371,7 @@ msgstr "" #: downloading.page:84 msgid "Satori" -msgstr "" +msgstr "Satori" #: downloading.page:85 msgid "" @@ -370,11 +385,11 @@ msgstr "At downloade Tor Browser ved brug af Satori:" #: downloading.page:95 msgid "Install Satori from the Chrome App Store." -msgstr "" +msgstr "Installer Satori fra Chrome App Store." #: downloading.page:100 msgid "Select Satori from your browserâs Apps menu." -msgstr "" +msgstr "Vælg Satori fra din browsers Apps-menu." #: downloading.page:105 msgid "" @@ -404,7 +419,7 @@ msgstr "" #: first-time.page:7 msgid "Learn how to use Tor Browser for the first time" -msgstr "" +msgstr "Lær at bruge Tor-browseren for første gang" #: first-time.page:10 msgid "Running Tor Browser for the first time" @@ -431,6 +446,8 @@ msgid "" "external ref='media/first-time/connect.png' " "md5='9d07068f751a3bfd274365a4ba8d90ca'" msgstr "" +"external ref='media/first-time/connect.png' " +"md5='9d07068f751a3bfd274365a4ba8d90ca'" #: first-time.page:23 msgid "" @@ -483,6 +500,8 @@ msgid "" "external ref='media/first-time/proxy_question.png' " "md5='30853b3e86cfd386bbc32e5b8b45a378'" msgstr "" +"external ref='media/first-time/proxy_question.png' " +"md5='30853b3e86cfd386bbc32e5b8b45a378'" #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to @@ -494,6 +513,8 @@ msgid "" "external ref='media/first-time/proxy.png' " "md5='13f21a351cd0aa1cf11aada690f3dc90'" msgstr "" +"external ref='media/first-time/proxy.png' " +"md5='13f21a351cd0aa1cf11aada690f3dc90'" #: index.page:6 msgid "Tor Browser User Manual" @@ -542,7 +563,7 @@ msgstr "" #: known-issues.page:43 msgid "Tor can not use a bridge if a proxy is set." -msgstr "" +msgstr "Tor kan ikke bruge en bro hvis en proxy er sat." #: known-issues.page:48 msgid "" @@ -571,6 +592,9 @@ msgid "" "./start-tor-browser.desktop\n" "" msgstr "" +"\n" +"./start-tor-browser.desktop\n" +"" #:
[tor-commits] [tor/master] Pre-compress consensus diffs with supported consensus methods.
commit 1e1581a24ea11b93b1fdf33a11ce07b8d2772c75 Author: Nick MathewsonDate: Tue Apr 25 15:36:13 2017 -0400 Pre-compress consensus diffs with supported consensus methods. --- src/or/consdiffmgr.c| 229 src/or/consdiffmgr.h| 4 +- src/test/test_consdiffmgr.c | 11 ++- 3 files changed, 177 insertions(+), 67 deletions(-) diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 2deeab5..9a3c56d 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -74,6 +74,25 @@ typedef enum cdm_diff_status_t { CDM_DIFF_ERROR=3, } cdm_diff_status_t; +/** Which methods do we use for precompressing diffs? */ +static const compress_method_t compress_diffs_with[] = { + NO_METHOD, + GZIP_METHOD, +#ifdef HAVE_LZMA + LZMA_METHOD, +#endif +#ifdef HAVE_ZSTD + ZSTD_METHOD, +#endif +}; + +/** How many different methods will we try to use for diff compression? */ +STATIC unsigned +n_diff_compression_methods(void) +{ + return ARRAY_LENGTH(compress_diffs_with); +} + /** Hashtable node used to remember the current status of the diff * from a given sha3 digest to the current consensus. */ typedef struct cdm_diff_t { @@ -84,12 +103,15 @@ typedef struct cdm_diff_t { /** SHA3-256 digest of the consensus that this diff is _from_. (part of the * ht key) */ uint8_t from_sha3[DIGEST256_LEN]; + /** Method by which the diff is compressed. (part of the ht key */ + compress_method_t compress_method; /** One of the CDM_DIFF_* values, depending on whether this diff * is available, in progress, or impossible to compute. */ cdm_diff_status_t cdm_diff_status; /** SHA3-256 digest of the consensus that this diff is _to. */ uint8_t target_sha3[DIGEST256_LEN]; + /** Handle to the cache entry for this diff, if any. We use a handle here * to avoid thinking too hard about cache entry lifetime issues. */ consensus_cache_entry_handle_t *entry; @@ -121,9 +143,10 @@ static void consdiffmgr_set_cache_flags(void); static unsigned cdm_diff_hash(const cdm_diff_t *diff) { - uint8_t tmp[DIGEST256_LEN + 1]; + uint8_t tmp[DIGEST256_LEN + 2]; memcpy(tmp, diff->from_sha3, DIGEST256_LEN); tmp[DIGEST256_LEN] = (uint8_t) diff->flavor; + tmp[DIGEST256_LEN+1] = (uint8_t) diff->compress_method; return (unsigned) siphash24g(tmp, sizeof(tmp)); } /** Helper: compare two cdm_diff_t objects for key equality */ @@ -131,7 +154,8 @@ static int cdm_diff_eq(const cdm_diff_t *diff1, const cdm_diff_t *diff2) { return fast_memeq(diff1->from_sha3, diff2->from_sha3, DIGEST256_LEN) && -diff1->flavor == diff2->flavor; +diff1->flavor == diff2->flavor && +diff1->compress_method == diff2->compress_method; } HT_PROTOTYPE(cdm_diff_ht, cdm_diff_t, node, cdm_diff_hash, cdm_diff_eq) @@ -153,13 +177,15 @@ cdm_diff_free(cdm_diff_t *diff) static cdm_diff_t * cdm_diff_new(consensus_flavor_t flav, const uint8_t *from_sha3, - const uint8_t *target_sha3) + const uint8_t *target_sha3, + compress_method_t method) { cdm_diff_t *ent; ent = tor_malloc_zero(sizeof(cdm_diff_t)); ent->flavor = flav; memcpy(ent->from_sha3, from_sha3, DIGEST256_LEN); memcpy(ent->target_sha3, target_sha3, DIGEST256_LEN); + ent->compress_method = method; return ent; } @@ -177,18 +203,25 @@ cdm_diff_ht_check_and_note_pending(consensus_flavor_t flav, const uint8_t *target_sha3) { struct cdm_diff_t search, *ent; - memset(, 0, sizeof(cdm_diff_t)); - search.flavor = flav; - memcpy(search.from_sha3, from_sha3, DIGEST256_LEN); - ent = HT_FIND(cdm_diff_ht, _diff_ht, ); - if (ent) { -tor_assert_nonfatal(ent->cdm_diff_status != CDM_DIFF_PRESENT); -return 1; + unsigned u; + int result = 0; + for (u = 0; u < n_diff_compression_methods(); ++u) { +compress_method_t method = compress_diffs_with[u]; +memset(, 0, sizeof(cdm_diff_t)); +search.flavor = flav; +search.compress_method = method; +memcpy(search.from_sha3, from_sha3, DIGEST256_LEN); +ent = HT_FIND(cdm_diff_ht, _diff_ht, ); +if (ent) { + tor_assert_nonfatal(ent->cdm_diff_status != CDM_DIFF_PRESENT); + result = 1; + continue; +} +ent = cdm_diff_new(flav, from_sha3, target_sha3, method); +ent->cdm_diff_status = CDM_DIFF_IN_PROGRESS; +HT_INSERT(cdm_diff_ht, _diff_ht, ent); } - ent = cdm_diff_new(flav, from_sha3, target_sha3); - ent->cdm_diff_status = CDM_DIFF_IN_PROGRESS; - HT_INSERT(cdm_diff_ht, _diff_ht, ent); - return 0; + return result; } /** @@ -201,16 +234,18 @@ static void cdm_diff_ht_set_status(consensus_flavor_t flav, const uint8_t *from_sha3, const uint8_t *to_sha3, + compress_method_t method, int status, consensus_cache_entry_handle_t *handle) { struct cdm_diff_t search,
[tor-commits] [tor/master] Teach consdiffmgr to remember two digests: one compressed, one not.
commit 9e081a44a9ca3b9952b536cd0317538263d59f9b Author: Nick MathewsonDate: Tue Apr 25 13:06:08 2017 -0400 Teach consdiffmgr to remember two digests: one compressed, one not. --- src/or/consdiffmgr.c | 47 +++ 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 59d0f28..adb3fc2 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -21,8 +21,6 @@ #include "networkstatus.h" #include "workqueue.h" -/* support compression */ - /** * Labels to apply to items in the conscache object. * @@ -33,8 +31,10 @@ /* The valid-after time for a consensus (or for the target consensus of a * diff), encoded as ISO UTC. */ #define LABEL_VALID_AFTER "consensus-valid-after" -/* A hex encoded SHA3 digest of the object after decompression. */ +/* A hex encoded SHA3 digest of the object, as compressed (if any) */ #define LABEL_SHA3_DIGEST "sha3-digest" +/* A hex encoded SHA3 digest of the object before compression. */ +#define LABEL_SHA3_DIGEST_UNCOMPRESSED "sha3-digest-uncompressed" /* The flavor of the consensus or consensuses diff */ #define LABEL_FLAVOR "consensus-flavor" /* Diff only: the SHA3 digest of the source consensus. */ @@ -43,6 +43,8 @@ #define LABEL_TARGET_SHA3_DIGEST "target-sha3-digest" /* Diff only: the valid-after date of the source consensus. */ #define LABEL_FROM_VALID_AFTER "from-valid-after" +/* What kind of compression was used? */ +#define LABEL_COMPRESSION_TYPE "compression" /** @} */ #define DOCTYPE_CONSENSUS "consensus" @@ -299,10 +301,11 @@ cdm_cache_get(void) /** * Helper: given a list of labels, prepend the hex-encoded SHA3 digest * of the bodylen-byte object at body to those labels, - * with LABEL_SHA3_DIGEST as its label. + * with label as its label. */ static void cdm_labels_prepend_sha3(config_line_t **labels, +const char *label, const uint8_t *body, size_t bodylen) { @@ -313,7 +316,7 @@ cdm_labels_prepend_sha3(config_line_t **labels, base16_encode(hexdigest, sizeof(hexdigest), (const char *)sha3_digest, sizeof(sha3_digest)); - config_line_prepend(labels, LABEL_SHA3_DIGEST, hexdigest); + config_line_prepend(labels, label, hexdigest); } /** Helper: if there is a sha3-256 hex-encoded digest in ent with the @@ -417,7 +420,10 @@ consdiffmgr_add_consensus(const char *consensus, format_iso_time_nospace(formatted_time, valid_after); const char *flavname = networkstatus_get_flavor_name(flavor); -cdm_labels_prepend_sha3(, (const uint8_t *)consensus, bodylen); +cdm_labels_prepend_sha3(, LABEL_SHA3_DIGEST, +(const uint8_t *)consensus, bodylen); +cdm_labels_prepend_sha3(, LABEL_SHA3_DIGEST_UNCOMPRESSED, +(const uint8_t *)consensus, bodylen); config_line_prepend(, LABEL_FLAVOR, flavname); config_line_prepend(, LABEL_VALID_AFTER, formatted_time); config_line_prepend(, LABEL_DOCTYPE, DOCTYPE_CONSENSUS); @@ -584,7 +590,8 @@ consdiffmgr_cleanup(void) if (most_recent == NULL) continue; const char *most_recent_sha3 = - consensus_cache_entry_get_value(most_recent, LABEL_SHA3_DIGEST); + consensus_cache_entry_get_value(most_recent, + LABEL_SHA3_DIGEST_UNCOMPRESSED); if (BUG(most_recent_sha3 == NULL)) continue; // LCOV_EXCL_LINE @@ -713,7 +720,7 @@ consdiffmgr_rescan_flavor_(consensus_flavor_t flavor) goto done; //LCOV_EXCL_LINE uint8_t most_recent_sha3[DIGEST256_LEN]; if (BUG(cdm_entry_get_sha3_value(most_recent_sha3, most_recent, - LABEL_SHA3_DIGEST) < 0)) + LABEL_SHA3_DIGEST_UNCOMPRESSED) < 0)) goto done; //LCOV_EXCL_LINE // 2. Find all the relevant diffs _to_ this consensus. These are ones @@ -765,7 +772,8 @@ consdiffmgr_rescan_flavor_(consensus_flavor_t flavor) continue; // LCOV_EXCL_LINE uint8_t this_sha3[DIGEST256_LEN]; -if (BUG(cdm_entry_get_sha3_value(this_sha3, c, LABEL_SHA3_DIGEST)<0)) +if (BUG(cdm_entry_get_sha3_value(this_sha3, c, + LABEL_SHA3_DIGEST_UNCOMPRESSED)<0)) continue; // LCOV_EXCL_LINE if (cdm_diff_ht_check_and_note_pending(flavor, this_sha3, most_recent_sha3)) { @@ -933,13 +941,15 @@ consensus_diff_worker_threadfn(void *state_, void *work_) const char *lv_from_valid_after = consensus_cache_entry_get_value(job->diff_from, LABEL_VALID_AFTER); const char *lv_from_digest = -consensus_cache_entry_get_value(job->diff_from, LABEL_SHA3_DIGEST); +consensus_cache_entry_get_value(job->diff_from, +LABEL_SHA3_DIGEST_UNCOMPRESSED); const char *lv_from_flavor =
[tor-commits] [tor/master] Store archived consensuses compressed on disk.
commit a1172b6774bc95ff951ac58051ea42bc0a62e32b Author: Nick MathewsonDate: Tue Apr 25 14:52:40 2017 -0400 Store archived consensuses compressed on disk. I'm just using gzip compression now, for performance. --- src/or/consdiffmgr.c| 74 +++-- src/or/consdiffmgr.h| 2 ++ src/test/test_consdiffmgr.c | 15 + 3 files changed, 74 insertions(+), 17 deletions(-) diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index adb3fc2..2deeab5 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -110,6 +110,9 @@ static int consensus_diff_queue_diff_work(consensus_cache_entry_t *diff_from, consensus_cache_entry_t *diff_to); static void consdiffmgr_set_cache_flags(void); +/* Just gzip consensuses for now. */ +#define COMPRESS_CONSENSUS_WITH GZIP_METHOD + /* = * Hashtable setup * = */ @@ -420,18 +423,28 @@ consdiffmgr_add_consensus(const char *consensus, format_iso_time_nospace(formatted_time, valid_after); const char *flavname = networkstatus_get_flavor_name(flavor); -cdm_labels_prepend_sha3(, LABEL_SHA3_DIGEST, -(const uint8_t *)consensus, bodylen); cdm_labels_prepend_sha3(, LABEL_SHA3_DIGEST_UNCOMPRESSED, (const uint8_t *)consensus, bodylen); + +char *body_compressed = NULL; +size_t size_compressed = 0; +if (tor_compress(_compressed, _compressed, + consensus, bodylen, COMPRESS_CONSENSUS_WITH) < 0) { + config_free_lines(labels); + return -1; +} +cdm_labels_prepend_sha3(, LABEL_SHA3_DIGEST, +(const uint8_t *)body_compressed, size_compressed); +config_line_prepend(, LABEL_COMPRESSION_TYPE, +compression_method_get_name(COMPRESS_CONSENSUS_WITH)); config_line_prepend(, LABEL_FLAVOR, flavname); config_line_prepend(, LABEL_VALID_AFTER, formatted_time); config_line_prepend(, LABEL_DOCTYPE, DOCTYPE_CONSENSUS); entry = consensus_cache_add(cdm_cache_get(), labels, -(const uint8_t *)consensus, -bodylen); +(const uint8_t *)body_compressed, +size_compressed); config_free_lines(labels); } @@ -915,6 +928,40 @@ typedef struct consensus_diff_worker_job_t { size_t bodylen_out; } consensus_diff_worker_job_t; +/** Given a consensus_cache_entry_t, check whether it has a label claiming + * that it was compressed. If so, uncompress its contents into out and + * set outlen to hold their size. If not, just copy the body into + * out and set outlen to its length. Return 0 on success, + * -1 on failure. + * + * In all cases, the output is nul-terminated. */ +STATIC int +uncompress_or_copy(char **out, size_t *outlen, + consensus_cache_entry_t *ent) +{ + const uint8_t *body; + size_t bodylen; + + if (consensus_cache_entry_get_body(ent, , ) < 0) +return -1; + + const char *lv_compression = +consensus_cache_entry_get_value(ent, LABEL_COMPRESSION_TYPE); + compress_method_t method = NO_METHOD; + + if (lv_compression) +method = compression_method_get_by_name(lv_compression); + + if (method == NO_METHOD) { +*out = tor_memdup_nulterm(body, bodylen); +*outlen = bodylen; +return 0; + } else { +return tor_uncompress(out, outlen, (const char *)body, bodylen, + method, 1, LOG_WARN); + } +} + /** * Worker function. This function runs inside a worker thread and receives * a consensus_diff_worker_job_t as its input. @@ -966,11 +1013,20 @@ consensus_diff_worker_threadfn(void *state_, void *work_) char *consensus_diff; { -// the input might not be nul-terminated. And also we wanted to -// support compression later I guess. So, we need to copy here. -char *diff_from_nt, *diff_to_nt; -diff_from_nt = tor_memdup_nulterm(diff_from, len_from); -diff_to_nt = tor_memdup_nulterm(diff_to, len_to); +char *diff_from_nt = NULL, *diff_to_nt = NULL; +size_t diff_from_nt_len, diff_to_nt_len; + +if (uncompress_or_copy(_from_nt, _from_nt_len, + job->diff_from) < 0) { + return WQ_RPL_REPLY; +} +if (uncompress_or_copy(_to_nt, _to_nt_len, + job->diff_to) < 0) { + tor_free(diff_from_nt); + return WQ_RPL_REPLY; +} +tor_assert(diff_from_nt); +tor_assert(diff_to_nt); // ugh; this is going to calculate the SHA3 of both its // inputs again, even though we already have that. Maybe it's time diff --git a/src/or/consdiffmgr.h b/src/or/consdiffmgr.h index 6932b2f..982e0df 100644 --- a/src/or/consdiffmgr.h +++ b/src/or/consdiffmgr.h @@ -42,6 +42,8 @@ STATIC consensus_cache_entry_t
[tor-commits] [tor/master] Initialize consdiffmgr when running as (or becoming) a server.
commit fba8d7b222bf00cf2812362072e913c26a41b370 Author: Nick MathewsonDate: Tue Apr 25 19:53:00 2017 -0400 Initialize consdiffmgr when running as (or becoming) a server. --- src/or/config.c | 10 ++ src/or/consdiffmgr.c | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/or/config.c b/src/or/config.c index a73f397..201cca7 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -74,6 +74,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "consdiffmgr.h" #include "control.h" #include "confparse.h" #include "cpuworker.h" @@ -1815,6 +1816,15 @@ options_act(const or_options_t *old_options) return -1; } + if (server_mode(options)) { +static int cdm_initialized = 0; +if (cdm_initialized == 0) { + cdm_initialized = 1; + consdiffmgr_configure(NULL); + consdiffmgr_validate(); +} + } + if (init_control_cookie_authentication(options->CookieAuthentication) < 0) { log_warn(LD_CONFIG,"Error creating control cookie authentication file."); return -1; diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 41e37ac..160dcaf 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -622,7 +622,8 @@ consdiffmgr_cleanup(void) void consdiffmgr_configure(const consdiff_cfg_t *cfg) { - memcpy(_cfg, cfg, sizeof(consdiff_cfg)); + if (cfg) +memcpy(_cfg, cfg, sizeof(consdiff_cfg)); (void) cdm_cache_get(); } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Fix use-after-free bug in storage_dir sandbox code.
commit 16d6ab6640b4404d47096cbf1d25e1b57b0b26bb Author: Nick MathewsonDate: Wed Apr 26 08:43:38 2017 -0400 Fix use-after-free bug in storage_dir sandbox code. --- src/common/storagedir.c | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/common/storagedir.c b/src/common/storagedir.c index 7e0be67..9d3c32e 100644 --- a/src/common/storagedir.c +++ b/src/common/storagedir.c @@ -89,11 +89,12 @@ storage_dir_register_with_sandbox(storage_dir_t *d, sandbox_cfg_t **cfg) tor_asprintf(, "%s/%d", d->directory, idx); tor_asprintf(, "%s/%d.tmp", d->directory, idx); -problems += sandbox_cfg_allow_open_filename(cfg, path); -problems += sandbox_cfg_allow_open_filename(cfg, tmppath); -problems += sandbox_cfg_allow_stat_filename(cfg, path); -problems += sandbox_cfg_allow_stat_filename(cfg, tmppath); -problems += sandbox_cfg_allow_rename(cfg, tmppath, path); +problems += sandbox_cfg_allow_open_filename(cfg, tor_strdup(path)); +problems += sandbox_cfg_allow_open_filename(cfg, tor_strdup(tmppath)); +problems += sandbox_cfg_allow_stat_filename(cfg, tor_strdup(path)); +problems += sandbox_cfg_allow_stat_filename(cfg, tor_strdup(tmppath)); +problems += sandbox_cfg_allow_rename(cfg, + tor_strdup(tmppath), tor_strdup(path)); tor_free(path); tor_free(tmppath); ___ 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 'ticket21648'
commit dcc0a49a8477a33ba6b90839ae152230f0eac692 Merge: 480dab4 531835f Author: Nick MathewsonDate: Fri Apr 28 11:04:49 2017 -0400 Merge branch 'ticket21648' changes/bug22096| 6 + src/common/sandbox.c| 2 +- src/common/storagedir.c | 21 ++- src/common/storagedir.h | 1 + src/or/config.c | 10 + src/or/conscache.c | 40 +++- src/or/conscache.h | 7 +- src/or/consdiffmgr.c| 439 +++- src/or/consdiffmgr.h| 8 +- src/or/main.c | 23 +++ src/or/networkstatus.c | 4 + src/test/test_conscache.c | 2 +- src/test/test_consdiffmgr.c | 26 +-- 13 files changed, 477 insertions(+), 112 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Configure sandbox using consdiffmgr; free cdm on exit.
commit 24f7059704433834a7335286e552eda7f030666f Author: Nick MathewsonDate: Tue Apr 25 19:52:34 2017 -0400 Configure sandbox using consdiffmgr; free cdm on exit. --- src/or/conscache.c | 11 +++ src/or/conscache.h | 3 +++ src/or/consdiffmgr.c | 10 ++ src/or/consdiffmgr.h | 2 ++ src/or/main.c| 4 5 files changed, 30 insertions(+) diff --git a/src/or/conscache.c b/src/or/conscache.c index 9dedb43..2544f56 100644 --- a/src/or/conscache.c +++ b/src/or/conscache.c @@ -78,6 +78,17 @@ consensus_cache_open(const char *subdir, int max_entries) } /** + * Tell the sandbox (if any) configured by cfg to allow the + * operations that cache will need. + */ +int +consensus_cache_register_with_sandbox(consensus_cache_t *cache, + struct sandbox_cfg_elem **cfg) +{ + return storage_dir_register_with_sandbox(cache->dir, cfg); +} + +/** * Helper: clear all entries from cache (but do not delete * any that aren't marked for removal */ diff --git a/src/or/conscache.h b/src/or/conscache.h index c8cda60..f3110e2 100644 --- a/src/or/conscache.h +++ b/src/or/conscache.h @@ -13,6 +13,9 @@ HANDLE_DECL(consensus_cache_entry, consensus_cache_entry_t, ) consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries); void consensus_cache_free(consensus_cache_t *cache); +struct sandbox_cfg_elem; +int consensus_cache_register_with_sandbox(consensus_cache_t *cache, + struct sandbox_cfg_elem **cfg); void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff); void consensus_cache_delete_pending(consensus_cache_t *cache); consensus_cache_entry_t *consensus_cache_add(consensus_cache_t *cache, diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 59d0f28..41e37ac 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -628,6 +628,16 @@ consdiffmgr_configure(const consdiff_cfg_t *cfg) } /** + * Tell the sandbox (if any) configured by cfg to allow the + * operations that the consensus diff manager will need. + */ +int +consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg) +{ + return consensus_cache_register_with_sandbox(cdm_cache_get(), cfg); +} + +/** * Scan the consensus diff manager's cache for any grossly malformed entries, * and mark them as deletable. Return 0 if no problems were found; 1 * if problems were found and fixed. diff --git a/src/or/consdiffmgr.h b/src/or/consdiffmgr.h index 6932b2f..55ce1c8 100644 --- a/src/or/consdiffmgr.h +++ b/src/or/consdiffmgr.h @@ -32,6 +32,8 @@ consdiff_status_t consdiffmgr_find_diff_from( void consdiffmgr_rescan(void); int consdiffmgr_cleanup(void); void consdiffmgr_configure(const consdiff_cfg_t *cfg); +struct sandbox_cfg_elem; +int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg); void consdiffmgr_free_all(void); int consdiffmgr_validate(void); diff --git a/src/or/main.c b/src/or/main.c index 5fec7e4..452c350 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -64,6 +64,7 @@ #include "connection.h" #include "connection_edge.h" #include "connection_or.h" +#include "consdiffmgr.h" #include "control.h" #include "cpuworker.h" #include "crypto_s2k.h" @@ -3162,6 +3163,7 @@ tor_free_all(int postfork) sandbox_free_getaddrinfo_cache(); protover_free_all(); bridges_free_all(); + consdiffmgr_free_all(); if (!postfork) { config_free_all(); or_state_free_all(); @@ -3584,6 +3586,8 @@ sandbox_init_filter(void) OPEN_DATADIR("stats"); STAT_DATADIR("stats"); STAT_DATADIR2("stats", "dirreq-stats"); + +consdiffmgr_register_with_sandbox(); } init_addrinfo(); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Clean the consdiffmgr cache and launch new diffs as needed.
commit 7b8d48a6cb1109a5cd16e4db7b088a968b0186e3 Author: Nick MathewsonDate: Tue Apr 25 20:01:09 2017 -0400 Clean the consdiffmgr cache and launch new diffs as needed. --- src/or/main.c | 19 +++ 1 file changed, 19 insertions(+) diff --git a/src/or/main.c b/src/or/main.c index 452c350..0da43dc 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1186,6 +1186,7 @@ CALLBACK(check_dns_honesty); CALLBACK(write_bridge_ns); CALLBACK(check_fw_helper_app); CALLBACK(heartbeat); +CALLBACK(clean_consdiffmgr); #undef CALLBACK @@ -1218,6 +1219,7 @@ static periodic_event_item_t periodic_events[] = { CALLBACK(write_bridge_ns), CALLBACK(check_fw_helper_app), CALLBACK(heartbeat), + CALLBACK(clean_consdiffmgr), END_OF_PERIODIC_EVENTS }; #undef CALLBACK @@ -1473,6 +1475,12 @@ run_scheduled_events(time_t now) /* 11b. check pending unconfigured managed proxies */ if (!net_is_disabled() && pt_proxies_configuration_pending()) pt_configure_remaining_proxies(); + + /* 12. launch diff computations. (This is free if there are none to + * launch.) */ + if (server_mode(options)) { +consdiffmgr_rescan(); + } } /* Periodic callback: rotate the onion keys after the period defined by the @@ -2036,6 +2044,17 @@ heartbeat_callback(time_t now, const or_options_t *options) return options->HeartbeatPeriod; } +#define CDM_CLEAN_CALLBACK_INTERVAL 600 +static int +clean_consdiffmgr_callback(time_t now, const or_options_t *options) +{ + (void)now; + if (server_mode(options)) { +consdiffmgr_cleanup(); + } + return CDM_CLEAN_CALLBACK_INTERVAL; +} + /** Timer: used to invoke second_elapsed_callback() once per second. */ static periodic_timer_t *second_timer = NULL; /** Number of libevent errors in the last second: we die if we get too many. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Pass incoming consensus documents to the consdiffmgr code
commit ab73bda0604dccd899061f338122ed7f9faf8c4f Author: Nick MathewsonDate: Wed Apr 26 08:44:01 2017 -0400 Pass incoming consensus documents to the consdiffmgr code --- src/or/networkstatus.c | 4 1 file changed, 4 insertions(+) diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 9d27e57..188e753 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -46,6 +46,7 @@ #include "config.h" #include "connection.h" #include "connection_or.h" +#include "consdiffmgr.h" #include "control.h" #include "directory.h" #include "dirserv.h" @@ -1981,6 +1982,9 @@ networkstatus_set_current_consensus(const char *consensus, flavor, >digests, c->valid_after); +if (server_mode(get_options())) { + consdiffmgr_add_consensus(consensus, c); +} } if (!from_cache) { ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Functionality to ensure there is space to add files to cache.
commit 7a0964279fafc9912ed5cc4b82abfb81328f5150 Author: Nick MathewsonDate: Wed Apr 26 10:42:11 2017 -0400 Functionality to ensure there is space to add files to cache. --- src/common/storagedir.c | 10 ++ src/common/storagedir.h | 1 + src/or/conscache.c | 13 src/or/conscache.h | 1 + src/or/consdiffmgr.c| 81 + 5 files changed, 106 insertions(+) diff --git a/src/common/storagedir.c b/src/common/storagedir.c index 9d3c32e..309d42d 100644 --- a/src/common/storagedir.c +++ b/src/common/storagedir.c @@ -530,3 +530,13 @@ storage_dir_remove_all(storage_dir_t *d) return storage_dir_shrink(d, 0, d->max_files); } +/** + * Return the largest number of non-temporary files we're willing to + * store in d. + */ +int +storage_dir_get_max_files(storage_dir_t *d) +{ + return d->max_files; +} + diff --git a/src/common/storagedir.h b/src/common/storagedir.h index 7811944..db25057 100644 --- a/src/common/storagedir.h +++ b/src/common/storagedir.h @@ -45,6 +45,7 @@ int storage_dir_shrink(storage_dir_t *d, uint64_t target_size, int min_to_remove); int storage_dir_remove_all(storage_dir_t *d); +int storage_dir_get_max_files(storage_dir_t *d); #endif diff --git a/src/or/conscache.c b/src/or/conscache.c index 7760d13..5ffa129 100644 --- a/src/or/conscache.c +++ b/src/or/conscache.c @@ -400,6 +400,19 @@ consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff) } /** + * Return the number of currently unused filenames available in this cache. + */ +int +consensus_cache_get_n_filenames_available(consensus_cache_t *cache) +{ + tor_assert(cache); + int max = storage_dir_get_max_files(cache->dir); + int used = smartlist_len(storage_dir_list(cache->dir)); + tor_assert_nonfatal(max >= used); + return max - used; +} + +/** * Delete every element of cache has been marked with * consensus_cache_entry_mark_for_removal. If force is false, * retain those entries which are not in use except by the cache. diff --git a/src/or/conscache.h b/src/or/conscache.h index ea27733..aef5420 100644 --- a/src/or/conscache.h +++ b/src/or/conscache.h @@ -19,6 +19,7 @@ int consensus_cache_register_with_sandbox(consensus_cache_t *cache, void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff); void consensus_cache_delete_pending(consensus_cache_t *cache, int force); +int consensus_cache_get_n_filenames_available(consensus_cache_t *cache); consensus_cache_entry_t *consensus_cache_add(consensus_cache_t *cache, const config_line_t *labels, const uint8_t *data, diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 1f3915f..ba52650 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -107,6 +107,7 @@ static consdiff_cfg_t consdiff_cfg = { /* .cache_max_num = */ 128 }; +static int consdiffmgr_ensure_space_for_files(int n); static int consensus_diff_queue_diff_work(consensus_cache_entry_t *diff_from, consensus_cache_entry_t *diff_to); static void consdiffmgr_set_cache_flags(void); @@ -413,6 +414,8 @@ consdiffmgr_add_consensus(const char *consensus, } /* We don't have it. Add it to the cache. */ + consdiffmgr_ensure_space_for_files(1); + { size_t bodylen = strlen(consensus); config_line_t *labels = NULL; @@ -853,6 +856,82 @@ consdiffmgr_rescan(void) } /** + * Helper: compare two files by their from-valid-after and valid-after labels, + * trying to sort in ascending order by from-valid-after (when present) and + * valid-after (when not). Place everything that has neither label first in + * the list. + */ +static int +compare_by_staleness_(const void **a, const void **b) +{ + const consensus_cache_entry_t *e1 = *a; + const consensus_cache_entry_t *e2 = *b; + const char *va1, *fva1, *va2, *fva2; + va1 = consensus_cache_entry_get_value(e1, LABEL_VALID_AFTER); + va2 = consensus_cache_entry_get_value(e2, LABEL_VALID_AFTER); + fva1 = consensus_cache_entry_get_value(e1, LABEL_FROM_VALID_AFTER); + fva2 = consensus_cache_entry_get_value(e2, LABEL_FROM_VALID_AFTER); + + if (fva1) +va1 = fva1; + if (fva2) +va2 = fva2; + + /* See note about iso-encoded values in compare_by_valid_after_. Also note + * that missing dates will get placed first. */ + return strcmp_opt(va1, va2); +} + +/** If there are not enough unused filenames to store n files, then + * delete old consensuses until there are. (We have to keep track of the + * number of filenames because of the way that the seccomp2 cache works.) + * + * Return 0 on success, -1 on failure. + **/ +static int +consdiffmgr_ensure_space_for_files(int n) +{ + consensus_cache_t *cache = cdm_cache_get(); + if (consensus_cache_get_n_filenames_available(cache) >= n) { +//
[tor-commits] [tor/master] Increase MALLOC_MP_LIM to 16MB
commit 531835f5611994def74d790f43df01d828724513 Author: Nick MathewsonDate: Fri Apr 28 10:53:05 2017 -0400 Increase MALLOC_MP_LIM to 16MB Increase the maximum allowed size passed to mprotect(PROT_WRITE) from 1MB to 16MB. This was necessary with the glibc allocator in order to allow worker threads to allocate more memory -- which in turn is necessary because of our new use of worker threads for compression. Closes ticket #22096. Found while working on #21648. --- changes/bug22096 | 6 ++ src/common/sandbox.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/changes/bug22096 b/changes/bug22096 new file mode 100644 index 000..83dac9c --- /dev/null +++ b/changes/bug22096 @@ -0,0 +1,6 @@ + o Minor features (linux seccomp2 sandbox): +- Increase the maximum allowed size passed to mprotect(PROT_WRITE) + from 1MB to 16MB. This was necessary with the glibc allocator in + order to allow worker threads to allocate more memory -- which in + turn is necessary because of our new use of worker threads for + compression. Closes ticket 22096. diff --git a/src/common/sandbox.c b/src/common/sandbox.c index ddb1f02..ab2de52 100644 --- a/src/common/sandbox.c +++ b/src/common/sandbox.c @@ -20,7 +20,7 @@ #endif /** Malloc mprotect limit in bytes. */ -#define MALLOC_MP_LIM 1048576 +#define MALLOC_MP_LIM (16*1024*1024) #include #include ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Merge branches 'consdiffmgr_orig_squashed' and 'actually_compute_diffs_squashed'
commit 00a12337ff068d47d92352541665ee73cbd9ff4b Merge: 480dab4 1e1581a 7a09642 Author: Nick MathewsonDate: Thu Apr 27 21:42:51 2017 -0400 Merge branches 'consdiffmgr_orig_squashed' and 'actually_compute_diffs_squashed' src/common/storagedir.c | 21 ++- src/common/storagedir.h | 1 + src/or/config.c | 10 + src/or/conscache.c | 40 +++- src/or/conscache.h | 7 +- src/or/consdiffmgr.c| 439 +++- src/or/consdiffmgr.h| 8 +- src/or/main.c | 23 +++ src/or/networkstatus.c | 4 + src/test/test_conscache.c | 2 +- src/test/test_consdiffmgr.c | 26 +-- 11 files changed, 470 insertions(+), 111 deletions(-) diff --cc src/or/consdiffmgr.c index a57edf9,9a3c56d,ba52650..4329fb2 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c -1050,20 -1202,35 -1139,22 +1299,37 consensus_diff_worker_replyfn(void *wor cache = 0; } - - int status; - - consensus_cache_entry_handle_t *handle = NULL; - - if (job->body_out && job->bodylen_out && job->labels_out) { - -/* Success! Store the results */ - -log_info(LD_DIRSERV, "Adding consensus diff from %s to %s", - - lv_from_digest, lv_to_digest); - -consdiffmgr_ensure_space_for_files(1); - -consensus_cache_entry_t *ent = - - consensus_cache_add(cdm_cache_get(), job->labels_out, - - job->body_out, - - job->bodylen_out); - -status = CDM_DIFF_PRESENT; - -handle = consensus_cache_entry_handle_new(ent); - -consensus_cache_entry_decref(ent); - - } else { + + int status = CDM_DIFF_ERROR; + + consensus_cache_entry_handle_t *handles[ARRAY_LENGTH(compress_diffs_with)]; + + memset(handles, 0, sizeof(handles)); + + +++ consdiffmgr_ensure_space_for_files(n_diff_compression_methods()); +++ + + unsigned u; + + for (u = 0; u < n_diff_compression_methods(); ++u) { + +compress_method_t method = compress_diffs_with[u]; + +uint8_t *body_out = job->out[u].body; + +size_t bodylen_out = job->out[u].bodylen; + +config_line_t *labels = job->out[u].labels; + +const char *methodname = compression_method_get_name(method); + +if (body_out && bodylen_out && labels) { + + /* Success! Store the results */ + + log_info(LD_DIRSERV, "Adding consensus diff from %s to %s, " + + "compressed with %s", + + lv_from_digest, lv_to_digest, methodname); + + + + consensus_cache_entry_t *ent = + +consensus_cache_add(cdm_cache_get(), + +labels, + +body_out, + +bodylen_out); + + + + status = CDM_DIFF_PRESENT; + + handles[u] = consensus_cache_entry_handle_new(ent); + + consensus_cache_entry_decref(ent); + +} + + } + + if (status != CDM_DIFF_PRESENT) { /* Failure! Nothing to do but complain */ log_warn(LD_DIRSERV, "Worker was unable to compute consensus diff " ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Lower the file limit in consdiffmgr, to support seccomp2
commit 466e9140888f0a6a504dc642a0426bd2352f0490 Author: Nick MathewsonDate: Wed Apr 26 09:29:58 2017 -0400 Lower the file limit in consdiffmgr, to support seccomp2 --- src/or/consdiffmgr.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index 160dcaf..fb09d21 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -101,7 +101,10 @@ static HT_HEAD(cdm_diff_ht, cdm_diff_t) cdm_diff_ht = HT_INITIALIZER(); */ static consdiff_cfg_t consdiff_cfg = { /* .cache_max_age_hours = */ 24 * 90, - /* .cache_max_num = */ 1440 + // I'd like to make this number bigger, but it interferes with the + // seccomp2 syscall filter, which tops out at BPF_MAXINS (4096) + // rules. + /* .cache_max_num = */ 128 }; static int consensus_diff_queue_diff_work(consensus_cache_entry_t *diff_from, ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] New force-delete option on consensus_cache_delete_pending()
commit 920475f293a8a69dd846cd06249b4b699857a3d4 Author: Nick MathewsonDate: Wed Apr 26 10:13:25 2017 -0400 New force-delete option on consensus_cache_delete_pending() If we're out of file space in the storage directory, we'll need to get rid of old files fast. --- src/or/conscache.c| 16 +--- src/or/conscache.h| 3 ++- src/or/consdiffmgr.c | 2 +- src/test/test_conscache.c | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/or/conscache.c b/src/or/conscache.c index 2544f56..7760d13 100644 --- a/src/or/conscache.c +++ b/src/or/conscache.c @@ -95,7 +95,7 @@ consensus_cache_register_with_sandbox(consensus_cache_t *cache, static void consensus_cache_clear(consensus_cache_t *cache) { - consensus_cache_delete_pending(cache); + consensus_cache_delete_pending(cache, 0); SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) { ent->in_cache = NULL; @@ -401,17 +401,19 @@ consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff) /** * Delete every element of cache has been marked with - * consensus_cache_entry_mark_for_removal, and which is not in use except by - * the cache. + * consensus_cache_entry_mark_for_removal. If force is false, + * retain those entries which are not in use except by the cache. */ void -consensus_cache_delete_pending(consensus_cache_t *cache) +consensus_cache_delete_pending(consensus_cache_t *cache, int force) { SMARTLIST_FOREACH_BEGIN(cache->entries, consensus_cache_entry_t *, ent) { tor_assert_nonfatal(ent->in_cache == cache); -if (ent->refcnt > 1 || BUG(ent->in_cache == NULL)) { - /* Somebody is using this entry right now */ - continue; +if (! force) { + if (ent->refcnt > 1 || BUG(ent->in_cache == NULL)) { +/* Somebody is using this entry right now */ +continue; + } } if (ent->can_remove == 0) { /* Don't want to delete this. */ diff --git a/src/or/conscache.h b/src/or/conscache.h index f3110e2..ea27733 100644 --- a/src/or/conscache.h +++ b/src/or/conscache.h @@ -17,7 +17,8 @@ struct sandbox_cfg_elem; int consensus_cache_register_with_sandbox(consensus_cache_t *cache, struct sandbox_cfg_elem **cfg); void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff); -void consensus_cache_delete_pending(consensus_cache_t *cache); +void consensus_cache_delete_pending(consensus_cache_t *cache, +int force); consensus_cache_entry_t *consensus_cache_add(consensus_cache_t *cache, const config_line_t *labels, const uint8_t *data, diff --git a/src/or/consdiffmgr.c b/src/or/consdiffmgr.c index fb09d21..1f3915f 100644 --- a/src/or/consdiffmgr.c +++ b/src/or/consdiffmgr.c @@ -614,7 +614,7 @@ consdiffmgr_cleanup(void) smartlist_free(diffs); // Actually remove files, if they're not used. - consensus_cache_delete_pending(cdm_cache_get()); + consensus_cache_delete_pending(cdm_cache_get(), 0); return n_to_delete; } diff --git a/src/test/test_conscache.c b/src/test/test_conscache.c index c316411..aee1ba8 100644 --- a/src/test/test_conscache.c +++ b/src/test/test_conscache.c @@ -203,7 +203,7 @@ test_conscache_cleanup(void *arg) tt_assert(e_tmp == NULL); // not found because pending deletion. /* Delete the pending-deletion items. */ - consensus_cache_delete_pending(cache); + consensus_cache_delete_pending(cache, 0); { smartlist_t *entries = smartlist_new(); consensus_cache_find_all(entries, cache, NULL, NULL); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [collector/master] Also rename properties from 'Torperf' to 'Onionperf'.
commit 67aea3dfac326a77163cb0cd1b3505195779bf0a Author: iwakehDate: Thu Apr 27 09:49:31 2017 + Also rename properties from 'Torperf' to 'Onionperf'. --- src/main/java/org/torproject/collector/Main.java| 2 +- src/main/java/org/torproject/collector/conf/Annotation.java | 2 +- .../java/org/torproject/collector/conf/Configuration.java | 2 +- src/main/java/org/torproject/collector/conf/Key.java| 6 +++--- src/main/resources/collector.properties | 8 src/test/java/org/torproject/collector/MainTest.java| 2 +- .../java/org/torproject/collector/cron/SchedulerTest.java | 13 +++-- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/torproject/collector/Main.java b/src/main/java/org/torproject/collector/Main.java index 95da01a..6676eb8 100644 --- a/src/main/java/org/torproject/collector/Main.java +++ b/src/main/java/org/torproject/collector/Main.java @@ -50,7 +50,7 @@ public class Main { collecTorMains.put(Key.ExitlistsActivated, ExitListDownloader.class); collecTorMains.put(Key.UpdateindexActivated, CreateIndexJson.class); collecTorMains.put(Key.RelaydescsActivated, ArchiveWriter.class); -collecTorMains.put(Key.TorperfActivated, OnionperfDownloader.class); +collecTorMains.put(Key.OnionperfActivated, OnionperfDownloader.class); } private static Configuration conf = new Configuration(); diff --git a/src/main/java/org/torproject/collector/conf/Annotation.java b/src/main/java/org/torproject/collector/conf/Annotation.java index 5bdfbe6..ec983fc 100644 --- a/src/main/java/org/torproject/collector/conf/Annotation.java +++ b/src/main/java/org/torproject/collector/conf/Annotation.java @@ -16,7 +16,7 @@ public enum Annotation { Microdescriptor("@type microdescriptor 1.0\n"), Server("@type server-descriptor 1.0\n"), Status("@type bridge-network-status 1.1\n"), - Torperf("@type torperf 1.0\n"), + Onionperf("@type torperf 1.0\n"), Vote("@type network-status-vote-3 1.0\n"); private final String annotation; diff --git a/src/main/java/org/torproject/collector/conf/Configuration.java b/src/main/java/org/torproject/collector/conf/Configuration.java index 7c7acc6..4e24a7b 100644 --- a/src/main/java/org/torproject/collector/conf/Configuration.java +++ b/src/main/java/org/torproject/collector/conf/Configuration.java @@ -92,7 +92,7 @@ public class Configuration extends Observable implements Cloneable { || this.getBool(Key.BridgedescsActivated) || this.getBool(Key.ExitlistsActivated) || this.getBool(Key.UpdateindexActivated) -|| this.getBool(Key.TorperfActivated))) { +|| this.getBool(Key.OnionperfActivated))) { throw new ConfigurationException("Nothing is activated!\n" + "Please edit collector.properties. Exiting."); } diff --git a/src/main/java/org/torproject/collector/conf/Key.java b/src/main/java/org/torproject/collector/conf/Key.java index 9473421..e3bcff1 100644 --- a/src/main/java/org/torproject/collector/conf/Key.java +++ b/src/main/java/org/torproject/collector/conf/Key.java @@ -42,9 +42,9 @@ public enum Key { RelaydescsActivated(Boolean.class), RelaydescsOffsetMinutes(Integer.class), RelaydescsPeriodMinutes(Integer.class), - TorperfActivated(Boolean.class), - TorperfOffsetMinutes(Integer.class), - TorperfPeriodMinutes(Integer.class), + OnionperfActivated(Boolean.class), + OnionperfOffsetMinutes(Integer.class), + OnionperfPeriodMinutes(Integer.class), UpdateindexActivated(Boolean.class), UpdateindexOffsetMinutes(Integer.class), UpdateindexPeriodMinutes(Integer.class), diff --git a/src/main/resources/collector.properties b/src/main/resources/collector.properties index f152644..54caf5a 100644 --- a/src/main/resources/collector.properties +++ b/src/main/resources/collector.properties @@ -30,11 +30,11 @@ RelaydescsPeriodMinutes = 30 # offset in minutes since the epoch and RelaydescsOffsetMinutes = 5 ## the following defines, if this module is activated -TorperfActivated = false +OnionperfActivated = false # period in minutes -TorperfPeriodMinutes = 360 +OnionperfPeriodMinutes = 360 # offset in minutes since the epoch and -TorperfOffsetMinutes = 1 +OnionperfOffsetMinutes = 1 # the following defines, if this module is activated UpdateindexActivated = false # period in minutes @@ -139,7 +139,7 @@ ExitlistSyncOrigins = https://collector.torproject.org ## Where to download exit-lists from. ExitlistUrl = https://check.torproject.org/exit-addresses # - Torperf downloader + Onionperf downloader # ## OnionPerf base URLs ## Hosts must be configured to use the first subdomain part of the given URL as diff --git a/src/test/java/org/torproject/collector/MainTest.java b/src/test/java/org/torproject/collector/MainTest.java index 53a875d..2e9c0ce 100644 --- a/src/test/java/org/torproject/collector/MainTest.java
[tor-commits] [collector/master] Tweak a log statement.
commit ec0ae34a190a551ca7d45f917c0ef3c4697816bb Author: iwakehDate: Thu Apr 27 09:49:29 2017 + Tweak a log statement. --- .../java/org/torproject/collector/torperf/TorperfDownloader.java| 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java b/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java index 7574665..b4f91fd 100644 --- a/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java +++ b/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java @@ -280,10 +280,10 @@ public class TorperfDownloader extends CollecTorMain { bw.newLine(); } } catch (IOException e) { - logger.warn("Unable to write download history file '" - + this.onionPerfDownloadedFile.getAbsolutePath() + "'. This may " + logger.warn("Unable to write download history file '{}'. This may " + "result in ignoring history and downloading all available .tpf " - + "files in the next execution.", e); + + "files in the next execution.", + this.onionPerfDownloadedFile.getAbsolutePath(), e); } } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [collector/master] Rename Torperf class and package to Onionperf.
commit 0a324223d90c2aac1c5198a7f8c9c00548ee1f0b Author: iwakehDate: Thu Apr 27 09:49:30 2017 + Rename Torperf class and package to Onionperf. --- src/main/java/org/torproject/collector/Main.java | 4 +- .../collector/onionperf/OnionperfDownloader.java | 304 .../collector/torperf/TorperfDownloader.java | 307 - 3 files changed, 306 insertions(+), 309 deletions(-) diff --git a/src/main/java/org/torproject/collector/Main.java b/src/main/java/org/torproject/collector/Main.java index 9ce709a..95da01a 100644 --- a/src/main/java/org/torproject/collector/Main.java +++ b/src/main/java/org/torproject/collector/Main.java @@ -12,8 +12,8 @@ import org.torproject.collector.cron.Scheduler; import org.torproject.collector.cron.ShutdownHook; import org.torproject.collector.exitlists.ExitListDownloader; import org.torproject.collector.index.CreateIndexJson; +import org.torproject.collector.onionperf.OnionperfDownloader; import org.torproject.collector.relaydescs.ArchiveWriter; -import org.torproject.collector.torperf.TorperfDownloader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +50,7 @@ public class Main { collecTorMains.put(Key.ExitlistsActivated, ExitListDownloader.class); collecTorMains.put(Key.UpdateindexActivated, CreateIndexJson.class); collecTorMains.put(Key.RelaydescsActivated, ArchiveWriter.class); -collecTorMains.put(Key.TorperfActivated, TorperfDownloader.class); +collecTorMains.put(Key.TorperfActivated, OnionperfDownloader.class); } private static Configuration conf = new Configuration(); diff --git a/src/main/java/org/torproject/collector/onionperf/OnionperfDownloader.java b/src/main/java/org/torproject/collector/onionperf/OnionperfDownloader.java new file mode 100644 index 000..7453234 --- /dev/null +++ b/src/main/java/org/torproject/collector/onionperf/OnionperfDownloader.java @@ -0,0 +1,304 @@ +/* Copyright 2012-2017 The Tor Project + * See LICENSE for licensing information */ + +package org.torproject.collector.onionperf; + +import org.torproject.collector.conf.Configuration; +import org.torproject.collector.conf.ConfigurationException; +import org.torproject.collector.conf.Key; +import org.torproject.collector.cron.CollecTorMain; +import org.torproject.descriptor.Descriptor; +import org.torproject.descriptor.DescriptorParseException; +import org.torproject.descriptor.DescriptorParser; +import org.torproject.descriptor.DescriptorSourceFactory; +import org.torproject.descriptor.TorperfResult; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.SortedSet; +import java.util.Stack; +import java.util.TimeZone; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** Download download .tpf files from OnionPerf hosts. */ +public class OnionperfDownloader extends CollecTorMain { + + private static final Logger logger = LoggerFactory.getLogger( + OnionperfDownloader.class); + + private static final String TORPERF = "torperf"; + + public OnionperfDownloader(Configuration config) { +super(config); + } + + /** File containing the download history, which is necessary, because + * OnionPerf does not delete older .tpf files, but which enables us to do + * so. */ + private File onionPerfDownloadedFile; + + /** Full URLs of .tpf files downloaded in the current or in past + * executions. */ + private SortedSet downloadedTpfFiles = new TreeSet<>(); + + /** Base URLs of configured OnionPerf hosts. */ + private URL[] onionPerfHosts = null; + + /** Directory for storing archived .tpf files. */ + private File archiveDirectory = null; + + /** Directory for storing recent .tpf files. */ + private File recentDirectory = null; + + @Override + public String module() { +return TORPERF; + } + + @Override + protected String syncMarker() { +return "TorperfFiles"; + } + + @Override + protected void startProcessing() throws ConfigurationException { +this.onionPerfDownloadedFile = +new File(config.getPath(Key.StatsPath).toFile(), +"onionperf-downloaded"); +this.onionPerfHosts = config.getUrlArray(Key.OnionPerfHosts); +this.readDownloadedOnionPerfTpfFiles(); +this.archiveDirectory = new File(config.getPath(Key.OutputPath).toFile(), +TORPERF); +this.recentDirectory = new
[tor-commits] [collector/master] Stop downloading and merging Torperf files.
commit fe9de218921bd10aee8cda7e722d6a1208ca28ea Author: Karsten LoesingDate: Thu Apr 27 11:42:59 2017 +0200 Stop downloading and merging Torperf files. We recently switched to downloading .tpf files from OnionPerf hosts, and we ran out of functioning Torperf hosts, so let's remove the code for downloading and merging Torperf files. Part of #21272. --- CHANGELOG.md | 2 + .../java/org/torproject/collector/conf/Key.java| 2 - .../collector/torperf/TorperfDownloader.java | 565 - src/main/resources/collector.properties| 10 - .../collector/conf/ConfigurationTest.java | 29 +- 5 files changed, 3 insertions(+), 605 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e1107f..8d23f01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ * Major changes - Download .tpf files from OnionPerf hosts. + - Stop downloading and merging .data and .extradata files from + Torperf hosts. * Medium changes - Clean up files in recent/exit-lists/ again. diff --git a/src/main/java/org/torproject/collector/conf/Key.java b/src/main/java/org/torproject/collector/conf/Key.java index dd35322..9473421 100644 --- a/src/main/java/org/torproject/collector/conf/Key.java +++ b/src/main/java/org/torproject/collector/conf/Key.java @@ -56,8 +56,6 @@ public enum Key { KeepDirectoryArchiveImportHistory(Boolean.class), ReplaceIpAddressesWithHashes(Boolean.class), BridgeDescriptorMappingsLimit(Integer.class), - TorperfFilesLines(String[].class), - TorperfHosts(String[][].class), OnionPerfHosts(URL[].class); private Class clazz; diff --git a/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java b/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java index 2cd99df..7574665 100644 --- a/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java +++ b/src/main/java/org/torproject/collector/torperf/TorperfDownloader.java @@ -3,7 +3,6 @@ package org.torproject.collector.torperf; -import org.torproject.collector.conf.Annotation; import org.torproject.collector.conf.Configuration; import org.torproject.collector.conf.ConfigurationException; import org.torproject.collector.conf.Key; @@ -25,7 +24,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.Files; @@ -35,14 +33,10 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.SortedMap; import java.util.SortedSet; import java.util.Stack; import java.util.TimeZone; -import java.util.TreeMap; import java.util.TreeSet; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -62,12 +56,6 @@ public class TorperfDownloader extends CollecTorMain { super(config); } - private File torperfOutputDirectory = null; - private Map torperfSources = new HashMap<>(); - private String[] torperfFilesLines = null; - private SimpleDateFormat dateFormat; - private File torperfLastMergedFile; - /** File containing the download history, which is necessary, because * OnionPerf does not delete older .tpf files, but which enables us to do * so. */ @@ -98,25 +86,6 @@ public class TorperfDownloader extends CollecTorMain { @Override protected void startProcessing() throws ConfigurationException { -this.torperfFilesLines = config.getStringArray(Key.TorperfFilesLines); -this.torperfOutputDirectory -= new File(config.getPath(Key.OutputPath).toString(), TORPERF); -this.torperfLastMergedFile = -new File(config.getPath(Key.StatsPath).toFile(), "torperf-last-merged"); -if (!this.torperfOutputDirectory.exists()) { - this.torperfOutputDirectory.mkdirs(); -} -this.dateFormat = new SimpleDateFormat("-MM-dd"); -this.dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); -this.readLastMergedTimestamps(); -for (String[] source : config.getStringArrayArray(Key.TorperfHosts)) { - torperfSources.put(source[0], source[1]); -} -for (String torperfFilesLine : this.torperfFilesLines) { - this.downloadAndMergeFiles(torperfFilesLine); -} -this.writeLastMergedTimestamps(); - this.onionPerfDownloadedFile = new File(config.getPath(Key.StatsPath).toFile(), "onionperf-downloaded"); @@ -130,543 +99,9 @@ public class TorperfDownloader extends CollecTorMain { this.downloadFromOnionPerfHost(baseUrl); } this.writeDownloadedOnionPerfTpfFiles(); - this.cleanUpRsyncDirectory(); } - SortedMap lastMergedTimestamps = new TreeMap<>(); - - private void
[tor-commits] [translation/exoneratorproperties] Update translations for exoneratorproperties
commit ce0494e339f74ce93f9abc2ad56066d6a62025f5 Author: Translation commit botDate: Fri Apr 28 11:48:14 2017 + Update translations for exoneratorproperties --- uk/exonerator.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uk/exonerator.properties b/uk/exonerator.properties index 72be3f7..3d29eac 100644 --- a/uk/exonerator.properties +++ b/uk/exonerator.properties @@ -41,12 +41,12 @@ technicaldetails.exit.yes=Так technicaldetails.exit.no=ÐÑ permanentlink.heading=ÐоÑÑÑйне поÑÐ¸Ð»Ð°Ð½Ð½Ñ footer.abouttor.heading=ÐÑо 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. +footer.abouttor.body.text=Tor Ñ Ð¼ÑжнаÑодний пÑÐ¾ÐµÐºÑ Ð¿ÑогÑамного забезпеÑÐµÐ½Ð½Ñ Ð²Ñд %s, ÑÑвоÑений Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÐµÐ½Ð½Ñ Ð°Ð½Ð¾Ð½ÑмноÑÑÑ Internet-ÑÑаÑÑкÑ. Це знаÑиÑÑ, Ñо коли ви баÑиÑе ÑÑаÑÑк Ñз ланки Tor, Ñо Ñей ÑÑаÑÑк, ÑкоÑÑÑ Ð·Ð° вÑе, Ð¿Ð¾Ñ Ð¾Ð´Ð¸ÑÑ Ð²Ñд ÑкогоÑÑ ÐºÐ¾ÑиÑÑÑваÑа Tor, а не вÑд опеÑаÑоÑа ланки. ÐÑÐ¾ÐµÐºÑ Tor Ñ Ð¾Ð¿ÐµÑаÑоÑи ланок Tor не ведÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑв пÑо ÑÑаÑÑк, Ñо пÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑ Ð¼ÐµÑежеÑ, Ñ ÑÐ¾Ð¼Ñ Ð½Ðµ можÑÑÑ Ð½Ð°Ð´Ð°Ñи Ð¶Ð¾Ð´Ð½Ð¾Ñ ÑнÑоÑмаÑÑÑ Ð¿Ñо його Ð¿Ð¾Ñ Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ. Ðе забÑдÑÑе %s, Ñ Ð½Ðµ вагайÑеÑÑ %s, Ñоб оÑÑимаÑи бÑлÑÑе ÑнÑоÑмаÑÑÑ. footer.abouttor.body.link1=ÑиÑÑÑÐ²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑÑв Ñа надÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑÑ ÑеÑÑÑÑ ÑÑÑибкÑв до доÑÑÐ³Ð½ÐµÐ½Ð½Ñ ÑÑ Ð¼ÑÑÑÑ Ð¿ÑизнаÑÐµÐ½Ð½Ñ footer.abouttor.body.link2=дÑзнаÑиÑÑ Ð±ÑлÑÑе пÑо Tor footer.abouttor.body.link3=зв'ÑзаÑиÑÑ Ð· The Tor Project, Inc. footer.aboutexonerator.heading=ÐÑо ExoneraTor -footer.aboutexonerator.body=The ExoneraTor service maintains a database of IP addresses that have been part of the Tor network. It answers the question whether there was a Tor relay running on a given IP address on a given date. ExoneraTor may store more than one IP address per relay if relays use a different IP address for exiting to the Internet than for registering in the Tor network, and it stores whether a relay permitted transit of Tor traffic to the open Internet at that time. +footer.aboutexonerator.body=СеÑвÑÑ ExoneraTor пÑдÑÑимÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð¸Ñ IP-адÑеÑ, ÑÐºÑ Ñ ÑаÑÑÐ¸Ð½Ð¾Ñ Ð¼ÐµÑÐµÐ¶Ñ Tor. Рйого Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¼Ð¾Ð¶Ð½Ð° дÑзнаÑиÑÑ, Ñи бÑло запÑÑено Tor-Ñеле з Ð¿ÐµÐ²Ð½Ð¾Ñ IP-адÑеÑи Ð¿ÐµÐ²Ð½Ð¾Ñ Ð´Ð°Ñи. ExoneraTor може збеÑÑгаÑи бÑлÑÑе, нÑж Ð¾Ð´Ð½Ñ IP-адÑеÑÑ Ð½Ð° Ñеле, ÑкÑо Ñеле викоÑиÑÑовÑÑÑÑ IP-адÑеÑÑ Ð´Ð»Ñ Ð²Ð¸Ñ Ð¾Ð´Ñ Ð² ÑнÑеÑнеÑ, вÑдмÑÐ½Ð½Ñ Ð²Ñд ÑоÑ, з ÑÐºÐ¾Ñ ÑеÑÑÑÑÑÑÑÑÑÑ Ð² меÑÐµÐ¶Ñ Tor, Ñ Ð·Ð±ÐµÑÑÐ³Ð°Ñ Ð´Ð°Ð½Ñ Ð¿Ñо Ñе, Ñи Ñеле ÑÐ¾Ð´Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»Ð¸Ð»Ð¾ ÑÑÐ°Ð½Ð·Ð¸Ñ ÑÑаÑÑÐºÑ Tor Ñ Ð²ÑдкÑиÑий ÐнÑеÑнеÑ. footer.trademark.text=«Tor» Ñ Â«Onion Logo» â %s The Tor Project, Inc. footer.trademark.link=заÑеÑÑÑÑÐ¾Ð²Ð°Ð½Ñ ÑоÑÐ³Ð¾Ð²Ñ Ð¼Ð°Ñки footer.language.name=English ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-prefsdtd] Update translations for tor-messenger-prefsdtd
commit c3181e80cf0ee3536814c4714aa352943574529c Author: Translation commit botDate: Fri Apr 28 10:47:50 2017 + Update translations for tor-messenger-prefsdtd --- uk/prefs.dtd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uk/prefs.dtd b/uk/prefs.dtd index cceded5..48a5ced 100644 --- a/uk/prefs.dtd +++ b/uk/prefs.dtd @@ -17,6 +17,6 @@ - - - \ No newline at end of file + + + \ 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/tor-messenger-prefsdtd_completed] Update translations for tor-messenger-prefsdtd_completed
commit 2819b5ebe57abac9cba6a17641fba9d8f37df525 Author: Translation commit botDate: Fri Apr 28 10:47:53 2017 + Update translations for tor-messenger-prefsdtd_completed --- uk/prefs.dtd | 13 +++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/uk/prefs.dtd b/uk/prefs.dtd index 51dae84..48a5ced 100644 --- a/uk/prefs.dtd +++ b/uk/prefs.dtd @@ -1,6 +1,8 @@ + + - + @@ -10,4 +12,11 @@ - \ No newline at end of file + + + + + + + + \ 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] [tech-reports/master] Email obfuscation.
commit 84b39ca2559f05fb480669939aa00c1a310cff8e Author: iwakehDate: Thu Apr 27 20:51:01 2017 +0100 Email obfuscation. --- 2017/metrics-privacy/privacy-in-memory.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2017/metrics-privacy/privacy-in-memory.tex b/2017/metrics-privacy/privacy-in-memory.tex index 72cdf2a..3cb4be6 100644 --- a/2017/metrics-privacy/privacy-in-memory.tex +++ b/2017/metrics-privacy/privacy-in-memory.tex @@ -32,7 +32,7 @@ \title{Privacy analysis of Tor's in-memory statistics} -\author{Karin Herm\\The Tor Project\\ iwakeh$\bowtie$torproject.org}% avoiding spam +\author{Karin Herm\\The Tor Project\\ iwakeh$\bowtie$torproject$\cdot$org}% avoiding spam \reportid{2017-04-001} \date{April 2017} ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-prefsdtd] Update translations for tor-messenger-prefsdtd
commit 6b729eb4244f772c37ea4693b280b3207a9475f8 Author: Translation commit botDate: Fri Apr 28 10:17:46 2017 + Update translations for tor-messenger-prefsdtd --- uk/prefs.dtd | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/uk/prefs.dtd b/uk/prefs.dtd index a323e1a..cceded5 100644 --- a/uk/prefs.dtd +++ b/uk/prefs.dtd @@ -2,7 +2,7 @@ - + @@ -13,10 +13,10 @@ - - - - + + + + \ 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/tor-browser-manual] Update translations for tor-browser-manual
commit 9f69bd0fe69b36546ab5f3f62b1271cb9aeb1e00 Author: Translation commit botDate: Fri Apr 28 09:18:24 2017 + Update translations for tor-browser-manual --- uk/uk.po | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/uk/uk.po b/uk/uk.po index 3b22906..a487ddd 100644 --- a/uk/uk.po +++ b/uk/uk.po @@ -3,12 +3,13 @@ # Oleksii Golub , 2016 # muhozhrun , 2016 # Pinro Lomil , 2016 +# Serge Thirdlingson , 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: Pinro Lomil , 2016\n" +"Last-Translator: Serge Thirdlingson , 2017\n" "Language-Team: Ukrainian (https://www.transifex.com/otf/teams/1519/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -494,7 +495,7 @@ msgstr "" #: index.page:6 msgid "Tor Browser User Manual" -msgstr "" +msgstr "ÐÑдÑÑÑник з коÑиÑÑÑÐ²Ð°Ð½Ð½Ñ Ð±ÑаÑзеÑом Tor" #: known-issues.page:6 msgid "A list of known issues." ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter-2] Update translations for tails-greeter-2
commit 5eed013ecbdfcf558c5704bc4a891e71e55c359b Author: Translation commit botDate: Fri Apr 28 09:18:11 2017 + Update translations for tails-greeter-2 --- uk/uk.po | 31 +-- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/uk/uk.po b/uk/uk.po index ce5861d..a044967 100644 --- a/uk/uk.po +++ b/uk/uk.po @@ -231,23 +231,23 @@ msgstr "_ÐÑдмÑна MAC-адÑеÑи" #: ../data/greeter.ui.h:48 msgid "On (default)" -msgstr "" +msgstr "УвÑмкнÑÑо (за пÑомовÑаннÑм)" #: ../data/greeter.ui.h:49 msgid "_Network Connection" -msgstr "" +msgstr "_Ð'ÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· меÑежеÑ" #: ../data/greeter.ui.h:50 ../tailsgreeter/gui.py:382 msgid "Direct (default)" -msgstr "" +msgstr "ÐезпоÑеÑеднÑо (за пÑомовÑаннÑм)" #: ../data/greeter.ui.h:51 msgid "_Windows Camouflage" -msgstr "" +msgstr "_ÐаÑкÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñд Windows" #: ../tailsgreeter/gui.py:388 msgid "Bridge & Proxy" -msgstr "" +msgstr "ÐÑÑÑ Ñ Ð¿ÑокÑÑ" #: ../tailsgreeter/gui.py:394 msgid "Offline" @@ -255,15 +255,15 @@ msgstr "ÐÑлайн" #: ../tailsgreeter/gui.py:478 msgid "Failed to relock persistent storage." -msgstr "" +msgstr "Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑваÑи поÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе" #: ../tailsgreeter/gui.py:496 msgid "Unlockingâ¦" -msgstr "" +msgstr "РозблокÑваннÑ..." #: ../tailsgreeter/gui.py:591 msgid "Additional Settings" -msgstr "" +msgstr "ÐодаÑÐºÐ¾Ð²Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑ" #: ../tailsgreeter/gui.py:599 msgid "Cancel" @@ -283,13 +283,13 @@ msgstr "ÐимкнÑÑи" #: ../tailsgreeter/gui.py:721 msgid "_Start Tails" -msgstr "" +msgstr "_ÐапÑÑÑиÑи Tails" #. Translators: translate to default:RTL if your language #. is written from right to left #: ../tailsgreeter/language.py:133 msgid "default:LTR" -msgstr "" +msgstr "за пÑомовÑаннÑм:LTR" #: ../tailsgreeter/persistence.py:89 #, python-brace-format @@ -297,6 +297,8 @@ msgid "" "live-persist failed with return code {returncode}:\n" "{stderr}" msgstr "" +"невдаÑа в live-persist, код повеÑÐµÐ½Ð½Ñ {returncode}:\n" +"{stderr}" #: ../tailsgreeter/persistence.py:120 ../tailsgreeter/persistence.py:137 #, python-brace-format @@ -305,6 +307,9 @@ msgid "" "{stdout}\n" "{stderr}" msgstr "" +"невдаÑа в cryptsetup, код повеÑÐ½ÐµÐ½Ð½Ñ {returncode}:\n" +"{stdout}\n" +"{stderr}" #: ../tailsgreeter/persistence.py:154 #, python-brace-format @@ -313,6 +318,9 @@ msgid "" "{stdout}\n" "{stderr}" msgstr "" +"невдаÑа в live-persist, код повеÑÐµÐ½Ð½Ñ {returncode}:\n" +"{stdout}\n" +"{stderr}" #: ../tailsgreeter/persistence.py:168 #, python-brace-format @@ -321,3 +329,6 @@ msgid "" "{stdout}\n" "{stderr}" msgstr "" +"невдаÑа в umount, код повеÑÐ½ÐµÐ½Ð½Ñ {returncode}:\n" +"{stdout}\n" +"{stderr}" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter-2_completed] Update translations for tails-greeter-2_completed
commit d6713cf3e40e169c1b1c0580c1c43659e99c9148 Author: Translation commit botDate: Fri Apr 28 09:18:15 2017 + Update translations for tails-greeter-2_completed --- uk/uk.po | 334 +++ 1 file changed, 334 insertions(+) diff --git a/uk/uk.po b/uk/uk.po new file mode 100644 index 000..a044967 --- /dev/null +++ b/uk/uk.po @@ -0,0 +1,334 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-20 09:46+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Konstantin Tiler , 2016\n" +"Language-Team: Ukrainian (https://www.transifex.com/otf/teams/1519/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: ../data/greeter.ui.h:1 +msgid "Administration Password" +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 "" +"ÐÑÑановÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑаÑоÑа, Ñоб виконÑваÑи адмÑнÑÑÑÑÑваннÑ. ÐнакÑе вÑн " +"бÑде вимкнений Ð´Ð»Ñ Ð¿Ð¾ÐºÑаÑÐµÐ½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸." + +#: ../data/greeter.ui.h:3 +msgid "Enter an administration password" +msgstr "ÐведÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа" + +#: ../data/greeter.ui.h:4 +msgid "Confirm" +msgstr "ÐÑдÑвеÑдиÑи" + +#: ../data/greeter.ui.h:5 +msgid "Confirm your administration password" +msgstr "ÐÑдÑвеÑдÑÑÑ ÑвÑй паÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа" + +#: ../data/greeter.ui.h:6 +msgid "Disable" +msgstr "ÐимкнÑÑи" + +#. This string will never be displayed in the 1st version of the greeter. +#: ../data/greeter.ui.h:8 +msgid "Windows Camouflage" +msgstr "ÐаÑкÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñд Windows" + +#. This string will never be displayed in the 1st version of the greeter. +#: ../data/greeter.ui.h:10 +msgid "" +"This option makes Tails look like Microsoft Windows 10. This can be useful " +"to avoid attracting suspicion in public places." +msgstr "" +"Ð¦Ñ Ð¾Ð¿ÑÑÑ Ð½Ð°Ð´Ð°Ñ Tails виглÑÐ´Ñ Microsoft Windows 10. Ðожна ÑкоÑиÑÑаÑиÑÑ, Ñоб " +"не викликаÑи пÑдозÑи в лÑÐ´Ð½Ð¸Ñ Ð¼ÑÑÑÑÑ ." + +#. This string will never be displayed in the 1st version of the greeter. +#: ../data/greeter.ui.h:12 +msgid "Microsoft Windows 10 camouflage" +msgstr "ÐаÑкÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñд Microsoft Windows 10" + +#: ../data/greeter.ui.h:13 +msgid "MAC Address Spoofing" +msgstr "ÐÑдмÑна MAC-адÑеÑи" + +#: ../data/greeter.ui.h:14 +msgid "" +"MAC address spoofing hides the serial number of your network interface (Wi-" +"Fi or wired) to the local network. Spoofing MAC addresses is generally safer" +" as it helps you hide your geographical location. But it might also create " +"connectivity problems or look suspicious." +msgstr "" +"ÐÑдмÑна MAC-адÑеÑи пÑÐ¸Ñ Ð¾Ð²ÑÑ ÑеÑÑйний Ð½Ð¾Ð¼ÐµÑ Ð²Ð°Ñого меÑежного ÑнÑеÑÑейÑÑ " +"(пÑовÑдного Ñи безпÑовÑдного) з локалÑÐ½Ð¾Ñ Ð¼ÐµÑежеÑ. ÐÑдмÑна MAC-адÑеÑи в " +"загалÑÐ½Ð¾Ð¼Ñ Ð±ÐµÐ·Ð¿ÐµÑнÑÑа, бо Ð´Ð¾Ð¿Ð¾Ð¼Ð°Ð³Ð°Ñ Ð²Ð°Ð¼ пÑÐ¸Ñ Ð¾Ð²Ð°Ñи ваÑе геогÑаÑÑÑне " +"ÑозÑаÑÑваннÑ. Ðле може ÑÑвоÑиÑи пÑоблеми Ð·Ñ Ð·Ð²'Ñзком або виглÑдаÑи " +"пÑдозÑÑло." + +#: ../data/greeter.ui.h:15 +msgid "Spoof all MAC addresses (default)" +msgstr "ÐÑдмÑнÑваÑи вÑÑ MAC-адÑеÑи (за пÑомовÑаннÑм)" + +#: ../data/greeter.ui.h:16 +msgid "Don't spoof MAC addresses" +msgstr "Ðе пÑдмÑнÑваÑи MAC-адÑеÑи" + +#: ../data/greeter.ui.h:17 ../tailsgreeter/gui.py:529 +msgid "Cannot unlock encrypted storage with this passphrase." +msgstr "Ðеможливо ÑозблокÑваÑи заÑиÑÑоване ÑÑ Ð¾Ð²Ð¸Ñе Ñим паÑолем." + +#: ../data/greeter.ui.h:18 +msgid "" +"You will configure the Tor bridge and local proxy later on after connecting " +"to a network." +msgstr "Ðи налаÑÑÑÑÑе мÑÑÑ Tor Ñ Ð»Ð¾ÐºÐ°Ð»Ñний пÑокÑÑ Ð¿ÑÑÐ»Ñ Ð¿ÑиÑÐ´Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ меÑежÑ." + +#: ../data/greeter.ui.h:19 +msgid "Welcome to Tails!" +msgstr "ÐаÑкаво пÑоÑимо до Tails!" + +#. This string will never be displayed in
[tor-commits] [translation/abouttor-homepage_completed] Update translations for abouttor-homepage_completed
commit 7d0009b558c6d3848288c30442d83f7cd92b0441 Author: Translation commit botDate: Fri Apr 28 09:16:23 2017 + Update translations for abouttor-homepage_completed --- uk/aboutTor.dtd | 7 +++ 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/uk/aboutTor.dtd b/uk/aboutTor.dtd index 155de74..0c8ef51 100644 --- a/uk/aboutTor.dtd +++ b/uk/aboutTor.dtd @@ -19,10 +19,7 @@ - -https://startpage.com/rth/search;> -https://duckduckgo.com/html/;> -https://search.disconnect.me/searchTerms/search?ses=Googlelocation_option=USsource=tor;> +https://duckduckgo.com;> @@ -32,6 +29,8 @@ https://www.torproject.org/download/download.html.en#warning;> + + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/abouttor-homepage] Update translations for abouttor-homepage
commit 7a93507954bfa117c7b9fb2c08a9eb9cd6c6c8ed Author: Translation commit botDate: Fri Apr 28 09:16:19 2017 + Update translations for abouttor-homepage --- uk/aboutTor.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uk/aboutTor.dtd b/uk/aboutTor.dtd index 20b2c39..0c8ef51 100644 --- a/uk/aboutTor.dtd +++ b/uk/aboutTor.dtd @@ -30,7 +30,7 @@ https://www.torproject.org/download/download.html.en#warning;> - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter-2] Update translations for tails-greeter-2
commit d8e66153d58966b0155efc7180432f240e848b24 Author: Translation commit botDate: Fri Apr 28 08:48:07 2017 + Update translations for tails-greeter-2 --- uk/uk.po | 55 +++ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/uk/uk.po b/uk/uk.po index 1b93b02..ce5861d 100644 --- a/uk/uk.po +++ b/uk/uk.po @@ -103,87 +103,89 @@ msgstr "Ðи налаÑÑÑÑÑе мÑÑÑ Tor Ñ Ð»Ð¾ÐºÐ°Ð»Ñний пÑÐ¾ÐºÑ #: ../data/greeter.ui.h:19 msgid "Welcome to Tails!" -msgstr "" +msgstr "ÐаÑкаво пÑоÑимо до Tails!" #. This string will never be displayed in the 1st version of the greeter. #: ../data/greeter.ui.h:21 msgctxt "" msgid "" "To get guided through Tails' settings, click on Take a Tour above" -msgstr "" +msgstr "ÐÐ»Ñ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑÑÑÐ²Ð°Ð½Ñ Tails наÑиÑнÑÑÑ Ð²Ð¸Ñе Take a Tour" #: ../data/greeter.ui.h:22 msgid "Language & Region" -msgstr "" +msgstr "Ðова Ñ ÑозÑаÑÑваннÑ" #: ../data/greeter.ui.h:23 msgid "Default Settings" -msgstr "" +msgstr "ÐалаÑÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð° пÑомовÑаннÑм" #: ../data/greeter.ui.h:24 msgid "Save Language & Region Settings" -msgstr "" +msgstr "ÐбеÑегÑи змÑни мови Ñ ÑозÑаÑÑваннÑ" #: ../data/greeter.ui.h:25 msgid "_Language" -msgstr "" +msgstr "_Ðова" #: ../data/greeter.ui.h:26 msgid "_Keyboard Layout" -msgstr "" +msgstr "_Розкладка клавÑаÑÑÑи" #: ../data/greeter.ui.h:27 msgid "_Formats" -msgstr "" +msgstr "_ФоÑмаÑи" #: ../data/greeter.ui.h:28 msgid "_Time Zone" -msgstr "" +msgstr "_ЧаÑовий поÑÑ" #: ../data/greeter.ui.h:29 msgid "Encrypted _Persistent Storage" -msgstr "" +msgstr "ÐаÑиÑÑоване _ÐоÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе" #: ../data/greeter.ui.h:30 msgid "Show Passphrase" -msgstr "" +msgstr "ÐоказаÑи паÑолÑ" #: ../data/greeter.ui.h:31 msgid "Configure Persistent Storage" -msgstr "" +msgstr "ÐалаÑÑÑваÑи ÐоÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе" #: ../data/greeter.ui.h:32 msgid "Enter your passphrase to unlock the persistent storage" -msgstr "" +msgstr "ÐведÑÑÑ ÑвÑй паÑолÑ, Ñоб ÑозблокÑваÑи поÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе" #: ../data/greeter.ui.h:33 ../tailsgreeter/gui.py:475 #: ../tailsgreeter/gui.py:525 msgid "Unlock" -msgstr "" +msgstr "РозблокÑваÑи" #: ../data/greeter.ui.h:34 msgid "Relock Persistent Storage" -msgstr "" +msgstr "ÐаблокÑваÑи ÐоÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе" #: ../data/greeter.ui.h:35 msgid "Your persistent storage is unlocked. Restart Tails to lock it again." msgstr "" +"ÐаÑе поÑÑÑйне ÑÑ Ð¾Ð²Ð¸Ñе Ñозблоковане. ÐеÑезапÑÑÑÑÑÑ Tails, Ñоб заблокÑваÑи " +"його знов." #: ../data/greeter.ui.h:36 msgid "_Additional Settings" -msgstr "" +msgstr "_ÐодаÑÐºÐ¾Ð²Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑ" #: ../data/greeter.ui.h:37 msgid "Save Additional Settings" -msgstr "" +msgstr "ÐбеÑегÑи ÐодаÑÐºÐ¾Ð²Ñ Ð½Ð°Ð»Ð°ÑÑÑваннÑ" #: ../data/greeter.ui.h:38 msgid "Add an additional setting" -msgstr "" +msgstr "ÐодаÑи Ñе одне додаÑкове налаÑÑÑваннÑ" #: ../data/greeter.ui.h:39 msgid "Network Configuration" -msgstr "" +msgstr "ÐалаÑÑÑÐ²Ð°Ð½Ð½Ñ Ð¼ÐµÑежÑ" #: ../data/greeter.ui.h:40 msgid "" @@ -191,14 +193,17 @@ msgid "" "configure a Tor bridge or a local proxy. To work completely offline, you can" " disable all networking." msgstr "" +"ЯкÑо ваÑе з'ÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· ÐнÑеÑÐ½ÐµÑ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑ ÑензÑÑÑ, ÑÑлÑÑÑ Ð°Ð±Ð¾ пÑокÑÑ, ви " +"можеÑе налаÑÑÑваÑи мÑÑÑ Tor або локалÑний пÑокÑÑ. Щоб пÑаÑÑваÑи ÑÑлком " +"оÑлайн, можна вимкнÑÑи вÑÑ Ð·'ÑднаннÑ." #: ../data/greeter.ui.h:41 msgid "Connect directly to the Tor network (default)" -msgstr "" +msgstr "Ð'ÑднаÑиÑÑ Ð· меÑÐµÐ¶ÐµÑ Tor безпоÑеÑеднÑо (за пÑомовÑаннÑм)." #: ../data/greeter.ui.h:42 msgid "Configure a Tor bridge, firewall, or proxy settings" -msgstr "" +msgstr "ÐалаÑÑÑваÑи Ð´Ð»Ñ Tor мÑÑÑ, ÑаÑÑвол або пÑокÑÑ" #: ../data/greeter.ui.h:43 msgid "Disable all networking" @@ -209,18 +214,20 @@ msgid "" "The default settings are safe in most situations. To add a custom setting, " "press the \"+\" button below." msgstr "" +"ÐалаÑÑÑÐ²Ð°Ð½Ð½Ñ Ð·Ð° пÑомовÑаннÑм безпеÑÐ½Ñ Ð² бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв. Щоб додаÑи ваÑе " +"влаÑне налаÑÑÑваннÑ, наÑиÑнÑÑÑ Ð·Ð½Ð¸Ð·Ñ \"+\"." #: ../data/greeter.ui.h:45 msgid "_Administration Password" -msgstr "" +msgstr "_ÐаÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа" #: ../data/greeter.ui.h:46
[tor-commits] [tech-reports/master] Add .gitignore for latest report.
commit 7ddad27ce23557bf55aeede3fb7480304986184c Author: Karsten LoesingDate: Fri Apr 28 10:30:58 2017 +0200 Add .gitignore for latest report. --- 2017/metrics-privacy/.gitignore | 4 1 file changed, 4 insertions(+) diff --git a/2017/metrics-privacy/.gitignore b/2017/metrics-privacy/.gitignore new file mode 100644 index 000..70f6e9a --- /dev/null +++ b/2017/metrics-privacy/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +privacy-in-memory-2017-04-28.pdf +*.toc + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tech-reports/master] Sources for tr-2017-04-001.
commit e8d6663c6ea45deb4e8e3ceabc0be053480e78a3 Author: iwakehDate: Thu Apr 27 20:51:00 2017 +0100 Sources for tr-2017-04-001. --- ...ts-bridge-combined-aq-2016-01-01-2017-01-01.png | Bin 0 -> 22445 bytes ...ts-bridge-combined-va-2016-01-01-2017-01-01.png | Bin 0 -> 46376 bytes ...ats-bridge-country-aq-2016-01-01-2017-01-01.png | Bin 0 -> 10695 bytes ...ats-bridge-country-va-2016-01-01-2017-01-01.png | Bin 0 -> 24626 bytes ...-relay-country-aq-2016-01-01-2017-01-01-off.png | Bin 0 -> 22730 bytes ...-relay-country-va-2016-01-01-2017-01-01-off.png | Bin 0 -> 23626 bytes 2017/metrics-privacy/privacy-in-memory.tex | 1560 2017/metrics-privacy/references.bib| 153 ++ 2017/metrics-privacy/tortechrep.cls|1 + 9 files changed, 1714 insertions(+) diff --git a/2017/metrics-privacy/images/userstats-bridge-combined-aq-2016-01-01-2017-01-01.png b/2017/metrics-privacy/images/userstats-bridge-combined-aq-2016-01-01-2017-01-01.png new file mode 100644 index 000..a01faf7 Binary files /dev/null and b/2017/metrics-privacy/images/userstats-bridge-combined-aq-2016-01-01-2017-01-01.png differ diff --git a/2017/metrics-privacy/images/userstats-bridge-combined-va-2016-01-01-2017-01-01.png b/2017/metrics-privacy/images/userstats-bridge-combined-va-2016-01-01-2017-01-01.png new file mode 100644 index 000..d61cf9c Binary files /dev/null and b/2017/metrics-privacy/images/userstats-bridge-combined-va-2016-01-01-2017-01-01.png differ diff --git a/2017/metrics-privacy/images/userstats-bridge-country-aq-2016-01-01-2017-01-01.png b/2017/metrics-privacy/images/userstats-bridge-country-aq-2016-01-01-2017-01-01.png new file mode 100644 index 000..572482b Binary files /dev/null and b/2017/metrics-privacy/images/userstats-bridge-country-aq-2016-01-01-2017-01-01.png differ diff --git a/2017/metrics-privacy/images/userstats-bridge-country-va-2016-01-01-2017-01-01.png b/2017/metrics-privacy/images/userstats-bridge-country-va-2016-01-01-2017-01-01.png new file mode 100644 index 000..b3eea7e Binary files /dev/null and b/2017/metrics-privacy/images/userstats-bridge-country-va-2016-01-01-2017-01-01.png differ diff --git a/2017/metrics-privacy/images/userstats-relay-country-aq-2016-01-01-2017-01-01-off.png b/2017/metrics-privacy/images/userstats-relay-country-aq-2016-01-01-2017-01-01-off.png new file mode 100644 index 000..b808134 Binary files /dev/null and b/2017/metrics-privacy/images/userstats-relay-country-aq-2016-01-01-2017-01-01-off.png differ diff --git a/2017/metrics-privacy/images/userstats-relay-country-va-2016-01-01-2017-01-01-off.png b/2017/metrics-privacy/images/userstats-relay-country-va-2016-01-01-2017-01-01-off.png new file mode 100644 index 000..a6e966b Binary files /dev/null and b/2017/metrics-privacy/images/userstats-relay-country-va-2016-01-01-2017-01-01-off.png differ diff --git a/2017/metrics-privacy/privacy-in-memory.tex b/2017/metrics-privacy/privacy-in-memory.tex new file mode 100644 index 000..72cdf2a --- /dev/null +++ b/2017/metrics-privacy/privacy-in-memory.tex @@ -0,0 +1,1560 @@ +\documentclass{tortechrep} +\usepackage{url} +\usepackage{amsthm} +\usepackage{thmtools} +\usepackage{mathtools} +\usepackage{hyperref} +\usepackage{comment} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\usepackage[Q=yes]{examplep} +\usepackage{marginnote} +\usepackage[light]{draftcopy} +\usepackage{graphicx} +\usepackage{caption} +\usepackage{subcaption} + +%%% useful definitions and settings +\setcounter{tocdepth}{1} + +%%% no break in verbatim/code. +\newcommand{\Qx}[1]{\mbox{\Q{#1}}} + +%%% + +\begin{document} + Settings inside document-env. +% general setting for Verbatim environment +\fvset{frame=leftline,numbers=left,numbersep=2pt,gobble=4,stepnumber=1} +\VerbatimFootnotes +\graphicspath{{./images/}} + + + +\title{Privacy analysis of Tor's in-memory statistics} +\author{Karin Herm\\The Tor Project\\ iwakeh$\bowtie$torproject.org}% avoiding spam + +\reportid{2017-04-001} +\date{April 2017} +\maketitle +\tableofcontents + +\begin{abstract} + This report analyzes which possibly sensitive, potentially + personally identifying data is stored in memory of Tor relays and + bridges or reported to the directory authorities and makes + suggestions to reduce the collection and temporary storage of such + data. % +\end{abstract} +\pagebreak +\section{Introduction}\label{intro} % +Tor network metrics and the underlying data have been available for +many years by now and proven to be a valuable source for analyzing and +improving the network as well as for censorship detection.% +\footnote{Network analysis estimation of cell traffic, estimation of + onion services induced traffic and user count estimation as well as + censorship detection \cite{tr200908001,tr201210001,tr201504001} and + all data and visualizations on +
[tor-commits] [translation/tails-greeter-2] Update translations for tails-greeter-2
commit b03c15ede19edff7b317c6c3b97e508d9a425b9a Author: Translation commit botDate: Fri Apr 28 08:18:08 2017 + Update translations for tails-greeter-2 --- uk/uk.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uk/uk.po b/uk/uk.po index b983b07..1b93b02 100644 --- a/uk/uk.po +++ b/uk/uk.po @@ -99,7 +99,7 @@ msgstr "Ðеможливо ÑозблокÑваÑи заÑиÑÑоване ÑÑ msgid "" "You will configure the Tor bridge and local proxy later on after connecting " "to a network." -msgstr "" +msgstr "Ðи налаÑÑÑÑÑе мÑÑÑ Tor Ñ Ð»Ð¾ÐºÐ°Ð»Ñний пÑокÑÑ Ð¿ÑÑÐ»Ñ Ð¿ÑиÑÐ´Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ меÑежÑ." #: ../data/greeter.ui.h:19 msgid "Welcome to Tails!" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-greeter-2] Update translations for tails-greeter-2
commit 1a343cfd42172eaa74c282e011dd8765e05a7728 Author: Translation commit botDate: Fri Apr 28 07:48:08 2017 + Update translations for tails-greeter-2 --- uk/uk.po | 31 --- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/uk/uk.po b/uk/uk.po index dd366a5..b983b07 100644 --- a/uk/uk.po +++ b/uk/uk.po @@ -20,7 +20,7 @@ msgstr "" #: ../data/greeter.ui.h:1 msgid "Administration Password" -msgstr "" +msgstr "ÐаÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа" #: ../data/greeter.ui.h:2 msgid "" @@ -28,27 +28,29 @@ msgid "" "tasks. Otherwise, the administration password is disabled for better " "security." msgstr "" +"ÐÑÑановÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑаÑоÑа, Ñоб виконÑваÑи адмÑнÑÑÑÑÑваннÑ. ÐнакÑе вÑн " +"бÑде вимкнений Ð´Ð»Ñ Ð¿Ð¾ÐºÑаÑÐµÐ½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸." #: ../data/greeter.ui.h:3 msgid "Enter an administration password" -msgstr "" +msgstr "ÐведÑÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð´Ð¼ÑнÑÑÑÑаÑоÑа" #: ../data/greeter.ui.h:4 msgid "Confirm" -msgstr "" +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 msgid "Windows Camouflage" -msgstr "Windows Camouflage" +msgstr "ÐаÑкÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñд Windows" #. This string will never be displayed in the 1st version of the greeter. #: ../data/greeter.ui.h:10 @@ -56,15 +58,17 @@ msgid "" "This option makes Tails look like Microsoft Windows 10. This can be useful " "to avoid attracting suspicion in public places." msgstr "" +"Ð¦Ñ Ð¾Ð¿ÑÑÑ Ð½Ð°Ð´Ð°Ñ Tails виглÑÐ´Ñ Microsoft Windows 10. Ðожна ÑкоÑиÑÑаÑиÑÑ, Ñоб " +"не викликаÑи пÑдозÑи в лÑÐ´Ð½Ð¸Ñ Ð¼ÑÑÑÑÑ ." #. This string will never be displayed in the 1st version of the greeter. #: ../data/greeter.ui.h:12 msgid "Microsoft Windows 10 camouflage" -msgstr "" +msgstr "ÐаÑкÑÐ²Ð°Ð½Ð½Ñ Ð¿Ñд Microsoft Windows 10" #: ../data/greeter.ui.h:13 msgid "MAC Address Spoofing" -msgstr "" +msgstr "ÐÑдмÑна MAC-адÑеÑи" #: ../data/greeter.ui.h:14 msgid "" @@ -73,18 +77,23 @@ msgid "" " as it helps you hide your geographical location. But it might also create " "connectivity problems or look suspicious." msgstr "" +"ÐÑдмÑна MAC-адÑеÑи пÑÐ¸Ñ Ð¾Ð²ÑÑ ÑеÑÑйний Ð½Ð¾Ð¼ÐµÑ Ð²Ð°Ñого меÑежного ÑнÑеÑÑейÑÑ " +"(пÑовÑдного Ñи безпÑовÑдного) з локалÑÐ½Ð¾Ñ Ð¼ÐµÑежеÑ. ÐÑдмÑна MAC-адÑеÑи в " +"загалÑÐ½Ð¾Ð¼Ñ Ð±ÐµÐ·Ð¿ÐµÑнÑÑа, бо Ð´Ð¾Ð¿Ð¾Ð¼Ð°Ð³Ð°Ñ Ð²Ð°Ð¼ пÑÐ¸Ñ Ð¾Ð²Ð°Ñи ваÑе геогÑаÑÑÑне " +"ÑозÑаÑÑваннÑ. Ðле може ÑÑвоÑиÑи пÑоблеми Ð·Ñ Ð·Ð²'Ñзком або виглÑдаÑи " +"пÑдозÑÑло." #: ../data/greeter.ui.h:15 msgid "Spoof all MAC addresses (default)" -msgstr "" +msgstr "ÐÑдмÑнÑваÑи вÑÑ MAC-адÑеÑи (за пÑомовÑаннÑм)" #: ../data/greeter.ui.h:16 msgid "Don't spoof MAC addresses" -msgstr "" +msgstr "Ðе пÑдмÑнÑваÑи MAC-адÑеÑи" #: ../data/greeter.ui.h:17 ../tailsgreeter/gui.py:529 msgid "Cannot unlock encrypted storage with this passphrase." -msgstr "" +msgstr "Ðеможливо ÑозблокÑваÑи заÑиÑÑоване ÑÑ Ð¾Ð²Ð¸Ñе Ñим паÑолем." #: ../data/greeter.ui.h:18 msgid "" ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-misc_completed] Update translations for tails-misc_completed
commit 53a50844f96464eafae94a719e216d772509fbf8 Author: Translation commit botDate: Fri Apr 28 07:16:18 2017 + Update translations for tails-misc_completed --- uk.po | 95 +-- 1 file changed, 30 insertions(+), 65 deletions(-) diff --git a/uk.po b/uk.po index 02e1b4d..08747ef 100644 --- a/uk.po +++ b/uk.po @@ -4,21 +4,22 @@ # # Translators: # jonny_nut, 2014 -# Konstantin Tiler , 2016 +# Konstantin Tiler , 2016 # LinuxChata, 2014 # Oleksii Golub , 2015 # Pinro Lomil , 2013 +# Serge Thirdlingson , 2017 # Vira Motorko , 2015-2016 -# Yasha , 2015 +# Yasha, 2015 # ÐндÑÑй ÐандÑÑа , 2014 # ÐладиÑлав , 2014 msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-02 16:02+0200\n" -"PO-Revision-Date: 2016-09-03 08:57+\n" -"Last-Translator: carolyn \n" +"POT-Creation-Date: 2017-04-18 12:55+0200\n" +"PO-Revision-Date: 2017-04-28 07:11+\n" +"Last-Translator: Serge Thirdlingson \n" "Language-Team: Ukrainian (http://www.transifex.com/otf/torproject/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -49,7 +50,7 @@ msgid "" "an opportunity for eavesdroppers, like your email or Internet provider, to\n" "confirm that you are using Tails.\n" "\n" -msgstr " ÐопоможÑÑÑ Ð½Ð°Ð¼ випÑавиÑи наÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ! \n ÐÑоÑиÑайÑе наÑÑ ÑнÑÑÑÑкÑÑÑ, Ñк повÑдомлÑÑи пÑо помилки .\n Ðе повÑдомлÑйÑе бÑлÑÑе оÑобиÑÑÐ¾Ñ ÑнÑоÑмаÑÑÑ, нÑж Ð½ÐµÐ¾Ð±Ñ Ñдно! \n ÐÑо Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи \n\nÐÐ°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи дозволÑÑ Ð½Ð°Ð¼ зв'ÑзаÑиÑÑ Ð· Ðами Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð½Ñ Ð¿Ñоблеми. Це\nÐ½ÐµÐ¾Ð±Ñ Ñдно в пеÑеважнÑй бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв, коли ми оÑÑимÑÑмо повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо помилки,\n оÑкÑлÑки бÑлÑÑÑÑÑÑ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ñ Ð±ÐµÐ· конÑакÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ Ð¼Ð°ÑнÑ. Ð ÑнÑого бокÑ, Ñе Ñакож Ð´Ð°Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ð·Ð°ÑобаР¼ пеÑÐµÑ Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ\n Ñа збоÑÑ ÑнÑоÑмаÑÑÑ ÑнÑоÑмаÑÑÑ, напÑиклад, пÑовайдеÑÑ ÐаÑÐ¾Ñ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи або ÐнÑеÑнеÑ-пÑовайдеÑÑ, вÑÑановиÑи,\n Ñо Ðи викоÑиÑÑовÑÑÑе Tails.\n\n" +msgstr " ÐопоможÑÑÑ Ð½Ð°Ð¼ випÑавиÑи наÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ! \n ÐÑоÑиÑайÑе наÑÑ ÑнÑÑÑÑкÑÑÑ, Ñк повÑдомлÑÑи пÑо помилки .\n Ðе повÑдомлÑйÑе бÑлÑÑе оÑобиÑÑÐ¾Ñ ÑнÑоÑмаÑÑÑ, нÑж Ð½ÐµÐ¾Ð±Ñ Ñдно! \n ÐÑо Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи \n\nÐÐ°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи дозволÑÑ Ð½Ð°Ð¼ зв'ÑзаÑиÑÑ Ð· Ðами Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð½Ñ Ð¿Ñоблеми. Це\nÐ½ÐµÐ¾Ð±Ñ Ñдно в пеÑеважнÑй бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв, коли ми оÑÑимÑÑмо повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо помилки,\n оÑкÑлÑки бÑлÑÑÑÑÑÑ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ñ Ð±ÐµÐ· конÑакÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ Ð¼Ð°ÑнÑ. Ð ÑнÑого бокÑ, Ñе Ñакож Ð´Ð°Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ð·Ð°ÑобаР¼ пеÑÐµÑ Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ\n Ñа збоÑÑ ÑнÑоÑмаÑÑÑ, напÑиклад, пÑовайдеÑÑ ÐаÑÐ¾Ñ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи або ÐнÑеÑнеÑ-пÑовайдеÑÑ, вÑÑановиÑи,\n Ñо Ðи викоÑиÑÑовÑÑÑе Tails.\n\n" #: config/chroot_local-includes/usr/local/bin/electrum:17 msgid "Persistence is disabled for Electrum" @@ -104,6 +105,19 @@ msgstr "ÐеÑезаванÑажиÑи" msgid "Power Off" msgstr "ÐÐ¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ" +#: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:59 +msgid "Warning: Tails 3.0 won't work on this computer!" +msgstr "Увага: Tails 3.0 на ÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼Ð¿'ÑÑеÑÑ Ð½Ðµ пÑаÑÑваÑиме!" + +#: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:60 +msgid "Tails 3.0 will require a 64-bit processor." +msgstr "ÐÐ»Ñ Tails 3.0 поÑÑÑбен 64-бÑÑний пÑоÑеÑоÑ." + +#: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:63 +#: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:83 +msgid "Learn more" +msgstr "ÐеÑалÑнÑÑе" +
[tor-commits] [translation/tails-misc] Update translations for tails-misc
commit 1c0137b8ba60b2ae40f60d544eb9defc556b0726 Author: Translation commit botDate: Fri Apr 28 07:16:12 2017 + Update translations for tails-misc --- uk.po | 13 +++-- 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/uk.po b/uk.po index 9252a16..08747ef 100644 --- a/uk.po +++ b/uk.po @@ -8,6 +8,7 @@ # LinuxChata, 2014 # Oleksii Golub , 2015 # Pinro Lomil , 2013 +# Serge Thirdlingson , 2017 # Vira Motorko , 2015-2016 # Yasha, 2015 # ÐндÑÑй ÐандÑÑа , 2014 @@ -16,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-04-06 21:07+0200\n" -"PO-Revision-Date: 2017-04-07 10:06+\n" -"Last-Translator: carolyn \n" +"POT-Creation-Date: 2017-04-18 12:55+0200\n" +"PO-Revision-Date: 2017-04-28 07:11+\n" +"Last-Translator: Serge Thirdlingson \n" "Language-Team: Ukrainian (http://www.transifex.com/otf/torproject/language/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -49,7 +50,7 @@ msgid "" "an opportunity for eavesdroppers, like your email or Internet provider, to\n" "confirm that you are using Tails.\n" "\n" -msgstr " ÐопоможÑÑÑ Ð½Ð°Ð¼ випÑавиÑи наÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ! \n ÐÑоÑиÑайÑе наÑÑ ÑнÑÑÑÑкÑÑÑ, Ñк повÑдомлÑÑи пÑо помилки .\n Ðе повÑдомлÑйÑе бÑлÑÑе оÑобиÑÑÐ¾Ñ ÑнÑоÑмаÑÑÑ, нÑж Ð½ÐµÐ¾Ð±Ñ Ñдно! \n ÐÑо Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи \n\nÐÐ°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи дозволÑÑ Ð½Ð°Ð¼ зв'ÑзаÑиÑÑ Ð· Ðами Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð½Ñ Ð¿Ñоблеми. Це\nÐ½ÐµÐ¾Ð±Ñ Ñдно в пеÑеважнÑй бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв, коли ми оÑÑимÑÑмо повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо помилки,\n оÑкÑлÑки бÑлÑÑÑÑÑÑ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ñ Ð±ÐµÐ· конÑакÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ Ð¼Ð°ÑнÑ. Ð ÑнÑого бокÑ, Ñе Ñакож Ð´Ð°Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ð·Ð°ÑобаР¼ пеÑÐµÑ Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ\n Ñа збоÑÑ ÑнÑоÑмаÑÑÑ ÑнÑоÑмаÑÑÑ, напÑиклад, пÑовайдеÑÑ ÐаÑÐ¾Ñ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи або ÐнÑеÑнеÑ-пÑовайдеÑÑ, вÑÑановиÑи,\n Ñо Ðи викоÑиÑÑовÑÑÑе Tails.\n\n" +msgstr " ÐопоможÑÑÑ Ð½Ð°Ð¼ випÑавиÑи наÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ! \n ÐÑоÑиÑайÑе наÑÑ ÑнÑÑÑÑкÑÑÑ, Ñк повÑдомлÑÑи пÑо помилки .\n Ðе повÑдомлÑйÑе бÑлÑÑе оÑобиÑÑÐ¾Ñ ÑнÑоÑмаÑÑÑ, нÑж Ð½ÐµÐ¾Ð±Ñ Ñдно! \n ÐÑо Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи \n\nÐÐ°Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð¼ адÑеÑи елекÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи дозволÑÑ Ð½Ð°Ð¼ зв'ÑзаÑиÑÑ Ð· Ðами Ð´Ð»Ñ ÑÑоÑÐ½ÐµÐ½Ð½Ñ Ð¿Ñоблеми. Це\nÐ½ÐµÐ¾Ð±Ñ Ñдно в пеÑеважнÑй бÑлÑÑоÑÑÑ Ð²Ð¸Ð¿Ð°Ð´ÐºÑв, коли ми оÑÑимÑÑмо повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо помилки,\n оÑкÑлÑки бÑлÑÑÑÑÑÑ Ð¿Ð¾Ð²ÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ñ Ð±ÐµÐ· конÑакÑÐ½Ð¾Ñ ÑнÑоÑмаÑÑÑ Ð¼Ð°ÑнÑ. Ð ÑнÑого бокÑ, Ñе Ñакож Ð´Ð°Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²ÑÑÑÑ Ð·Ð°ÑобаР¼ пеÑÐµÑ Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ\n Ñа збоÑÑ ÑнÑоÑмаÑÑÑ, напÑиклад, пÑовайдеÑÑ ÐаÑÐ¾Ñ ÐµÐ»ÐµÐºÑÑÐ¾Ð½Ð½Ð¾Ñ Ð¿Ð¾ÑÑи або ÐнÑеÑнеÑ-пÑовайдеÑÑ, вÑÑановиÑи,\n Ñо Ðи викоÑиÑÑовÑÑÑе Tails.\n\n" #: config/chroot_local-includes/usr/local/bin/electrum:17 msgid "Persistence is disabled for Electrum" @@ -106,11 +107,11 @@ msgstr "ÐÐ¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ" #: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:59 msgid "Warning: Tails 3.0 won't work on this computer!" -msgstr "" +msgstr "Увага: Tails 3.0 на ÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼Ð¿'ÑÑеÑÑ Ð½Ðµ пÑаÑÑваÑиме!" #: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:60 msgid "Tails 3.0 will require a 64-bit processor." -msgstr "" +msgstr "ÐÐ»Ñ Tails 3.0 поÑÑÑбен 64-бÑÑний пÑоÑеÑоÑ." #: config/chroot_local-includes/usr/local/lib/tails-32-bit-notify-user:63 #: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:83 ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits