[tor-commits] [webstats/master] symlink configuration files as expected by awstats
commit 01cec3b9ac7839ebc5b3c8b944b515e5377b47f4 Author: Sebastian HahnDate: Fri Nov 20 10:02:45 2015 +0100 symlink configuration files as expected by awstats --- awstats-7.4/wwwroot/cgi-bin/awstats.dist.conf | 1 + awstats-7.4/wwwroot/cgi-bin/awstats.www.conf | 1 + 2 files changed, 2 insertions(+) diff --git a/awstats-7.4/wwwroot/cgi-bin/awstats.dist.conf b/awstats-7.4/wwwroot/cgi-bin/awstats.dist.conf new file mode 12 index 000..65dad52 --- /dev/null +++ b/awstats-7.4/wwwroot/cgi-bin/awstats.dist.conf @@ -0,0 +1 @@ +../../../awstats.dist.conf \ No newline at end of file diff --git a/awstats-7.4/wwwroot/cgi-bin/awstats.www.conf b/awstats-7.4/wwwroot/cgi-bin/awstats.www.conf new file mode 12 index 000..e4631eb --- /dev/null +++ b/awstats-7.4/wwwroot/cgi-bin/awstats.www.conf @@ -0,0 +1 @@ +../../../awstats.www.conf \ 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] [webstats/master] Throw away http lines
commit 93c48ff3286c9db082973bdf4a7b10fc8edcc8ee Author: Sebastian HahnDate: Wed Nov 18 16:31:30 2015 +0100 Throw away http lines --- src/sanitize.py | 14 +- src/treat_new_logs.sh | 8 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/sanitize.py b/src/sanitize.py index 0c5de19..d6baf41 100755 --- a/src/sanitize.py +++ b/src/sanitize.py @@ -6,7 +6,7 @@ The following sanitizing steps are performed on data read from stdin: 2. Die if other hosts than '0.0.0.0' or '0.0.0.1' are specified. 3. Discard all lines with other methods than GET. 4. Die if a protocol other than HTTP is used. - 5. Discard all lines with status code 404. + 5. Discard all lines with status code 400 and 404. 6. Override client with '-'. 7. Override user with '-'. 8. Override time with '00:00:00 +'. @@ -46,7 +46,7 @@ if matched is None: sys.exit(1) today = dateutil.parser.parse(matched.group(1)) -is_valid_regex = re.compile(r'^0\.0\.0\.([01]) - - \[(\d{2}/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\d{4}):00:00:00 \+\] "([^ ]*) ([^ ?]*[?]?|)[^ ]* HTTP([^"]*)" (-|\d*) (-|\d*) "([^\"]|\\|\")*" "([^"]|\")*" .*[^ ]$') +is_valid_regex = re.compile(r'^0\.0\.0\.([01]) - - \[(\d{2}/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\d{4}):00:00:00 \+\] "([^ ]*) ([^ ?]*[?]?|).* HTTP([^"]*)" (-|\d*) (-|\d*) "([^\"]|\\|\")*" "([^"]|\")*" .*[^ ]$') sanitized_regex = r'0.0.0.\1 - - [\2:00:00:00 +] "\4 \5 HTTP\6" \7 \8 "-" "-" -\n' day_before = today - datetime.timedelta(days=1) @@ -59,18 +59,22 @@ with open(yesterday_fname, 'a') as file_old: matched = is_valid_regex.match(line) if matched is None: print(line, "Last line does not match critera", file=sys.stderr) -sys.exit(1) +continue date = dateutil.parser.parse(matched.group(2)) if today != date and day_before != date: print(line, "Last line does not match date constraints. today:", today, " day before:", day_before, " date:", date, file=sys.stderr) -sys.exit(1) +continue requesttype = matched.group(4) if requesttype != "GET" and requesttype != "HEAD": #print(matched.expand(sanitized_regex), file=sys.stderr, end="") continue -if matched.group(7) == "404": +if matched.group(7) == "404" or matched.group(7) == "400": +#print(matched.expand(sanitized_regex), file=sys.stderr, end="") +continue + +if matched.group(1) == "0": #print(matched.expand(sanitized_regex), file=sys.stderr, end="") continue diff --git a/src/treat_new_logs.sh b/src/treat_new_logs.sh index 147ebec..144eec3 100755 --- a/src/treat_new_logs.sh +++ b/src/treat_new_logs.sh @@ -8,6 +8,8 @@ SCRIPTDIR="${BASEDIR}/bin/" BASEINCOMINGDIR="${BASEDIR}/incoming/" +INTERESTING_HOSTS="www.torproject.org dist.torproject.org" + cd "${BASEINCOMINGDIR}" for host in *; do INCOMINGDIR="${BASEINCOMINGDIR}/${host}/" @@ -30,12 +32,12 @@ for host in *; do cp "${INCOMINGDIR}/${file}" "${WORKDIR}/${file}" cd "${WORKDIR}" gunzip ${file} -COMPLETED=$(${SCRIPTDIR}/sanitize.py "${basefile}" "${WORKDIR}") +COMPLETED=$(${SCRIPTDIR}/sanitize.py "${basefile}" "${WORKDIR}" 2>>"${WORKDIR}/errors") COMPLETED_BASE=$(basename $COMPLETED) COMPLETED_BASE=${COMPLETED_BASE%_sanitized} sort "${COMPLETED}" > "${COMPLETED}_sorted" xz -ck9e "${COMPLETED}_sorted" > "${OUTDIR}/${COMPLETED_BASE}.xz" -mv "${COMPLETED}_sorted" "${WORKDIR_AWSTATS}" +mv "${OUTDIR}/${COMPLETED_BASE}.xz" "${WORKDIR_AWSTATS}" rm "${WORKDIR}/${basefile}" rm "${WORKDIR}/${COMPLETED_BASE}_sanitized" @@ -43,3 +45,5 @@ for host in *; do done done +# Now that we have all output files, process them with awstats + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [webstats/master] Start script to extract logs
commit edddf0983d668ecd8c27700a83cb7e4d64255c07 Author: Sebastian HahnDate: Fri Nov 13 06:41:57 2015 +0100 Start script to extract logs --- bin/receive-log.sh| 47 --- bin/send-logs.sh | 73 - build.xml | 36 -- src/org/torproject/webstats/Main.java | 595 -- src/sanitize.py | 82 + src/treat_new_logs.sh | 45 +++ 6 files changed, 127 insertions(+), 751 deletions(-) diff --git a/bin/receive-log.sh b/bin/receive-log.sh deleted file mode 100755 index 6f98eaa..000 --- a/bin/receive-log.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -# Copyright 2011 The Tor Project -# See LICENSE for licensing information -# -# Read a binary file from stdin and store it to disk. - -set -e -set -u - -# Read remote host name from local command-line argument. -rhost="$1" -if [ -z "$rhost" ]; then - echo "Missing or illegal host name in authorized_keys." - exit 1 -fi - -# Read remote log file name from SSH command-line arguments. -rfile="${SSH_ORIGINAL_COMMAND:-}" -if ! [[ "$rfile" =~ ^[a-zA-Z0-9.-]+$ ]]; then - echo "Missing or illegal file name in SSH command." - exit 1 -fi - -# Create directories for this remote host if it doesn't exist. -ldir="in/$rhost" -if ! [ -d "in" ]; then - mkdir "in" -fi -if ! [ -d "$ldir" ]; then - mkdir "$ldir" -fi - -# Make sure the file doesn't exist yet. -lfile="$ldir/$rfile" -if [[ -f "$lfile" ]]; then - echo "File already exists." - exit 1 -fi - -# Write file from stdin to temporary file. -tfile="$ldir/.$rfile" -cat > "$tfile" - -# Move file from temp/ to in/ directory. -mv "$tfile" "$lfile" - diff --git a/bin/send-logs.sh b/bin/send-logs.sh deleted file mode 100755 index 77e7442..000 --- a/bin/send-logs.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# Copyright 2011 The Tor Project -# See LICENSE for licensing information -# -# Send new gzip'ed Apache web log files via ssh to a remote server. - -set -e -set -u - -usage() { - echo "Usage: $0 logs-dir ssh-string state-dir" - exit 1 -} - -# Check command-line arguments. -if [ "$#" != 3 ]; then - usage -fi -ldir="$1" -sshstring="$2" -tdir="$3" -if ! [ -d "$ldir" ]; then - echo "Directory '$1' does not exist." - usage -fi - -# Create the local state directory that has empty files for every log file -# that we sent to the remote server. -if ! [ -d "$tdir" ]; then - mkdir "$tdir" -fi - -# Iterate over files with file names containing access.log and ending in -# .gz and send the ones we haven't sent before to the remote server. -for i in $(find "$ldir" -maxdepth 1 -type f -name '*access.log*.gz'); do - - # Check that the file exists. This works around issues like filenames - # containing spaces. - if ! [ -e $i ]; then -echo "File '$i' does not exist." -continue - fi - - # Extract the file name part to pass it as SSH parameter. - fname="$(basename $i)" - - # Warn if file names contain illegal characters that the receiver would - # not accept. - if ! [[ $fname =~ ^[a-zA-Z0-9.-]+$ ]]; then -echo "Illegal file name '$fname'." -continue - fi - - # Copy the file content to the remote server if we haven't sent it - # before. - tfile="$tdir/$fname" - if ! [ -f "$tfile" ]; then -ssh -o PreferredAuthentications=publickey $sshstring "$fname" < "$i" - fi - - # Add a state file to note that we don't attempt to send this file in - # the next execution. - touch "$tfile" - -done - -# Delete all state files for which there are no log files anymore. -for i in $(find "$tdir" -type f); do - fname="$(basename $i)" - [ -e "$ldir/$fname" ] || rm -f "$tdir/$fname" -done - diff --git a/build.xml b/build.xml deleted file mode 100644 index 7f0b430..000 --- a/build.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/org/torproject/webstats/Main.java b/src/org/torproject/webstats/Main.java deleted file mode 100644 index 378093e..000 --- a/src/org/torproject/webstats/Main.java +++ /dev/null @@ -1,595 +0,0 @@ -package org.torproject.webstats; - -import java.io.*; -import java.text.*; -import java.util.*; -import java.util.regex.*; - -import org.apache.commons.compress.compressors.gzip.*; - -/* - * Sanitize Apache web logs by removing all potentially sensitive parts. - * - * The following sanitizing steps are performed on input web logs: - * 1. Discard all lines that are not in the Combined Log Format. - * 2. Discard all lines with other hosts than '0.0.0.0' or '0.0.0.1'. - * 3. Discard all lines with other methods than GET. - * 4. Discard all lines with other protocols than HTTP. - * 5. Discard all lines with status code 404. - * 6. Override client with '-'. - * 7. Override user with '-'. - * 8. Override time with '00:00:00 +'. - * 9. Override referer (sic!) with '"-"'. - *
[tor-commits] [webstats/master] Clean up after ourselves
commit 8d44ab0e0c47705eaaa3aab1c16d2bd1ec3f99b0 Author: Sebastian HahnDate: Wed Nov 18 17:21:56 2015 +0100 Clean up after ourselves --- src/treat_new_logs.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/treat_new_logs.sh b/src/treat_new_logs.sh index 144eec3..d4d529f 100755 --- a/src/treat_new_logs.sh +++ b/src/treat_new_logs.sh @@ -37,9 +37,10 @@ for host in *; do COMPLETED_BASE=${COMPLETED_BASE%_sanitized} sort "${COMPLETED}" > "${COMPLETED}_sorted" xz -ck9e "${COMPLETED}_sorted" > "${OUTDIR}/${COMPLETED_BASE}.xz" -mv "${OUTDIR}/${COMPLETED_BASE}.xz" "${WORKDIR_AWSTATS}" +cp "${OUTDIR}/${COMPLETED_BASE}.xz" "${WORKDIR_AWSTATS}" rm "${WORKDIR}/${basefile}" +rm "${COMPLETED}_sorted" rm "${WORKDIR}/${COMPLETED_BASE}_sanitized" touch "${STAMPDIR}/${file}_treated" done ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [webstats/master] Update gitignore
commit e8aab75122e69a67423e47a5b833609e75544fca Author: Sebastian HahnDate: Fri Nov 13 06:43:27 2015 +0100 Update gitignore --- .gitignore | 12 +--- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 2dbd22e..b69ffdb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ -lib/ -classes/ -in/ -out/ -temp/ -hist - +incoming +out +stamp +work +work_awstats ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [webstats/master] Remove two more old scripts
commit b92dfd821066eac44620cda4004cf4298e2cb1d6 Author: Sebastian HahnDate: Fri Nov 13 06:44:02 2015 +0100 Remove two more old scripts --- logarchive.sh | 74 --- logimport.sh | 47 - 2 files changed, 121 deletions(-) diff --git a/logarchive.sh b/logarchive.sh deleted file mode 100644 index bab17b5..000 --- a/logarchive.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# -# Define a few variables -logs="/srv/webstats.torproject.org/home/webstats/out" -archive="/srv/webstats.torproject.org/archive" -log_archive="/srv/webstats.torproject.org/archive/weblogs" -data_archive="/srv/webstats.torproject.org/archive/data" -data_publish="/srv/webstats.torproject.org/htdocs/data" -record="/srv/webstats.torproject.org/logarchive.log" - -# Define the hosts we have logs for -hosts=( -metrics.torproject.org-access.log -) - -# See if we actually have logs to process -if [ ! "$(ls -A $logs)" ]; -then -echo "`date` - No logs to process" >> $record -exit 1 -fi - -# rsync ALL the logs so that we can delete them from the out/ directory -# later -rsync -ar "$logs/" "$log_archive/" - -for host in "${hosts[@]}" -do -year=`find "$log_archive/" -name $host | cut -d / -f 6 | sort | uniq` - -for y in $year; do -month=`find "$log_archive/$y/" -name $host | cut -d / -f 7 | sort | uniq` -cd "$archive/" - -for m in $month; do -all_the_logs=`find "weblogs/$y/$m" -name $host` -for i in $all_the_logs; do -# If we already have a tarball, check to see if the file is already a -# part of it -if [ -e "$data_archive/$host-$y-$m.tar" ] -then -# See if the file is already a part of the tarball -tar --list --file="$data_archive/$host-$y-$m.tar" $i -check_exists=`echo $?` -if [[ $check_exists -eq "1" ]] -then -tar --append --file="$host-$y-$m.tar" $i -fi -else -tar --append --file="$host-$y-$m.tar" $i -fi -done - -# If we did create a new tarball, move it -if [ -e "$host-$y-$m.tar" ] -then -mv "$host-$y-$m.tar" "$data_archive" -fi - -# Pack up the tarball and make it available online -cd "$data_archive" -bzip2 -kf1 "$host-$y-$m.tar" -mv "$host-$y-$m.tar.bz2" "$data_publish" - -done - -# And remove logs from the out/ directory -rm -rf "$logs/$y/" - -done - -# And report back -echo "`date` - Logs processed for $host" >> $record -done diff --git a/logimport.sh b/logimport.sh deleted file mode 100644 index 438e3dd..000 --- a/logimport.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# The sanitized logs are in /srv/webstats.torproject.org/home/webstats/out/, -# with the following format: year/month/day/$virtualhost-access.log -# -# Need to concat the logs in chronological order and import into -# awstats and webalizer. - -# Define a few variables -logtmp="/srv/webstats.torproject.org/logtmp" -logs="/srv/webstats.torproject.org/home/webstats/out" -record="/srv/webstats.torproject.org/logimport.log" - -# Define the hosts we have logs for -hosts=( -metrics -) - -# See if we actually have logs to process -if [ ! "$(ls -A $logs)" ]; -then -echo "`date` - No logs to process" >> $record -exit 1 -fi - -for host in "${hosts[@]}" -do -# Concat the logs in chronological order -mkdir "$logtmp" -cd "$logtmp" -find "$logs/" -name "$host.torproject.org-access.log" | sort | xargs -I {} cat {} > "$host.torproject.org-access.log" - -# Time to run the web log analysis tools -# -# Running awstats first -/srv/webstats.torproject.org/awstats/awstats.pl -config=$host.torproject.org -update - -# And then webalizer -webalizer -c "/srv/webstats.torproject.org/configs/webalizer.$host.torproject.org.conf" - -# Cleanup -cd "/srv/webstats.torproject.org" -rm -rf "$logtmp" - -# And report back -echo "`date` - Logs processed for $host" >> $record -done ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] remove extraneous breaks
commit 580e549f75e43a1452f982949977f67691cc1a5a Author: Roger DingledineDate: Mon Mar 21 17:11:18 2016 -0400 remove extraneous breaks commit edeba3d4 removed a switch, but left the "break" lines in from that switch. fortunately the resulting behavior was not wrong, since there was an outer switch that it was ok to break from. --- src/or/directory.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/or/directory.c b/src/or/directory.c index 7130041..52cc6a9 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -2305,7 +2305,6 @@ connection_dir_client_reached_eof(dir_connection_t *conn) * cleans this dir conn up. */ SEND_HS_DESC_FAILED_EVENT("BAD_DESC"); SEND_HS_DESC_FAILED_CONTENT(); - break; } else { char service_id[REND_SERVICE_ID_LEN_BASE32 + 1]; /* Should never be NULL here if we found the descriptor. */ @@ -2325,7 +2324,6 @@ connection_dir_client_reached_eof(dir_connection_t *conn) conn->base_.purpose = DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2; rend_client_desc_trynow(service_id); memwipe(service_id, 0, sizeof(service_id)); - break; } break; } ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] fix indentation after #18332 patches
commit 4861e245529d70da5ca146eb2da1f22f7c68b5bb Author: Roger DingledineDate: Mon Mar 21 17:08:02 2016 -0400 fix indentation after #18332 patches no actual changes here -- but the new indenting makes it clear that the fixes in #18332 were not as good as they should have been. the next commit will deal with that. --- src/or/directory.c | 66 +++--- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/or/directory.c b/src/or/directory.c index 39fffc7..7130041 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -2298,34 +2298,34 @@ connection_dir_client_reached_eof(dir_connection_t *conn) rend_cache_entry_t *entry = NULL; if (rend_cache_store_v2_desc_as_client(body, - conn->requested_resource, conn->rend_data, ) < 0) { -log_warn(LD_REND,"Fetching v2 rendezvous descriptor failed. " - "Retrying at another directory."); -/* We'll retry when connection_about_to_close_connection() - * cleans this dir conn up. */ -SEND_HS_DESC_FAILED_EVENT("BAD_DESC"); -SEND_HS_DESC_FAILED_CONTENT(); -break; +conn->requested_resource, conn->rend_data, ) < 0) { + log_warn(LD_REND,"Fetching v2 rendezvous descriptor failed. " + "Retrying at another directory."); + /* We'll retry when connection_about_to_close_connection() + * cleans this dir conn up. */ + SEND_HS_DESC_FAILED_EVENT("BAD_DESC"); + SEND_HS_DESC_FAILED_CONTENT(); + break; } else { -char service_id[REND_SERVICE_ID_LEN_BASE32 + 1]; -/* Should never be NULL here if we found the descriptor. */ -tor_assert(entry); -rend_get_service_id(entry->parsed->pk, service_id); - -/* success. notify pending connections about this. */ -log_info(LD_REND, "Successfully fetched v2 rendezvous " - "descriptor."); -control_event_hs_descriptor_received(service_id, - conn->rend_data, - conn->identity_digest); -control_event_hs_descriptor_content(service_id, -conn->requested_resource, -conn->identity_digest, -body); -conn->base_.purpose = DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2; -rend_client_desc_trynow(service_id); -memwipe(service_id, 0, sizeof(service_id)); -break; + char service_id[REND_SERVICE_ID_LEN_BASE32 + 1]; + /* Should never be NULL here if we found the descriptor. */ + tor_assert(entry); + rend_get_service_id(entry->parsed->pk, service_id); + + /* success. notify pending connections about this. */ + log_info(LD_REND, "Successfully fetched v2 rendezvous " + "descriptor."); + control_event_hs_descriptor_received(service_id, + conn->rend_data, + conn->identity_digest); + control_event_hs_descriptor_content(service_id, + conn->requested_resource, + conn->identity_digest, + body); + conn->base_.purpose = DIR_PURPOSE_HAS_FETCHED_RENDDESC_V2; + rend_client_desc_trynow(service_id); + memwipe(service_id, 0, sizeof(service_id)); + break; } break; } @@ -3429,13 +3429,13 @@ directory_handle_command_post(dir_connection_t *conn, const char *headers, if (connection_dir_is_encrypted(conn) && !strcmpstart(url,"/tor/rendezvous2/publish")) { if (rend_cache_store_v2_desc_as_dir(body) < 0) { -log_warn(LD_REND, "Rejected v2 rend descriptor (length %d) from %s.", - (int)body_len, conn->base_.address); -write_http_status_line(conn, 400, - "Invalid v2 service descriptor rejected"); + log_warn(LD_REND, "Rejected v2 rend descriptor (length %d) from %s.", + (int)body_len, conn->base_.address); + write_http_status_line(conn, 400, + "Invalid v2 service descriptor rejected"); } else { -write_http_status_line(conn, 200, "Service descriptor (v2) stored"); -log_info(LD_REND, "Handled v2 rendezvous descriptor post: accepted"); + write_http_status_line(conn, 200, "Service descriptor (v2) stored"); + log_info(LD_REND, "Handled v2 rendezvous descriptor post: accepted"); } goto done; } ___ tor-commits mailing
[tor-commits] [translation/torbutton-torbuttonproperties] Update translations for torbutton-torbuttonproperties
commit 45e6c39cd2bb7d728999c64a294c310087838476 Author: Translation commit botDate: Mon Mar 21 18:45:56 2016 + Update translations for torbutton-torbuttonproperties --- pt_BR/torbutton.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pt_BR/torbutton.properties b/pt_BR/torbutton.properties index c351584..a578562 100644 --- a/pt_BR/torbutton.properties +++ b/pt_BR/torbutton.properties @@ -76,4 +76,4 @@ profileProblemTitle=Problema com o Perfil %S profileReadOnly=Não é possÃvel executar %S a partir de um sistema de arquivo "somente-leitura". Por favor, copie %S em um outro local antes de tentar utilizá-lo. profileReadOnlyMac=Não é possÃvel executar %S a partir de um sistema de arquivo "somente-leitura". Por favor, copie %S no seu Desktop ou em uma pasta de Aplicações antes de tentar utilizá-lo.\n profileAccessDenied=%S não possui permissão para acessar o perfil. Por favor, ajuste as suas permissões de arquivo de sistema e tente novamente. -profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used. +profileMigrationFailed=Migração de seu perfil %S existente falhou.\nNovas configurações serão utilizadas. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-properties] Update translations for tor-launcher-properties
commit 7e40d6c644469735694f324c20106978b21d3fde Author: Translation commit botDate: Mon Mar 21 18:45:33 2016 + Update translations for tor-launcher-properties --- pt_BR/torlauncher.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pt_BR/torlauncher.properties b/pt_BR/torlauncher.properties index 2d48aa0..73e724f 100644 --- a/pt_BR/torlauncher.properties +++ b/pt_BR/torlauncher.properties @@ -13,8 +13,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S falhou (%2$S). torlauncher.unable_to_start_tor=ImpossÃvel iniciar Tor. torlauncher.tor_missing=Falta o programa de execução de Tor. -torlauncher.torrc_missing=The torrc file is missing and could not be created. -torlauncher.datadir_missing=The Tor data directory does not exist and could not be created. +torlauncher.torrc_missing=O arquivo torrc está faltando e não pôde ser criado. +torlauncher.datadir_missing=O diretório de dados Tor não existe e não pode ser criado. torlauncher.password_hash_missing=Falha ao obter a senha criptografada. torlauncher.failed_to_get_settings=ImpossÃvel recuperar as configurações de Tor. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-properties_completed] Update translations for tor-launcher-properties_completed
commit 66c78eaee66ead47716f0a29dcf455c3260e6a9e Author: Translation commit botDate: Mon Mar 21 17:45:36 2016 + Update translations for tor-launcher-properties_completed --- it/torlauncher.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/it/torlauncher.properties b/it/torlauncher.properties index b5729ed..f89dd16 100644 --- a/it/torlauncher.properties +++ b/it/torlauncher.properties @@ -1,4 +1,4 @@ -### Copyright (c) 2014, The Tor Project, Inc. +### Copyright (c) 2016, The Tor Project, Inc. ### See LICENSE for licensing information. torlauncher.error_title=Avviatore di Tor @@ -13,8 +13,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S). torlauncher.unable_to_start_tor=Impossibile avviare Tor.â\nâ\n%S torlauncher.tor_missing=Il file eseguibile di Tor è mancante. -torlauncher.torrc_missing=Il file di configurazione torrc è mancante. -torlauncher.datadir_missing=La directory dei dati di Tor non esiste. +torlauncher.torrc_missing=Il file torrc non è presente e non è stato possibile crearlo. +torlauncher.datadir_missing=La cartella dei dati di Tor non esiste e non è stato possibile crearla. torlauncher.password_hash_missing=Tentativo di ottenere la password fallito. torlauncher.failed_to_get_settings=Impossibile recuperare le impostazioni di Tor.â\nâ\n%S ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-properties] Update translations for tor-launcher-properties
commit b3af4bd74bbf2bafcc557c8e1c37be0244ae31d5 Author: Translation commit botDate: Mon Mar 21 17:45:32 2016 + Update translations for tor-launcher-properties --- it/torlauncher.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/it/torlauncher.properties b/it/torlauncher.properties index aed382e..f89dd16 100644 --- a/it/torlauncher.properties +++ b/it/torlauncher.properties @@ -13,8 +13,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S). torlauncher.unable_to_start_tor=Impossibile avviare Tor.â\nâ\n%S torlauncher.tor_missing=Il file eseguibile di Tor è mancante. -torlauncher.torrc_missing=The torrc file is missing and could not be created. -torlauncher.datadir_missing=The Tor data directory does not exist and could not be created. +torlauncher.torrc_missing=Il file torrc non è presente e non è stato possibile crearlo. +torlauncher.datadir_missing=La cartella dei dati di Tor non esiste e non è stato possibile crearla. torlauncher.password_hash_missing=Tentativo di ottenere la password fallito. torlauncher.failed_to_get_settings=Impossibile recuperare le impostazioni di Tor.â\nâ\n%S ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbutton-torbuttonproperties] Update translations for torbutton-torbuttonproperties
commit 7ddcaa79f887ae43be99fc5384a300f8f38c8505 Author: Translation commit botDate: Mon Mar 21 17:45:57 2016 + Update translations for torbutton-torbuttonproperties --- it/torbutton.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/it/torbutton.properties b/it/torbutton.properties index 9c39e35..a7f6173 100644 --- a/it/torbutton.properties +++ b/it/torbutton.properties @@ -76,4 +76,4 @@ profileProblemTitle=Problema Profilo %S profileReadOnly=Non puoi avviare %S da un file system di sola lettura. Per favore copia %S in un'altra posizione prima di usarlo. profileReadOnlyMac=Non puoi avviare %S da un file system di sola lettura. Per favore copia %S sulla tua scrivania o nella cartella Applicazioni prima di usarlo. profileAccessDenied=%S non ha i permessi per accedere al profilo. Per favore, modifica i permessi del tuo file system e riprova. -profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used. +profileMigrationFailed=Migrazione del tuo profilo %S esistente fallita.\nVerranno usate nuove impostazioni. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbutton-abouttbupdatedtd] Update translations for torbutton-abouttbupdatedtd
commit 6fcb5b3cb092c3dec2f753421011ec2100175430 Author: Translation commit botDate: Mon Mar 21 17:32:23 2016 + Update translations for torbutton-abouttbupdatedtd --- he/abouttbupdate.dtd| 2 +- hr_HR/abouttbupdate.dtd | 10 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/he/abouttbupdate.dtd b/he/abouttbupdate.dtd index b84f148..3949cc4 100644 --- a/he/abouttbupdate.dtd +++ b/he/abouttbupdate.dtd @@ -1,6 +1,6 @@ - + diff --git a/hr_HR/abouttbupdate.dtd b/hr_HR/abouttbupdate.dtd index 37567bd..8a7c46f 100644 --- a/hr_HR/abouttbupdate.dtd +++ b/hr_HR/abouttbupdate.dtd @@ -1,6 +1,6 @@ - - - - + + + + - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-openpgp-applet_completed] Update translations for tails-openpgp-applet_completed
commit 788c89d251b69412eb9418a34e8b3e0832f6e560 Author: Translation commit botDate: Mon Mar 21 17:31:47 2016 + Update translations for tails-openpgp-applet_completed --- bg/openpgp-applet.pot| 2 +- ca/openpgp-applet.pot| 2 +- da/openpgp-applet.pot| 2 +- de/openpgp-applet.pot| 2 +- el/openpgp-applet.pot| 2 +- en_GB/openpgp-applet.pot | 2 +- es/openpgp-applet.pot| 2 +- eu/openpgp-applet.pot| 2 +- fa/openpgp-applet.pot| 2 +- fr/openpgp-applet.pot| 2 +- fr_CA/openpgp-applet.pot | 2 +- hu/openpgp-applet.pot| 2 +- id/openpgp-applet.pot| 2 +- it/openpgp-applet.pot| 2 +- ja/openpgp-applet.pot| 2 +- ko/openpgp-applet.pot| 2 +- nb/openpgp-applet.pot| 2 +- nl/openpgp-applet.pot| 2 +- pl/openpgp-applet.pot| 2 +- pt_BR/openpgp-applet.pot | 2 +- ro/openpgp-applet.pot| 2 +- ru/openpgp-applet.pot| 2 +- sv/openpgp-applet.pot| 2 +- tr/openpgp-applet.pot| 2 +- uk/openpgp-applet.pot| 2 +- zh_CN/openpgp-applet.pot | 2 +- zh_TW/openpgp-applet.pot | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/bg/openpgp-applet.pot b/bg/openpgp-applet.pot index 78b86f2..60b7b9b 100644 --- a/bg/openpgp-applet.pot +++ b/bg/openpgp-applet.pot @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-07 21:25+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Ivo\n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/ca/openpgp-applet.pot b/ca/openpgp-applet.pot index c38e025..31d0ea5 100644 --- a/ca/openpgp-applet.pot +++ b/ca/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-01-27 19:57+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: laia_\n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/da/openpgp-applet.pot b/da/openpgp-applet.pot index 9ffe1ec..5ab20cd 100644 --- a/da/openpgp-applet.pot +++ b/da/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-08 12:29+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tommy Gade\n" "Language-Team: Danish (http://www.transifex.com/otf/torproject/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/de/openpgp-applet.pot b/de/openpgp-applet.pot index 02ce4a8..a943d9f 100644 --- a/de/openpgp-applet.pot +++ b/de/openpgp-applet.pot @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-03-16 15:31+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: spriver \n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" diff --git a/el/openpgp-applet.pot b/el/openpgp-applet.pot index 26526cc..07fb41c 100644 --- a/el/openpgp-applet.pot +++ b/el/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-11 06:17+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: metamec\n" "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/en_GB/openpgp-applet.pot b/en_GB/openpgp-applet.pot index f364796..7cad224 100644 --- a/en_GB/openpgp-applet.pot +++ b/en_GB/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-09 09:59+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/otf/torproject/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/es/openpgp-applet.pot b/es/openpgp-applet.pot index d1d4f65..19b1430 100644 --- a/es/openpgp-applet.pot +++ b/es/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-14 12:27+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: strel\n" "Language-Team: Spanish (http://www.transifex.com/otf/torproject/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/eu/openpgp-applet.pot b/eu/openpgp-applet.pot index
[tor-commits] [translation/tails-openpgp-applet] Update translations for tails-openpgp-applet
commit 88c88e2b77ad6bfa5c893bc333822a4a340386c7 Author: Translation commit botDate: Mon Mar 21 17:31:27 2016 + Update translations for tails-openpgp-applet --- ar/openpgp-applet.pot| 2 +- bg/openpgp-applet.pot| 2 +- ca/openpgp-applet.pot| 2 +- cs/openpgp-applet.pot| 2 +- cy/openpgp-applet.pot| 2 +- da/openpgp-applet.pot| 2 +- de/openpgp-applet.pot| 2 +- el/openpgp-applet.pot| 2 +- en_GB/openpgp-applet.pot | 2 +- es/openpgp-applet.pot| 2 +- eu/openpgp-applet.pot| 2 +- fa/openpgp-applet.pot| 2 +- fi/openpgp-applet.pot| 2 +- fr/openpgp-applet.pot| 2 +- fr_CA/openpgp-applet.pot | 2 +- he/openpgp-applet.pot| 2 +- hr_HR/openpgp-applet.pot | 70 hu/openpgp-applet.pot| 2 +- id/openpgp-applet.pot| 2 +- it/openpgp-applet.pot| 2 +- ja/openpgp-applet.pot| 2 +- ko/openpgp-applet.pot| 2 +- lt/openpgp-applet.pot| 2 +- lv/openpgp-applet.pot| 2 +- nb/openpgp-applet.pot| 2 +- nl/openpgp-applet.pot| 2 +- nn/openpgp-applet.pot| 2 +- pl/openpgp-applet.pot| 2 +- pt_BR/openpgp-applet.pot | 2 +- ro/openpgp-applet.pot| 2 +- ru/openpgp-applet.pot| 2 +- sv/openpgp-applet.pot| 2 +- tr/openpgp-applet.pot| 2 +- uk/openpgp-applet.pot| 2 +- zh_CN/openpgp-applet.pot | 2 +- zh_TW/openpgp-applet.pot | 2 +- 36 files changed, 70 insertions(+), 70 deletions(-) diff --git a/ar/openpgp-applet.pot b/ar/openpgp-applet.pot index 26e1ea4..4518ba8 100644 --- a/ar/openpgp-applet.pot +++ b/ar/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-02-05 05:51+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: ouss \n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/bg/openpgp-applet.pot b/bg/openpgp-applet.pot index 78b86f2..60b7b9b 100644 --- a/bg/openpgp-applet.pot +++ b/bg/openpgp-applet.pot @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-07 21:25+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Ivo\n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/ca/openpgp-applet.pot b/ca/openpgp-applet.pot index c38e025..31d0ea5 100644 --- a/ca/openpgp-applet.pot +++ b/ca/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-01-27 19:57+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: laia_\n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/cs/openpgp-applet.pot b/cs/openpgp-applet.pot index a48e66c..48f31d4 100644 --- a/cs/openpgp-applet.pot +++ b/cs/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-03-12 19:14+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: David Stepan \n" "Language-Team: Czech (http://www.transifex.com/otf/torproject/language/cs/)\n" "MIME-Version: 1.0\n" diff --git a/cy/openpgp-applet.pot b/cy/openpgp-applet.pot index 7893c07..24e87f8 100644 --- a/cy/openpgp-applet.pot +++ b/cy/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2016-01-30 02:18+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Christopher Griffiths \n" "Language-Team: Welsh (http://www.transifex.com/otf/torproject/language/cy/)\n" "MIME-Version: 1.0\n" diff --git a/da/openpgp-applet.pot b/da/openpgp-applet.pot index 9ffe1ec..5ab20cd 100644 --- a/da/openpgp-applet.pot +++ b/da/openpgp-applet.pot @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: ta...@boum.org\n" "POT-Creation-Date: 2015-08-10 15:55+0200\n" -"PO-Revision-Date: 2015-12-08 12:29+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tommy Gade\n" "Language-Team: Danish (http://www.transifex.com/otf/torproject/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/de/openpgp-applet.pot b/de/openpgp-applet.pot index 02ce4a8..a943d9f 100644 --- a/de/openpgp-applet.pot +++ b/de/openpgp-applet.pot @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n"
[tor-commits] [translation/tor-messenger-prefsdtd] Update translations for tor-messenger-prefsdtd
commit ef5561239f3b4da52c3a0a1a0046dcdbac54ee6c Author: Translation commit botDate: Mon Mar 21 17:28:36 2016 + Update translations for tor-messenger-prefsdtd --- az/prefs.dtd| 2 +- cy/prefs.dtd| 2 +- eo/prefs.dtd| 4 ++-- eu/prefs.dtd| 4 ++-- gl/prefs.dtd| 2 +- hr_HR/prefs.dtd | 26 +- ia/prefs.dtd| 2 +- is/prefs.dtd| 2 +- km/prefs.dtd| 2 +- ko_KR/prefs.dtd | 4 ++-- ku_IQ/prefs.dtd | 2 +- ky/prefs.dtd| 2 +- lt/prefs.dtd| 2 +- ms_MY/prefs.dtd | 2 +- my/prefs.dtd| 2 +- si_LK/prefs.dtd | 2 +- sk/prefs.dtd| 4 ++-- sk_SK/prefs.dtd | 2 +- sl_SI/prefs.dtd | 2 +- sr/prefs.dtd| 4 ++-- ta/prefs.dtd| 2 +- th/prefs.dtd| 4 ++-- vi/prefs.dtd| 2 +- 23 files changed, 41 insertions(+), 41 deletions(-) diff --git a/az/prefs.dtd b/az/prefs.dtd index 1441b0e..553be58 100644 --- a/az/prefs.dtd +++ b/az/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/cy/prefs.dtd b/cy/prefs.dtd index a18e302..2c4be01 100644 --- a/cy/prefs.dtd +++ b/cy/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/eo/prefs.dtd b/eo/prefs.dtd index 1441b0e..81d825f 100644 --- a/eo/prefs.dtd +++ b/eo/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/eu/prefs.dtd b/eu/prefs.dtd index f2153e7..b051cf2 100644 --- a/eu/prefs.dtd +++ b/eu/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/gl/prefs.dtd b/gl/prefs.dtd index 5ab1fc0..aab34c2 100644 --- a/gl/prefs.dtd +++ b/gl/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/hr_HR/prefs.dtd b/hr_HR/prefs.dtd index 1441b0e..e2bd232 100644 --- a/hr_HR/prefs.dtd +++ b/hr_HR/prefs.dtd @@ -1,13 +1,13 @@ - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + \ No newline at end of file diff --git a/ia/prefs.dtd b/ia/prefs.dtd index 1441b0e..19f577c 100644 --- a/ia/prefs.dtd +++ b/ia/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/is/prefs.dtd b/is/prefs.dtd index 1441b0e..bbbf9b5 100644 --- a/is/prefs.dtd +++ b/is/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/km/prefs.dtd b/km/prefs.dtd index 1441b0e..ccce0b0 100644 --- a/km/prefs.dtd +++ b/km/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/ko_KR/prefs.dtd b/ko_KR/prefs.dtd index 1441b0e..0425efa 100644 --- a/ko_KR/prefs.dtd +++ b/ko_KR/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/ku_IQ/prefs.dtd b/ku_IQ/prefs.dtd index 1441b0e..f8b36a3 100644 --- a/ku_IQ/prefs.dtd +++ b/ku_IQ/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/ky/prefs.dtd b/ky/prefs.dtd index 1441b0e..1a87a9f 100644 --- a/ky/prefs.dtd +++ b/ky/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/lt/prefs.dtd b/lt/prefs.dtd index 7e9df5f..05a499d 100644 --- a/lt/prefs.dtd +++ b/lt/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/ms_MY/prefs.dtd b/ms_MY/prefs.dtd index 1441b0e..9dc17a7 100644 --- a/ms_MY/prefs.dtd +++ b/ms_MY/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/my/prefs.dtd b/my/prefs.dtd index 1441b0e..f1a392a 100644 --- a/my/prefs.dtd +++ b/my/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/si_LK/prefs.dtd b/si_LK/prefs.dtd index 1441b0e..ef38531 100644 --- a/si_LK/prefs.dtd +++ b/si_LK/prefs.dtd @@ -6,7 +6,7 @@ - + diff --git a/sk/prefs.dtd b/sk/prefs.dtd index a320707..050ea6c 100644 --- a/sk/prefs.dtd +++ b/sk/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/sk_SK/prefs.dtd b/sk_SK/prefs.dtd index 5864ab6..c1427fd 100644 --- a/sk_SK/prefs.dtd +++ b/sk_SK/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/sl_SI/prefs.dtd b/sl_SI/prefs.dtd index 1441b0e..c3dab81 100644 --- a/sl_SI/prefs.dtd +++ b/sl_SI/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/sr/prefs.dtd b/sr/prefs.dtd index 1441b0e..fccdb0e 100644 --- a/sr/prefs.dtd +++ b/sr/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/ta/prefs.dtd b/ta/prefs.dtd index 1441b0e..2dc91f1 100644 --- a/ta/prefs.dtd +++ b/ta/prefs.dtd @@ -3,7 +3,7 @@ - + diff --git a/th/prefs.dtd b/th/prefs.dtd index 1441b0e..0fb15b1 100644 --- a/th/prefs.dtd +++ b/th/prefs.dtd @@ -3,10 +3,10 @@ - + - + diff --git a/vi/prefs.dtd b/vi/prefs.dtd index 896327e..fe9efb2 100644 --- a/vi/prefs.dtd +++ b/vi/prefs.dtd @@ -6,7 +6,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [torspec/master] Clarify NoEdConsensus flag a bit harder.
commit 313eff650d3aa7d4a221ea2f21074eb7cc7d5c52 Author: Nick MathewsonDate: Tue Mar 15 10:52:23 2016 -0400 Clarify NoEdConsensus flag a bit harder. (Note that no corresponding tor change is needed, since we don't actually use these keys yet.) Resolves 17668.{S1,T1} --- dir-spec.txt | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dir-spec.txt b/dir-spec.txt index d3e5228..57188eb 100644 --- a/dir-spec.txt +++ b/dir-spec.txt @@ -1401,6 +1401,10 @@ The node's master Ed25519 identity key, base64 encoded, without trailing =s. +All implementations MUST ignore this key for any microdescriptor +whose corresponding entry in the consensus includes the +'NoEdConsensus' flag. + (Only included when generating microdescriptors for consensus-method 21 or later.) @@ -2388,8 +2392,10 @@ "id" lines in microdescriptors. * If consensus method 22 or later is used, and the votes do not - produce a majority consensus about Ed25519 key (see 3.8.0.1 below), the - consensus must include a NoEdConsensus flag on the "s" line. + produce a majority consensus about a relay's Ed25519 key (see + 3.8.0.1 below), the consensus must include a NoEdConsensus flag on + the "s" line for every relay whose listed Ed key does not reflect + consensus. The signatures at the end of a consensus document are sorted in ascending order by identity digest. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [torspec/master] Document how ed25519 voting actually should work
commit dc9916048838a1963e4533858cbfbc74c7f8652f Author: Nick MathewsonDate: Tue Feb 23 10:03:02 2016 -0500 Document how ed25519 voting actually should work --- dir-spec.txt | 48 +--- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/dir-spec.txt b/dir-spec.txt index 2ab1878..d3e5228 100644 --- a/dir-spec.txt +++ b/dir-spec.txt @@ -1895,6 +1895,8 @@ "HSDir" if the router is considered a v2 hidden service directory. "Named" if the router's identity-nickname mapping is canonical, and this authority binds names. + "NoEdConsensus" if any Ed25519 key in the router's descriptor or + microdesriptor does not reflect authority consensus. "Stable" if the router is suitable for long-lived circuits. "Running" if the router is currently usable. "Unnamed" if another router has bound the name used by this @@ -2156,6 +2158,9 @@ authority believes that it's been up for at least 96 hours (or the current value of MinUptimeHidServDirectoryV2). + "NoEdConsensus" -- authorities should not vote on this flag; it is + produced as part of the consensus for consensus method 22 or later. + Directory server administrators may label some relays or IPs as blacklisted, and elect not to include them in their network-status lists. @@ -2295,11 +2300,14 @@ (Consensus method earlier than 21) * is included according to the rules in section 3.8.0.1 and - 3.8.0.2 below. (Consensus method 21 or later) + 3.8.0.2 below. (Consensus method 22 or later) -* For any given RSA or Ed25519 identity, we include at most +* For any given RSA identity digest, we include at most one router status entry. +* For any given Ed25519 identity, we include at most one router + status entry. + * A router entry has a flag set if that is included by more than half of the authorities who care about that flag. @@ -2379,6 +2387,10 @@ * If consensus method 18 or later is used, authorities include "id" lines in microdescriptors. +* If consensus method 22 or later is used, and the votes do not + produce a majority consensus about Ed25519 key (see 3.8.0.1 below), the + consensus must include a NoEdConsensus flag on the "s" line. + The signatures at the end of a consensus document are sorted in ascending order by identity digest. @@ -2387,24 +2399,35 @@ 3.8.0.1. Deciding which Ids to include. - For each that is listed by more than half of the total -authorities (not just total votes), include it. (No other -can have as many votes.) + This sorting algorithm is used for consensus-method 22 and later. + + First, consider each listing by tuple of identities, where 'Ed' +may be "None" if the voter included "id ed25519 none" to indicate that +the authority knows what ed25519 identities are, and thinks that the RSA +key doesn't have one. + + For each such tuple that is listed by more than half of the +total authorities (not just total votes), include it. (It is not +possible for any other to have as many votes.) If more +than half of the authorities list a single pair of this type, we +consider that Ed key to be "consensus"; see description of the +NoEdConsensus flag. Log any other id-RSA values corresponding to an id-Ed we included, and any other id-Ed values corresponding to an id-RSA we included. For each that is not yet included, if it is listed by more than half of the total authorities, and we do not already have it listed with -some , include it without an id-Ed. +some , include it, but do not consider its Ed identity canonical. 3.8.0.2 Deciding which descriptors to include Deciding which descriptors to include. A tuple belongs to an identity if it is a new tuple that - matches both ID parts, or if it is an old tuple that matches the RSA part. - A tuple belongs to an identity if its RSA identity matches. + matches both ID parts, or if it is an old tuple (one with no Ed opinion) + that matches the RSA part. A tuple belongs to an identity if its + RSA identity matches. A tuple matches another tuple if all the fields that are present in both tuples are the same. @@ -2414,7 +2437,6 @@ that matches the largest set, breaking ties in favor of the most recently published, and then in favor of the smaller server descriptor digest. - 3.8.1. Forward compatibility Future versions of Tor will need to include new information in the @@ -2444,8 +2466,8 @@ "18" -- Adds 'id' to microdescriptors. "19" -- Adds "package" lines to consensuses "20" -- Adds GuardFraction information to
[tor-commits] [translation/tor-messenger-privdtd] Update translations for tor-messenger-privdtd
commit b7fe051357222982ca643ece7debe2bf5e76f04f Author: Translation commit botDate: Mon Mar 21 17:29:38 2016 + Update translations for tor-messenger-privdtd --- az/priv.dtd| 2 ++ bn/priv.dtd| 2 ++ eo/priv.dtd| 2 ++ es_AR/priv.dtd | 2 ++ es_MX/priv.dtd | 2 ++ et/priv.dtd| 2 ++ eu/priv.dtd| 2 ++ fil/priv.dtd | 2 ++ fy/priv.dtd| 2 ++ gl/priv.dtd| 2 ++ hi/priv.dtd| 2 ++ hr_HR/priv.dtd | 4 ++-- is/priv.dtd| 2 ++ km/priv.dtd| 2 ++ mr/priv.dtd| 2 ++ ne/priv.dtd| 2 ++ pa/priv.dtd| 2 ++ si_LK/priv.dtd | 2 ++ sk_SK/priv.dtd | 2 ++ sl/priv.dtd| 2 ++ sr/priv.dtd| 2 ++ ta/priv.dtd| 2 ++ th/priv.dtd| 2 ++ uz/priv.dtd| 2 ++ zh_HK/priv.dtd | 2 ++ 25 files changed, 50 insertions(+), 2 deletions(-) diff --git a/az/priv.dtd b/az/priv.dtd new file mode 100644 index 000..e1e5b31 --- /dev/null +++ b/az/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/bn/priv.dtd b/bn/priv.dtd new file mode 100644 index 000..ec62f13 --- /dev/null +++ b/bn/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/eo/priv.dtd b/eo/priv.dtd new file mode 100644 index 000..908e3d8 --- /dev/null +++ b/eo/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/es_AR/priv.dtd b/es_AR/priv.dtd new file mode 100644 index 000..b1a72cc --- /dev/null +++ b/es_AR/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/es_MX/priv.dtd b/es_MX/priv.dtd new file mode 100644 index 000..b1a72cc --- /dev/null +++ b/es_MX/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/et/priv.dtd b/et/priv.dtd new file mode 100644 index 000..2e65400 --- /dev/null +++ b/et/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/eu/priv.dtd b/eu/priv.dtd new file mode 100644 index 000..c1ab78e --- /dev/null +++ b/eu/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/fil/priv.dtd b/fil/priv.dtd new file mode 100644 index 000..30be152 --- /dev/null +++ b/fil/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/fy/priv.dtd b/fy/priv.dtd new file mode 100644 index 000..198985d --- /dev/null +++ b/fy/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/gl/priv.dtd b/gl/priv.dtd new file mode 100644 index 000..4fa2c3c --- /dev/null +++ b/gl/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/hi/priv.dtd b/hi/priv.dtd new file mode 100644 index 000..cddc35b --- /dev/null +++ b/hi/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/hr_HR/priv.dtd b/hr_HR/priv.dtd index 7007979..6c4d395 100644 --- a/hr_HR/priv.dtd +++ b/hr_HR/priv.dtd @@ -1,2 +1,2 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/is/priv.dtd b/is/priv.dtd new file mode 100644 index 000..7381b53 --- /dev/null +++ b/is/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/km/priv.dtd b/km/priv.dtd new file mode 100644 index 000..8f77911 --- /dev/null +++ b/km/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/mr/priv.dtd b/mr/priv.dtd new file mode 100644 index 000..b0dea77 --- /dev/null +++ b/mr/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ne/priv.dtd b/ne/priv.dtd new file mode 100644 index 000..bc7deff --- /dev/null +++ b/ne/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/pa/priv.dtd b/pa/priv.dtd new file mode 100644 index 000..aaefece --- /dev/null +++ b/pa/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/si_LK/priv.dtd b/si_LK/priv.dtd new file mode 100644 index 000..4ef967f --- /dev/null +++ b/si_LK/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sk_SK/priv.dtd b/sk_SK/priv.dtd new file mode 100644 index 000..cb6883b --- /dev/null +++ b/sk_SK/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sl/priv.dtd b/sl/priv.dtd new file mode 100644 index 000..f601573 --- /dev/null +++ b/sl/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sr/priv.dtd b/sr/priv.dtd new file mode 100644 index 000..fd356b2 --- /dev/null +++ b/sr/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ta/priv.dtd b/ta/priv.dtd new file mode 100644 index 000..2e6792e --- /dev/null +++ b/ta/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/th/priv.dtd b/th/priv.dtd new file mode 100644 index 000..8a9e21b --- /dev/null +++ b/th/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/uz/priv.dtd b/uz/priv.dtd new file mode 100644 index 000..00d2c94 --- /dev/null +++ b/uz/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/zh_HK/priv.dtd b/zh_HK/priv.dtd new file mode 100644 index 000..cba66f7 --- /dev/null +++ b/zh_HK/priv.dtd @@ -0,0 +1,2 @@ + + \ No newline at end of file
[tor-commits] [torspec/master] Merge remote-tracking branch 'public/ed25519_voting_again'
commit a5d0978a833a610d5f1ed4f5424eca563deba65e Merge: 2a9f49b 313eff6 Author: Nick MathewsonDate: Mon Mar 21 13:28:17 2016 -0400 Merge remote-tracking branch 'public/ed25519_voting_again' dir-spec.txt | 54 +++--- 1 file changed, 43 insertions(+), 11 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-privproperties_completed] Update translations for tor-messenger-privproperties_completed
commit 56fdc33c7699181e82213e80f1ed6d4c09ae2492 Author: Translation commit botDate: Mon Mar 21 17:28:56 2016 + Update translations for tor-messenger-privproperties_completed --- fr/priv.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/priv.properties b/fr/priv.properties index 72d764e..0567041 100644 --- a/fr/priv.properties +++ b/fr/priv.properties @@ -1,2 +1,2 @@ priv.account=Génération d'une clé privée pour %S (%S) ... -priv.failed=La génération des clés a échoué : %S +priv.failed=Génération de la clé a échoué : %S ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Document has_ed25519_listing
commit 60ca3f358f80930778b12c9fcc8e3cf562b64e8e Author: Nick MathewsonDate: Tue Feb 23 08:13:39 2016 -0500 Document has_ed25519_listing --- src/or/or.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/or.h b/src/or/or.h index b6d6ec0..b24b6a8 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2377,7 +2377,9 @@ typedef struct vote_routerstatus_t { char *version; /**< The version that the authority says this router is * running. */ unsigned int has_measured_bw:1; /**< The vote had a measured bw */ - unsigned int has_ed25519_listing:1; /** DOCDOC */ + /** True iff the vote included an entry for ed25519 ID, or included + * "id ed25519 none" to indicate that there was no ed25519 ID. */ + unsigned int has_ed25519_listing:1; unsigned int ed25519_reflects_consensus:1; /** DOCDOC */ uint32_t measured_bw_kb; /**< Measured bandwidth (capacity) of the router */ /** The hash or hashes that the authority claims this microdesc has. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Assert that dircollator is collated when we're reading its output.
commit beef6ed45160f096815b4ea840ff671fb484d1da Author: Nick MathewsonDate: Tue Mar 15 10:24:18 2016 -0400 Assert that dircollator is collated when we're reading its output. Fix for 17668.S2. --- src/or/dircollate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index ca8b7ca..2f02512 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -303,6 +303,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) int dircollator_n_routers(dircollator_t *dc) { + tor_assert(dc->is_collated); return smartlist_len(dc->all_rsa_sha1_lst); } @@ -317,6 +318,7 @@ dircollator_n_routers(dircollator_t *dc) vote_routerstatus_t ** dircollator_get_votes_for_router(dircollator_t *dc, int idx) { + tor_assert(dc->is_collated); tor_assert(idx < smartlist_len(dc->all_rsa_sha1_lst)); return digestmap_get(dc->by_collated_rsa_sha1, smartlist_get(dc->all_rsa_sha1_lst, idx)); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Never vote for an ed key twice.
commit 13a31e72db1b009623aa55bd52ffe7390a22623d Author: Nick MathewsonDate: Mon Feb 22 11:43:59 2016 -0500 Never vote for an ed key twice. When generating a vote, and we have two routerinfos with the same ed key, omit the one published earlier. This was supposed to have been solved by key pinning, but when I made key pinning optional, I didn't realize that this would jump up and bite us. It is part of bug 18318, and the root cause of 17668. --- changes/bug18318_ed | 7 +++ src/or/dirserv.c| 39 +++ src/or/or.h | 4 3 files changed, 50 insertions(+) diff --git a/changes/bug18318_ed b/changes/bug18318_ed new file mode 100644 index 000..af39234 --- /dev/null +++ b/changes/bug18318_ed @@ -0,0 +1,7 @@ + o Major bugfixes: +- When generating a vote with keypinning disabled, never include two + entries for the same ed25519 identity. This bug was causing + authorities to generate votes that they could not parse when a router + violated key pinning by changing its RSA identity but keeping its + Ed25519 identity. Fixes bug 17668; fixes part of bug 18318. Bugfix on + 0.2.7.2-alpha. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 8d9f166..016514f 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2126,6 +2126,44 @@ get_possible_sybil_list(const smartlist_t *routers) return omit_as_sybil; } +/** If there are entries in routers with exactly the same ed25519 keys, + * remove the older one. May alter the order of the list. */ +static void +routers_make_ed_keys_unique(smartlist_t *routers) +{ + routerinfo_t *ri2; + digest256map_t *by_ed_key = digest256map_new(); + + SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) { +ri->omit_from_vote = 0; +if (ri->signing_key_cert == NULL) + continue; /* No ed key */ +const uint8_t *pk = ri->signing_key_cert->signing_key.pubkey; +if ((ri2 = digest256map_get(by_ed_key, pk))) { + /* Duplicate; must omit one. Set the omit_from_vote flag in whichever + * one has the earlier published_on. */ + if (ri2->cache_info.published_on < ri->cache_info.published_on) { +digest256map_set(by_ed_key, pk, ri); +ri2->omit_from_vote = 1; + } else { +ri->omit_from_vote = 1; + } +} else { + /* Add to map */ + digest256map_set(by_ed_key, pk, ri); +} + } SMARTLIST_FOREACH_END(ri); + + digest256map_free(by_ed_key, NULL); + + /* Now remove every router where the omit_from_vote flag got set. */ + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { +if (ri->omit_from_vote) { + SMARTLIST_DEL_CURRENT(routers, ri); +} + } SMARTLIST_FOREACH_END(ri); +} + /** Extract status information from ri and from other authority * functions and store it in rs>. * @@ -2815,6 +2853,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); + routers_make_ed_keys_unique(routers); routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); diff --git a/src/or/or.h b/src/or/or.h index 4496cbc..b6d6ec0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2081,6 +2081,10 @@ typedef struct { * tests for it. */ unsigned int needs_retest_if_added:1; + /** Used during voting to indicate that we should not include an entry for + * this routerinfo. Used only during voting. */ + unsigned int omit_from_vote:1; + /** Tor can use this router for general positions in circuits; we got it * from a directory server as usual, or we're an authority and a server * uploaded it. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-loggerproperties] Update translations for tor-messenger-loggerproperties
commit 8cc09b60e44d80107a24fe93a66a0b8b12afd917 Author: Translation commit botDate: Mon Mar 21 17:27:40 2016 + Update translations for tor-messenger-loggerproperties --- hr_HR/logger.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_HR/logger.properties b/hr_HR/logger.properties index 2228c50..e296406 100644 --- a/hr_HR/logger.properties +++ b/hr_HR/logger.properties @@ -4,4 +4,4 @@ # LOCALIZATION NOTE (badLogfile): # %S is the filename of the log file. -badLogfile=Empty or corrupt log file: %S +badLogfile=Prazna ili korumpirana datoteka zapisa o dogaÄajima: %S ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Use nth consistently in dircollate.h.
commit 2f2fba8a918674b7187a5b497bb156b79aaec4e1 Author: Nick MathewsonDate: Tue Mar 15 10:39:50 2016 -0400 Use nth consistently in dircollate.h. Documentation-only patch. Issue 17668.T6. --- src/or/dircollate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 2f02512..43cf27f 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -22,8 +22,8 @@ static void dircollator_collate_by_ed25519(dircollator_t *dc); typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; - /* The i'th member of this array corresponds to the vote_routerstatus_t (if - * any) received for this digest pair from the n'th voter. */ + /* The nth member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the nth voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7
commit e1e62f9d5735da64dc1435d3a40db77f6229766a Merge: 920e3d6 2f2fba8 Author: Nick MathewsonDate: Mon Mar 21 13:25:12 2016 -0400 Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7 changes/bug17668 | 5 changes/bug17702 | 6 changes/bug18318_ed| 7 + changes/bug18368 | 5 src/or/dircollate.c| 78 ++ src/or/dircollate.h| 24 ++-- src/or/dirserv.c | 75 +--- src/or/dirserv.h | 2 +- src/or/dirvote.c | 35 ++ src/or/dirvote.h | 7 +++-- src/or/networkstatus.c | 2 +- src/or/or.h| 13 +++-- src/or/routerparse.c | 25 13 files changed, 239 insertions(+), 45 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] After we strip out duplicate entries from 'routers', don't use 'rl'.
commit 48f8229504a00085676a737d9b519548ffc9d145 Author: Nick MathewsonDate: Tue Mar 15 10:15:59 2016 -0400 After we strip out duplicate entries from 'routers', don't use 'rl'. We've got to make sure that every single subsequent calculation in dirserv_generate_networkstatus_vote_obj() are based on the list of routerinfo_t *after* we've removed possible duplicates, not before. Fortunately, none of the functions that were taking a routerlist_t as an argument were actually using any fields other than this list of routers. Resolves issue 18318.DG3. --- src/or/dirserv.c | 30 ++ src/or/dirserv.h | 2 +- src/or/networkstatus.c | 2 +- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 016514f..ab8ddfe 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1422,7 +1422,7 @@ router_counts_toward_thresholds(const node_t *node, time_t now, * * Also, set the is_exit flag of each router appropriately. */ static void -dirserv_compute_performance_thresholds(routerlist_t *rl, +dirserv_compute_performance_thresholds(const smartlist_t *routers, digestmap_t *omit_as_sybil) { int n_active, n_active_nonexit, n_familiar; @@ -1450,18 +1450,18 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * sort them and use that to compute thresholds. */ n_active = n_active_nonexit = 0; /* Uptime for every active router. */ - uptimes = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + uptimes = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active router. */ - bandwidths_kb = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + bandwidths_kb = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active non-exit router. */ bandwidths_excluding_exits_kb = -tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); +tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Weighted mean time between failure for each active router. */ - mtbfs = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + mtbfs = tor_calloc(smartlist_len(routers), sizeof(double)); /* Time-known for each active router. */ - tks = tor_calloc(smartlist_len(rl->routers), sizeof(long)); + tks = tor_calloc(smartlist_len(routers), sizeof(long)); /* Weighted fractional uptime for each active router. */ - wfus = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + wfus = tor_calloc(smartlist_len(routers), sizeof(double)); nodelist_assert_ok(); @@ -1596,11 +1596,11 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * networkstatus_getinfo_by_purpose(). */ void -dirserv_compute_bridge_flag_thresholds(routerlist_t *rl) +dirserv_compute_bridge_flag_thresholds(const smartlist_t *routers) { digestmap_t *omit_as_sybil = digestmap_new(); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); digestmap_free(omit_as_sybil, NULL); } @@ -1753,16 +1753,13 @@ dirserv_get_bandwidth_for_router_kb(const routerinfo_t *ri) * how many measured bandwidths we know. This is used to decide whether we * ever trust advertised bandwidths for purposes of assigning flags. */ static void -dirserv_count_measured_bws(routerlist_t *rl) +dirserv_count_measured_bws(const smartlist_t *routers) { /* Initialize this first */ routers_with_measured_bw = 0; - tor_assert(rl); - tor_assert(rl->routers); - /* Iterate over the routerlist and count measured bandwidths */ - SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) { + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { /* Check if we know a measured bandwidth for this one */ if (dirserv_has_measured_bw(ri->cache_info.identity_digest)) { ++routers_with_measured_bw; @@ -2854,6 +2851,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); routers_make_ed_keys_unique(routers); + /* After this point, don't use rl->routers; use 'routers' instead. */ routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); @@ -2864,9 +2862,9 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, /* Count how many have measured bandwidths so we know how to assign flags; * this must come before dirserv_compute_performance_thresholds() */ - dirserv_count_measured_bws(rl); + dirserv_count_measured_bws(routers); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); routerstatuses = smartlist_new(); microdescriptors = smartlist_new(); diff --git a/src/or/dirserv.h b/src/or/dirserv.h index d07339b..b16a67c 100644 --- a/src/or/dirserv.h +++
[tor-commits] [tor/master] After we strip out duplicate entries from 'routers', don't use 'rl'.
commit 48f8229504a00085676a737d9b519548ffc9d145 Author: Nick MathewsonDate: Tue Mar 15 10:15:59 2016 -0400 After we strip out duplicate entries from 'routers', don't use 'rl'. We've got to make sure that every single subsequent calculation in dirserv_generate_networkstatus_vote_obj() are based on the list of routerinfo_t *after* we've removed possible duplicates, not before. Fortunately, none of the functions that were taking a routerlist_t as an argument were actually using any fields other than this list of routers. Resolves issue 18318.DG3. --- src/or/dirserv.c | 30 ++ src/or/dirserv.h | 2 +- src/or/networkstatus.c | 2 +- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 016514f..ab8ddfe 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1422,7 +1422,7 @@ router_counts_toward_thresholds(const node_t *node, time_t now, * * Also, set the is_exit flag of each router appropriately. */ static void -dirserv_compute_performance_thresholds(routerlist_t *rl, +dirserv_compute_performance_thresholds(const smartlist_t *routers, digestmap_t *omit_as_sybil) { int n_active, n_active_nonexit, n_familiar; @@ -1450,18 +1450,18 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * sort them and use that to compute thresholds. */ n_active = n_active_nonexit = 0; /* Uptime for every active router. */ - uptimes = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + uptimes = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active router. */ - bandwidths_kb = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + bandwidths_kb = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active non-exit router. */ bandwidths_excluding_exits_kb = -tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); +tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Weighted mean time between failure for each active router. */ - mtbfs = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + mtbfs = tor_calloc(smartlist_len(routers), sizeof(double)); /* Time-known for each active router. */ - tks = tor_calloc(smartlist_len(rl->routers), sizeof(long)); + tks = tor_calloc(smartlist_len(routers), sizeof(long)); /* Weighted fractional uptime for each active router. */ - wfus = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + wfus = tor_calloc(smartlist_len(routers), sizeof(double)); nodelist_assert_ok(); @@ -1596,11 +1596,11 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * networkstatus_getinfo_by_purpose(). */ void -dirserv_compute_bridge_flag_thresholds(routerlist_t *rl) +dirserv_compute_bridge_flag_thresholds(const smartlist_t *routers) { digestmap_t *omit_as_sybil = digestmap_new(); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); digestmap_free(omit_as_sybil, NULL); } @@ -1753,16 +1753,13 @@ dirserv_get_bandwidth_for_router_kb(const routerinfo_t *ri) * how many measured bandwidths we know. This is used to decide whether we * ever trust advertised bandwidths for purposes of assigning flags. */ static void -dirserv_count_measured_bws(routerlist_t *rl) +dirserv_count_measured_bws(const smartlist_t *routers) { /* Initialize this first */ routers_with_measured_bw = 0; - tor_assert(rl); - tor_assert(rl->routers); - /* Iterate over the routerlist and count measured bandwidths */ - SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) { + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { /* Check if we know a measured bandwidth for this one */ if (dirserv_has_measured_bw(ri->cache_info.identity_digest)) { ++routers_with_measured_bw; @@ -2854,6 +2851,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); routers_make_ed_keys_unique(routers); + /* After this point, don't use rl->routers; use 'routers' instead. */ routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); @@ -2864,9 +2862,9 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, /* Count how many have measured bandwidths so we know how to assign flags; * this must come before dirserv_compute_performance_thresholds() */ - dirserv_count_measured_bws(rl); + dirserv_count_measured_bws(routers); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); routerstatuses = smartlist_new(); microdescriptors = smartlist_new(); diff --git a/src/or/dirserv.h b/src/or/dirserv.h index d07339b..b16a67c 100644 --- a/src/or/dirserv.h +++
[tor-commits] [tor/master] In routers_make_ed_keys_unique, break ties for published_on
commit b24f15a9a16acc8009c25823a127f3090b9b2edc Author: Nick MathewsonDate: Tue Mar 15 10:34:05 2016 -0400 In routers_make_ed_keys_unique, break ties for published_on This ensures that if we can't use published_on to decide an ed,rsa mapping, we at least decide deterministically. Resolves 17668.T3 --- src/or/dirserv.c | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ab8ddfe..ae67e8e 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2124,7 +2124,8 @@ get_possible_sybil_list(const smartlist_t *routers) } /** If there are entries in routers with exactly the same ed25519 keys, - * remove the older one. May alter the order of the list. */ + * remove the older one. If they are exactly the same age, remove the one + * with the greater descriptor digest. May alter the order of the list. */ static void routers_make_ed_keys_unique(smartlist_t *routers) { @@ -2139,7 +2140,12 @@ routers_make_ed_keys_unique(smartlist_t *routers) if ((ri2 = digest256map_get(by_ed_key, pk))) { /* Duplicate; must omit one. Set the omit_from_vote flag in whichever * one has the earlier published_on. */ - if (ri2->cache_info.published_on < ri->cache_info.published_on) { + const time_t ri_pub = ri->cache_info.published_on; + const time_t ri2_pub = ri2->cache_info.published_on; + if (ri2_pub < ri_pub || + (ri2_pub == ri_pub && + memcmp(ri->cache_info.signed_descriptor_digest, + ri2->cache_info.signed_descriptor_digest,DIGEST_LEN)<0)) { digest256map_set(by_ed_key, pk, ri); ri2->omit_from_vote = 1; } else { ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Merge branch 'maint-0.2.7' into release-0.2.7
commit 54b23c7415c139f27cbc298823438a1a02dd4510 Merge: 30f5408 e1e62f9 Author: Nick MathewsonDate: Mon Mar 21 13:25:25 2016 -0400 Merge branch 'maint-0.2.7' into release-0.2.7 changes/bug17668 | 5 changes/bug17702 | 6 changes/bug18318_ed| 7 + changes/bug18368 | 5 src/or/dircollate.c| 78 ++ src/or/dircollate.h| 24 ++-- src/or/dirserv.c | 75 +--- src/or/dirserv.h | 2 +- src/or/dirvote.c | 35 ++ src/or/dirvote.h | 7 +++-- src/or/networkstatus.c | 2 +- src/or/or.h| 13 +++-- src/or/routerparse.c | 25 13 files changed, 239 insertions(+), 45 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Enable ed25519 collator in voting.
commit 60efce445b17d4b4153e91527887873812f5599f Author: Nick MathewsonDate: Mon Feb 22 10:07:42 2016 -0500 Enable ed25519 collator in voting. Previously, I had left in some debugging code with /*XXX*/ after it, which nobody noticed. Live and learn! Next time I will use /*XXX DO NOT COMMIT*/ or something. We need to define a new consensus method for this; consensus method 21 shouldn't actually be used. Fixes bug 17702; bugfix on 0.2.7.2-alpha. --- changes/bug17702| 6 ++ src/or/dircollate.c | 2 +- src/or/dirvote.c| 7 +++ src/or/dirvote.h| 7 --- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/changes/bug17702 b/changes/bug17702 new file mode 100644 index 000..4fda36f --- /dev/null +++ b/changes/bug17702 @@ -0,0 +1,6 @@ + o Major bugfixes: +- Actually enable Ed25519-based directory collation. + Previously, the code had been written, but some debugging code that had + accidentally been left in the codebase made it stay turned off. + Fixes bug 17702; bugfix on 0.2.7.2-alpha. + diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 4c812c4..f56aea8 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -159,7 +159,7 @@ dircollator_collate(dircollator_t *dc, int consensus_method) tor_assert(!dc->is_collated); dc->all_rsa_sha1_lst = smartlist_new(); - if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING + 10/*XXX*/) + if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING) dircollator_collate_by_rsa(dc); else dircollator_collate_by_ed25519(dc); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index d8e6ee2..be0635d 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -558,6 +558,13 @@ compute_consensus_method(smartlist_t *votes) static int consensus_method_is_supported(int method) { + if (method == MIN_METHOD_FOR_ED25519_ID_IN_MD) { +/* This method was broken due to buggy code accidently left in + * dircollate.c; do not actually use it. + */ +return 0; + } + return (method >= MIN_SUPPORTED_CONSENSUS_METHOD) && (method <= MAX_SUPPORTED_CONSENSUS_METHOD); } diff --git a/src/or/dirvote.h b/src/or/dirvote.h index dca8540..50c2496 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -55,7 +55,7 @@ #define MIN_SUPPORTED_CONSENSUS_METHOD 13 /** The highest consensus method that we currently support. */ -#define MAX_SUPPORTED_CONSENSUS_METHOD 21 +#define MAX_SUPPORTED_CONSENSUS_METHOD 22 /** Lowest consensus method where microdesc consensuses omit any entry * with no microdesc. */ @@ -87,11 +87,12 @@ #define MIN_METHOD_FOR_GUARDFRACTION 20 /** Lowest consensus method where authorities may include an "id" line for - * ed25519 identities in microdescriptors. */ + * ed25519 identities in microdescriptors. (Broken; see + * consensus_method_is_supported() for more info.) */ #define MIN_METHOD_FOR_ED25519_ID_IN_MD 21 /** Lowest consensus method where authorities vote on ed25519 ids and ensure * ed25519 id consistency. */ -#define MIN_METHOD_FOR_ED25519_ID_VOTING MIN_METHOD_FOR_ED25519_ID_IN_MD +#define MIN_METHOD_FOR_ED25519_ID_VOTING 22 /** Default bandwidth to clip unmeasured bandwidths to using method >= * MIN_METHOD_TO_CLIP_UNMEASURED_BW. (This is not a consensus method; do not ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Never vote for an ed key twice.
commit 13a31e72db1b009623aa55bd52ffe7390a22623d Author: Nick MathewsonDate: Mon Feb 22 11:43:59 2016 -0500 Never vote for an ed key twice. When generating a vote, and we have two routerinfos with the same ed key, omit the one published earlier. This was supposed to have been solved by key pinning, but when I made key pinning optional, I didn't realize that this would jump up and bite us. It is part of bug 18318, and the root cause of 17668. --- changes/bug18318_ed | 7 +++ src/or/dirserv.c| 39 +++ src/or/or.h | 4 3 files changed, 50 insertions(+) diff --git a/changes/bug18318_ed b/changes/bug18318_ed new file mode 100644 index 000..af39234 --- /dev/null +++ b/changes/bug18318_ed @@ -0,0 +1,7 @@ + o Major bugfixes: +- When generating a vote with keypinning disabled, never include two + entries for the same ed25519 identity. This bug was causing + authorities to generate votes that they could not parse when a router + violated key pinning by changing its RSA identity but keeping its + Ed25519 identity. Fixes bug 17668; fixes part of bug 18318. Bugfix on + 0.2.7.2-alpha. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 8d9f166..016514f 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2126,6 +2126,44 @@ get_possible_sybil_list(const smartlist_t *routers) return omit_as_sybil; } +/** If there are entries in routers with exactly the same ed25519 keys, + * remove the older one. May alter the order of the list. */ +static void +routers_make_ed_keys_unique(smartlist_t *routers) +{ + routerinfo_t *ri2; + digest256map_t *by_ed_key = digest256map_new(); + + SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) { +ri->omit_from_vote = 0; +if (ri->signing_key_cert == NULL) + continue; /* No ed key */ +const uint8_t *pk = ri->signing_key_cert->signing_key.pubkey; +if ((ri2 = digest256map_get(by_ed_key, pk))) { + /* Duplicate; must omit one. Set the omit_from_vote flag in whichever + * one has the earlier published_on. */ + if (ri2->cache_info.published_on < ri->cache_info.published_on) { +digest256map_set(by_ed_key, pk, ri); +ri2->omit_from_vote = 1; + } else { +ri->omit_from_vote = 1; + } +} else { + /* Add to map */ + digest256map_set(by_ed_key, pk, ri); +} + } SMARTLIST_FOREACH_END(ri); + + digest256map_free(by_ed_key, NULL); + + /* Now remove every router where the omit_from_vote flag got set. */ + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { +if (ri->omit_from_vote) { + SMARTLIST_DEL_CURRENT(routers, ri); +} + } SMARTLIST_FOREACH_END(ri); +} + /** Extract status information from ri and from other authority * functions and store it in rs>. * @@ -2815,6 +2853,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); + routers_make_ed_keys_unique(routers); routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); diff --git a/src/or/or.h b/src/or/or.h index 4496cbc..b6d6ec0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2081,6 +2081,10 @@ typedef struct { * tests for it. */ unsigned int needs_retest_if_added:1; + /** Used during voting to indicate that we should not include an entry for + * this routerinfo. Used only during voting. */ + unsigned int omit_from_vote:1; + /** Tor can use this router for general positions in circuits; we got it * from a directory server as usual, or we're an authority and a server * uploaded it. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Merge branch 'maint-0.2.7'
commit 6a91cab79c23b47c48e35e95661dfbe81be943dd Merge: c83bcc3 e1e62f9 Author: Nick MathewsonDate: Mon Mar 21 13:26:04 2016 -0400 Merge branch 'maint-0.2.7' changes/bug17668 | 5 changes/bug17702 | 6 changes/bug18318_ed| 7 + changes/bug18368 | 5 src/or/dircollate.c| 78 ++ src/or/dircollate.h| 24 ++-- src/or/dirserv.c | 75 +--- src/or/dirserv.h | 2 +- src/or/dirvote.c | 35 ++ src/or/dirvote.h | 7 +++-- src/or/networkstatus.c | 2 +- src/or/or.h| 13 +++-- src/or/routerparse.c | 25 13 files changed, 239 insertions(+), 45 deletions(-) diff --cc src/or/or.h index 4c295ab,431927c..301901e --- a/src/or/or.h +++ b/src/or/or.h @@@ -2153,11 -2081,10 +2153,15 @@@ typedef struct * tests for it. */ unsigned int needs_retest_if_added:1; + /** True iff this router included "tunnelled-dir-server" in its descriptor, + * implying it accepts tunnelled directory requests, or it advertised + * dir_port > 0. */ + unsigned int supports_tunnelled_dir_requests:1; + + /** Used during voting to indicate that we should not include an entry for +* this routerinfo. Used only during voting. */ + unsigned int omit_from_vote:1; + /** Tor can use this router for general positions in circuits; we got it * from a directory server as usual, or we're an authority and a server * uploaded it. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Enable ed25519 collator in voting.
commit 60efce445b17d4b4153e91527887873812f5599f Author: Nick MathewsonDate: Mon Feb 22 10:07:42 2016 -0500 Enable ed25519 collator in voting. Previously, I had left in some debugging code with /*XXX*/ after it, which nobody noticed. Live and learn! Next time I will use /*XXX DO NOT COMMIT*/ or something. We need to define a new consensus method for this; consensus method 21 shouldn't actually be used. Fixes bug 17702; bugfix on 0.2.7.2-alpha. --- changes/bug17702| 6 ++ src/or/dircollate.c | 2 +- src/or/dirvote.c| 7 +++ src/or/dirvote.h| 7 --- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/changes/bug17702 b/changes/bug17702 new file mode 100644 index 000..4fda36f --- /dev/null +++ b/changes/bug17702 @@ -0,0 +1,6 @@ + o Major bugfixes: +- Actually enable Ed25519-based directory collation. + Previously, the code had been written, but some debugging code that had + accidentally been left in the codebase made it stay turned off. + Fixes bug 17702; bugfix on 0.2.7.2-alpha. + diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 4c812c4..f56aea8 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -159,7 +159,7 @@ dircollator_collate(dircollator_t *dc, int consensus_method) tor_assert(!dc->is_collated); dc->all_rsa_sha1_lst = smartlist_new(); - if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING + 10/*XXX*/) + if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING) dircollator_collate_by_rsa(dc); else dircollator_collate_by_ed25519(dc); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index d8e6ee2..be0635d 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -558,6 +558,13 @@ compute_consensus_method(smartlist_t *votes) static int consensus_method_is_supported(int method) { + if (method == MIN_METHOD_FOR_ED25519_ID_IN_MD) { +/* This method was broken due to buggy code accidently left in + * dircollate.c; do not actually use it. + */ +return 0; + } + return (method >= MIN_SUPPORTED_CONSENSUS_METHOD) && (method <= MAX_SUPPORTED_CONSENSUS_METHOD); } diff --git a/src/or/dirvote.h b/src/or/dirvote.h index dca8540..50c2496 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -55,7 +55,7 @@ #define MIN_SUPPORTED_CONSENSUS_METHOD 13 /** The highest consensus method that we currently support. */ -#define MAX_SUPPORTED_CONSENSUS_METHOD 21 +#define MAX_SUPPORTED_CONSENSUS_METHOD 22 /** Lowest consensus method where microdesc consensuses omit any entry * with no microdesc. */ @@ -87,11 +87,12 @@ #define MIN_METHOD_FOR_GUARDFRACTION 20 /** Lowest consensus method where authorities may include an "id" line for - * ed25519 identities in microdescriptors. */ + * ed25519 identities in microdescriptors. (Broken; see + * consensus_method_is_supported() for more info.) */ #define MIN_METHOD_FOR_ED25519_ID_IN_MD 21 /** Lowest consensus method where authorities vote on ed25519 ids and ensure * ed25519 id consistency. */ -#define MIN_METHOD_FOR_ED25519_ID_VOTING MIN_METHOD_FOR_ED25519_ID_IN_MD +#define MIN_METHOD_FOR_ED25519_ID_VOTING 22 /** Default bandwidth to clip unmeasured bandwidths to using method >= * MIN_METHOD_TO_CLIP_UNMEASURED_BW. (This is not a consensus method; do not ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Fix another case of 17668: Add NoEdConsensus
commit fa07c60c67d69ff25c4e64172e3a38b29a2e6143 Author: Nick MathewsonDate: Tue Feb 23 09:31:23 2016 -0500 Fix another case of 17668: Add NoEdConsensus I had a half-built mechanism to track, during the voting process, whether the Ed25519 value (or lack thereof) reflected a true consensus among the authorities. But we never actually inserted this field in the consensus. The key idea here is that we first attempt to match up votes by pairs of , where can be NULL if we're told that there is no Ed key. If this succeeds, then we can treat all those votes as 'a consensus for Ed'. And we can include all other votes with a matching RSA key and no statement about Ed keys as being "also about the same relay." After that, we look for RSA keys we haven't actually found an entry for yet, and see if there are enough votes for them, NOT considering Ed keys. If there are, we match them as before, but we treat them as "not a consensus about ed". When we include an entry in a consensus, if it does not reflect a consensus about ed keys, then we include a new NoEdConsensus flag on it. This is all only for consensus method 22 or later. Also see corresponding dir-spec patch. --- changes/bug17668| 5 + src/or/dircollate.c | 4 +++- src/or/dirvote.c| 28 src/or/or.h | 5 - 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/changes/bug17668 b/changes/bug17668 new file mode 100644 index 000..fa5c1c8 --- /dev/null +++ b/changes/bug17668 @@ -0,0 +1,5 @@ + o Major bugfixes (voting): +- When collating votes by Ed25519 identities, authorities now + include a "NoEdConsensus" flag if the ed25519 value (or lack thereof) + for a server does not reflect the majority consensus. Related to bug + 17668; bugfix on 0.2.7.2-alpha. diff --git a/src/or/dircollate.c b/src/or/dircollate.c index eeb0c24..ca8b7ca 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -81,6 +81,8 @@ dircollator_add_routerstatus(dircollator_t *dc, { const char *id = vrs->status.identity_digest; + vrs->ed25519_reflects_consensus = 0; + (void) vote; vote_routerstatus_t **vrs_lst = digestmap_get(dc->by_rsa_sha1, id); if (NULL == vrs_lst) { @@ -92,7 +94,7 @@ dircollator_add_routerstatus(dircollator_t *dc, const uint8_t *ed = vrs->ed25519_id; - if (tor_mem_is_zero((char*)ed, DIGEST256_LEN)) + if (! vrs->has_ed25519_listing) return; ddmap_entry_t search, *found; diff --git a/src/or/dirvote.c b/src/or/dirvote.c index be0635d..654d461 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -1242,6 +1242,9 @@ networkstatus_compute_consensus(smartlist_t *votes, smartlist_free(combined_server_versions); smartlist_free(combined_client_versions); +if (consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING) + smartlist_add(flags, tor_strdup("NoEdConsensus")); + smartlist_sort_strings(flags); smartlist_uniq_strings(flags); @@ -1539,6 +1542,8 @@ networkstatus_compute_consensus(smartlist_t *votes, num_bandwidths = 0; num_mbws = 0; num_guardfraction_inputs = 0; + int ed_consensus = 0; + const uint8_t *ed_consensus_val = NULL; /* Okay, go through all the entries for this digest. */ for (int voter_idx = 0; voter_idx < smartlist_len(votes); ++voter_idx) { @@ -1580,6 +1585,17 @@ networkstatus_compute_consensus(smartlist_t *votes, if (rs->status.has_bandwidth) bandwidths_kb[num_bandwidths++] = rs->status.bandwidth_kb; + +/* Count number for which ed25519 is canonical. */ +if (rs->ed25519_reflects_consensus) { + ++ed_consensus; + if (ed_consensus_val) { +tor_assert(fast_memeq(ed_consensus_val, rs->ed25519_id, + ED25519_PUBKEY_LEN)); + } else { +ed_consensus_val = rs->ed25519_id; + } +} } /* We don't include this router at all unless more than half of @@ -1587,6 +1603,14 @@ networkstatus_compute_consensus(smartlist_t *votes, if (n_listing <= total_authorities/2) continue; + if (ed_consensus > 0) { +tor_assert(consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING); +if (ed_consensus <= total_authorities / 2) { + log_warn(LD_BUG, "Not enough entries had ed_consensus set; how " + "can we have a consensus of %d?", ed_consensus); +} + } + /* The clangalyzer can't figure out that this will never be NULL * if n_listing is at least 1 */ tor_assert(current_rsa_id); @@ -1640,6 +1664,10 @@ networkstatus_compute_consensus(smartlist_t *votes, } else if (!strcmp(fl, "Unnamed")) { if (is_unnamed) smartlist_add(chosen_flags, (char*)fl); +} else if (!strcmp(fl,
[tor-commits] [tor/master] Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7
commit e1e62f9d5735da64dc1435d3a40db77f6229766a Merge: 920e3d6 2f2fba8 Author: Nick MathewsonDate: Mon Mar 21 13:25:12 2016 -0400 Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7 changes/bug17668 | 5 changes/bug17702 | 6 changes/bug18318_ed| 7 + changes/bug18368 | 5 src/or/dircollate.c| 78 ++ src/or/dircollate.h| 24 ++-- src/or/dirserv.c | 75 +--- src/or/dirserv.h | 2 +- src/or/dirvote.c | 35 ++ src/or/dirvote.h | 7 +++-- src/or/networkstatus.c | 2 +- src/or/or.h| 13 +++-- src/or/routerparse.c | 25 13 files changed, 239 insertions(+), 45 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Document has_ed25519_listing
commit 60ca3f358f80930778b12c9fcc8e3cf562b64e8e Author: Nick MathewsonDate: Tue Feb 23 08:13:39 2016 -0500 Document has_ed25519_listing --- src/or/or.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/or.h b/src/or/or.h index b6d6ec0..b24b6a8 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2377,7 +2377,9 @@ typedef struct vote_routerstatus_t { char *version; /**< The version that the authority says this router is * running. */ unsigned int has_measured_bw:1; /**< The vote had a measured bw */ - unsigned int has_ed25519_listing:1; /** DOCDOC */ + /** True iff the vote included an entry for ed25519 ID, or included + * "id ed25519 none" to indicate that there was no ed25519 ID. */ + unsigned int has_ed25519_listing:1; unsigned int ed25519_reflects_consensus:1; /** DOCDOC */ uint32_t measured_bw_kb; /**< Measured bandwidth (capacity) of the router */ /** The hash or hashes that the authority claims this microdesc has. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Use nth consistently in dircollate.h.
commit 2f2fba8a918674b7187a5b497bb156b79aaec4e1 Author: Nick MathewsonDate: Tue Mar 15 10:39:50 2016 -0400 Use nth consistently in dircollate.h. Documentation-only patch. Issue 17668.T6. --- src/or/dircollate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 2f02512..43cf27f 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -22,8 +22,8 @@ static void dircollator_collate_by_ed25519(dircollator_t *dc); typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; - /* The i'th member of this array corresponds to the vote_routerstatus_t (if - * any) received for this digest pair from the n'th voter. */ + /* The nth member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the nth voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/master] Fix another case of 17668: Add NoEdConsensus
commit fa07c60c67d69ff25c4e64172e3a38b29a2e6143 Author: Nick MathewsonDate: Tue Feb 23 09:31:23 2016 -0500 Fix another case of 17668: Add NoEdConsensus I had a half-built mechanism to track, during the voting process, whether the Ed25519 value (or lack thereof) reflected a true consensus among the authorities. But we never actually inserted this field in the consensus. The key idea here is that we first attempt to match up votes by pairs of , where can be NULL if we're told that there is no Ed key. If this succeeds, then we can treat all those votes as 'a consensus for Ed'. And we can include all other votes with a matching RSA key and no statement about Ed keys as being "also about the same relay." After that, we look for RSA keys we haven't actually found an entry for yet, and see if there are enough votes for them, NOT considering Ed keys. If there are, we match them as before, but we treat them as "not a consensus about ed". When we include an entry in a consensus, if it does not reflect a consensus about ed keys, then we include a new NoEdConsensus flag on it. This is all only for consensus method 22 or later. Also see corresponding dir-spec patch. --- changes/bug17668| 5 + src/or/dircollate.c | 4 +++- src/or/dirvote.c| 28 src/or/or.h | 5 - 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/changes/bug17668 b/changes/bug17668 new file mode 100644 index 000..fa5c1c8 --- /dev/null +++ b/changes/bug17668 @@ -0,0 +1,5 @@ + o Major bugfixes (voting): +- When collating votes by Ed25519 identities, authorities now + include a "NoEdConsensus" flag if the ed25519 value (or lack thereof) + for a server does not reflect the majority consensus. Related to bug + 17668; bugfix on 0.2.7.2-alpha. diff --git a/src/or/dircollate.c b/src/or/dircollate.c index eeb0c24..ca8b7ca 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -81,6 +81,8 @@ dircollator_add_routerstatus(dircollator_t *dc, { const char *id = vrs->status.identity_digest; + vrs->ed25519_reflects_consensus = 0; + (void) vote; vote_routerstatus_t **vrs_lst = digestmap_get(dc->by_rsa_sha1, id); if (NULL == vrs_lst) { @@ -92,7 +94,7 @@ dircollator_add_routerstatus(dircollator_t *dc, const uint8_t *ed = vrs->ed25519_id; - if (tor_mem_is_zero((char*)ed, DIGEST256_LEN)) + if (! vrs->has_ed25519_listing) return; ddmap_entry_t search, *found; diff --git a/src/or/dirvote.c b/src/or/dirvote.c index be0635d..654d461 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -1242,6 +1242,9 @@ networkstatus_compute_consensus(smartlist_t *votes, smartlist_free(combined_server_versions); smartlist_free(combined_client_versions); +if (consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING) + smartlist_add(flags, tor_strdup("NoEdConsensus")); + smartlist_sort_strings(flags); smartlist_uniq_strings(flags); @@ -1539,6 +1542,8 @@ networkstatus_compute_consensus(smartlist_t *votes, num_bandwidths = 0; num_mbws = 0; num_guardfraction_inputs = 0; + int ed_consensus = 0; + const uint8_t *ed_consensus_val = NULL; /* Okay, go through all the entries for this digest. */ for (int voter_idx = 0; voter_idx < smartlist_len(votes); ++voter_idx) { @@ -1580,6 +1585,17 @@ networkstatus_compute_consensus(smartlist_t *votes, if (rs->status.has_bandwidth) bandwidths_kb[num_bandwidths++] = rs->status.bandwidth_kb; + +/* Count number for which ed25519 is canonical. */ +if (rs->ed25519_reflects_consensus) { + ++ed_consensus; + if (ed_consensus_val) { +tor_assert(fast_memeq(ed_consensus_val, rs->ed25519_id, + ED25519_PUBKEY_LEN)); + } else { +ed_consensus_val = rs->ed25519_id; + } +} } /* We don't include this router at all unless more than half of @@ -1587,6 +1603,14 @@ networkstatus_compute_consensus(smartlist_t *votes, if (n_listing <= total_authorities/2) continue; + if (ed_consensus > 0) { +tor_assert(consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING); +if (ed_consensus <= total_authorities / 2) { + log_warn(LD_BUG, "Not enough entries had ed_consensus set; how " + "can we have a consensus of %d?", ed_consensus); +} + } + /* The clangalyzer can't figure out that this will never be NULL * if n_listing is at least 1 */ tor_assert(current_rsa_id); @@ -1640,6 +1664,10 @@ networkstatus_compute_consensus(smartlist_t *votes, } else if (!strcmp(fl, "Unnamed")) { if (is_unnamed) smartlist_add(chosen_flags, (char*)fl); +} else if (!strcmp(fl,
[tor-commits] [tor/master] Fix log message subjects in networkstatus_parse_vote_from_string()
commit c20e34e1894bed07982fe64d60a1b3fe9403d269 Author: Nick MathewsonDate: Mon Feb 22 10:59:27 2016 -0500 Fix log message subjects in networkstatus_parse_vote_from_string() Some of these messages called the thing being parsed a "vote" whether it is a vote or a consensus. Fixes bug 18368. --- changes/bug18368 | 5 + src/or/routerparse.c | 25 - 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/changes/bug18368 b/changes/bug18368 new file mode 100644 index 000..17218d4 --- /dev/null +++ b/changes/bug18368 @@ -0,0 +1,5 @@ + o Minor bugfixes: +- When logging information about an unparseable networkstatus vote or + consensus, do not say "vote" when we mean consensus. Fixes bug + 18368; bugfix on 0.2.0.8-alpha. + diff --git a/src/or/routerparse.c b/src/or/routerparse.c index f898ef8..6b6e21d 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -2862,7 +2862,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, (ns_type == NS_TYPE_CONSENSUS) ? networkstatus_consensus_token_table : networkstatus_token_table, 0)) { -log_warn(LD_DIR, "Error tokenizing network-status vote header"); +log_warn(LD_DIR, "Error tokenizing network-status header"); goto err; } @@ -3085,7 +3085,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(voter->identity_digest, sizeof(voter->identity_digest), tok->args[1], HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding identity digest %s in " - "network-status vote.", escaped(tok->args[1])); + "network-status document.", escaped(tok->args[1])); goto err; } if (ns->type != NS_TYPE_CONSENSUS && @@ -3144,7 +3144,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, voter = NULL; } if (smartlist_len(ns->voters) == 0) { -log_warn(LD_DIR, "Missing dir-source elements in a vote networkstatus."); +log_warn(LD_DIR, "Missing dir-source elements in a networkstatus."); goto err; } else if (ns->type != NS_TYPE_CONSENSUS && smartlist_len(ns->voters) != 1) { log_warn(LD_DIR, "Too many dir-source elements in a vote networkstatus."); @@ -3205,8 +3205,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } if (fast_memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) >= 0) { - log_warn(LD_DIR, "Vote networkstatus entries not sorted by identity " - "digest"); + log_warn(LD_DIR, "Networkstatus entries not sorted by identity digest"); goto err; } } @@ -3319,12 +3318,12 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(declared_identity, sizeof(declared_identity), id_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared identity %s in " - "network-status vote.", escaped(id_hexdigest)); + "network-status document.", escaped(id_hexdigest)); goto err; } if (!(v = networkstatus_get_voter_by_id(ns, declared_identity))) { - log_warn(LD_DIR, "ID on signature on network-status vote does not match " - "any declared directory source."); + log_warn(LD_DIR, "ID on signature on network-status document does " + "not match any declared directory source."); goto err; } sig = tor_malloc_zero(sizeof(document_signature_t)); @@ -3334,7 +,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(sig->signing_key_digest, sizeof(sig->signing_key_digest), sk_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared signing key digest %s in " - "network-status vote.", escaped(sk_hexdigest)); + "network-status document.", escaped(sk_hexdigest)); tor_free(sig); goto err; } @@ -3353,8 +3352,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, /* We already parsed a vote with this algorithm from this voter. Use the first one. */ log_fn(LOG_PROTOCOL_WARN, LD_DIR, "We received a networkstatus " - "that contains two votes from the same voter with the same " - "algorithm. Ignoring the second vote."); + "that contains two signatures from the same voter with the same " + "algorithm. Ignoring the second signature."); tor_free(sig); continue; } @@ -3362,7 +3361,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, if (ns->type != NS_TYPE_CONSENSUS) { if (check_signature_token(ns_digests.d[DIGEST_SHA1], DIGEST_LEN,
[tor-commits] [tor/release-0.2.7] In routers_make_ed_keys_unique, break ties for published_on
commit b24f15a9a16acc8009c25823a127f3090b9b2edc Author: Nick MathewsonDate: Tue Mar 15 10:34:05 2016 -0400 In routers_make_ed_keys_unique, break ties for published_on This ensures that if we can't use published_on to decide an ed,rsa mapping, we at least decide deterministically. Resolves 17668.T3 --- src/or/dirserv.c | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ab8ddfe..ae67e8e 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2124,7 +2124,8 @@ get_possible_sybil_list(const smartlist_t *routers) } /** If there are entries in routers with exactly the same ed25519 keys, - * remove the older one. May alter the order of the list. */ + * remove the older one. If they are exactly the same age, remove the one + * with the greater descriptor digest. May alter the order of the list. */ static void routers_make_ed_keys_unique(smartlist_t *routers) { @@ -2139,7 +2140,12 @@ routers_make_ed_keys_unique(smartlist_t *routers) if ((ri2 = digest256map_get(by_ed_key, pk))) { /* Duplicate; must omit one. Set the omit_from_vote flag in whichever * one has the earlier published_on. */ - if (ri2->cache_info.published_on < ri->cache_info.published_on) { + const time_t ri_pub = ri->cache_info.published_on; + const time_t ri2_pub = ri2->cache_info.published_on; + if (ri2_pub < ri_pub || + (ri2_pub == ri_pub && + memcmp(ri->cache_info.signed_descriptor_digest, + ri2->cache_info.signed_descriptor_digest,DIGEST_LEN)<0)) { digest256map_set(by_ed_key, pk, ri); ri2->omit_from_vote = 1; } else { ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Document dircollate.c (and remove an unused global)
commit 6182e3462875d81dc3501bf0f1ad04fb658c2838 Author: Nick MathewsonDate: Mon Feb 22 10:39:42 2016 -0500 Document dircollate.c (and remove an unused global) --- src/or/dircollate.c | 70 ++--- src/or/dircollate.h | 24 +++--- 2 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index f56aea8..eeb0c24 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -17,20 +17,24 @@ static void dircollator_collate_by_rsa(dircollator_t *dc); static void dircollator_collate_by_ed25519(dircollator_t *dc); +/** Hashtable entry mapping a pair of digests (actually an ed25519 key and an + * RSA SHA1 digest) to an array of vote_routerstatus_t. */ typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; + /* The i'th member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the n'th voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; -double_digest_map_t *by_both_ids; - +/** Release all storage held by e. */ static void ddmap_entry_free(ddmap_entry_t *e) { tor_free(e); } +/** Return a new empty ddmap_entry, with n_votes elements in vrs_list. */ static ddmap_entry_t * ddmap_entry_new(int n_votes) { @@ -50,6 +54,8 @@ ddmap_entry_eq(const ddmap_entry_t *a, const ddmap_entry_t *b) return fast_memeq(a->d, b->d, sizeof(a->d)); } +/** Record the RSA identity of ent as rsa_sha1, and the + * ed25519 identity as ed25519. */ static void ddmap_entry_set_digests(ddmap_entry_t *ent, const uint8_t *rsa_sha1, @@ -63,6 +69,10 @@ HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq); HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_); + +/** Helper: add a single vote_routerstatus_t vrs to the collator + * dc, indexing it by its RSA key digest, and by the 2-tuple of + * its RSA key digest and Ed25519 key. */ static void dircollator_add_routerstatus(dircollator_t *dc, int vote_num, @@ -99,6 +109,8 @@ dircollator_add_routerstatus(dircollator_t *dc, vrs_lst[vote_num] = vrs; } +/** Create and return a new dircollator object to use when collating + * n_votes out of a total of n_authorities. */ dircollator_t * dircollator_new(int n_votes, int n_authorities) { @@ -115,6 +127,7 @@ dircollator_new(int n_votes, int n_authorities) return dc; } +/** Release all storage held by dc. */ void dircollator_free(dircollator_t *dc) { @@ -139,6 +152,10 @@ dircollator_free(dircollator_t *dc) tor_free(dc); } +/** Add a single vote v to a dircollator dc. This function must + * be called exactly once for each vote to be used in the consensus. It may + * only be called before dircollator_collate(). + */ void dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) { @@ -153,6 +170,9 @@ dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) } SMARTLIST_FOREACH_END(vrs); } +/** Sort the entries in dc according to consensus_method, so + * that the consensus process can iterate over them with + * dircollator_n_routers() and dircollator_get_votes_for_router(). */ void dircollator_collate(dircollator_t *dc, int consensus_method) { @@ -168,6 +188,15 @@ dircollator_collate(dircollator_t *dc, int consensus_method) dc->is_collated = 1; } +/** + * Collation function for RSA-only consensuses: collate the votes for each + * entry in dc by their RSA keys. + * + * The rule is: + *If an RSA identity key is listed by more than half of the authorities, + *include that identity, and treat all descriptors with that RSA identity + *as describing the same router. + */ static void dircollator_collate_by_rsa(dircollator_t *dc) { @@ -189,6 +218,20 @@ dircollator_collate_by_rsa(dircollator_t *dc) dc->by_collated_rsa_sha1 = dc->by_rsa_sha1; } +/** + * Collation function for ed25519 consensuses: collate the votes for each + * entry in dc by ed25519 key and by RSA key. + * + * The rule is, approximately: + *If a identity is listed by more than half of authorities, + *include it. And include all -only votes about that node as + *matching. + * + *Otherwise, if an <*,rsa> or identity is listed by more than + *half of the authorities, and no pair for the same RSA key + *has been already been included based on the rule above, include + *that RSA identity. + */ static void dircollator_collate_by_ed25519(dircollator_t *dc) { @@ -197,6 +240,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) ddmap_entry_t **iter; + /* Go over all pairs */ HT_FOREACH(iter, double_digest_map, >by_both_ids) { ddmap_entry_t *ent = *iter; int n = 0, i; @@ -205,9 +249,13 @@
[tor-commits] [tor/master] Assert that dircollator is collated when we're reading its output.
commit beef6ed45160f096815b4ea840ff671fb484d1da Author: Nick MathewsonDate: Tue Mar 15 10:24:18 2016 -0400 Assert that dircollator is collated when we're reading its output. Fix for 17668.S2. --- src/or/dircollate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index ca8b7ca..2f02512 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -303,6 +303,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) int dircollator_n_routers(dircollator_t *dc) { + tor_assert(dc->is_collated); return smartlist_len(dc->all_rsa_sha1_lst); } @@ -317,6 +318,7 @@ dircollator_n_routers(dircollator_t *dc) vote_routerstatus_t ** dircollator_get_votes_for_router(dircollator_t *dc, int idx) { + tor_assert(dc->is_collated); tor_assert(idx < smartlist_len(dc->all_rsa_sha1_lst)); return digestmap_get(dc->by_collated_rsa_sha1, smartlist_get(dc->all_rsa_sha1_lst, idx)); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/release-0.2.7] Fix log message subjects in networkstatus_parse_vote_from_string()
commit c20e34e1894bed07982fe64d60a1b3fe9403d269 Author: Nick MathewsonDate: Mon Feb 22 10:59:27 2016 -0500 Fix log message subjects in networkstatus_parse_vote_from_string() Some of these messages called the thing being parsed a "vote" whether it is a vote or a consensus. Fixes bug 18368. --- changes/bug18368 | 5 + src/or/routerparse.c | 25 - 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/changes/bug18368 b/changes/bug18368 new file mode 100644 index 000..17218d4 --- /dev/null +++ b/changes/bug18368 @@ -0,0 +1,5 @@ + o Minor bugfixes: +- When logging information about an unparseable networkstatus vote or + consensus, do not say "vote" when we mean consensus. Fixes bug + 18368; bugfix on 0.2.0.8-alpha. + diff --git a/src/or/routerparse.c b/src/or/routerparse.c index f898ef8..6b6e21d 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -2862,7 +2862,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, (ns_type == NS_TYPE_CONSENSUS) ? networkstatus_consensus_token_table : networkstatus_token_table, 0)) { -log_warn(LD_DIR, "Error tokenizing network-status vote header"); +log_warn(LD_DIR, "Error tokenizing network-status header"); goto err; } @@ -3085,7 +3085,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(voter->identity_digest, sizeof(voter->identity_digest), tok->args[1], HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding identity digest %s in " - "network-status vote.", escaped(tok->args[1])); + "network-status document.", escaped(tok->args[1])); goto err; } if (ns->type != NS_TYPE_CONSENSUS && @@ -3144,7 +3144,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, voter = NULL; } if (smartlist_len(ns->voters) == 0) { -log_warn(LD_DIR, "Missing dir-source elements in a vote networkstatus."); +log_warn(LD_DIR, "Missing dir-source elements in a networkstatus."); goto err; } else if (ns->type != NS_TYPE_CONSENSUS && smartlist_len(ns->voters) != 1) { log_warn(LD_DIR, "Too many dir-source elements in a vote networkstatus."); @@ -3205,8 +3205,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } if (fast_memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) >= 0) { - log_warn(LD_DIR, "Vote networkstatus entries not sorted by identity " - "digest"); + log_warn(LD_DIR, "Networkstatus entries not sorted by identity digest"); goto err; } } @@ -3319,12 +3318,12 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(declared_identity, sizeof(declared_identity), id_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared identity %s in " - "network-status vote.", escaped(id_hexdigest)); + "network-status document.", escaped(id_hexdigest)); goto err; } if (!(v = networkstatus_get_voter_by_id(ns, declared_identity))) { - log_warn(LD_DIR, "ID on signature on network-status vote does not match " - "any declared directory source."); + log_warn(LD_DIR, "ID on signature on network-status document does " + "not match any declared directory source."); goto err; } sig = tor_malloc_zero(sizeof(document_signature_t)); @@ -3334,7 +,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(sig->signing_key_digest, sizeof(sig->signing_key_digest), sk_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared signing key digest %s in " - "network-status vote.", escaped(sk_hexdigest)); + "network-status document.", escaped(sk_hexdigest)); tor_free(sig); goto err; } @@ -3353,8 +3352,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, /* We already parsed a vote with this algorithm from this voter. Use the first one. */ log_fn(LOG_PROTOCOL_WARN, LD_DIR, "We received a networkstatus " - "that contains two votes from the same voter with the same " - "algorithm. Ignoring the second vote."); + "that contains two signatures from the same voter with the same " + "algorithm. Ignoring the second signature."); tor_free(sig); continue; } @@ -3362,7 +3361,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, if (ns->type != NS_TYPE_CONSENSUS) { if (check_signature_token(ns_digests.d[DIGEST_SHA1], DIGEST_LEN,
[tor-commits] [tor/master] Document dircollate.c (and remove an unused global)
commit 6182e3462875d81dc3501bf0f1ad04fb658c2838 Author: Nick MathewsonDate: Mon Feb 22 10:39:42 2016 -0500 Document dircollate.c (and remove an unused global) --- src/or/dircollate.c | 70 ++--- src/or/dircollate.h | 24 +++--- 2 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index f56aea8..eeb0c24 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -17,20 +17,24 @@ static void dircollator_collate_by_rsa(dircollator_t *dc); static void dircollator_collate_by_ed25519(dircollator_t *dc); +/** Hashtable entry mapping a pair of digests (actually an ed25519 key and an + * RSA SHA1 digest) to an array of vote_routerstatus_t. */ typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; + /* The i'th member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the n'th voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; -double_digest_map_t *by_both_ids; - +/** Release all storage held by e. */ static void ddmap_entry_free(ddmap_entry_t *e) { tor_free(e); } +/** Return a new empty ddmap_entry, with n_votes elements in vrs_list. */ static ddmap_entry_t * ddmap_entry_new(int n_votes) { @@ -50,6 +54,8 @@ ddmap_entry_eq(const ddmap_entry_t *a, const ddmap_entry_t *b) return fast_memeq(a->d, b->d, sizeof(a->d)); } +/** Record the RSA identity of ent as rsa_sha1, and the + * ed25519 identity as ed25519. */ static void ddmap_entry_set_digests(ddmap_entry_t *ent, const uint8_t *rsa_sha1, @@ -63,6 +69,10 @@ HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq); HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_); + +/** Helper: add a single vote_routerstatus_t vrs to the collator + * dc, indexing it by its RSA key digest, and by the 2-tuple of + * its RSA key digest and Ed25519 key. */ static void dircollator_add_routerstatus(dircollator_t *dc, int vote_num, @@ -99,6 +109,8 @@ dircollator_add_routerstatus(dircollator_t *dc, vrs_lst[vote_num] = vrs; } +/** Create and return a new dircollator object to use when collating + * n_votes out of a total of n_authorities. */ dircollator_t * dircollator_new(int n_votes, int n_authorities) { @@ -115,6 +127,7 @@ dircollator_new(int n_votes, int n_authorities) return dc; } +/** Release all storage held by dc. */ void dircollator_free(dircollator_t *dc) { @@ -139,6 +152,10 @@ dircollator_free(dircollator_t *dc) tor_free(dc); } +/** Add a single vote v to a dircollator dc. This function must + * be called exactly once for each vote to be used in the consensus. It may + * only be called before dircollator_collate(). + */ void dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) { @@ -153,6 +170,9 @@ dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) } SMARTLIST_FOREACH_END(vrs); } +/** Sort the entries in dc according to consensus_method, so + * that the consensus process can iterate over them with + * dircollator_n_routers() and dircollator_get_votes_for_router(). */ void dircollator_collate(dircollator_t *dc, int consensus_method) { @@ -168,6 +188,15 @@ dircollator_collate(dircollator_t *dc, int consensus_method) dc->is_collated = 1; } +/** + * Collation function for RSA-only consensuses: collate the votes for each + * entry in dc by their RSA keys. + * + * The rule is: + *If an RSA identity key is listed by more than half of the authorities, + *include that identity, and treat all descriptors with that RSA identity + *as describing the same router. + */ static void dircollator_collate_by_rsa(dircollator_t *dc) { @@ -189,6 +218,20 @@ dircollator_collate_by_rsa(dircollator_t *dc) dc->by_collated_rsa_sha1 = dc->by_rsa_sha1; } +/** + * Collation function for ed25519 consensuses: collate the votes for each + * entry in dc by ed25519 key and by RSA key. + * + * The rule is, approximately: + *If a identity is listed by more than half of authorities, + *include it. And include all -only votes about that node as + *matching. + * + *Otherwise, if an <*,rsa> or identity is listed by more than + *half of the authorities, and no pair for the same RSA key + *has been already been included based on the rule above, include + *that RSA identity. + */ static void dircollator_collate_by_ed25519(dircollator_t *dc) { @@ -197,6 +240,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) ddmap_entry_t **iter; + /* Go over all pairs */ HT_FOREACH(iter, double_digest_map, >by_both_ids) { ddmap_entry_t *ent = *iter; int n = 0, i; @@ -205,9 +249,13 @@
[tor-commits] [tor/maint-0.2.7] Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7
commit e1e62f9d5735da64dc1435d3a40db77f6229766a Merge: 920e3d6 2f2fba8 Author: Nick MathewsonDate: Mon Mar 21 13:25:12 2016 -0400 Merge branch 'ed25519_voting_fixes_squashed' into maint-0.2.7 changes/bug17668 | 5 changes/bug17702 | 6 changes/bug18318_ed| 7 + changes/bug18368 | 5 src/or/dircollate.c| 78 ++ src/or/dircollate.h| 24 ++-- src/or/dirserv.c | 75 +--- src/or/dirserv.h | 2 +- src/or/dirvote.c | 35 ++ src/or/dirvote.h | 7 +++-- src/or/networkstatus.c | 2 +- src/or/or.h| 13 +++-- src/or/routerparse.c | 25 13 files changed, 239 insertions(+), 45 deletions(-) ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] After we strip out duplicate entries from 'routers', don't use 'rl'.
commit 48f8229504a00085676a737d9b519548ffc9d145 Author: Nick MathewsonDate: Tue Mar 15 10:15:59 2016 -0400 After we strip out duplicate entries from 'routers', don't use 'rl'. We've got to make sure that every single subsequent calculation in dirserv_generate_networkstatus_vote_obj() are based on the list of routerinfo_t *after* we've removed possible duplicates, not before. Fortunately, none of the functions that were taking a routerlist_t as an argument were actually using any fields other than this list of routers. Resolves issue 18318.DG3. --- src/or/dirserv.c | 30 ++ src/or/dirserv.h | 2 +- src/or/networkstatus.c | 2 +- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 016514f..ab8ddfe 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1422,7 +1422,7 @@ router_counts_toward_thresholds(const node_t *node, time_t now, * * Also, set the is_exit flag of each router appropriately. */ static void -dirserv_compute_performance_thresholds(routerlist_t *rl, +dirserv_compute_performance_thresholds(const smartlist_t *routers, digestmap_t *omit_as_sybil) { int n_active, n_active_nonexit, n_familiar; @@ -1450,18 +1450,18 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * sort them and use that to compute thresholds. */ n_active = n_active_nonexit = 0; /* Uptime for every active router. */ - uptimes = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + uptimes = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active router. */ - bandwidths_kb = tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); + bandwidths_kb = tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Bandwidth for every active non-exit router. */ bandwidths_excluding_exits_kb = -tor_calloc(smartlist_len(rl->routers), sizeof(uint32_t)); +tor_calloc(smartlist_len(routers), sizeof(uint32_t)); /* Weighted mean time between failure for each active router. */ - mtbfs = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + mtbfs = tor_calloc(smartlist_len(routers), sizeof(double)); /* Time-known for each active router. */ - tks = tor_calloc(smartlist_len(rl->routers), sizeof(long)); + tks = tor_calloc(smartlist_len(routers), sizeof(long)); /* Weighted fractional uptime for each active router. */ - wfus = tor_calloc(smartlist_len(rl->routers), sizeof(double)); + wfus = tor_calloc(smartlist_len(routers), sizeof(double)); nodelist_assert_ok(); @@ -1596,11 +1596,11 @@ dirserv_compute_performance_thresholds(routerlist_t *rl, * networkstatus_getinfo_by_purpose(). */ void -dirserv_compute_bridge_flag_thresholds(routerlist_t *rl) +dirserv_compute_bridge_flag_thresholds(const smartlist_t *routers) { digestmap_t *omit_as_sybil = digestmap_new(); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); digestmap_free(omit_as_sybil, NULL); } @@ -1753,16 +1753,13 @@ dirserv_get_bandwidth_for_router_kb(const routerinfo_t *ri) * how many measured bandwidths we know. This is used to decide whether we * ever trust advertised bandwidths for purposes of assigning flags. */ static void -dirserv_count_measured_bws(routerlist_t *rl) +dirserv_count_measured_bws(const smartlist_t *routers) { /* Initialize this first */ routers_with_measured_bw = 0; - tor_assert(rl); - tor_assert(rl->routers); - /* Iterate over the routerlist and count measured bandwidths */ - SMARTLIST_FOREACH_BEGIN(rl->routers, routerinfo_t *, ri) { + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { /* Check if we know a measured bandwidth for this one */ if (dirserv_has_measured_bw(ri->cache_info.identity_digest)) { ++routers_with_measured_bw; @@ -2854,6 +2851,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); routers_make_ed_keys_unique(routers); + /* After this point, don't use rl->routers; use 'routers' instead. */ routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); @@ -2864,9 +2862,9 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, /* Count how many have measured bandwidths so we know how to assign flags; * this must come before dirserv_compute_performance_thresholds() */ - dirserv_count_measured_bws(rl); + dirserv_count_measured_bws(routers); - dirserv_compute_performance_thresholds(rl, omit_as_sybil); + dirserv_compute_performance_thresholds(routers, omit_as_sybil); routerstatuses = smartlist_new(); microdescriptors = smartlist_new(); diff --git a/src/or/dirserv.h b/src/or/dirserv.h index d07339b..b16a67c 100644 --- a/src/or/dirserv.h +++
[tor-commits] [tor/maint-0.2.7] Document dircollate.c (and remove an unused global)
commit 6182e3462875d81dc3501bf0f1ad04fb658c2838 Author: Nick MathewsonDate: Mon Feb 22 10:39:42 2016 -0500 Document dircollate.c (and remove an unused global) --- src/or/dircollate.c | 70 ++--- src/or/dircollate.h | 24 +++--- 2 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index f56aea8..eeb0c24 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -17,20 +17,24 @@ static void dircollator_collate_by_rsa(dircollator_t *dc); static void dircollator_collate_by_ed25519(dircollator_t *dc); +/** Hashtable entry mapping a pair of digests (actually an ed25519 key and an + * RSA SHA1 digest) to an array of vote_routerstatus_t. */ typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; + /* The i'th member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the n'th voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; -double_digest_map_t *by_both_ids; - +/** Release all storage held by e. */ static void ddmap_entry_free(ddmap_entry_t *e) { tor_free(e); } +/** Return a new empty ddmap_entry, with n_votes elements in vrs_list. */ static ddmap_entry_t * ddmap_entry_new(int n_votes) { @@ -50,6 +54,8 @@ ddmap_entry_eq(const ddmap_entry_t *a, const ddmap_entry_t *b) return fast_memeq(a->d, b->d, sizeof(a->d)); } +/** Record the RSA identity of ent as rsa_sha1, and the + * ed25519 identity as ed25519. */ static void ddmap_entry_set_digests(ddmap_entry_t *ent, const uint8_t *rsa_sha1, @@ -63,6 +69,10 @@ HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq); HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash, ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_); + +/** Helper: add a single vote_routerstatus_t vrs to the collator + * dc, indexing it by its RSA key digest, and by the 2-tuple of + * its RSA key digest and Ed25519 key. */ static void dircollator_add_routerstatus(dircollator_t *dc, int vote_num, @@ -99,6 +109,8 @@ dircollator_add_routerstatus(dircollator_t *dc, vrs_lst[vote_num] = vrs; } +/** Create and return a new dircollator object to use when collating + * n_votes out of a total of n_authorities. */ dircollator_t * dircollator_new(int n_votes, int n_authorities) { @@ -115,6 +127,7 @@ dircollator_new(int n_votes, int n_authorities) return dc; } +/** Release all storage held by dc. */ void dircollator_free(dircollator_t *dc) { @@ -139,6 +152,10 @@ dircollator_free(dircollator_t *dc) tor_free(dc); } +/** Add a single vote v to a dircollator dc. This function must + * be called exactly once for each vote to be used in the consensus. It may + * only be called before dircollator_collate(). + */ void dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) { @@ -153,6 +170,9 @@ dircollator_add_vote(dircollator_t *dc, networkstatus_t *v) } SMARTLIST_FOREACH_END(vrs); } +/** Sort the entries in dc according to consensus_method, so + * that the consensus process can iterate over them with + * dircollator_n_routers() and dircollator_get_votes_for_router(). */ void dircollator_collate(dircollator_t *dc, int consensus_method) { @@ -168,6 +188,15 @@ dircollator_collate(dircollator_t *dc, int consensus_method) dc->is_collated = 1; } +/** + * Collation function for RSA-only consensuses: collate the votes for each + * entry in dc by their RSA keys. + * + * The rule is: + *If an RSA identity key is listed by more than half of the authorities, + *include that identity, and treat all descriptors with that RSA identity + *as describing the same router. + */ static void dircollator_collate_by_rsa(dircollator_t *dc) { @@ -189,6 +218,20 @@ dircollator_collate_by_rsa(dircollator_t *dc) dc->by_collated_rsa_sha1 = dc->by_rsa_sha1; } +/** + * Collation function for ed25519 consensuses: collate the votes for each + * entry in dc by ed25519 key and by RSA key. + * + * The rule is, approximately: + *If a identity is listed by more than half of authorities, + *include it. And include all -only votes about that node as + *matching. + * + *Otherwise, if an <*,rsa> or identity is listed by more than + *half of the authorities, and no pair for the same RSA key + *has been already been included based on the rule above, include + *that RSA identity. + */ static void dircollator_collate_by_ed25519(dircollator_t *dc) { @@ -197,6 +240,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) ddmap_entry_t **iter; + /* Go over all pairs */ HT_FOREACH(iter, double_digest_map, >by_both_ids) { ddmap_entry_t *ent = *iter; int n = 0, i; @@ -205,9 +249,13 @@
[tor-commits] [tor/maint-0.2.7] Assert that dircollator is collated when we're reading its output.
commit beef6ed45160f096815b4ea840ff671fb484d1da Author: Nick MathewsonDate: Tue Mar 15 10:24:18 2016 -0400 Assert that dircollator is collated when we're reading its output. Fix for 17668.S2. --- src/or/dircollate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index ca8b7ca..2f02512 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -303,6 +303,7 @@ dircollator_collate_by_ed25519(dircollator_t *dc) int dircollator_n_routers(dircollator_t *dc) { + tor_assert(dc->is_collated); return smartlist_len(dc->all_rsa_sha1_lst); } @@ -317,6 +318,7 @@ dircollator_n_routers(dircollator_t *dc) vote_routerstatus_t ** dircollator_get_votes_for_router(dircollator_t *dc, int idx) { + tor_assert(dc->is_collated); tor_assert(idx < smartlist_len(dc->all_rsa_sha1_lst)); return digestmap_get(dc->by_collated_rsa_sha1, smartlist_get(dc->all_rsa_sha1_lst, idx)); ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] Fix another case of 17668: Add NoEdConsensus
commit fa07c60c67d69ff25c4e64172e3a38b29a2e6143 Author: Nick MathewsonDate: Tue Feb 23 09:31:23 2016 -0500 Fix another case of 17668: Add NoEdConsensus I had a half-built mechanism to track, during the voting process, whether the Ed25519 value (or lack thereof) reflected a true consensus among the authorities. But we never actually inserted this field in the consensus. The key idea here is that we first attempt to match up votes by pairs of , where can be NULL if we're told that there is no Ed key. If this succeeds, then we can treat all those votes as 'a consensus for Ed'. And we can include all other votes with a matching RSA key and no statement about Ed keys as being "also about the same relay." After that, we look for RSA keys we haven't actually found an entry for yet, and see if there are enough votes for them, NOT considering Ed keys. If there are, we match them as before, but we treat them as "not a consensus about ed". When we include an entry in a consensus, if it does not reflect a consensus about ed keys, then we include a new NoEdConsensus flag on it. This is all only for consensus method 22 or later. Also see corresponding dir-spec patch. --- changes/bug17668| 5 + src/or/dircollate.c | 4 +++- src/or/dirvote.c| 28 src/or/or.h | 5 - 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/changes/bug17668 b/changes/bug17668 new file mode 100644 index 000..fa5c1c8 --- /dev/null +++ b/changes/bug17668 @@ -0,0 +1,5 @@ + o Major bugfixes (voting): +- When collating votes by Ed25519 identities, authorities now + include a "NoEdConsensus" flag if the ed25519 value (or lack thereof) + for a server does not reflect the majority consensus. Related to bug + 17668; bugfix on 0.2.7.2-alpha. diff --git a/src/or/dircollate.c b/src/or/dircollate.c index eeb0c24..ca8b7ca 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -81,6 +81,8 @@ dircollator_add_routerstatus(dircollator_t *dc, { const char *id = vrs->status.identity_digest; + vrs->ed25519_reflects_consensus = 0; + (void) vote; vote_routerstatus_t **vrs_lst = digestmap_get(dc->by_rsa_sha1, id); if (NULL == vrs_lst) { @@ -92,7 +94,7 @@ dircollator_add_routerstatus(dircollator_t *dc, const uint8_t *ed = vrs->ed25519_id; - if (tor_mem_is_zero((char*)ed, DIGEST256_LEN)) + if (! vrs->has_ed25519_listing) return; ddmap_entry_t search, *found; diff --git a/src/or/dirvote.c b/src/or/dirvote.c index be0635d..654d461 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -1242,6 +1242,9 @@ networkstatus_compute_consensus(smartlist_t *votes, smartlist_free(combined_server_versions); smartlist_free(combined_client_versions); +if (consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING) + smartlist_add(flags, tor_strdup("NoEdConsensus")); + smartlist_sort_strings(flags); smartlist_uniq_strings(flags); @@ -1539,6 +1542,8 @@ networkstatus_compute_consensus(smartlist_t *votes, num_bandwidths = 0; num_mbws = 0; num_guardfraction_inputs = 0; + int ed_consensus = 0; + const uint8_t *ed_consensus_val = NULL; /* Okay, go through all the entries for this digest. */ for (int voter_idx = 0; voter_idx < smartlist_len(votes); ++voter_idx) { @@ -1580,6 +1585,17 @@ networkstatus_compute_consensus(smartlist_t *votes, if (rs->status.has_bandwidth) bandwidths_kb[num_bandwidths++] = rs->status.bandwidth_kb; + +/* Count number for which ed25519 is canonical. */ +if (rs->ed25519_reflects_consensus) { + ++ed_consensus; + if (ed_consensus_val) { +tor_assert(fast_memeq(ed_consensus_val, rs->ed25519_id, + ED25519_PUBKEY_LEN)); + } else { +ed_consensus_val = rs->ed25519_id; + } +} } /* We don't include this router at all unless more than half of @@ -1587,6 +1603,14 @@ networkstatus_compute_consensus(smartlist_t *votes, if (n_listing <= total_authorities/2) continue; + if (ed_consensus > 0) { +tor_assert(consensus_method >= MIN_METHOD_FOR_ED25519_ID_VOTING); +if (ed_consensus <= total_authorities / 2) { + log_warn(LD_BUG, "Not enough entries had ed_consensus set; how " + "can we have a consensus of %d?", ed_consensus); +} + } + /* The clangalyzer can't figure out that this will never be NULL * if n_listing is at least 1 */ tor_assert(current_rsa_id); @@ -1640,6 +1664,10 @@ networkstatus_compute_consensus(smartlist_t *votes, } else if (!strcmp(fl, "Unnamed")) { if (is_unnamed) smartlist_add(chosen_flags, (char*)fl); +} else if (!strcmp(fl,
[tor-commits] [tor/maint-0.2.7] Use nth consistently in dircollate.h.
commit 2f2fba8a918674b7187a5b497bb156b79aaec4e1 Author: Nick MathewsonDate: Tue Mar 15 10:39:50 2016 -0400 Use nth consistently in dircollate.h. Documentation-only patch. Issue 17668.T6. --- src/or/dircollate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 2f02512..43cf27f 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -22,8 +22,8 @@ static void dircollator_collate_by_ed25519(dircollator_t *dc); typedef struct ddmap_entry_s { HT_ENTRY(ddmap_entry_s) node; uint8_t d[DIGEST_LEN + DIGEST256_LEN]; - /* The i'th member of this array corresponds to the vote_routerstatus_t (if - * any) received for this digest pair from the n'th voter. */ + /* The nth member of this array corresponds to the vote_routerstatus_t (if + * any) received for this digest pair from the nth voter. */ vote_routerstatus_t *vrs_lst[FLEXIBLE_ARRAY_MEMBER]; } ddmap_entry_t; ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] In routers_make_ed_keys_unique, break ties for published_on
commit b24f15a9a16acc8009c25823a127f3090b9b2edc Author: Nick MathewsonDate: Tue Mar 15 10:34:05 2016 -0400 In routers_make_ed_keys_unique, break ties for published_on This ensures that if we can't use published_on to decide an ed,rsa mapping, we at least decide deterministically. Resolves 17668.T3 --- src/or/dirserv.c | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ab8ddfe..ae67e8e 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2124,7 +2124,8 @@ get_possible_sybil_list(const smartlist_t *routers) } /** If there are entries in routers with exactly the same ed25519 keys, - * remove the older one. May alter the order of the list. */ + * remove the older one. If they are exactly the same age, remove the one + * with the greater descriptor digest. May alter the order of the list. */ static void routers_make_ed_keys_unique(smartlist_t *routers) { @@ -2139,7 +2140,12 @@ routers_make_ed_keys_unique(smartlist_t *routers) if ((ri2 = digest256map_get(by_ed_key, pk))) { /* Duplicate; must omit one. Set the omit_from_vote flag in whichever * one has the earlier published_on. */ - if (ri2->cache_info.published_on < ri->cache_info.published_on) { + const time_t ri_pub = ri->cache_info.published_on; + const time_t ri2_pub = ri2->cache_info.published_on; + if (ri2_pub < ri_pub || + (ri2_pub == ri_pub && + memcmp(ri->cache_info.signed_descriptor_digest, + ri2->cache_info.signed_descriptor_digest,DIGEST_LEN)<0)) { digest256map_set(by_ed_key, pk, ri); ri2->omit_from_vote = 1; } else { ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] Fix log message subjects in networkstatus_parse_vote_from_string()
commit c20e34e1894bed07982fe64d60a1b3fe9403d269 Author: Nick MathewsonDate: Mon Feb 22 10:59:27 2016 -0500 Fix log message subjects in networkstatus_parse_vote_from_string() Some of these messages called the thing being parsed a "vote" whether it is a vote or a consensus. Fixes bug 18368. --- changes/bug18368 | 5 + src/or/routerparse.c | 25 - 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/changes/bug18368 b/changes/bug18368 new file mode 100644 index 000..17218d4 --- /dev/null +++ b/changes/bug18368 @@ -0,0 +1,5 @@ + o Minor bugfixes: +- When logging information about an unparseable networkstatus vote or + consensus, do not say "vote" when we mean consensus. Fixes bug + 18368; bugfix on 0.2.0.8-alpha. + diff --git a/src/or/routerparse.c b/src/or/routerparse.c index f898ef8..6b6e21d 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -2862,7 +2862,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, (ns_type == NS_TYPE_CONSENSUS) ? networkstatus_consensus_token_table : networkstatus_token_table, 0)) { -log_warn(LD_DIR, "Error tokenizing network-status vote header"); +log_warn(LD_DIR, "Error tokenizing network-status header"); goto err; } @@ -3085,7 +3085,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(voter->identity_digest, sizeof(voter->identity_digest), tok->args[1], HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding identity digest %s in " - "network-status vote.", escaped(tok->args[1])); + "network-status document.", escaped(tok->args[1])); goto err; } if (ns->type != NS_TYPE_CONSENSUS && @@ -3144,7 +3144,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, voter = NULL; } if (smartlist_len(ns->voters) == 0) { -log_warn(LD_DIR, "Missing dir-source elements in a vote networkstatus."); +log_warn(LD_DIR, "Missing dir-source elements in a networkstatus."); goto err; } else if (ns->type != NS_TYPE_CONSENSUS && smartlist_len(ns->voters) != 1) { log_warn(LD_DIR, "Too many dir-source elements in a vote networkstatus."); @@ -3205,8 +3205,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, } if (fast_memcmp(rs1->identity_digest, rs2->identity_digest, DIGEST_LEN) >= 0) { - log_warn(LD_DIR, "Vote networkstatus entries not sorted by identity " - "digest"); + log_warn(LD_DIR, "Networkstatus entries not sorted by identity digest"); goto err; } } @@ -3319,12 +3318,12 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(declared_identity, sizeof(declared_identity), id_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared identity %s in " - "network-status vote.", escaped(id_hexdigest)); + "network-status document.", escaped(id_hexdigest)); goto err; } if (!(v = networkstatus_get_voter_by_id(ns, declared_identity))) { - log_warn(LD_DIR, "ID on signature on network-status vote does not match " - "any declared directory source."); + log_warn(LD_DIR, "ID on signature on network-status document does " + "not match any declared directory source."); goto err; } sig = tor_malloc_zero(sizeof(document_signature_t)); @@ -3334,7 +,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, base16_decode(sig->signing_key_digest, sizeof(sig->signing_key_digest), sk_hexdigest, HEX_DIGEST_LEN) < 0) { log_warn(LD_DIR, "Error decoding declared signing key digest %s in " - "network-status vote.", escaped(sk_hexdigest)); + "network-status document.", escaped(sk_hexdigest)); tor_free(sig); goto err; } @@ -3353,8 +3352,8 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, /* We already parsed a vote with this algorithm from this voter. Use the first one. */ log_fn(LOG_PROTOCOL_WARN, LD_DIR, "We received a networkstatus " - "that contains two votes from the same voter with the same " - "algorithm. Ignoring the second vote."); + "that contains two signatures from the same voter with the same " + "algorithm. Ignoring the second signature."); tor_free(sig); continue; } @@ -3362,7 +3361,7 @@ networkstatus_parse_vote_from_string(const char *s, const char **eos_out, if (ns->type != NS_TYPE_CONSENSUS) { if (check_signature_token(ns_digests.d[DIGEST_SHA1], DIGEST_LEN,
[tor-commits] [tor/maint-0.2.7] Enable ed25519 collator in voting.
commit 60efce445b17d4b4153e91527887873812f5599f Author: Nick MathewsonDate: Mon Feb 22 10:07:42 2016 -0500 Enable ed25519 collator in voting. Previously, I had left in some debugging code with /*XXX*/ after it, which nobody noticed. Live and learn! Next time I will use /*XXX DO NOT COMMIT*/ or something. We need to define a new consensus method for this; consensus method 21 shouldn't actually be used. Fixes bug 17702; bugfix on 0.2.7.2-alpha. --- changes/bug17702| 6 ++ src/or/dircollate.c | 2 +- src/or/dirvote.c| 7 +++ src/or/dirvote.h| 7 --- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/changes/bug17702 b/changes/bug17702 new file mode 100644 index 000..4fda36f --- /dev/null +++ b/changes/bug17702 @@ -0,0 +1,6 @@ + o Major bugfixes: +- Actually enable Ed25519-based directory collation. + Previously, the code had been written, but some debugging code that had + accidentally been left in the codebase made it stay turned off. + Fixes bug 17702; bugfix on 0.2.7.2-alpha. + diff --git a/src/or/dircollate.c b/src/or/dircollate.c index 4c812c4..f56aea8 100644 --- a/src/or/dircollate.c +++ b/src/or/dircollate.c @@ -159,7 +159,7 @@ dircollator_collate(dircollator_t *dc, int consensus_method) tor_assert(!dc->is_collated); dc->all_rsa_sha1_lst = smartlist_new(); - if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING + 10/*XXX*/) + if (consensus_method < MIN_METHOD_FOR_ED25519_ID_VOTING) dircollator_collate_by_rsa(dc); else dircollator_collate_by_ed25519(dc); diff --git a/src/or/dirvote.c b/src/or/dirvote.c index d8e6ee2..be0635d 100644 --- a/src/or/dirvote.c +++ b/src/or/dirvote.c @@ -558,6 +558,13 @@ compute_consensus_method(smartlist_t *votes) static int consensus_method_is_supported(int method) { + if (method == MIN_METHOD_FOR_ED25519_ID_IN_MD) { +/* This method was broken due to buggy code accidently left in + * dircollate.c; do not actually use it. + */ +return 0; + } + return (method >= MIN_SUPPORTED_CONSENSUS_METHOD) && (method <= MAX_SUPPORTED_CONSENSUS_METHOD); } diff --git a/src/or/dirvote.h b/src/or/dirvote.h index dca8540..50c2496 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -55,7 +55,7 @@ #define MIN_SUPPORTED_CONSENSUS_METHOD 13 /** The highest consensus method that we currently support. */ -#define MAX_SUPPORTED_CONSENSUS_METHOD 21 +#define MAX_SUPPORTED_CONSENSUS_METHOD 22 /** Lowest consensus method where microdesc consensuses omit any entry * with no microdesc. */ @@ -87,11 +87,12 @@ #define MIN_METHOD_FOR_GUARDFRACTION 20 /** Lowest consensus method where authorities may include an "id" line for - * ed25519 identities in microdescriptors. */ + * ed25519 identities in microdescriptors. (Broken; see + * consensus_method_is_supported() for more info.) */ #define MIN_METHOD_FOR_ED25519_ID_IN_MD 21 /** Lowest consensus method where authorities vote on ed25519 ids and ensure * ed25519 id consistency. */ -#define MIN_METHOD_FOR_ED25519_ID_VOTING MIN_METHOD_FOR_ED25519_ID_IN_MD +#define MIN_METHOD_FOR_ED25519_ID_VOTING 22 /** Default bandwidth to clip unmeasured bandwidths to using method >= * MIN_METHOD_TO_CLIP_UNMEASURED_BW. (This is not a consensus method; do not ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] Never vote for an ed key twice.
commit 13a31e72db1b009623aa55bd52ffe7390a22623d Author: Nick MathewsonDate: Mon Feb 22 11:43:59 2016 -0500 Never vote for an ed key twice. When generating a vote, and we have two routerinfos with the same ed key, omit the one published earlier. This was supposed to have been solved by key pinning, but when I made key pinning optional, I didn't realize that this would jump up and bite us. It is part of bug 18318, and the root cause of 17668. --- changes/bug18318_ed | 7 +++ src/or/dirserv.c| 39 +++ src/or/or.h | 4 3 files changed, 50 insertions(+) diff --git a/changes/bug18318_ed b/changes/bug18318_ed new file mode 100644 index 000..af39234 --- /dev/null +++ b/changes/bug18318_ed @@ -0,0 +1,7 @@ + o Major bugfixes: +- When generating a vote with keypinning disabled, never include two + entries for the same ed25519 identity. This bug was causing + authorities to generate votes that they could not parse when a router + violated key pinning by changing its RSA identity but keeping its + Ed25519 identity. Fixes bug 17668; fixes part of bug 18318. Bugfix on + 0.2.7.2-alpha. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 8d9f166..016514f 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2126,6 +2126,44 @@ get_possible_sybil_list(const smartlist_t *routers) return omit_as_sybil; } +/** If there are entries in routers with exactly the same ed25519 keys, + * remove the older one. May alter the order of the list. */ +static void +routers_make_ed_keys_unique(smartlist_t *routers) +{ + routerinfo_t *ri2; + digest256map_t *by_ed_key = digest256map_new(); + + SMARTLIST_FOREACH_BEGIN(routers, routerinfo_t *, ri) { +ri->omit_from_vote = 0; +if (ri->signing_key_cert == NULL) + continue; /* No ed key */ +const uint8_t *pk = ri->signing_key_cert->signing_key.pubkey; +if ((ri2 = digest256map_get(by_ed_key, pk))) { + /* Duplicate; must omit one. Set the omit_from_vote flag in whichever + * one has the earlier published_on. */ + if (ri2->cache_info.published_on < ri->cache_info.published_on) { +digest256map_set(by_ed_key, pk, ri); +ri2->omit_from_vote = 1; + } else { +ri->omit_from_vote = 1; + } +} else { + /* Add to map */ + digest256map_set(by_ed_key, pk, ri); +} + } SMARTLIST_FOREACH_END(ri); + + digest256map_free(by_ed_key, NULL); + + /* Now remove every router where the omit_from_vote flag got set. */ + SMARTLIST_FOREACH_BEGIN(routers, const routerinfo_t *, ri) { +if (ri->omit_from_vote) { + SMARTLIST_DEL_CURRENT(routers, ri); +} + } SMARTLIST_FOREACH_END(ri); +} + /** Extract status information from ri and from other authority * functions and store it in rs>. * @@ -2815,6 +2853,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key, routers = smartlist_new(); smartlist_add_all(routers, rl->routers); + routers_make_ed_keys_unique(routers); routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); diff --git a/src/or/or.h b/src/or/or.h index 4496cbc..b6d6ec0 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2081,6 +2081,10 @@ typedef struct { * tests for it. */ unsigned int needs_retest_if_added:1; + /** Used during voting to indicate that we should not include an entry for + * this routerinfo. Used only during voting. */ + unsigned int omit_from_vote:1; + /** Tor can use this router for general positions in circuits; we got it * from a directory server as usual, or we're an authority and a server * uploaded it. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [tor/maint-0.2.7] Document has_ed25519_listing
commit 60ca3f358f80930778b12c9fcc8e3cf562b64e8e Author: Nick MathewsonDate: Tue Feb 23 08:13:39 2016 -0500 Document has_ed25519_listing --- src/or/or.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/or.h b/src/or/or.h index b6d6ec0..b24b6a8 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2377,7 +2377,9 @@ typedef struct vote_routerstatus_t { char *version; /**< The version that the authority says this router is * running. */ unsigned int has_measured_bw:1; /**< The vote had a measured bw */ - unsigned int has_ed25519_listing:1; /** DOCDOC */ + /** True iff the vote included an entry for ed25519 ID, or included + * "id ed25519 none" to indicate that there was no ed25519 ID. */ + unsigned int has_ed25519_listing:1; unsigned int ed25519_reflects_consensus:1; /** DOCDOC */ uint32_t measured_bw_kb; /**< Measured bandwidth (capacity) of the router */ /** The hash or hashes that the authority claims this microdesc has. */ ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-otrproperties] Update translations for tor-messenger-otrproperties
commit ec0250614f67bfde343b0edc30233728797da3ec Author: Translation commit botDate: Mon Mar 21 17:27:02 2016 + Update translations for tor-messenger-otrproperties --- ar/otr.properties| 2 +- bg/otr.properties| 2 +- hr_HR/otr.properties | 62 ++-- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/ar/otr.properties b/ar/otr.properties index abf8235..21de193 100644 --- a/ar/otr.properties +++ b/ar/otr.properties @@ -11,7 +11,7 @@ msgevent.rcvdmsg_malformed=ت٠إستÙبا٠رساÙØ© بÙاÙاتÙا Ù Ø´ msgevent.log_heartbeat_rcvd=ت٠إستÙبا٠إشارة Ø£ÙÙÙØ© Ù Ù %S. msgevent.log_heartbeat_sent=ت٠إرسا٠إشارة Ø£ÙÙÙØ© Ø¥ÙÙ %S. msgevent.rcvdmsg_general_err=An OTR error occured. -msgevent.rcvdmsg_unecrypted=The following message received from %S was not encrypted: %S +msgevent.rcvdmsg_unecrypted=اÙرساÙØ© اÙتاÙÙØ© Ù Ù %S Ù٠تÙÙ Ù Ø´Ùرة: %S msgevent.rcvdmsg_unrecognized=We received an unrecognized OTR message from %S. msgevent.rcvdmsg_for_other_instance=أرس٠%S رساÙØ© ÙجÙسة Ù Øادثة ٠ختÙÙØ©. إذا Ù٠ت بتسجÙ٠اÙدخÙ٠عدة Ù Ø±Ø§ØªØ ÙÙد تتÙÙ٠جÙسة أخر٠ÙÙس اÙرساÙØ©. context.gone_secure_private=ت٠بدء Ù Øادثة خاصة ٠ع %S. diff --git a/bg/otr.properties b/bg/otr.properties index 5599a44..082de37 100644 --- a/bg/otr.properties +++ b/bg/otr.properties @@ -11,7 +11,7 @@ msgevent.rcvdmsg_malformed=We received a malformed data message from %S. msgevent.log_heartbeat_rcvd=ÐолÑÑен пÑÐ»Ñ Ð¾Ñ %S. msgevent.log_heartbeat_sent=ÐÑÐ»Ñ Ð¸Ð·Ð¿ÑаÑен на %S. msgevent.rcvdmsg_general_err=ÐÑзникна OTR гÑеÑка. -msgevent.rcvdmsg_unecrypted=The following message received from %S was not encrypted: %S +msgevent.rcvdmsg_unecrypted=СÑобÑениеÑо полÑÑено Ð¾Ñ %S е неÑиÑÑовано : %S msgevent.rcvdmsg_unrecognized=ÐолÑÑÐ¸Ñ Ð¼Ðµ неÑазпознаÑо OTR ÑÑобÑение Ð¾Ñ %S. msgevent.rcvdmsg_for_other_instance=%S е изпÑаÑил ÑÑобÑение, пÑедназнаÑено за дÑÑга ÑеÑиÑ. Ðко ÑÑе логнаÑи много пÑÑи е вÑзможно дÑÑга ÑеÑÐ¸Ñ Ð´Ð° го е полÑÑила. context.gone_secure_private=ÐапоÑÐ½Ð°Ñ Ðµ повеÑиÑелен ÑÐ°Ð·Ð³Ð¾Ð²Ð¾Ñ Ñ %S. diff --git a/hr_HR/otr.properties b/hr_HR/otr.properties index 11b23be..a7b059a 100644 --- a/hr_HR/otr.properties +++ b/hr_HR/otr.properties @@ -1,31 +1,31 @@ -msgevent.encryption_required_part1=You attempted to send an unencrypted message to %S. As a policy, unencrypted messages are not allowed. -msgevent.encryption_required_part2=Attempting to start a private conversation. Your message will be retransmitted when the private conversation starts. -msgevent.encryption_error=An error occurred when encrypting your message. The message was not sent. -msgevent.connection_ended=%S has already closed their private connection to you. Your message was not sent. Either end your private conversation, or restart it. -msgevent.setup_error=An error occured while setting up a private conversation with %S. -msgevent.msg_reflected=You are receiving your own OTR messages. You are either trying to talk to yourself, or someone is reflecting your messages back at you. -msgevent.msg_resent=The last message to %S was resent. -msgevent.rcvdmsg_not_private=The encrypted message received from %S is unreadable, as you are not currently communicating privately. -msgevent.rcvdmsg_unreadable=We received an unreadable encrypted message from %S. -msgevent.rcvdmsg_malformed=We received a malformed data message from %S. -msgevent.log_heartbeat_rcvd=Heartbeat received from %S. -msgevent.log_heartbeat_sent=Heartbeat sent to %S. -msgevent.rcvdmsg_general_err=An OTR error occured. -msgevent.rcvdmsg_unecrypted=The following message received from %S was not encrypted: %S -msgevent.rcvdmsg_unrecognized=We received an unrecognized OTR message from %S. -msgevent.rcvdmsg_for_other_instance=%S has sent a message intended for a different session. If you are logged in multiple times, another session may have received the message. -context.gone_secure_private=Private conversation with %S started. -context.gone_secure_unverified=Private conversation with %S started. However, their identity has not been verified. -context.still_secure=Successfully refreshed the private conversation with %S. -error.enc=Error occurred encrypting message. -error.not_priv=You sent encrypted data to %S, who wasn't expecting it. -error.unreadable=You transmitted an unreadable encrypted message. -error.malformed=You transmitted a malformed data message. -resent=[resent] -tlv.disconnected=%S has ended their private conversation with you; you should do the same. -query.msg=%S has requested an Off-the Record private conversation. However, you
[tor-commits] [translation/tor-messenger-ircproperties_completed] Update translations for tor-messenger-ircproperties_completed
commit 3eff9f73e17aaa91b169ab5d8316b7b97956e494 Author: Translation commit botDate: Mon Mar 21 17:26:40 2016 + Update translations for tor-messenger-ircproperties_completed --- hr_HR/irc.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hr_HR/irc.properties b/hr_HR/irc.properties index a26165a..ee71912 100644 --- a/hr_HR/irc.properties +++ b/hr_HR/irc.properties @@ -47,7 +47,7 @@ ctcp.time=Vrijeme za %1$S je %2$S. # These are the help messages for each command, the %S is the command name # Each command first gives the parameter it accepts and then a description of # the command. -command.action=%S radnja za izvesti: Izvedi radnju. +command.action=%S akcija za izvesti: Izvedi akciju. command.ctcp=%S nadimak poruka: Šalje CTCP poruku navedenom nadimku. command.chanserv=%S naredba: Šalje naredbu ChanServ-u. command.deop=%S nadimak1[,nadimak2]*: Makni nekome status operatera kanala. Morate biti operater kanala da bi ovo izveli. @@ -60,7 +60,7 @@ command.memoserv=%S naredba: Pošalji naredbu MemoServ-u. command.modeUser=%S (+|-)novi modalitet [nadimak]: Postavi ili makni modalitet korisnika. command.modeChannel=%S kanal[ (+|-)novi modalitet [parametar][,parametar]*]: Dobavi, postavi ili makni modalitet kanala. command.msg=%S nadimak poruka: Pošalji privatnu poruku korisniku (a ne kanalu). -command.nick=%S novi nadimak: Promijeni svoj nadimak. +command.nick=%S novi nadimak: Promjenite svoj nadimak. command.nickserv=%S naredba: Pošalji naredbu NickServ-u. command.notice=%S cilj poruka: Pošalji obavijest korisniku ili kanalu. command.op=%S nadimak1[,nadimak2]*: Dodijeli nekome status operatora kanala. Morate biti operter kanala da bi ovo izveli. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-ircproperties] Update translations for tor-messenger-ircproperties
commit b2a02a549e1871f8f3f45d33204cc23f99124c48 Author: Translation commit botDate: Mon Mar 21 17:26:28 2016 + Update translations for tor-messenger-ircproperties --- am/irc.properties | 2 +- ar/irc.properties | 2 +- ast/irc.properties | 4 +- az/irc.properties | 4 +- be/irc.properties | 4 +- bn/irc.properties | 6 +- bs/irc.properties | 6 +- cv/irc.properties | 4 +- cy/irc.properties | 6 +- eo/irc.properties | 4 +- es_AR/irc.properties | 4 +- es_MX/irc.properties | 2 +- et/irc.properties | 4 +- eu/irc.properties | 2 +- fil/irc.properties | 4 +- fo/irc.properties | 6 +- fy/irc.properties | 6 +- ga/irc.properties | 2 +- gl/irc.properties | 6 +- gu/irc.properties | 2 +- hi/irc.properties | 4 +- hr/irc.properties | 4 +- hr_HR/irc.properties | 210 ++--- ia/irc.properties | 4 +- is/irc.properties | 4 +- kk/irc.properties | 2 +- km/irc.properties | 6 +- kn/irc.properties | 4 +- ko/irc.properties | 2 +- ko_KR/irc.properties | 6 +- ku_IQ/irc.properties | 2 +- lo/irc.properties | 4 +- lt/irc.properties | 2 +- ms_MY/irc.properties | 6 +- my/irc.properties | 6 +- pa/irc.properties | 6 +- ru@petr1708/irc.properties | 6 +- si_LK/irc.properties | 6 +- sk_SK/irc.properties | 6 +- sl/irc.properties | 6 +- sl_SI/irc.properties | 6 +- sr/irc.properties | 6 +- sr@latin/irc.properties| 4 +- ta/irc.properties | 4 +- th/irc.properties | 4 +- uz/irc.properties | 6 +- vi/irc.properties | 6 +- zh_HK/irc.properties | 6 +- 48 files changed, 209 insertions(+), 209 deletions(-) diff --git a/am/irc.properties b/am/irc.properties index a086a13..7842836 100644 --- a/am/irc.properties +++ b/am/irc.properties @@ -180,7 +180,7 @@ error.unknownMode='%S' is not a valid user mode on this server. #These are the descriptions given in a tooltip with information received #from a whois response. #The human readable ("realname") description of the user. -tooltip.realname=Name +tooltip.realname=áµá tooltip.server=Connected to #The username and hostname that the user connects from (usually based on the #reverse DNS of the user's IP, but often mangled by the server to diff --git a/ar/irc.properties b/ar/irc.properties index 248aa22..01dc262 100644 --- a/ar/irc.properties +++ b/ar/irc.properties @@ -6,7 +6,7 @@ # This is displayed inside the accountUsernameInfoWithDescription # string defined in imAccounts.properties when the user is # configuring an IRC account. -irc.usernameHint=nick +irc.usernameHint=اختصار # LOCALIZATION NOTE (connection.error.*): # These will show in the account manager if the account is diff --git a/ast/irc.properties b/ast/irc.properties index a086a13..3796c17 100644 --- a/ast/irc.properties +++ b/ast/irc.properties @@ -204,5 +204,5 @@ tooltip.serverValue=%1$S (%2$S) # LOCALIZATION NOTE (yes, no): # These are used to turn true/false values into a yes/no response. -yes=Yes -no=No +yes=Si +no=Non diff --git a/az/irc.properties b/az/irc.properties index a086a13..cb9e71d 100644 --- a/az/irc.properties +++ b/az/irc.properties @@ -204,5 +204,5 @@ tooltip.serverValue=%1$S (%2$S) # LOCALIZATION NOTE (yes, no): # These are used to turn true/false values into a yes/no response. -yes=Yes -no=No +yes=BÉli +no=Xeyr diff --git a/be/irc.properties b/be/irc.properties index a086a13..6c779c6 100644 --- a/be/irc.properties +++ b/be/irc.properties @@ -204,5 +204,5 @@ tooltip.serverValue=%1$S (%2$S) # LOCALIZATION NOTE (yes, no): # These are used to turn true/false values into a yes/no response. -yes=Yes -no=No +yes=Так +no=Ðе diff --git a/bn/irc.properties b/bn/irc.properties index a086a13..862f9c6 100644 --- a/bn/irc.properties +++ b/bn/irc.properties @@ -180,7 +180,7 @@ error.unknownMode='%S' is not a valid user mode on this server. #These are the descriptions given in a tooltip with information received #from a whois response. #The human readable ("realname") description of the user. -tooltip.realname=Name +tooltip.realname=নাম tooltip.server=Connected to #The username and hostname that the user connects from (usually based on the #reverse DNS of the user's IP, but often mangled by the server to @@ -204,5 +204,5 @@ tooltip.serverValue=%1$S (%2$S) # LOCALIZATION NOTE (yes, no): # These are used to turn true/false values into a yes/no response. -yes=Yes -no=No +yes=হà§à¦¯à¦¾ +no=না diff --git a/bs/irc.properties b/bs/irc.properties
[tor-commits] [translation/tor-messenger-imtooltipproperties] Update translations for tor-messenger-imtooltipproperties
commit 197fbce57563a19f89807f92e9648e0e8d389deb Author: Translation commit botDate: Mon Mar 21 17:24:55 2016 + Update translations for tor-messenger-imtooltipproperties --- hr_HR/imtooltip.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_HR/imtooltip.properties b/hr_HR/imtooltip.properties index 0dd51fe..96652d8 100644 --- a/hr_HR/imtooltip.properties +++ b/hr_HR/imtooltip.properties @@ -2,6 +2,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -buddy.username=Username -buddy.account=Account -contact.tags=Tags +buddy.username=KorisniÄko ime +buddy.account=RaÄun +contact.tags=Oznake ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-fingerdtd] Update translations for tor-messenger-fingerdtd
commit f071acba71f2709bada712c1b920c211195f7601 Author: Translation commit botDate: Mon Mar 21 17:24:13 2016 + Update translations for tor-messenger-fingerdtd --- bs/finger.dtd| 2 +- eo/finger.dtd| 4 ++-- eu/finger.dtd| 4 ++-- fil/finger.dtd | 2 +- gl/finger.dtd| 6 +++--- gu/finger.dtd| 2 +- hi/finger.dtd| 2 +- hr_HR/finger.dtd | 18 +- ia/finger.dtd| 4 ++-- is/finger.dtd| 2 +- km/finger.dtd| 2 +- ko_KR/finger.dtd | 6 +++--- ku_IQ/finger.dtd | 2 +- ky/finger.dtd| 2 +- lt/finger.dtd| 2 +- my/finger.dtd| 6 +++--- pa/finger.dtd| 2 +- si_LK/finger.dtd | 6 +++--- sk_SK/finger.dtd | 2 +- sl/finger.dtd| 4 ++-- sl_SI/finger.dtd | 2 +- sr/finger.dtd| 6 +++--- ta/finger.dtd| 2 +- th/finger.dtd| 4 ++-- ur_PK/finger.dtd | 4 ++-- vi/finger.dtd| 2 +- zh_HK/finger.dtd | 2 +- 27 files changed, 51 insertions(+), 51 deletions(-) diff --git a/bs/finger.dtd b/bs/finger.dtd index 7e611a4..40a270a 100644 --- a/bs/finger.dtd +++ b/bs/finger.dtd @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/eo/finger.dtd b/eo/finger.dtd index 7e611a4..722b926 100644 --- a/eo/finger.dtd +++ b/eo/finger.dtd @@ -1,10 +1,10 @@ - + - + \ No newline at end of file diff --git a/eu/finger.dtd b/eu/finger.dtd index c0472ca..44888f9 100644 --- a/eu/finger.dtd +++ b/eu/finger.dtd @@ -2,9 +2,9 @@ - + - + \ No newline at end of file diff --git a/fil/finger.dtd b/fil/finger.dtd index 7e611a4..f51d004 100644 --- a/fil/finger.dtd +++ b/fil/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/gl/finger.dtd b/gl/finger.dtd index 80a90a6..aa47bca 100644 --- a/gl/finger.dtd +++ b/gl/finger.dtd @@ -1,10 +1,10 @@ - + - + - + \ No newline at end of file diff --git a/gu/finger.dtd b/gu/finger.dtd index 7e611a4..22bdc5c 100644 --- a/gu/finger.dtd +++ b/gu/finger.dtd @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/hi/finger.dtd b/hi/finger.dtd index 7e611a4..883e9dd 100644 --- a/hi/finger.dtd +++ b/hi/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/hr_HR/finger.dtd b/hr_HR/finger.dtd index 7e611a4..223b650 100644 --- a/hr_HR/finger.dtd +++ b/hr_HR/finger.dtd @@ -1,10 +1,10 @@ - - + + - - - - - - - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/ia/finger.dtd b/ia/finger.dtd index 7e611a4..5c914bd 100644 --- a/ia/finger.dtd +++ b/ia/finger.dtd @@ -1,8 +1,8 @@ - + - + diff --git a/is/finger.dtd b/is/finger.dtd index 7e611a4..1d1550b 100644 --- a/is/finger.dtd +++ b/is/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/km/finger.dtd b/km/finger.dtd index 7e611a4..4391c78 100644 --- a/km/finger.dtd +++ b/km/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/ko_KR/finger.dtd b/ko_KR/finger.dtd index 7e611a4..6015361 100644 --- a/ko_KR/finger.dtd +++ b/ko_KR/finger.dtd @@ -1,10 +1,10 @@ - + - + - + \ No newline at end of file diff --git a/ku_IQ/finger.dtd b/ku_IQ/finger.dtd index 7e611a4..348e5b5 100644 --- a/ku_IQ/finger.dtd +++ b/ku_IQ/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/ky/finger.dtd b/ky/finger.dtd index 7e611a4..b9bd421 100644 --- a/ky/finger.dtd +++ b/ky/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/lt/finger.dtd b/lt/finger.dtd index d48d44f..9d37826 100644 --- a/lt/finger.dtd +++ b/lt/finger.dtd @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/my/finger.dtd b/my/finger.dtd index 7e611a4..462ad14 100644 --- a/my/finger.dtd +++ b/my/finger.dtd @@ -1,10 +1,10 @@ - + - + - + \ No newline at end of file diff --git a/pa/finger.dtd b/pa/finger.dtd index 7e611a4..30c7447 100644 --- a/pa/finger.dtd +++ b/pa/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/si_LK/finger.dtd b/si_LK/finger.dtd index 7e611a4..15bd89e 100644 --- a/si_LK/finger.dtd +++ b/si_LK/finger.dtd @@ -1,10 +1,10 @@ - + - + - + \ No newline at end of file diff --git a/sk_SK/finger.dtd b/sk_SK/finger.dtd index 9b0ef21..2823969 100644 --- a/sk_SK/finger.dtd +++ b/sk_SK/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/sl/finger.dtd b/sl/finger.dtd index 7e611a4..246217e 100644 --- a/sl/finger.dtd +++ b/sl/finger.dtd @@ -1,10 +1,10 @@ - + - + \ No newline at end of file diff --git a/sl_SI/finger.dtd b/sl_SI/finger.dtd index 7e611a4..e57cca4 100644 --- a/sl_SI/finger.dtd +++ b/sl_SI/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/sr/finger.dtd b/sr/finger.dtd index 7e611a4..73c7149 100644 --- a/sr/finger.dtd +++ b/sr/finger.dtd @@ -1,10 +1,10 @@ - + - + - + \ No newline at end of file diff --git a/ta/finger.dtd b/ta/finger.dtd index 7e611a4..eb43f7a 100644 --- a/ta/finger.dtd +++ b/ta/finger.dtd @@ -1,6 +1,6 @@ - + diff --git a/th/finger.dtd b/th/finger.dtd index 7e611a4..e88a45e 100644 --- a/th/finger.dtd +++ b/th/finger.dtd @@ -1,8 +1,8 @@
[tor-commits] [translation/tor-messenger-facebookproperties] Update translations for tor-messenger-facebookproperties
commit 3add8a650d3a3b93e500d186d3a19af35c0c3ccf Author: Translation commit botDate: Mon Mar 21 17:23:15 2016 + Update translations for tor-messenger-facebookproperties --- hr_HR/facebook.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hr_HR/facebook.properties b/hr_HR/facebook.properties index aaf7cdc..016f24d 100644 --- a/hr_HR/facebook.properties +++ b/hr_HR/facebook.properties @@ -2,6 +2,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -connection.error.useUsernameNotEmailAddress=Please use your Facebook username, not an email address +connection.error.useUsernameNotEmailAddress=Molimo Vas da koristite svoje Facebook korisniÄko ime, ne email adresu -facebook.chat.name=Facebook Chat +facebook.chat.name=Facebook chat ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor_animation] Update translations for tor_animation
commit 279b5f3ff7742d366b3716465e57ffa4c66075ce Author: Translation commit botDate: Mon Mar 21 17:15:38 2016 + Update translations for tor_animation --- ca.srt| 52 +-- cs.srt| 52 +-- eu.srt| 52 +-- fa.srt| 52 +-- hr_HR.srt | 120 +++--- pl.srt| 52 +-- sq.srt| 52 +-- zh_HK.srt | 52 +-- 8 files changed, 242 insertions(+), 242 deletions(-) diff --git a/ca.srt b/ca.srt index 80fa4a2..c8a01d7 100644 --- a/ca.srt +++ b/ca.srt @@ -40,127 +40,127 @@ i molta més informació sobre vosaltres i la vostra vida. 10 -00:00:29,620 --> 00:00:32,460 +00:00:29,200 --> 00:00:31,500 la qual probablement no tenÃeu intenció de compartir amb desconeguts, 11 -00:00:32,920 --> 00:00:35,840 +00:00:31,700 --> 00:00:34,000 que podrien fer servir fà cilment aquesta informació per abusar de vosaltres. 12 -00:00:36,220 --> 00:00:38,120 +00:00:34,500 --> 00:00:37,000 Però això no passa si esteu fent servir Tor! 13 -00:00:39,140 --> 00:00:42,840 +00:00:37,140 --> 00:00:40,840 El navegador Tor protegeix la nostra privadesa i la nostra identitat a Internet. 14 -00:00:43,560 --> 00:00:46,760 +00:00:41,560 --> 00:00:44,760 Tor assegura la teva connexió amb tres capes d'encriptatge. 15 -00:00:46,940 --> 00:00:51,760 +00:00:44,940 --> 00:00:49,760 i la passa per tres servidors duts a terme voluntà riament a tot el món, 16 -00:00:52,280 --> 00:00:55,520 +00:00:50,280 --> 00:00:53,520 que ens permeten comunicar-nos de manera anònima per Internet. 17 -00:00:58,560 --> 00:01:00,280 +00:00:56,560 --> 00:00:58,280 Tor també protegeix la nostra informació 18 -00:01:00,400 --> 00:01:03,900 +00:00:58,400 --> 00:01:01,900 dels objectius del govern o les grans empreses i la vigilà ncia massiva. 19 -00:01:04,880 --> 00:01:09,340 +00:01:02,880 --> 00:01:07,340 Potser viviu en un paÃs repressiu que intenta controlar i vigilar Internet. 20 -00:01:09,900 --> 00:01:13,800 +00:01:07,900 --> 00:01:11,800 O potser no voleu que les grans empreses s'aprofitin de la vostra informació personal. 21 -00:01:14,880 --> 00:01:17,640 +00:01:12,880 --> 00:01:15,640 Tot fa que tots els seus usuaris siguin iguals 22 -00:01:17,920 --> 00:01:20,800 +00:01:15,920 --> 00:01:18,800 cosa que confon l'observador i us fa anònims. 23 -00:01:21,500 --> 00:01:24,980 +00:01:19,500 --> 00:01:22,980 Per tant, quanta més gent faci servir la xarxa Tor més forta es farà 24 -00:01:25,140 --> 00:01:29,800 +00:01:23,140 --> 00:01:27,800 ja que és més fà cil amagar-se en una multitud de gent que és idèntica. 25 -00:01:30,700 --> 00:01:33,240 +00:01:28,700 --> 00:01:31,240 Podeu sortejar la censura sense preocupar-vos que 26 -00:01:33,400 --> 00:01:36,100 +00:01:31,400 --> 00:01:34,100 el censor sà pigue el que feu a internet. 27 -00:01:38,540 --> 00:01:41,440 +00:01:36,540 --> 00:01:39,440 Els anuncis no us seguiran allà on aneu durant mesos, 28 -00:01:41,640 --> 00:01:43,300 +00:01:39,640 --> 00:01:41,300 començant per quan vau fer clic per primer cop en un producte. 29 -00:01:45,880 --> 00:01:49,380 +00:01:43,880 --> 00:01:47,380 Fent servir Tor, els llocs que visiteu no sabran ni qui sou, 30 -00:01:49,540 --> 00:01:51,760 +00:01:47,540 --> 00:01:49,760 ni de quina part del món els esteu visitant 31 -00:01:51,920 --> 00:01:53,920 +00:01:49,920 --> 00:01:51,920 a no ser que us identifiqueu i els ho digueu. 32 -00:01:56,200 --> 00:01:57,840 +00:01:54,200 --> 00:01:55,840 Baixant i usant Tor 33 -00:01:58,200 --> 00:02:00,560 +00:01:56,200 --> 00:01:58,560 podeu protegir la gent que necessita anonimat. 34 -00:02:00,880 --> 00:02:03,640 +00:01:58,880 --> 00:02:01,640 com els activistes, periodistes i bloggers. 35 -00:02:04,000 --> 00:02:09,000 +00:02:02,000 --> 00:02:07,000 Baixa i utilitza Tor! O executa un relé! diff --git a/cs.srt b/cs.srt index 45aa820..86ba61d 100644 --- a/cs.srt +++ b/cs.srt @@ -35,106 +35,106 @@ vÅ¡echny stránky, co jste navÅ¡tÃvil, prohlÞeÄ, který použÃváte, a jeÅ¡tÄ mnohem vÃce informacà o Vás a VaÅ¡em životÄ, 10 -00:00:29,620 --> 00:00:32,460 +00:00:29,200 --> 00:00:31,500 které byste pravdÄpodobnÄ nechtÄli sdÃlet se zcela neznámými lidmi, 11 -00:00:32,920 --> 00:00:35,840 +00:00:31,700 --> 00:00:34,000 kteÅà mohou tato data krásnÄ použÃt, aby Vás využili, 12 -00:00:36,220 --> 00:00:38,120 +00:00:34,500 --> 00:00:37,000 Ale ne, pokud použÃvate Tor! 13 -00:00:39,140 --> 00:00:42,840 +00:00:37,140 --> 00:00:40,840 ProhlÞeÄ Tor chránà naÅ¡e soukromà a identitu na internetu. 14 -00:00:43,560 --> 00:00:46,760 +00:00:41,560 --> 00:00:44,760 Tor zabezpeÄuje
[tor-commits] [translation/tails-perl5lib_completed] Update translations for tails-perl5lib_completed
commit 1799950f3da868f2970996370ae2d47b35f70fcc Author: Translation commit botDate: Mon Mar 21 17:14:05 2016 + Update translations for tails-perl5lib_completed --- ar.po| 2 +- bg.po| 4 ++-- cy.po| 2 +- de.po| 4 ++-- el.po| 2 +- en_GB.po | 2 +- es.po| 2 +- fi.po| 2 +- fr.po| 4 ++-- fr_CA.po | 4 ++-- hr_HR.po | 4 ++-- hu.po| 4 ++-- id.po| 6 +++--- it.po| 4 ++-- ko.po| 2 +- lt.po| 4 ++-- nb.po| 4 ++-- nl.po| 4 ++-- pl.po| 4 ++-- pt_BR.po | 4 ++-- ro.po| 2 +- ru.po| 4 ++-- sv.po| 4 ++-- tr.po| 4 ++-- uk.po| 2 +- zh_CN.po | 4 ++-- zh_TW.po | 4 ++-- 27 files changed, 46 insertions(+), 46 deletions(-) diff --git a/ar.po b/ar.po index 0fa6d9a..cb04373 100644 --- a/ar.po +++ b/ar.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-02-03 15:35+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Ahmed Alhammadi <66222...@gmail.com>\n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/bg.po b/bg.po index 0436ae0..b328f5c 100644 --- a/bg.po +++ b/bg.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-12 15:38+\n" +"POT-Creation-Date: 2016-01-25 16:59+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tsvetan Nikolov \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/cy.po b/cy.po index 681d54b..e99962f 100644 --- a/cy.po +++ b/cy.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-01-30 02:24+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Christopher Griffiths \n" "Language-Team: Welsh (http://www.transifex.com/otf/torproject/language/cy/)\n" "MIME-Version: 1.0\n" diff --git a/de.po b/de.po index 25b990b..bed1b53 100644 --- a/de.po +++ b/de.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-21 16:21+\n" +"POT-Creation-Date: 2016-01-25 16:59+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: max weber\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" diff --git a/el.po b/el.po index 9ad34db..4b20375 100644 --- a/el.po +++ b/el.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-02-23 17:23+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: TitanJack \n" "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/en_GB.po b/en_GB.po index 4578b36..955afaa 100644 --- a/en_GB.po +++ b/en_GB.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-02-01 12:49+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/otf/torproject/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/es.po b/es.po index deb76ff..ffaa28a 100644 --- a/es.po +++ b/es.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-03-12 17:36+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: EzeqGO\n" "Language-Team: Spanish (http://www.transifex.com/otf/torproject/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/fi.po b/fi.po index 48354d5..9ec6a9c 100644 --- a/fi.po +++ b/fi.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-02-18 20:19+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Jaakko Helleranta \n" "Language-Team: Finnish (http://www.transifex.com/otf/torproject/language/fi/)\n" "MIME-Version: 1.0\n" diff --git a/fr.po b/fr.po index ebce126..74a3dc1
[tor-commits] [translation/tor-messenger-conversationsproperties] Update translations for tor-messenger-conversationsproperties
commit de8ff11236059384107139f6584ca145976bbec9 Author: Translation commit botDate: Mon Mar 21 17:22:37 2016 + Update translations for tor-messenger-conversationsproperties --- hr_HR/conversations.properties | 36 ++-- nl_BE/conversations.properties | 6 +++--- pt/conversations.properties| 4 ++-- ur_PK/conversations.properties | 2 +- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/hr_HR/conversations.properties b/hr_HR/conversations.properties index 1a5564a..1496e91 100644 --- a/hr_HR/conversations.properties +++ b/hr_HR/conversations.properties @@ -5,67 +5,67 @@ # LOCALIZATION NOTE (targetChanged): # %1$S is the new conversation title (display name of the new target), # %2$S is the protocol name used for the new target. -targetChanged=The conversation will continue with %1$S, using %2$S. +targetChanged=Razgovor Äe se nastaviti s %1$S, koristeÄi %2$S. # LOCALIZATION NOTE (statusChanged): # %1$S is the display name of the contact. # %2$S is the new status type (a value from status.properties). -statusChanged=%1$S is now %2$S. +statusChanged=%1$S je sad %2$S. # LOCALIZATION NOTE (statusChangedWithStatusText): # %1$S is the display name of the contact. # %2$S is the new status type (a value from status.properties). # %3$S is the status text (eg. "I'm currently away from the computer"). -statusChangedWithStatusText=%1$S is now %2$S: %3$S. +statusChangedWithStatusText=%1$S je sad %2$S: %3$S. # LOCALIZATION NOTE (statusChangedFromUnknown[WithStatusText]): # special case of the previous 2 strings for when the status was # previously unknown. These 2 strings should not mislead the user # into thinking the person's status has just changed. -statusChangedFromUnknown=%1$S is %2$S. -statusChangedFromUnknownWithStatusText=%1$S is %2$S: %3$S. +statusChangedFromUnknown=%1$S je %2$S. +statusChangedFromUnknownWithStatusText=%1$S je %2$S: %3$S. # LOCALIZATION NOTE (statusKnown[WithStatusText]): # special case of the previous 2 strings for when an account has just # been reconnected, so the status is now known. These 2 strings should not # mislead the user into thinking the person's status has just changed. -statusKnown=Your account has been reconnected (%1$S is %2$S). -statusKnownWithStatusText=Your account has been reconnected (%1$S is %2$S: %3$S). +statusKnown=VaÅ¡ raÄun je ponovno spojen (%1$S je %2$S). +statusKnownWithStatusText=VaÅ¡ raÄun je ponovno spojen (%1$S je %2$S: %3$S). # LOCALIZATION NOTE (statusUnknown): # %S is the display name of the contact. -statusUnknown=Your account is disconnected (the status of %S is no longer known). +statusUnknown=VaÅ¡ raÄun je odspojen (status %S viÅ¡e nije poznat). -accountDisconnected=Your account is disconnected. -accountReconnected=Your account has been reconnected. +accountDisconnected=VaÅ¡ raÄun je odspojen. +accountReconnected=VaÅ¡ raÄun je ponovno spojen. # LOCALIZATION NOTE (autoReply): # %S is replaced by the text of a message that was sent as an automatic reply. -autoReply=Auto-reply - %S +autoReply=Automatski odgovor - %S # LOCALIZATION NOTE (noTopic): # Displayed instead of the topic when no topic is set. -noTopic=No topic message for this room. +noTopic=Nema poruke teme za ovu sobu. # LOCALIZATION NOTE (topicSet): # %1$S is the conversation name, %2$S is the topic. -topicSet=The topic for %1$S is: %2$S. +topicSet=Tema za %1$S je: %2$S. # LOCALIZATION NOTE (topicNotSet): # %S is the conversation name. -topicNotSet=There is no topic for %S. +topicNotSet=Nema teme za %S. # LOCALIZATION NOTE (topicChanged): # %1$S is the user who changed the topic, %2$S is the new topic. -topicChanged=%1$S has changed the topic to: %2$S. +topicChanged=%1$S je promijenio/la temu na: %2$S. # LOCALIZATION NOTE (topicCleared): # %1$S is the user who cleared the topic. -topicCleared=%1$S has cleared the topic. +topicCleared=%1$S je oÄistio/la temu. # LOCALIZATION NOTE (nickSet): # This is displayed as a system message when a participant changes his/her # nickname in a conversation. # %1$S is the old nick. # %2$S is the new nick. -nickSet=%1$S is now known as %2$S. +nickSet=%1$S je sad znan kao %2$S. # LOCALIZATION NOTE (nickSet.you): # This is displayed as a system message when your nickname is changed. # %S is your new nick. -nickSet.you=You are now known as %S. +nickSet.you=Sad ste poznati kao %S. # LOCALIZATION NOTE (messenger.conversations.selections.ellipsis): # ellipsis is used when copying a part of a message to show that the message was cut diff --git a/nl_BE/conversations.properties b/nl_BE/conversations.properties index bb9c06c..e906dfc 100644 --- a/nl_BE/conversations.properties +++ b/nl_BE/conversations.properties @@ -61,15 +61,15 @@ topicCleared=%1$S heeft het onderwerp leeggemaakt. # nickname in a conversation. # %1$S is the old nick. # %2$S is the new nick. -nickSet=%1$S is
[tor-commits] [translation/torbutton-aboutdialogdtd] Update translations for torbutton-aboutdialogdtd
commit 743bc4888157b28002ab0d362c874752e5717bd2 Author: Translation commit botDate: Mon Mar 21 17:16:31 2016 + Update translations for torbutton-aboutdialogdtd --- bg/aboutdialog.dtd| 2 +- hr_HR/aboutdialog.dtd | 22 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bg/aboutdialog.dtd b/bg/aboutdialog.dtd index c7b24be..0646216 100644 --- a/bg/aboutdialog.dtd +++ b/bg/aboutdialog.dtd @@ -16,4 +16,4 @@ - + diff --git a/hr_HR/aboutdialog.dtd b/hr_HR/aboutdialog.dtd index 5099ad7..9cd366d 100644 --- a/hr_HR/aboutdialog.dtd +++ b/hr_HR/aboutdialog.dtd @@ -1,19 +1,19 @@ - + - - + + - + - - + + - + - + - + - - + + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-contactsproperties] Update translations for tor-messenger-contactsproperties
commit 17dcb5d02c8d7c336b4a6d5ff6271f1829693618 Author: Translation commit botDate: Mon Mar 21 17:21:54 2016 + Update translations for tor-messenger-contactsproperties --- hr_HR/contacts.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_HR/contacts.properties b/hr_HR/contacts.properties index 33af79c..9a3f338 100644 --- a/hr_HR/contacts.properties +++ b/hr_HR/contacts.properties @@ -5,4 +5,4 @@ # LOCALIZATION NOTE (defaultGroup): # This is the name of the group that will automatically be created when adding a # buddy without specifying a group. -defaultGroup=Contacts +defaultGroup=Kontakti ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tails-perl5lib] Update translations for tails-perl5lib
commit f0a23a071a1ff288c0d3029d99000f7afd91e925 Author: Translation commit botDate: Mon Mar 21 17:13:48 2016 + Update translations for tails-perl5lib --- ar.po| 2 +- az.po| 6 +++--- bg.po| 4 ++-- bn.po| 6 +++--- ca.po| 2 +- cs.po| 4 ++-- cy.po| 2 +- da.po| 6 +++--- de.po| 4 ++-- el.po| 2 +- en_GB.po | 2 +- eo.po| 6 +++--- es.po| 2 +- es_AR.po | 6 +++--- es_MX.po | 6 +++--- eu.po| 6 +++--- fa.po| 4 ++-- fi.po| 2 +- fil.po | 6 +++--- fr.po| 4 ++-- fr_CA.po | 4 ++-- fy.po| 6 +++--- gl.po| 6 +++--- he.po| 6 +++--- hr_HR.po | 8 hu.po| 4 ++-- ia.po| 6 +++--- id.po| 6 +++--- is.po| 6 +++--- it.po| 4 ++-- ja.po| 2 +- km.po| 6 +++--- ko.po| 2 +- ko_KR.po | 6 +++--- ku_IQ.po | 6 +++--- ky.po| 6 +++--- lb.po| 4 ++-- lt.po| 4 ++-- lv.po| 6 +++--- mr.po| 4 ++-- ms_MY.po | 6 +++--- my.po| 6 +++--- nb.po| 4 ++-- nl.po| 4 ++-- nl_BE.po | 6 +++--- nn.po| 2 +- pa.po| 6 +++--- pl.po| 4 ++-- pt.po| 6 +++--- pt_BR.po | 4 ++-- ro.po| 2 +- ru.po| 4 ++-- si_LK.po | 6 +++--- sk.po| 6 +++--- sk_SK.po | 6 +++--- sl_SI.po | 6 +++--- sq.po| 6 +++--- sr.po| 6 +++--- sv.po| 4 ++-- ta.po| 4 ++-- th.po| 6 +++--- tr.po| 4 ++-- uk.po| 2 +- ur_PK.po | 4 ++-- vi.po| 6 +++--- zh_CN.po | 4 ++-- zh_HK.po | 6 +++--- zh_TW.po | 4 ++-- 68 files changed, 159 insertions(+), 159 deletions(-) diff --git a/ar.po b/ar.po index 0fa6d9a..cb04373 100644 --- a/ar.po +++ b/ar.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-02-03 15:35+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Ahmed Alhammadi <66222...@gmail.com>\n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/az.po b/az.po index 0fa06d2..0f9edbb 100644 --- a/az.po +++ b/az.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-12 08:13+\n" +"POT-Creation-Date: 2016-01-25 16:59+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Azerbaijani (http://www.transifex.com/otf/torproject/language/az/)\n" "MIME-Version: 1.0\n" @@ -20,7 +20,7 @@ msgstr "" #: ../lib/Tails/RunningSystem.pm:159 msgid "Error" -msgstr "" +msgstr "XÉta" #: ../lib/Tails/RunningSystem.pm:161 msgid "" diff --git a/bg.po b/bg.po index 0436ae0..b328f5c 100644 --- a/bg.po +++ b/bg.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-12 15:38+\n" +"POT-Creation-Date: 2016-01-25 16:59+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tsvetan Nikolov \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/bn.po b/bn.po index b764277..875e365 100644 --- a/bn.po +++ b/bn.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-12 08:13+\n" +"POT-Creation-Date: 2016-01-25 16:59+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Bengali (http://www.transifex.com/otf/torproject/language/bn/)\n" "MIME-Version: 1.0\n" @@ -20,7 +20,7 @@ msgstr "" #: ../lib/Tails/RunningSystem.pm:159 msgid "Error" -msgstr "" +msgstr "সমসà§à¦¯à¦¾" #: ../lib/Tails/RunningSystem.pm:161 msgid "" diff --git a/ca.po b/ca.po index 0327e01..2cb0588 100644 --- a/ca.po +++ b/ca.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" "POT-Creation-Date: 2016-01-25 16:59+0100\n" -"PO-Revision-Date: 2016-03-15 09:38+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Carlos Marin \n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/cs.po b/cs.po index bb7c1aa..9eeb162 100644 --- a/cs.po +++ b/cs.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2016-01-11 15:40+0100\n" -"PO-Revision-Date: 2016-01-18 15:40+\n" +"POT-Creation-Date: 2016-01-25
[tor-commits] [translation/tor-messenger-commandsproperties] Update translations for tor-messenger-commandsproperties
commit 6505e4e03734b95c0cf5649e82171b943e30d833 Author: Translation commit botDate: Mon Mar 21 17:21:15 2016 + Update translations for tor-messenger-commandsproperties --- hr_HR/commands.properties | 22 +++--- ko/commands.properties| 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/hr_HR/commands.properties b/hr_HR/commands.properties index d4e3a91..fdb680b 100644 --- a/hr_HR/commands.properties +++ b/hr_HR/commands.properties @@ -4,24 +4,24 @@ # LOCALIZATION NOTE (commands): # %S is a comma separated list of command names. -commands=Commands: %S.\nUse /help command for more information. +commands=Naredbe: %S.\nKoristite /help naredba za viÅ¡e informacija. # LOCALIZATION NOTE (noCommand, noHelp): # %S is the command name the user typed. -noCommand=No '%S' command. -noHelp=No help message for the '%S' command, sorry! +noCommand=Nema '%S' naredbe. +noHelp=Nema poruke pomoÄi za '%S' naredbu, žao nam je! -sayHelpString=say message: send a message without processing commands. -rawHelpString=raw message: send a message without escaping HTML entities. -helpHelpString=help name: show the help message for the name command, or the list of possible commands when used without parameter. +sayHelpString=say poruka: poÅ¡alji poruku bez naredbi obrade. +rawHelpString=raw poruka: poÅ¡alji poruku bez izbjegavanja HTML entiteta. +helpHelpString=help ime: prikaži poruku pomoÄi za ime naredbu, ili popis moguÄih naredbi kad je koriÅ¡teno bez parametra. # LOCALIZATION NOTE (statusCommand): # %1$S is replaced with a status command name # (one of "back", "away", "busy", "dnd", or "offline"). # %2$S is replaced with the localized version of that status type # (one of the 5 strings below). -statusCommand=%1$S status message: set the status to %2$S with an optional status message. -back=available -away=away -busy=unavailable -dnd=unavailable +statusCommand=%1$S poruka stanja: postavi status na %2$S s opcionalno porukom stanja. +back=dostupno +away=odsutno +busy=nedostupno +dnd=nedostupno offline=offline diff --git a/ko/commands.properties b/ko/commands.properties index 5d595e9..6755bf9 100644 --- a/ko/commands.properties +++ b/ko/commands.properties @@ -4,7 +4,7 @@ # LOCALIZATION NOTE (commands): # %S is a comma separated list of command names. -commands=Commands: %S.\nUse /help command for more information. +commands=ëª ë ¹: %S.\nìì¸í ì ë³´ë /help ëª ë ¹ì ì¬ì©íì¸ì. # LOCALIZATION NOTE (noCommand, noHelp): # %S is the command name the user typed. noCommand='%S' ëª ë ¹ì´ ììµëë¤. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-messenger-authproperties] Update translations for tor-messenger-authproperties
commit 9737c1105392f0b82438b8bdc5cbf0f3c4953d73 Author: Translation commit botDate: Mon Mar 21 17:20:37 2016 + Update translations for tor-messenger-authproperties --- az/auth.properties| 2 +- bn/auth.properties| 2 +- eo/auth.properties| 2 +- es_AR/auth.properties | 2 +- es_MX/auth.properties | 2 +- et/auth.properties| 2 +- eu/auth.properties| 2 +- fil/auth.properties | 2 +- fy/auth.properties| 2 +- gl/auth.properties| 2 +- hi/auth.properties| 2 +- hr_HR/auth.properties | 24 is/auth.properties| 2 +- km/auth.properties| 2 +- mr/auth.properties| 2 +- ne/auth.properties| 2 +- pa/auth.properties| 2 +- si_LK/auth.properties | 2 +- sk_SK/auth.properties | 2 +- sl/auth.properties| 2 +- sr/auth.properties| 2 +- ta/auth.properties| 2 +- th/auth.properties| 2 +- uz/auth.properties| 2 +- zh_HK/auth.properties | 2 +- 25 files changed, 36 insertions(+), 36 deletions(-) diff --git a/az/auth.properties b/az/auth.properties index f76c719..a033857 100644 --- a/az/auth.properties +++ b/az/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Oldu diff --git a/bn/auth.properties b/bn/auth.properties index f76c719..95bd23a 100644 --- a/bn/auth.properties +++ b/bn/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=সমাপà§à¦¤ diff --git a/eo/auth.properties b/eo/auth.properties index f76c719..f2ee16d 100644 --- a/eo/auth.properties +++ b/eo/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Preta diff --git a/es_AR/auth.properties b/es_AR/auth.properties index f76c719..a851ed4 100644 --- a/es_AR/auth.properties +++ b/es_AR/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Hecho diff --git a/es_MX/auth.properties b/es_MX/auth.properties index f76c719..a851ed4 100644 --- a/es_MX/auth.properties +++ b/es_MX/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Hecho diff --git a/et/auth.properties b/et/auth.properties index f76c719..7e528c0 100644 --- a/et/auth.properties +++ b/et/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Valmis diff --git a/eu/auth.properties b/eu/auth.properties index f76c719..e4f335e 100644 --- a/eu/auth.properties +++ b/eu/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's identity. auth.success=Verifying your contact's identity completed successfully. auth.successThem=Your contact has successfully verified your identity. You may want to verify their identity as well by asking your own question. auth.fail=Failed to verify your contact's identity. -auth.done=Done +auth.done=Eginda diff --git a/fil/auth.properties b/fil/auth.properties index f76c719..6976fd2 100644 --- a/fil/auth.properties +++ b/fil/auth.properties @@ -9,4 +9,4 @@ auth.error=An error occurred while verifying your contact's
[tor-commits] [translation/tor-messenger-authdtd] Update translations for tor-messenger-authdtd
commit 295368dbee9d93b2fc9d1de3469b23e5a24e57d6 Author: Translation commit botDate: Mon Mar 21 17:19:40 2016 + Update translations for tor-messenger-authdtd --- af/auth.dtd | 2 +- am/auth.dtd | 4 ++-- ast/auth.dtd | 4 ++-- az/auth.dtd | 8 be/auth.dtd | 8 bn/auth.dtd | 6 +++--- br/auth.dtd | 2 +- bs/auth.dtd | 8 cv/auth.dtd | 4 ++-- cy/auth.dtd | 6 +++--- eo/auth.dtd | 8 es_AR/auth.dtd | 6 +++--- es_CL/auth.dtd | 2 +- es_MX/auth.dtd | 6 +++--- et/auth.dtd | 6 +++--- eu/auth.dtd | 2 +- fil/auth.dtd | 6 +++--- fo/auth.dtd | 8 fy/auth.dtd | 6 +++--- ga/auth.dtd | 2 +- gl/auth.dtd | 8 gu/auth.dtd | 4 ++-- gu_IN/auth.dtd | 2 +- hi/auth.dtd | 8 hr/auth.dtd | 8 hr_HR/auth.dtd | 42 +- ia/auth.dtd | 6 +++--- is/auth.dtd | 8 kk/auth.dtd | 2 +- km/auth.dtd | 8 kn/auth.dtd | 4 ++-- ko_KR/auth.dtd | 8 ky/auth.dtd | 4 ++-- lo/auth.dtd | 6 +++--- lt/auth.dtd | 2 +- mk/auth.dtd | 4 ++-- mr/auth.dtd | 2 +- ms_MY/auth.dtd | 8 my/auth.dtd | 8 pa/auth.dtd | 8 ru@petr1708/auth.dtd | 6 +++--- sco/auth.dtd | 2 +- si_LK/auth.dtd | 8 sk_SK/auth.dtd | 8 sl/auth.dtd | 8 sl_SI/auth.dtd | 8 sr/auth.dtd | 8 sr@latin/auth.dtd| 6 +++--- ta/auth.dtd | 8 th/auth.dtd | 8 uz/auth.dtd | 6 +++--- vi/auth.dtd | 8 zh_HK/auth.dtd | 6 +++--- 53 files changed, 172 insertions(+), 172 deletions(-) diff --git a/af/auth.dtd b/af/auth.dtd index 8df5727..c823c1c 100644 --- a/af/auth.dtd +++ b/af/auth.dtd @@ -1,6 +1,6 @@ - + diff --git a/am/auth.dtd b/am/auth.dtd index 8df5727..d16e5b8 100644 --- a/am/auth.dtd +++ b/am/auth.dtd @@ -1,7 +1,7 @@ - - + + diff --git a/ast/auth.dtd b/ast/auth.dtd index 8df5727..fbbdd4a 100644 --- a/ast/auth.dtd +++ b/ast/auth.dtd @@ -2,8 +2,8 @@ - - + + diff --git a/az/auth.dtd b/az/auth.dtd index 8df5727..7116e0d 100644 --- a/az/auth.dtd +++ b/az/auth.dtd @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/be/auth.dtd b/be/auth.dtd index 8df5727..19fa57f 100644 --- a/be/auth.dtd +++ b/be/auth.dtd @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/bn/auth.dtd b/bn/auth.dtd index 8df5727..6f051ac 100644 --- a/bn/auth.dtd +++ b/bn/auth.dtd @@ -1,9 +1,9 @@ - - - + + + diff --git a/br/auth.dtd b/br/auth.dtd index 8df5727..9332b5d 100644 --- a/br/auth.dtd +++ b/br/auth.dtd @@ -1,6 +1,6 @@ - + diff --git a/bs/auth.dtd b/bs/auth.dtd index 8df5727..cbe5c09 100644 --- a/bs/auth.dtd +++ b/bs/auth.dtd @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/cv/auth.dtd b/cv/auth.dtd index 8df5727..9a01d2e 100644 --- a/cv/auth.dtd +++ b/cv/auth.dtd @@ -2,8 +2,8 @@ - - + + diff --git a/cy/auth.dtd b/cy/auth.dtd index 3891462..2b80e12 100644 --- a/cy/auth.dtd +++ b/cy/auth.dtd @@ -1,9 +1,9 @@ - - - + + + diff --git a/eo/auth.dtd b/eo/auth.dtd index 8df5727..661a0c7 100644 --- a/eo/auth.dtd +++ b/eo/auth.dtd @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/es_AR/auth.dtd b/es_AR/auth.dtd index 8df5727..8cd0dc8 100644 --- a/es_AR/auth.dtd +++ b/es_AR/auth.dtd @@ -1,8 +1,8 @@ - - - + + + diff --git a/es_CL/auth.dtd b/es_CL/auth.dtd index 8df5727..23834a5 100644 --- a/es_CL/auth.dtd +++ b/es_CL/auth.dtd @@ -1,6 +1,6 @@ - + diff --git a/es_MX/auth.dtd b/es_MX/auth.dtd index 8df5727..8cd0dc8 100644 --- a/es_MX/auth.dtd +++ b/es_MX/auth.dtd @@ -1,8 +1,8 @@ - - - + + + diff --git a/et/auth.dtd b/et/auth.dtd index 8df5727..bd372c0 100644 --- a/et/auth.dtd +++ b/et/auth.dtd @@ -1,9 +1,9 @@ - + - - + + diff --git a/eu/auth.dtd b/eu/auth.dtd index 39cb82a..f6d48ec 100644 --- a/eu/auth.dtd +++ b/eu/auth.dtd @@ -1,6 +1,6 @@ - + diff --git a/fil/auth.dtd b/fil/auth.dtd index 8df5727..ccbd4cb 100644 --- a/fil/auth.dtd +++ b/fil/auth.dtd @@ -1,9 +1,9 @@ - + - - + + diff --git a/fo/auth.dtd b/fo/auth.dtd index 8df5727..852e155 100644 --- a/fo/auth.dtd +++ b/fo/auth.dtd @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/fy/auth.dtd b/fy/auth.dtd index 8df5727..2c3871b 100644 --- a/fy/auth.dtd +++ b/fy/auth.dtd @@ -1,9 +1,9 @@ - + - - + + diff --git a/ga/auth.dtd b/ga/auth.dtd index 8df5727..1af9779 100644 --- a/ga/auth.dtd +++ b/ga/auth.dtd @@ -1,6 +1,6 @@ - + diff --git a/gl/auth.dtd
[tor-commits] [translation/tor-messenger-accountsproperties] Update translations for tor-messenger-accountsproperties
commit 6ed3af1d677164865f4bb298d687b1007d2f8546 Author: Translation commit botDate: Mon Mar 21 17:18:06 2016 + Update translations for tor-messenger-accountsproperties --- hr_HR/accounts.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_HR/accounts.properties b/hr_HR/accounts.properties index 051ba0d..e44819e 100644 --- a/hr_HR/accounts.properties +++ b/hr_HR/accounts.properties @@ -4,6 +4,6 @@ # LOCALIZATION NOTE (passwordPromptTitle, passwordPromptText): # %S is replaced with the name of the account -passwordPromptTitle=Password for %S -passwordPromptText=Please enter your password for %S in order to connect it. -passwordPromptSaveCheckbox=Use Password Manager to remember this password. +passwordPromptTitle=Lozinka za %S +passwordPromptText=Molimo Vas unesite svoju lozinku za %S kako bi se spojili. +passwordPromptSaveCheckbox=Koristi Upravitelj lozinki da zapamti ovu lozinku. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbutton-abouttorproperties] Update translations for torbutton-abouttorproperties
commit 6aa5e8f3f6b544c8990be806a1fe5eb59d2dad99 Author: Translation commit botDate: Mon Mar 21 17:17:21 2016 + Update translations for torbutton-abouttorproperties --- hr_HR/abouttor.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_HR/abouttor.properties b/hr_HR/abouttor.properties index d607324..4873d80 100644 --- a/hr_HR/abouttor.properties +++ b/hr_HR/abouttor.properties @@ -2,19 +2,19 @@ # See LICENSE for licensing information. # vim: set sw=2 sts=2 ts=8 et: -aboutTor.searchSP.privacy=Search securely with Startpage. +aboutTor.searchSP.privacy=Pretraži sigurno sa Startpage-om. # The following string is a link which replaces %1$S above. aboutTor.searchSP.privacy.link=https://startpage.com/eng/protect-privacy.html # The following string is a link which replaces %2$S above. aboutTor.searchSP.search.link=https://startpage.com/ -aboutTor.searchDDG.privacy=Search securely with DuckDuckGo. +aboutTor.searchDDG.privacy=Pretraži sigurno s DuckDuckGo. # The following string is a link which replaces %1$S above. aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html # The following string is a link which replaces %2$S above. aboutTor.searchDDG.search.link=https://duckduckgo.com/ -aboutTor.searchDC.privacy=Search securely with Disconnect.me. +aboutTor.searchDC.privacy=Pretraži sigurno s Disconnect.me. # The following string is a link which replaces %1$S above. aboutTor.searchDC.privacy.link=https://disconnect.me/privacy # The following string is a link which replaces %2$S above. ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor_animation_completed] Update translations for tor_animation_completed
commit 6c3ef4ecf6074e279879265c8276019e35a55457 Author: Translation commit botDate: Mon Mar 21 17:16:03 2016 + Update translations for tor_animation_completed --- ca.srt| 52 ++-- cs.srt| 52 ++-- eu.srt| 52 ++-- fa.srt| 52 ++-- pl.srt| 52 ++-- sq.srt| 52 ++-- zh_HK.srt | 52 ++-- 7 files changed, 182 insertions(+), 182 deletions(-) diff --git a/ca.srt b/ca.srt index 80fa4a2..c8a01d7 100644 --- a/ca.srt +++ b/ca.srt @@ -40,127 +40,127 @@ i molta més informació sobre vosaltres i la vostra vida. 10 -00:00:29,620 --> 00:00:32,460 +00:00:29,200 --> 00:00:31,500 la qual probablement no tenÃeu intenció de compartir amb desconeguts, 11 -00:00:32,920 --> 00:00:35,840 +00:00:31,700 --> 00:00:34,000 que podrien fer servir fà cilment aquesta informació per abusar de vosaltres. 12 -00:00:36,220 --> 00:00:38,120 +00:00:34,500 --> 00:00:37,000 Però això no passa si esteu fent servir Tor! 13 -00:00:39,140 --> 00:00:42,840 +00:00:37,140 --> 00:00:40,840 El navegador Tor protegeix la nostra privadesa i la nostra identitat a Internet. 14 -00:00:43,560 --> 00:00:46,760 +00:00:41,560 --> 00:00:44,760 Tor assegura la teva connexió amb tres capes d'encriptatge. 15 -00:00:46,940 --> 00:00:51,760 +00:00:44,940 --> 00:00:49,760 i la passa per tres servidors duts a terme voluntà riament a tot el món, 16 -00:00:52,280 --> 00:00:55,520 +00:00:50,280 --> 00:00:53,520 que ens permeten comunicar-nos de manera anònima per Internet. 17 -00:00:58,560 --> 00:01:00,280 +00:00:56,560 --> 00:00:58,280 Tor també protegeix la nostra informació 18 -00:01:00,400 --> 00:01:03,900 +00:00:58,400 --> 00:01:01,900 dels objectius del govern o les grans empreses i la vigilà ncia massiva. 19 -00:01:04,880 --> 00:01:09,340 +00:01:02,880 --> 00:01:07,340 Potser viviu en un paÃs repressiu que intenta controlar i vigilar Internet. 20 -00:01:09,900 --> 00:01:13,800 +00:01:07,900 --> 00:01:11,800 O potser no voleu que les grans empreses s'aprofitin de la vostra informació personal. 21 -00:01:14,880 --> 00:01:17,640 +00:01:12,880 --> 00:01:15,640 Tot fa que tots els seus usuaris siguin iguals 22 -00:01:17,920 --> 00:01:20,800 +00:01:15,920 --> 00:01:18,800 cosa que confon l'observador i us fa anònims. 23 -00:01:21,500 --> 00:01:24,980 +00:01:19,500 --> 00:01:22,980 Per tant, quanta més gent faci servir la xarxa Tor més forta es farà 24 -00:01:25,140 --> 00:01:29,800 +00:01:23,140 --> 00:01:27,800 ja que és més fà cil amagar-se en una multitud de gent que és idèntica. 25 -00:01:30,700 --> 00:01:33,240 +00:01:28,700 --> 00:01:31,240 Podeu sortejar la censura sense preocupar-vos que 26 -00:01:33,400 --> 00:01:36,100 +00:01:31,400 --> 00:01:34,100 el censor sà pigue el que feu a internet. 27 -00:01:38,540 --> 00:01:41,440 +00:01:36,540 --> 00:01:39,440 Els anuncis no us seguiran allà on aneu durant mesos, 28 -00:01:41,640 --> 00:01:43,300 +00:01:39,640 --> 00:01:41,300 començant per quan vau fer clic per primer cop en un producte. 29 -00:01:45,880 --> 00:01:49,380 +00:01:43,880 --> 00:01:47,380 Fent servir Tor, els llocs que visiteu no sabran ni qui sou, 30 -00:01:49,540 --> 00:01:51,760 +00:01:47,540 --> 00:01:49,760 ni de quina part del món els esteu visitant 31 -00:01:51,920 --> 00:01:53,920 +00:01:49,920 --> 00:01:51,920 a no ser que us identifiqueu i els ho digueu. 32 -00:01:56,200 --> 00:01:57,840 +00:01:54,200 --> 00:01:55,840 Baixant i usant Tor 33 -00:01:58,200 --> 00:02:00,560 +00:01:56,200 --> 00:01:58,560 podeu protegir la gent que necessita anonimat. 34 -00:02:00,880 --> 00:02:03,640 +00:01:58,880 --> 00:02:01,640 com els activistes, periodistes i bloggers. 35 -00:02:04,000 --> 00:02:09,000 +00:02:02,000 --> 00:02:07,000 Baixa i utilitza Tor! O executa un relé! diff --git a/cs.srt b/cs.srt index 45aa820..86ba61d 100644 --- a/cs.srt +++ b/cs.srt @@ -35,106 +35,106 @@ vÅ¡echny stránky, co jste navÅ¡tÃvil, prohlÞeÄ, který použÃváte, a jeÅ¡tÄ mnohem vÃce informacà o Vás a VaÅ¡em životÄ, 10 -00:00:29,620 --> 00:00:32,460 +00:00:29,200 --> 00:00:31,500 které byste pravdÄpodobnÄ nechtÄli sdÃlet se zcela neznámými lidmi, 11 -00:00:32,920 --> 00:00:35,840 +00:00:31,700 --> 00:00:34,000 kteÅà mohou tato data krásnÄ použÃt, aby Vás využili, 12 -00:00:36,220 --> 00:00:38,120 +00:00:34,500 --> 00:00:37,000 Ale ne, pokud použÃvate Tor! 13 -00:00:39,140 --> 00:00:42,840 +00:00:37,140 --> 00:00:40,840 ProhlÞeÄ Tor chránà naÅ¡e soukromà a identitu na
[tor-commits] [translation/tor-and-https_completed] Update translations for tor-and-https_completed
commit c66de51f7e38b9e9a93aa9908584920cedaf21b1 Author: Translation commit botDate: Mon Mar 21 17:15:09 2016 + Update translations for tor-and-https_completed --- ar.po| 38 +++--- az.po| 8 bg.po| 38 +++--- ca.po| 42 +- cs.po| 4 ++-- da.po| 4 ++-- de.po| 4 ++-- el.po| 38 +++--- en_GB.po | 4 ++-- es.po| 4 ++-- eu.po| 4 ++-- fa.po| 38 +++--- fi.po| 4 ++-- fo.po| 4 ++-- fr.po| 2 +- fr_CA.po | 42 +- he.po| 4 ++-- hr_HR.po | 8 hu.po| 4 ++-- id.po| 10 +- it.po| 6 +++--- ja.po| 6 +++--- ka.po| 2 +- km.po| 38 +++--- ko.po| 4 ++-- ko_KR.po | 4 ++-- lt.po| 4 ++-- lv.po| 38 +++--- nb.po| 42 +- nl.po| 2 +- nn.po| 38 +++--- pl.po| 40 pt.po| 2 +- pt_BR.po | 2 +- ro.po| 8 ru.po| 10 +- sk.po| 40 sk_SK.po | 8 sl_SI.po | 4 ++-- sq.po| 4 ++-- sr.po| 4 ++-- sv.po| 40 th.po| 42 +- tr.po| 6 +++--- uk.po| 38 +++--- vi.po| 2 +- zh_CN.po | 8 zh_TW.po | 2 +- 48 files changed, 374 insertions(+), 374 deletions(-) diff --git a/ar.po b/ar.po index ec1bfc1..f5d533b 100644 --- a/ar.po +++ b/ar.po @@ -5,10 +5,10 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" -"POT-Creation-Date: 2014-05-24 18:11+\n" -"PO-Revision-Date: 2014-07-04 15:14+\n" +"POT-Creation-Date: 2014-07-17 14:23+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: 0xidz \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/torproject/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -31,107 +31,107 @@ msgstr "Tor Ù HTTPS" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Site.com" msgstr "Site.com" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "user / pw" msgstr "٠ستع٠٠/ ÙÙÙ Ø© اÙ٠رÙر" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "data" msgstr "٠عطÙات" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "location" msgstr "Ù ÙÙع" #. (itstool) path: defs/text #. Keep it short: 3em max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "WiFi" msgstr "ÙاÙÙاÙ" #. (itstool) path: defs/text #. Keep it short: 4em max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "ISP" msgstr "٠زÙد" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Hacker" msgstr "ÙاÙر" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Lawyer" msgstr "Ù Øا٠" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Sysadmin" msgstr "٠دÙرأÙظ٠ة" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Police" msgstr "شرطة" #. (itstool) path: defs/text -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "NSA" msgstr "ÙÙاÙØ© اÙأ٠٠اÙÙÙÙ Ù" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Tor relay" msgstr "تØÙÙÙØ© Tor" #. (itstool) path: defs/text -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Key" msgstr "Ù ÙتاØ" #. (itstool) path: defs/text -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Internet connection" msgstr "إتصاÙ
[tor-commits] [translation/tor-and-https] Update translations for tor-and-https
commit cf728e687ffdef81cf0d6ef9ed08f6ee2c77015d Author: Translation commit botDate: Mon Mar 21 17:14:41 2016 + Update translations for tor-and-https --- ar.po| 38 +++--- az.po| 8 bg.po| 38 +++--- bn.po| 38 +++--- ca.po| 42 +- cs.po| 4 ++-- cy.po| 2 +- da.po| 4 ++-- de.po| 4 ++-- el.po| 38 +++--- en_GB.po | 4 ++-- eo.po| 4 ++-- es.po| 4 ++-- es_AR.po | 2 +- es_MX.po | 2 +- eu.po| 4 ++-- fa.po| 38 +++--- fi.po| 4 ++-- fil.po | 4 ++-- fo.po| 4 ++-- fr.po| 2 +- fr_CA.po | 42 +- fy.po| 4 ++-- gl.po| 4 ++-- he.po| 4 ++-- hi.po| 4 ++-- hr.po| 2 +- hr_HR.po | 38 +++--- hu.po| 4 ++-- id.po| 10 +- it.po| 6 +++--- ja.po| 6 +++--- ka.po| 2 +- km.po| 38 +++--- kn.po| 4 ++-- ko.po| 4 ++-- ko_KR.po | 4 ++-- lo.po| 4 ++-- lt.po| 4 ++-- lv.po| 38 +++--- ms_MY.po | 4 ++-- nb.po| 42 +- nl.po| 2 +- nl_BE.po | 2 +- nn.po| 38 +++--- pl.po| 40 pt.po| 2 +- pt_BR.po | 2 +- ro.po| 8 ru.po| 10 +- sk.po| 40 sk_SK.po | 8 sl.po| 4 ++-- sl_SI.po | 4 ++-- sq.po| 4 ++-- sr.po| 4 ++-- sv.po| 40 ta.po| 4 ++-- th.po| 42 +- tr.po| 6 +++--- uk.po| 38 +++--- ur_PK.po | 4 ++-- vi.po| 2 +- zh_CN.po | 8 zh_HK.po | 38 +++--- zh_TW.po | 2 +- 66 files changed, 454 insertions(+), 454 deletions(-) diff --git a/ar.po b/ar.po index ec1bfc1..f5d533b 100644 --- a/ar.po +++ b/ar.po @@ -5,10 +5,10 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" -"POT-Creation-Date: 2014-05-24 18:11+\n" -"PO-Revision-Date: 2014-07-04 15:14+\n" +"POT-Creation-Date: 2014-07-17 14:23+\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: 0xidz \n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/torproject/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -31,107 +31,107 @@ msgstr "Tor Ù HTTPS" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Site.com" msgstr "Site.com" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "user / pw" msgstr "٠ستع٠٠/ ÙÙÙ Ø© اÙ٠رÙر" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "data" msgstr "٠عطÙات" #. (itstool) path: defs/text #. Keep it short: 7em max. Seven times the capital letter "M". -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "location" msgstr "Ù ÙÙع" #. (itstool) path: defs/text #. Keep it short: 3em max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "WiFi" msgstr "ÙاÙÙاÙ" #. (itstool) path: defs/text #. Keep it short: 4em max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "ISP" msgstr "٠زÙد" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Hacker" msgstr "ÙاÙر" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Lawyer" msgstr "Ù Øا٠" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Sysadmin" msgstr "٠دÙرأÙظ٠ة" #. (itstool) path: defs/text #. Keep it short: 8em is ok, 9em is max. -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "Police" msgstr "شرطة" #. (itstool) path: defs/text -#: C/tor-and-https.svg:346 +#: C/tor-and-https.svg:363 #, no-wrap msgid "NSA" msgstr "ÙÙاÙØ© اÙأ٠٠اÙÙÙÙ Ù" #. (itstool) path: defs/text
[tor-commits] [translation/tails-iuk] Update translations for tails-iuk
commit 16a185355750bcb6e77c6af4efcc4abef5ad6e34 Author: Translation commit botDate: Mon Mar 21 17:12:54 2016 + Update translations for tails-iuk --- ar.po| 4 ++-- az.po| 4 ++-- be.po| 4 ++-- bg.po| 4 ++-- bn.po| 4 ++-- ca.po| 4 ++-- cs.po| 4 ++-- cy.po| 4 ++-- da.po| 4 ++-- de.po| 4 ++-- el.po| 4 ++-- en_GB.po | 4 ++-- eo.po| 4 ++-- es.po| 4 ++-- es_AR.po | 4 ++-- es_CO.po | 4 ++-- es_MX.po | 4 ++-- eu.po| 4 ++-- fa.po| 4 ++-- fi.po| 4 ++-- fil.po | 4 ++-- fr.po| 4 ++-- fr_CA.po | 4 ++-- gl.po| 4 ++-- he.po| 8 +++ hr.po| 4 ++-- hr_HR.po | 82 hu.po| 4 ++-- id.po| 8 +++ it.po| 4 ++-- ja.po| 4 ++-- km.po| 4 ++-- ko.po| 4 ++-- ko_KR.po | 4 ++-- lo.po| 4 ++-- lt.po| 4 ++-- lv.po| 4 ++-- ms_MY.po | 4 ++-- nb.po| 4 ++-- nl.po| 4 ++-- nl_BE.po | 4 ++-- nn.po| 4 ++-- pa.po| 4 ++-- pl.po| 8 +++ pt.po| 4 ++-- pt_BR.po | 4 ++-- ro.po| 4 ++-- ru.po| 4 ++-- sk.po| 4 ++-- sk_SK.po | 4 ++-- sl_SI.po | 4 ++-- sq.po| 4 ++-- sr.po| 4 ++-- sv.po| 4 ++-- ta.po| 4 ++-- tr.po| 8 +++ uk.po| 4 ++-- ur_PK.po | 4 ++-- vi.po| 4 ++-- zh_CN.po | 6 ++--- zh_HK.po | 4 ++-- zh_TW.po | 4 ++-- 62 files changed, 172 insertions(+), 172 deletions(-) diff --git a/ar.po b/ar.po index 98ccad2..f8a3161 100644 --- a/ar.po +++ b/ar.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-17 09:10+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/az.po b/az.po index c9711ea..faec8ca 100644 --- a/az.po +++ b/az.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-17 09:10+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Azerbaijani (http://www.transifex.com/otf/torproject/language/az/)\n" "MIME-Version: 1.0\n" diff --git a/be.po b/be.po index c4717b8..8dc0b77 100644 --- a/be.po +++ b/be.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-17 09:10+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Belarusian (http://www.transifex.com/otf/torproject/language/be/)\n" "MIME-Version: 1.0\n" diff --git a/bg.po b/bg.po index d9e371b..edf20b1 100644 --- a/bg.po +++ b/bg.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2016-01-11 13:04+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tsvetan Nikolov \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/bn.po b/bn.po index 94c6339..47c0fb1 100644 --- a/bn.po +++ b/bn.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-17 09:10+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Bengali (http://www.transifex.com/otf/torproject/language/bn/)\n" "MIME-Version: 1.0\n" diff --git a/ca.po b/ca.po index 8f19ef5..fd5ef70 100644 --- a/ca.po +++ b/ca.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-29 18:40+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: laia_\n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/cs.po b/cs.po index 72fd26d..c960028 100644 --- a/cs.po +++ b/cs.po @@
[tor-commits] [translation/tails-iuk_completed] Update translations for tails-iuk_completed
commit 727a8a9fb319857b4253ea8da86984037e5e8ed2 Author: Translation commit botDate: Mon Mar 21 17:13:11 2016 + Update translations for tails-iuk_completed --- bg.po| 4 ++-- ca.po| 4 ++-- de.po| 4 ++-- el.po| 4 ++-- en_GB.po | 4 ++-- es.po| 4 ++-- fr.po| 4 ++-- fr_CA.po | 4 ++-- he.po| 8 hr_HR.po | 4 ++-- hu.po| 4 ++-- id.po| 8 it.po| 4 ++-- ja.po| 4 ++-- ko.po| 4 ++-- lv.po| 4 ++-- nb.po| 4 ++-- nl.po| 4 ++-- pl.po| 8 pt_BR.po | 4 ++-- ro.po| 4 ++-- ru.po| 4 ++-- sv.po| 4 ++-- tr.po| 8 uk.po| 4 ++-- zh_CN.po | 6 +++--- zh_TW.po | 4 ++-- 27 files changed, 63 insertions(+), 63 deletions(-) diff --git a/bg.po b/bg.po index d9e371b..edf20b1 100644 --- a/bg.po +++ b/bg.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2016-01-11 13:04+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tsvetan Nikolov \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/ca.po b/ca.po index 8f19ef5..fd5ef70 100644 --- a/ca.po +++ b/ca.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-29 18:40+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: laia_\n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/de.po b/de.po index a3e3677..ab2db3a 100644 --- a/de.po +++ b/de.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-21 16:32+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: max weber\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" diff --git a/el.po b/el.po index 62d1124..b8c3179 100644 --- a/el.po +++ b/el.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2016-02-23 16:21+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: TitanJack \n" "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/en_GB.po b/en_GB.po index 6146a59..55f3903 100644 --- a/en_GB.po +++ b/en_GB.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2016-02-01 12:48+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/otf/torproject/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/es.po b/es.po index 7f9286b..4592b68 100644 --- a/es.po +++ b/es.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-18 18:36+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Edward Navarro\n" "Language-Team: Spanish (http://www.transifex.com/otf/torproject/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/fr.po b/fr.po index 5ca61c6..1226553a 100644 --- a/fr.po +++ b/fr.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n" -"PO-Revision-Date: 2015-12-19 03:35+\n" +"POT-Creation-Date: 2016-03-07 17:51+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Gwennole Hangard \n" "Language-Team: French (http://www.transifex.com/otf/torproject/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/fr_CA.po b/fr_CA.po index e08fa7a..08483a8 100644 --- a/fr_CA.po +++ b/fr_CA.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: Tails developers \n" -"POT-Creation-Date: 2015-12-16 18:20+0100\n"
[tor-commits] [translation/torbutton-branddtd] Update translations for torbutton-branddtd
commit 8fabbd481837eaec92ccdad34ac2b97c80af2b23 Author: Translation commit botDate: Mon Mar 21 17:09:31 2016 + Update translations for torbutton-branddtd --- ast/brand.dtd | 2 +- az/brand.dtd| 2 +- bn/brand.dtd| 2 +- eo/brand.dtd| 2 +- es_CL/brand.dtd | 2 +- fy/brand.dtd| 2 +- hr/brand.dtd| 2 +- hr_HR/brand.dtd | 18 +- ko_KR/brand.dtd | 2 +- ms_MY/brand.dtd | 2 +- pa/brand.dtd| 2 +- si_LK/brand.dtd | 2 +- sr/brand.dtd| 2 +- ta/brand.dtd| 2 +- zh_HK/brand.dtd | 2 +- 15 files changed, 23 insertions(+), 23 deletions(-) diff --git a/ast/brand.dtd b/ast/brand.dtd index 8a467b5..4225ac0 100644 --- a/ast/brand.dtd +++ b/ast/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/az/brand.dtd b/az/brand.dtd index bd27231..ca1d23e 100644 --- a/az/brand.dtd +++ b/az/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/bn/brand.dtd b/bn/brand.dtd index baed062..1f17d18 100644 --- a/bn/brand.dtd +++ b/bn/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/eo/brand.dtd b/eo/brand.dtd index e424490..40246a8 100644 --- a/eo/brand.dtd +++ b/eo/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/es_CL/brand.dtd b/es_CL/brand.dtd index 250d898..3eb1776 100644 --- a/es_CL/brand.dtd +++ b/es_CL/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/fy/brand.dtd b/fy/brand.dtd index fa6df2d..5dbd2c5 100644 --- a/fy/brand.dtd +++ b/fy/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/hr/brand.dtd b/hr/brand.dtd index 25a1bc1..c1be555 100644 --- a/hr/brand.dtd +++ b/hr/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/hr_HR/brand.dtd b/hr_HR/brand.dtd index 3df1a08..c8f2465 100644 --- a/hr_HR/brand.dtd +++ b/hr_HR/brand.dtd @@ -2,14 +2,14 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - - - - + + + + + - - - - + + + + diff --git a/ko_KR/brand.dtd b/ko_KR/brand.dtd index e754256..dce59c3 100644 --- a/ko_KR/brand.dtd +++ b/ko_KR/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/ms_MY/brand.dtd b/ms_MY/brand.dtd index ae0a9f8..9e2362c 100644 --- a/ms_MY/brand.dtd +++ b/ms_MY/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/pa/brand.dtd b/pa/brand.dtd index 916595d..6b4603f 100644 --- a/pa/brand.dtd +++ b/pa/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/si_LK/brand.dtd b/si_LK/brand.dtd index 193f69a..01bb07d 100644 --- a/si_LK/brand.dtd +++ b/si_LK/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/sr/brand.dtd b/sr/brand.dtd index 68f07aa..2f68be5 100644 --- a/sr/brand.dtd +++ b/sr/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/ta/brand.dtd b/ta/brand.dtd index 561103b..b7ab73f 100644 --- a/ta/brand.dtd +++ b/ta/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + diff --git a/zh_HK/brand.dtd b/zh_HK/brand.dtd index f01a8df..66a569c 100644 --- a/zh_HK/brand.dtd +++ b/zh_HK/brand.dtd @@ -2,7 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - + ___ tor-commits mailing list
[tor-commits] [translation/torbutton-torbuttonproperties] Update translations for torbutton-torbuttonproperties
commit cc5e00a989fb85e5383e37b45cede33de30e737a Author: Translation commit botDate: Mon Mar 21 17:11:07 2016 + Update translations for torbutton-torbuttonproperties --- hr_HR/torbutton.properties | 132 ++--- is/torbutton.properties| 2 +- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/hr_HR/torbutton.properties b/hr_HR/torbutton.properties index 8ff83b3..346cac1 100644 --- a/hr_HR/torbutton.properties +++ b/hr_HR/torbutton.properties @@ -1,79 +1,79 @@ -torbutton.button.tooltip.disabled = Enable Tor -torbutton.button.tooltip.enabled = Disable Tor +torbutton.button.tooltip.disabled = OmoguÄi Tor +torbutton.button.tooltip.enabled = OnemoguÄi Tor torbutton.circuit_display.internet = Internet -torbutton.circuit_display.ip_unknown = IP unknown -torbutton.circuit_display.onion_site = Onion site -torbutton.circuit_display.this_browser = This browser -torbutton.circuit_display.relay = relay -torbutton.circuit_display.tor_bridge = Bridge -torbutton.circuit_display.unknown_country = Unknown country -torbutton.content_sizer.margin_tooltip = Tor Browser adds this margin to make the width and height of your window less distinctive, and thus reduces the ability of people to track you online. -torbutton.panel.tooltip.disabled = Click to enable Tor -torbutton.panel.tooltip.enabled = Click to disable Tor -torbutton.panel.plugins.disabled = Click to enable plugins -torbutton.panel.plugins.enabled = Click to disable plugins -torbutton.panel.label.disabled = Tor Disabled -torbutton.panel.label.enabled = Tor Enabled -extensions.torbut...@torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data. -torbutton.popup.history.warning = Torbutton blocked activity from a tab loaded in a different Tor state.\n\nThis is to work around Firefox Bugs 409737 and 417869.\n\nIf this popup seemed to happen for no reason, one of your tabs is attempting to reload itself in the background, and this was blocked.\n\nTo reload the tab in this Tor state, hit 'enter' in the URL location box.\n\n -torbutton.popup.plugin.warning = Torbutton blocked direct Tor load of plugin content.\n\nUse Save-As instead.\n\n -torbutton.popup.confirm_ca_certs = Torbutton Note: It appears you have no custom Certificate Authorities. Examining the Certificate Authority list is a slow operation and slows down Tor toggle. Would you like to disable the isolation of Certificate Authority certificates? (If you don't understand this, it is safe to click OK) -torbutton.popup.ff3.warning = Warning!\n\nTorbutton on Firefox 3 is known to leak your timezone and livemarks via Tor.\n\nDo you wish to continue anyway? -torbutton.popup.toggle.warning = You need to toggle Tor or restart for your settings to take effect. -torbutton.popup.test.success = Tor proxy test successful! -torbutton.popup.test.failure = Tor proxy test FAILED! Check your proxy and Polipo settings. -torbutton.popup.test.confirm_toggle = The most recent Tor proxy test failed to use Tor.\n\nAre you sure you want to enable anyway?\n\nNote: If you have fixed the problem, you can rerun the test in the Torbutton Proxy Preferences window to eliminate this warning. -torbutton.popup.test.ff3_notice = Click OK to test Tor proxy settings. This test will happen in the background. Please be patient. -torbutton.panel.label.verified = Tor Verified -torbutton.popup.test.auto_failed = The automatic Tor proxy test failed to use Tor.\n\nAre you sure you want to enable anyway? -torbutton.prefs.recommended = (recommended) -torbutton.prefs.optional = (optional) -torbutton.prefs.crucial = (crucial) -torbutton.popup.external.title = Download an external file type? -torbutton.popup.external.app = Tor Browser cannot display this file. You will need to open it with another application.\n\n -torbutton.popup.external.note = Some types of files can cause applications to connect to the Internet without using Tor.\n\n -torbutton.popup.external.suggest = To be safe, you should only open downloaded files while offline, or use a Tor Live CD such as Tails.\n -torbutton.popup.launch = Download file -torbutton.popup.cancel = Cancel -torbutton.popup.dontask = Automatically download files from now on -torbutton.popup.test.no_http_proxy = Tor proxy test: Local HTTP Proxy is unreachable. Is Polipo running properly? -torbutton.popup.captcha.title = Avoid Google Captchas? -torbutton.popup.captcha.ask = Torbutton detected a Google Captcha. Would you like to be redirected to another search engine for this query? -torbutton.popup.captcha.always = Always perform this action from now on -torbutton.popup.redirect = Redirect -torbutton.popup.no_redirect = Don't Redirect -torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of web pages. This may cause web pages that you prefer to read in your native
[tor-commits] [translation/torbutton-branddtd_completed] Update translations for torbutton-branddtd_completed
commit fffc4de5ea2998a2974ebbb99211d4364d46dd87 Author: Translation commit botDate: Mon Mar 21 17:09:55 2016 + Update translations for torbutton-branddtd_completed --- bn/brand.dtd | 1 + sr/brand.dtd | 1 + 2 files changed, 2 insertions(+) diff --git a/bn/brand.dtd b/bn/brand.dtd index 54415a5..1f17d18 100644 --- a/bn/brand.dtd +++ b/bn/brand.dtd @@ -2,6 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + diff --git a/sr/brand.dtd b/sr/brand.dtd index 12e18a4..2f68be5 100644 --- a/sr/brand.dtd +++ b/sr/brand.dtd @@ -2,6 +2,7 @@ - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbutton-brandproperties_completed] Update translations for torbutton-brandproperties_completed
commit ec39e7d9df78efc56c25bff41c41336090e779ed Author: Translation commit botDate: Mon Mar 21 17:08:53 2016 + Update translations for torbutton-brandproperties_completed --- az/brand.properties| 1 + eo/brand.properties| 1 + es_AR/brand.properties | 1 + km/brand.properties| 1 + kn/brand.properties| 1 + ko_KR/brand.properties | 1 + ms_MY/brand.properties | 1 + pa/brand.properties| 1 + si_LK/brand.properties | 1 + sk_SK/brand.properties | 1 + sr/brand.properties| 1 + ta/brand.properties| 1 + th/brand.properties| 1 + 13 files changed, 13 insertions(+) diff --git a/az/brand.properties b/az/brand.properties index a80802f..ecfa120 100644 --- a/az/brand.properties +++ b/az/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor Brauzer brandShortName=Tor Brauzer brandFullName=Tor Brauzer vendorShortName=Tor LayihÉsi diff --git a/eo/brand.properties b/eo/brand.properties index 33dec63..db80593 100644 --- a/eo/brand.properties +++ b/eo/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor krozilo brandShortName=Tor krozilo brandFullName=Tor krozilo vendorShortName=Tor Projektas diff --git a/es_AR/brand.properties b/es_AR/brand.properties index 52036ac..500c9a1 100644 --- a/es_AR/brand.properties +++ b/es_AR/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Buscador Tor brandShortName=Tor Browser brandFullName=Tor Browser vendorShortName=Proyecto Tor diff --git a/km/brand.properties b/km/brand.properties index 4e34e1d..0ba4c10 100644 --- a/km/brand.properties +++ b/km/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor Browser brandShortName=Tor Browser brandFullName=Tor Browser vendorShortName=áááááá Tor diff --git a/kn/brand.properties b/kn/brand.properties index 089cbdb..59829bf 100644 --- a/kn/brand.properties +++ b/kn/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=à²à²¾à²°à³ ಬà³à²°à³à²¸à²°à³ brandShortName=à²à²¾à²°à³ ಬà³à²°à³à²¸à²°à³ brandFullName=à²à²¾à²°à³ ಬà³à²°à³à²¸à²°à³ vendorShortName=à²à²¾à²°à³ ಯà³à²à²¨à³ diff --git a/ko_KR/brand.properties b/ko_KR/brand.properties index 18381ef..d6a2978 100644 --- a/ko_KR/brand.properties +++ b/ko_KR/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor ë¸ë¼ì°ì brandShortName=Tor ë¸ë¼ì°ì brandFullName=Tor ë¸ë¼ì°ì vendorShortName=Tor íë¡ì í¸ diff --git a/ms_MY/brand.properties b/ms_MY/brand.properties index cbbd27f..12d8242 100644 --- a/ms_MY/brand.properties +++ b/ms_MY/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Pelayar Tor brandShortName=Pelayar Tor brandFullName=Pelayar Tor vendorShortName=Projek Tor diff --git a/pa/brand.properties b/pa/brand.properties index 96b21f5..6968fe4 100644 --- a/pa/brand.properties +++ b/pa/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=à¨à©à¨° ਬਰਾà¨à©à¨° brandShortName=à¨à©à¨° ਬਰਾà¨à©à¨° brandFullName=à¨à©à¨° ਬਰਾà¨à© vendorShortName=à¨à©à¨° ਪà©à¨°à©à¨à©à¨à¨ diff --git a/si_LK/brand.properties b/si_LK/brand.properties index 298a84f..b8b9503 100644 --- a/si_LK/brand.properties +++ b/si_LK/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor බà·âරà·à·à·à¶»à¶º brandShortName=Tor බà·âරà·à·à·à¶»à¶º brandFullName=Tor බà·âරà·à·à·à¶»à¶º vendorShortName=Tor à·à·âයà·à¶´à·à¶à·à¶º diff --git a/sk_SK/brand.properties b/sk_SK/brand.properties index 7bb505c..4c520c0 100644 --- a/sk_SK/brand.properties +++ b/sk_SK/brand.properties @@ -2,6 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +brandShorterName=Tor Browser brandShortName=Tor Browser brandFullName=Tor Browser vendorShortName=Tor Project diff --git
[tor-commits] [translation/torbutton-brandproperties] Update translations for torbutton-brandproperties
commit 1af0d415b50ee9cc8db9ce40f0e7baeaa79b9a2a Author: Translation commit botDate: Mon Mar 21 17:08:20 2016 + Update translations for torbutton-brandproperties --- ast/brand.properties | 2 +- az/brand.properties| 2 +- bn/brand.properties| 2 +- eo/brand.properties| 2 +- es_AR/brand.properties | 2 +- es_CL/brand.properties | 2 +- es_CO/brand.properties | 2 +- fy/brand.properties| 2 +- hr/brand.properties| 2 +- hr_HR/brand.properties | 18 +- kn/brand.properties| 2 +- ko_KR/brand.properties | 2 +- ms_MY/brand.properties | 2 +- pa/brand.properties| 2 +- si_LK/brand.properties | 2 +- sr/brand.properties| 2 +- ta/brand.properties| 2 +- vi/brand.properties| 2 +- zh_HK/brand.properties | 2 +- 19 files changed, 27 insertions(+), 27 deletions(-) diff --git a/ast/brand.properties b/ast/brand.properties index 9dd18b6..65cffb7 100644 --- a/ast/brand.properties +++ b/ast/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Navegador Tor brandShortName=Navegador Tor brandFullName=Navegador Tor vendorShortName=Proyeutu Tor diff --git a/az/brand.properties b/az/brand.properties index b2d9dea..ecfa120 100644 --- a/az/brand.properties +++ b/az/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Tor Brauzer brandShortName=Tor Brauzer brandFullName=Tor Brauzer vendorShortName=Tor LayihÉsi diff --git a/bn/brand.properties b/bn/brand.properties index 9938958..9d8e178 100644 --- a/bn/brand.properties +++ b/bn/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=à¦à¦° বà§à¦°à¦¾à¦à¦à¦¾à¦° brandShortName=à¦à¦° বà§à¦°à¦¾à¦à¦à¦¾à¦° brandFullName=à¦à¦° বà§à¦°à¦¾à¦à¦à¦¾à¦° vendorShortName=à¦à¦° পà§à¦°à¦à¦²à§à¦ª diff --git a/eo/brand.properties b/eo/brand.properties index baaf076..db80593 100644 --- a/eo/brand.properties +++ b/eo/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Tor krozilo brandShortName=Tor krozilo brandFullName=Tor krozilo vendorShortName=Tor Projektas diff --git a/es_AR/brand.properties b/es_AR/brand.properties index ada9b1c..500c9a1 100644 --- a/es_AR/brand.properties +++ b/es_AR/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Buscador Tor brandShortName=Tor Browser brandFullName=Tor Browser vendorShortName=Proyecto Tor diff --git a/es_CL/brand.properties b/es_CL/brand.properties index 92a57b6..9b9365c 100644 --- a/es_CL/brand.properties +++ b/es_CL/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Explorador Tor brandShortName=Explorador Tor brandFullName=Explorador Tor vendorShortName=Proyecto Tor diff --git a/es_CO/brand.properties b/es_CO/brand.properties index 34df9e0..b7ea5c6 100644 --- a/es_CO/brand.properties +++ b/es_CO/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Navegador Tor brandShortName=Navegador Tor brandFullName=Navegador Tor vendorShortName=Proyecto Tor diff --git a/fy/brand.properties b/fy/brand.properties index b1ee96c..ae116f1 100644 --- a/fy/brand.properties +++ b/fy/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Tor-browser brandShortName=Tor-blêder brandFullName=Tor-blêder vendorShortName=Tor-projekt diff --git a/hr/brand.properties b/hr/brand.properties index 73bcd53..4bbb455 100644 --- a/hr/brand.properties +++ b/hr/brand.properties @@ -2,7 +2,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -brandShorterName=Tor Browser +brandShorterName=Tor Preglednik brandShortName=Tor Preglednik brandFullName=Tor Preglednik vendorShortName=Tor Projekt diff --git a/hr_HR/brand.properties b/hr_HR/brand.properties index 732c157..5c282b2
[tor-commits] [translation/abouttor-homepage_completed] Update translations for abouttor-homepage_completed
commit f8bb1cde48191c27efc4b567a24027fffda2bd6c Author: Translation commit botDate: Mon Mar 21 17:07:41 2016 + Update translations for abouttor-homepage_completed --- hr_HR/aboutTor.dtd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hr_HR/aboutTor.dtd b/hr_HR/aboutTor.dtd index 671710a..e65df6c 100644 --- a/hr_HR/aboutTor.dtd +++ b/hr_HR/aboutTor.dtd @@ -21,7 +21,7 @@ - + https://startpage.com/rth/search;> https://duckduckgo.com/html/;> @@ -44,6 +44,6 @@ https://www.torproject.org/donate/donate.html.en;> - + https://www.torproject.org/about/overview.html.en;> ___ 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 e8efbe5c41b257dcb191a07a4a33b9e347f33947 Author: Translation commit botDate: Mon Mar 21 17:07:21 2016 + Update translations for abouttor-homepage --- hr_HR/aboutTor.dtd | 52 ++-- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/hr_HR/aboutTor.dtd b/hr_HR/aboutTor.dtd index d44f164..e65df6c 100644 --- a/hr_HR/aboutTor.dtd +++ b/hr_HR/aboutTor.dtd @@ -4,46 +4,46 @@ - vim: set sw=2 sts=2 ts=8 et syntax=xml: --> - + - - - + + + - + - - - - - - + + + + + + - + https://startpage.com/rth/search;> https://duckduckgo.com/html/;> https://search.disconnect.me/searchTerms/search?ses=Googlelocation_option=USsource=tor;> - - - - - - - + + + + + + + https://www.torproject.org/download/download.html.en#warning;> - - - + + + https://www.torproject.org/docs/tor-doc-relay.html.en;> - + https://www.torproject.org/getinvolved/volunteer.html.en;> - + https://www.torproject.org/donate/donate.html.en;> - - + + https://www.torproject.org/about/overview.html.en;> ___ 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 f58133eb79f713190b2d97f9a1a240fcd1451b6c Author: Translation commit botDate: Mon Mar 21 17:06:35 2016 + Update translations for tails-misc_completed --- bg.po| 82 de.po| 4 ++-- en_GB.po | 4 ++-- es.po| 82 fr.po| 4 ++-- fr_CA.po | 82 hu.po| 82 id.po| 6 ++--- it.po| 4 ++-- ko.po| 2 +- nb.po| 82 nl.po| 4 ++-- pl.po| 4 ++-- pt_BR.po | 2 +- ro.po| 4 ++-- ru.po| 82 sv.po| 8 +++ tr.po| 82 uk.po| 82 zh_CN.po | 82 zh_TW.po | 4 ++-- 21 files changed, 394 insertions(+), 394 deletions(-) diff --git a/bg.po b/bg.po index 2ee069d..d0b1c97 100644 --- a/bg.po +++ b/bg.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-11 21:00+0100\n" -"PO-Revision-Date: 2016-01-12 15:37+\n" +"POT-Creation-Date: 2016-03-17 15:03+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: Tsvetan Nikolov \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" @@ -51,30 +51,30 @@ msgid "" "\n" msgstr "ÐомогнеÑе ни да попÑавиме ваÑÐ¸Ñ Ð±Ñг!\nÐÑоÑеÑеÑе наÑиÑе инÑÑÑÑкÑии за докладване на бÑгове.\nÐе вклÑÑвайÑе повеÑе лиÑна инÑоÑмаÑÐ¸Ñ Ð¾Ñ ÐºÐ¾Ð»ÐºÐ¾Ñо е нÑжно!\nÐÑноÑно, даванеÑо на Ð½Ð°Ñ Ð½Ð° е-поÑа\n\nÐавайки ни имейл адÑÐµÑ Ð²Ð¸Ðµ ни позволÑваÑе да Ñе ÑвÑÑжем Ñ Ð²Ð°Ñ, за да Ñе изÑÑним пÑоблема. Това е Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ за по-голÑмаÑа ÑаÑÑ Ð¾Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð¸Ñе, коиÑо полÑÑаваме, ÑÑй каÑо повеÑеÑо доклади без никаква инÑоÑмаÑÐ¸Ñ Ð·Ð° конÑÐ°ÐºÑ Ñа безполезни. ÐÑ Ð´ÑÑга ÑÑÑана ÑÑÑо Ñака пÑедоÑÑавÑ\nвÑзможноÑÑ Ð·Ð° подÑлÑÑване, каÑо елекÑÑоннаÑа Ñи поÑа или инÑеÑÐ½ÐµÑ Ð´Ð¾ÑÑавÑик, , за дапоÑвÑÑди, Ñе използваÑе Tails.\n\n" -#: config/chroot_local-includes/usr/local/bin/electrum:14 +#: config/chroot_local-includes/usr/local/bin/electrum:17 msgid "Persistence is disabled for Electrum" msgstr "УÑÑойÑивоÑÑÑа е забÑанена за Electrum" -#: config/chroot_local-includes/usr/local/bin/electrum:16 +#: config/chroot_local-includes/usr/local/bin/electrum:19 msgid "" "When you reboot Tails, all of Electrum's data will be lost, including your " "Bitcoin wallet. It is strongly recommended to only run Electrum when its " "persistence feature is activated." msgstr "ÐогаÑо ÑеÑÑаÑÑиÑаÑе Tails, вÑиÑки данни на Electrum Ñе бÑÐ´Ð°Ñ Ð·Ð°Ð³Ñбени, вклÑÑиÑелно Bitcoin поÑÑÑейла ви.Силно Ñе пÑепоÑÑÑва единÑÑвено да ÑÑаÑÑиÑаÑе ÐлекÑÑÑм Ñамо, когаÑо акÑивиÑа ÑвоÑÑа ÑÑнкÑÐ¸Ñ Ð·Ð° ÑÑÑойÑивоÑÑ." -#: config/chroot_local-includes/usr/local/bin/electrum:18 +#: config/chroot_local-includes/usr/local/bin/electrum:21 msgid "Do you want to start Electrum anyway?" msgstr "ÐÑкаÑе ли да ÑÑаÑÑиÑаÑе Electrum Ñака или инаÑе?" -#: config/chroot_local-includes/usr/local/bin/electrum:20 -#: config/chroot_local-includes/usr/local/bin/icedove:22 -#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:36 +#: config/chroot_local-includes/usr/local/bin/electrum:23 +#: config/chroot_local-includes/usr/local/bin/icedove:23 +#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:41 msgid "_Launch" msgstr "_СÑаÑÑиÑане" -#: config/chroot_local-includes/usr/local/bin/electrum:21 -#: config/chroot_local-includes/usr/local/bin/icedove:23 -#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:37 +#: config/chroot_local-includes/usr/local/bin/electrum:24 +#: config/chroot_local-includes/usr/local/bin/icedove:24 +#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:42 msgid "_Exit" msgstr "_ÐÐ·Ñ Ð¾Ð´" @@ -235,11 +235,11 @@ msgstr "ÐÑодÑкÑÐ¸Ñ Ð½Ð° GnuPG:" msgid "Other messages provided by GnuPG:"
[tor-commits] [translation/mat-gui] Update translations for mat-gui
commit 25c267ce576b6f6bf1d72749d91e83939b432484 Author: Translation commit botDate: Mon Mar 21 17:01:09 2016 + Update translations for mat-gui --- af.po | 2 +- ak.po | 2 +- am.po | 2 +- ar.po | 2 +- arn.po | 2 +- ast.po | 2 +- az.po | 2 +- be.po | 2 +- bg.po | 2 +- bn.po | 2 +- bn_IN.po | 2 +- bo.po | 2 +- br.po | 2 +- bs.po | 2 +- ca.po | 2 +- cs.po | 2 +- csb.po | 2 +- cy.po | 2 +- da.po | 2 +- de.po | 2 +- dz.po | 2 +- el.po | 2 +- en_GB.po | 2 +- eo.po | 2 +- es.po | 2 +- es_AR.po | 2 +- es_CL.po | 2 +- es_CO.po | 2 +- es_MX.po | 2 +- et.po | 2 +- eu.po | 2 +- fa.po | 2 +- fi.po | 2 +- fil.po | 2 +- fo.po | 2 +- fr.po | 2 +- fr_CA.po | 2 +- fur.po | 2 +- fy.po | 2 +- ga.po | 2 +- gl.po | 2 +- gu.po | 2 +- gun.po | 2 +- ha.po | 2 +- he.po | 2 +- hi.po | 2 +- hr.po | 2 +- hr_HR.po | 84 +- ht.po | 2 +- hu.po | 2 +- hy.po | 2 +- ia.po | 2 +- id.po | 4 +-- is.po | 2 +- it.po | 2 +- ja.po | 2 +- jv.po | 2 +- ka.po | 2 +- km.po | 2 +- kn.po | 2 +- ko.po | 4 +-- ko_KR.po | 2 +- ku.po | 2 +- ku_IQ.po | 2 +- kw.po | 2 +- ky.po | 2 +- lb.po | 2 +- lg.po | 2 +- ln.po | 2 +- lo.po | 2 +- lt.po | 2 +- lv.po | 2 +- mg.po | 2 +- mi.po | 2 +- mk.po | 2 +- ml.po | 2 +- mn.po | 2 +- mr.po | 2 +- ms_MY.po | 2 +- mt.po | 2 +- my.po | 2 +- nah.po | 2 +- nap.po | 2 +- nb.po | 2 +- ne.po | 2 +- nl.po | 2 +- nl_BE.po | 2 +- nn.po | 2 +- nso.po | 2 +- oc.po | 2 +- or.po | 2 +- pa.po | 2 +- pap.po | 2 +- pl.po | 2 +- pms.po | 2 +- ps.po | 2 +- pt.po | 2 +- pt_BR.po | 2 +- ro.po | 2 +- ru.po | 2 +- r...@petr1708.po | 2 +- sco.po | 2 +- si_LK.po | 2 +- sk.po | 2 +- sk_SK.po | 2 +- sl.po | 2 +- sl_SI.po | 2 +- so.po | 2 +- son.po | 2 +- sq.po | 2 +- sr.po | 2 +- st.po | 2 +- su.po | 2 +- sv.po | 2 +- sw.po | 2 +- ta.po | 2 +- te.po | 2 +- tg.po | 2 +- th.po | 2 +- ti.po | 2 +- tk.po | 2 +- tr.po | 2 +- uk.po | 2 +- ur.po | 2 +- ur_PK.po | 2 +- uz.po | 2 +- ve.po | 2 +- vi.po | 2 +- wa.po | 2 +- wo.po | 2 +- zh_CN.po | 2 +- zh_HK.po | 2 +- zh_TW.po | 2 +- zu.po | 2 +- 134 files changed, 177 insertions(+), 177 deletions(-) diff --git a/af.po b/af.po index 7e81227..fb55dbd 100644 --- a/af.po +++ b/af.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 09:31+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: carolyn \n" "Language-Team: Afrikaans (http://www.transifex.com/otf/torproject/language/af/)\n" "MIME-Version: 1.0\n" diff --git a/ak.po b/ak.po index 7b5dd38..aeabe8e 100644 --- a/ak.po +++ b/ak.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 09:31+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: carolyn \n" "Language-Team: Akan (http://www.transifex.com/otf/torproject/language/ak/)\n" "MIME-Version: 1.0\n" diff --git a/am.po b/am.po index 72108c4..f90a2cb 100644 --- a/am.po +++ b/am.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 09:31+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: carolyn \n" "Language-Team: Amharic (http://www.transifex.com/otf/torproject/language/am/)\n" "MIME-Version: 1.0\n" diff --git a/ar.po b/ar.po index 7d659db..a50f108 100644 --- a/ar.po
[tor-commits] [translation/tor-launcher-network-settings_completed] Update translations for tor-launcher-network-settings_completed
commit ed23c449a817b172181a92993245e1c96c065500 Author: Translation commit botDate: Mon Mar 21 17:05:02 2016 + Update translations for tor-launcher-network-settings_completed --- hr_HR/network-settings.dtd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hr_HR/network-settings.dtd b/hr_HR/network-settings.dtd index 038a4ac..fea9644 100644 --- a/hr_HR/network-settings.dtd +++ b/hr_HR/network-settings.dtd @@ -18,7 +18,7 @@ internetskoj vezi ovog raÄunala."> - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-network-settings] Update translations for tor-launcher-network-settings
commit 181f4ef9b1cffce87a599c1ef7c1735bffd5f1f1 Author: Translation commit botDate: Mon Mar 21 17:04:47 2016 + Update translations for tor-launcher-network-settings --- hr_HR/network-settings.dtd| 112 +- sr@latin/network-settings.dtd | 2 +- uz/network-settings.dtd | 2 +- 3 files changed, 59 insertions(+), 57 deletions(-) diff --git a/hr_HR/network-settings.dtd b/hr_HR/network-settings.dtd index 75ece3b..fea9644 100644 --- a/hr_HR/network-settings.dtd +++ b/hr_HR/network-settings.dtd @@ -1,75 +1,77 @@ - + - - + + - + - - + + - - - - - - - + + + + + + + - - + + - - - - - - - - + + + + + + + + - - - + + + - - + + - + - - - - + + + + - - + + - - - - - - - - - + + + + + + + + + - - - - - -https://bridges.torproject.org;> - - -https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com;> - - + + + + + +https://bridges.torproject.org;> + + +https://www.riseup.net, https://mail.google.com, ili https://mail.yahoo.com;> + + diff --git a/sr@latin/network-settings.dtd b/sr@latin/network-settings.dtd index dcb6891..3256a58 100644 --- a/sr@latin/network-settings.dtd +++ b/sr@latin/network-settings.dtd @@ -60,7 +60,7 @@ - + diff --git a/uz/network-settings.dtd b/uz/network-settings.dtd index f8795c1..b9a3947 100644 --- a/uz/network-settings.dtd +++ b/uz/network-settings.dtd @@ -17,7 +17,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-progress] Update translations for tor-launcher-progress
commit 4e1708d3f7350eca118c716cbecb554fd5be8479 Author: Translation commit botDate: Mon Mar 21 17:03:21 2016 + Update translations for tor-launcher-progress --- hr_HR/progress.dtd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hr_HR/progress.dtd b/hr_HR/progress.dtd index 9ac9ad7..da9a846 100644 --- a/hr_HR/progress.dtd +++ b/hr_HR/progress.dtd @@ -1,4 +1,4 @@ - - - + + + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/tor-launcher-properties] Update translations for tor-launcher-properties
commit e1495a886a3137ddcccd79f4f9a1d7ab6ffd1f72 Author: Translation commit botDate: Mon Mar 21 17:02:37 2016 + Update translations for tor-launcher-properties --- et/torlauncher.properties | 2 +- gu/torlauncher.properties | 2 +- hr_HR/torlauncher.properties| 112 mk/torlauncher.properties | 2 +- ms_MY/torlauncher.properties| 2 +- my/torlauncher.properties | 2 +- sco/torlauncher.properties | 2 +- si_LK/torlauncher.properties| 2 +- sl/torlauncher.properties | 2 +- sr@latin/torlauncher.properties | 2 +- 10 files changed, 65 insertions(+), 65 deletions(-) diff --git a/et/torlauncher.properties b/et/torlauncher.properties index 6c7a4f9..6aeb338 100644 --- a/et/torlauncher.properties +++ b/et/torlauncher.properties @@ -27,7 +27,7 @@ torlauncher.error_bridges_missing=You must specify one or more bridges. torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges. torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings. -torlauncher.recommended_bridge=(recommended) +torlauncher.recommended_bridge=(soovitatud) torlauncher.connect=Connect torlauncher.restart_tor=Restart Tor diff --git a/gu/torlauncher.properties b/gu/torlauncher.properties index 0ef4437..7501f9d 100644 --- a/gu/torlauncher.properties +++ b/gu/torlauncher.properties @@ -27,7 +27,7 @@ torlauncher.error_bridges_missing=You must specify one or more bridges. torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges. torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings. -torlauncher.recommended_bridge=(recommended) +torlauncher.recommended_bridge=(સà«àªàªµà«àª²) torlauncher.connect=Connect torlauncher.restart_tor=Restart Tor diff --git a/hr_HR/torlauncher.properties b/hr_HR/torlauncher.properties index 0ef4437..83e6914 100644 --- a/hr_HR/torlauncher.properties +++ b/hr_HR/torlauncher.properties @@ -1,61 +1,61 @@ ### Copyright (c) 2016, The Tor Project, Inc. ### See LICENSE for licensing information. -torlauncher.error_title=Tor Launcher - -torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team. -torlauncher.tor_exited2=Restarting Tor will not close your browser tabs. -torlauncher.tor_controlconn_failed=Could not connect to Tor control port. -torlauncher.tor_failed_to_start=Tor failed to start. -torlauncher.tor_control_failed=Failed to take control of Tor. -torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection. -torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S). - -torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S -torlauncher.tor_missing=The Tor executable is missing. +torlauncher.error_title=PokretaÄ Tor-a + +torlauncher.tor_exited=Tor je neoÄekivano izaÅ¡ao. Ovo bi moglo biti zbog greÅ¡ke u samom Tor-u, drugog programa na VaÅ¡em sustavu ili neispravnog hardware-a. Dok ne pokrenete Tor ponovno, Tor Preglednik neÄe biti u moguÄnosti pristupiti web stranicama. Ako problem ustraje, molimo Vas da poÅ¡aljete kopiju VaÅ¡eg Tor zapisa timu za podrÅ¡ku. +torlauncher.tor_exited2=Ponovno pokretanje Tor-a neÄe zatvoriti VaÅ¡e kartice u pregledniku. +torlauncher.tor_controlconn_failed=Nije se moguÄe spojiti na Tor-ov upravljaÄki port. +torlauncher.tor_failed_to_start=Tor se nije uspio pokrenuti. +torlauncher.tor_control_failed=Preuzimanje kontrole nad Tor-om nije uspjelo. +torlauncher.tor_bootstrap_failed=Tor nije uspio uspostaviti Tor mrežnu vezu. +torlauncher.tor_bootstrap_failed_details=%1$S neuspjelo (%2$S). + +torlauncher.unable_to_start_tor=Nije moguÄe pokrenuti Tor.\n\n%S +torlauncher.tor_missing=Nije moguÄe pronaÄi izvrÅ¡ni program za Tor. torlauncher.torrc_missing=The torrc file is missing and could not be created. torlauncher.datadir_missing=The Tor data directory does not exist and could not be created. -torlauncher.password_hash_missing=Failed to get hashed password. - -torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S -torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S -torlauncher.ensure_tor_is_running=Please ensure that Tor is running. - -torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet. -torlauncher.error_proxy_type_missing=You must select the proxy type. -torlauncher.error_bridges_missing=You must specify one or more bridges.
[tor-commits] [translation/mat-gui_completed] Update translations for mat-gui_completed
commit 8862f12b41f9eefe814cce5dc2cd6f16a5bfc9b3 Author: Translation commit botDate: Mon Mar 21 17:01:26 2016 + Update translations for mat-gui_completed --- de.po| 2 +- el.po| 2 +- en_GB.po | 2 +- es.po| 2 +- eu.po| 2 +- fr.po| 2 +- fr_CA.po | 2 +- hr_HR.po | 4 ++-- hu.po| 2 +- id.po| 4 ++-- it.po| 2 +- nb.po| 2 +- nl.po| 2 +- pl.po| 2 +- pt_BR.po | 2 +- ro.po| 2 +- ru.po| 2 +- sv.po| 2 +- tr.po| 2 +- zh_CN.po | 2 +- zh_TW.po | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/de.po b/de.po index b86989f..3754ca2 100644 --- a/de.po +++ b/de.po @@ -18,7 +18,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-13 14:38+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Thilo N\n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" diff --git a/el.po b/el.po index 58489ca..3cd4678 100644 --- a/el.po +++ b/el.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-23 16:27+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: TitanJack \n" "Language-Team: Greek (http://www.transifex.com/otf/torproject/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/en_GB.po b/en_GB.po index eeb591d..ae7bd4e 100644 --- a/en_GB.po +++ b/en_GB.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 10:21+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/otf/torproject/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/es.po b/es.po index 8ab72ff..259cfd2 100644 --- a/es.po +++ b/es.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 10:18+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: strel\n" "Language-Team: Spanish (http://www.transifex.com/otf/torproject/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/eu.po b/eu.po index 8e772bd..c284656 100644 --- a/eu.po +++ b/eu.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-27 06:41+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Antxon Baldarra \n" "Language-Team: Basque (http://www.transifex.com/otf/torproject/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/fr.po b/fr.po index 997f0d5..4ff4ffb 100644 --- a/fr.po +++ b/fr.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-15 07:31+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Gwennole Hangard \n" "Language-Team: French (http://www.transifex.com/otf/torproject/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/fr_CA.po b/fr_CA.po index d93f961..73a38fa 100644 --- a/fr_CA.po +++ b/fr_CA.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-11 12:02+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Trans-fr\n" "Language-Team: French (Canada) (http://www.transifex.com/otf/torproject/language/fr_CA/)\n" "MIME-Version: 1.0\n" diff --git a/hr_HR.po b/hr_HR.po index a3539c9..e23ec29 100644 --- a/hr_HR.po +++ b/hr_HR.po @@ -12,8 +12,8 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-03-14 06:44+\n" -"Last-Translator: Igor \n" +"PO-Revision-Date: 2016-03-21 16:34+\n" +"Last-Translator: erinm\n" "Language-Team: Croatian (Croatia) (http://www.transifex.com/otf/torproject/language/hr_HR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/hu.po b/hu.po index 547ef38..7cbd3e2 100644 --- a/hu.po +++ b/hu.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-02-10 23:06+0100\n" -"PO-Revision-Date: 2016-02-12 19:26+\n" +"PO-Revision-Date: 2016-03-21 16:34+\n" "Last-Translator: Faludi Zoltán\n" "Language-Team: Hungarian (http://www.transifex.com/otf/torproject/language/hu/)\n" "MIME-Version: 1.0\n" diff --git a/id.po
[tor-commits] [translation/https_everywhere] Update translations for https_everywhere
commit 0291d8a408cf578ac7b7aa6a1b6f26007f6a824c Author: Translation commit botDate: Mon Mar 21 16:52:46 2016 + Update translations for https_everywhere --- af/https-everywhere.dtd | 2 +- am/https-everywhere.dtd | 2 +- ar/https-everywhere.dtd | 2 +- az/https-everywhere.dtd | 2 +- be/https-everywhere.dtd | 2 +- bg/https-everywhere.dtd | 2 +- br/https-everywhere.dtd | 2 +- bs/https-everywhere.dtd | 2 +- cy/https-everywhere.dtd | 2 +- eo/https-everywhere.dtd | 2 +- eo/https-everywhere.properties| 2 +- es/https-everywhere.dtd | 2 +- es_AR/https-everywhere.dtd| 2 +- es_CL/https-everywhere.dtd| 2 +- es_CO/https-everywhere.dtd| 2 +- es_MX/https-everywhere.dtd| 2 +- et/https-everywhere.dtd | 2 +- eu/https-everywhere.dtd | 2 +- fil/https-everywhere.dtd | 2 +- fo/https-everywhere.dtd | 2 +- fy/https-everywhere.dtd | 2 +- ga/https-everywhere.dtd | 2 +- gl/https-everywhere.dtd | 2 +- gu/https-everywhere.dtd | 2 +- gu_IN/https-everywhere.dtd| 2 +- he/https-everywhere.dtd | 2 +- hi/https-everywhere.dtd | 2 +- hr/https-everywhere.dtd | 2 +- hr_HR/https-everywhere.dtd| 98 +++ hr_HR/https-everywhere.properties | 16 +++ hr_HR/ssl-observatory.dtd | 89 +-- ia/https-everywhere.dtd | 2 +- is/https-everywhere.dtd | 2 +- ka/https-everywhere.dtd | 2 +- km/https-everywhere.dtd | 2 +- ko/https-everywhere.dtd | 6 +-- ko_KR/https-everywhere.dtd| 2 +- ku_IQ/https-everywhere.dtd| 2 +- ky/https-everywhere.dtd | 2 +- lb/https-everywhere.dtd | 2 +- lb/ssl-observatory.dtd| 2 +- lo/https-everywhere.dtd | 2 +- lt/https-everywhere.dtd | 2 +- lv/https-everywhere.dtd | 2 +- mk/https-everywhere.dtd | 2 +- mr/https-everywhere.dtd | 2 +- ms_MY/https-everywhere.dtd| 2 +- my/https-everywhere.dtd | 2 +- nl_BE/https-everywhere.dtd| 2 +- nn/https-everywhere.dtd | 2 +- pa/https-everywhere.dtd | 2 +- pt/https-everywhere.dtd | 2 +- si_LK/https-everywhere.dtd| 2 +- sk/https-everywhere.dtd | 2 +- sk_SK/https-everywhere.dtd| 2 +- sl/https-everywhere.dtd | 2 +- sl_SI/https-everywhere.dtd| 2 +- sl_SI/ssl-observatory.dtd | 2 +- sq/https-everywhere.dtd | 2 +- sr/https-everywhere.dtd | 2 +- sr@latin/https-everywhere.dtd | 2 +- ta/https-everywhere.dtd | 2 +- th/https-everywhere.dtd | 2 +- uk/https-everywhere.dtd | 2 +- ur/https-everywhere.dtd | 2 +- ur_PK/https-everywhere.dtd| 2 +- uz/https-everywhere.dtd | 2 +- uz/ssl-observatory.dtd| 2 +- vi/https-everywhere.dtd | 2 +- zh_HK/https-everywhere.dtd| 2 +- 70 files changed, 171 insertions(+), 170 deletions(-) diff --git a/af/https-everywhere.dtd b/af/https-everywhere.dtd index 9dc7b6f..bb29be6 100644 --- a/af/https-everywhere.dtd +++ b/af/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/am/https-everywhere.dtd b/am/https-everywhere.dtd index c5bdeb1..0239f1b 100644 --- a/am/https-everywhere.dtd +++ b/am/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/ar/https-everywhere.dtd b/ar/https-everywhere.dtd index 3f414eb..117a727 100644 --- a/ar/https-everywhere.dtd +++ b/ar/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/az/https-everywhere.dtd b/az/https-everywhere.dtd index e6ed92f..5a3138e 100644 --- a/az/https-everywhere.dtd +++ b/az/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/be/https-everywhere.dtd b/be/https-everywhere.dtd index 660c1bb..11dfbbc 100644 --- a/be/https-everywhere.dtd +++ b/be/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/bg/https-everywhere.dtd b/bg/https-everywhere.dtd index f64b53d..a695ee4 100644 --- a/bg/https-everywhere.dtd +++ b/bg/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/br/https-everywhere.dtd b/br/https-everywhere.dtd index 2ac51cd..7eaae35 100644 --- a/br/https-everywhere.dtd +++ b/br/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/bs/https-everywhere.dtd b/bs/https-everywhere.dtd index 2ac51cd..8e8c5d4 100644 --- a/bs/https-everywhere.dtd +++ b/bs/https-everywhere.dtd @@ -51,6 +51,6 @@ - + diff --git a/cy/https-everywhere.dtd b/cy/https-everywhere.dtd index f9f9b87..37b0bf1 100644 --- a/cy/https-everywhere.dtd +++ b/cy/https-everywhere.dtd @@ -51,6 +51,6 @@ -
[tor-commits] [translation/https_everywhere_completed] Update translations for https_everywhere_completed
commit e861c4445c85c67063f29530fa8d00ba95d1d7e8 Author: Translation commit botDate: Mon Mar 21 16:53:53 2016 + Update translations for https_everywhere_completed --- eo/https-everywhere.properties | 2 +- es/https-everywhere.dtd| 2 +- hr_HR/https-everywhere.dtd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eo/https-everywhere.properties b/eo/https-everywhere.properties index c69a9b2..8eaf3f8 100644 --- a/eo/https-everywhere.properties +++ b/eo/https-everywhere.properties @@ -3,6 +3,6 @@ https-everywhere.menu.globalDisable = MalÅalti HTTPS-Äie https-everywhere.menu.enableDisable = Åalti/malÅalti regulojn https-everywhere.menu.noRules = (neniu regulo por Äi tiu paÄo) https-everywhere.menu.unknownRules = (reguloj por Äi tiu paÄo estas nekonataj) -https-everywhere.toolbar.hint = HTTPS-Äie estas nun aktiva. Vi enÅaltas Äin laÅ retejo alklakante la piktogramon en la adresbreto. +https-everywhere.toolbar.hint = HTTPS-Äie estas nun aktiva. Vi povas baskuligi Äin laÅ retejo alklakante la piktogramon en la adresbreto. https-everywhere.migration.notification0 = Por funkciigi gravan flikaĵon, Äi tiu Äisdatigo reÅargas la preferojn de viaj reguloj por HTTPS-Äie al la aprioraj valoroj. https-everywhere.menu.ruleset-tests = Faru la provojn de la HTTPS-Äie Regularo diff --git a/es/https-everywhere.dtd b/es/https-everywhere.dtd index 6c7527c..c2b20cd 100644 --- a/es/https-everywhere.dtd +++ b/es/https-everywhere.dtd @@ -49,7 +49,7 @@ - + diff --git a/hr_HR/https-everywhere.dtd b/hr_HR/https-everywhere.dtd index 0ff43f1..eabd2ac 100644 --- a/hr_HR/https-everywhere.dtd +++ b/hr_HR/https-everywhere.dtd @@ -16,7 +16,7 @@ - + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbirdy_completed] Update translations for torbirdy_completed
commit 1d855b59007fda884f2b8d142018d5ee41b8e9ff Author: Translation commit botDate: Mon Mar 21 16:59:55 2016 + Update translations for torbirdy_completed --- hr_HR/torbirdy.dtd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hr_HR/torbirdy.dtd b/hr_HR/torbirdy.dtd index 6c6a6be..9e583b2 100644 --- a/hr_HR/torbirdy.dtd +++ b/hr_HR/torbirdy.dtd @@ -11,8 +11,8 @@ - - + + ___ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits
[tor-commits] [translation/torbirdy] Update translations for torbirdy
commit 4e32ab5389e2e98fa957861b22a8d5c30f0ab132 Author: Translation commit botDate: Mon Mar 21 16:59:02 2016 + Update translations for torbirdy --- cy/torbirdy.dtd | 2 +- eo/torbirdy.dtd | 2 +- eo/torbirdy.properties| 18 ++-- fil/torbirdy.properties | 22 +++--- gu/torbirdy.dtd | 2 +- gu_IN/torbirdy.properties | 2 +- hr/torbirdy.dtd | 2 +- hr_HR/torbirdy.dtd| 74 +++ hr_HR/torbirdy.properties | 24 +++ my/torbirdy.dtd | 2 +- si_LK/torbirdy.properties | 2 +- sk_SK/torbirdy.dtd| 2 +- sl/torbirdy.dtd | 2 +- th/torbirdy.dtd | 2 +- uz/torbirdy.properties| 14 - vi/torbirdy.dtd | 2 +- vi/torbirdy.properties| 16 +- 17 files changed, 95 insertions(+), 95 deletions(-) diff --git a/cy/torbirdy.dtd b/cy/torbirdy.dtd index 23cf231..7ac23ac 100644 --- a/cy/torbirdy.dtd +++ b/cy/torbirdy.dtd @@ -42,7 +42,7 @@ - + diff --git a/eo/torbirdy.dtd b/eo/torbirdy.dtd index 57ab7c2..b61ad4c 100644 --- a/eo/torbirdy.dtd +++ b/eo/torbirdy.dtd @@ -42,7 +42,7 @@ - + diff --git a/eo/torbirdy.properties b/eo/torbirdy.properties index 47c84fd..e5b8c4e 100644 --- a/eo/torbirdy.properties +++ b/eo/torbirdy.properties @@ -3,17 +3,17 @@ torbirdy.name=TorBirdy torbirdy.enabled.tor=TorBirdy enÅaltita:Tor torbirdy.enabled.jondo=TorBirdy enÅaltita:JonDo torbirdy.enabled.custom=TorBirdy enÅaltita:propra prokurilo -# torbirdy.enabled.torification=TorBirdy Enabled:Transparent Torification -# torbirdy.enabled.whonix=TorBirdy Enabled:Whonix +torbirdy.enabled.torification=TorBirdy Enabled:Transparent Torification +torbirdy.enabled.whonix=TorBirdy Enabled:Whonix torbirdy.disabled=TorBirdy:malÅaltita! -# torbirdy.email.prompt=TorBirdy has disabled Thunderbird's auto-configuration wizard to protect your anonymity.\n\nThe recommended security settings for %S have been set.\n\nYou can now configure the other account settings manually. +torbirdy.email.prompt=TorBirdy has disabled Thunderbird's auto-configuration wizard to protect your anonymity.\n\nThe recommended security settings for %S have been set.\n\nYou can now configure the other account settings manually. -# torbirdy.email.advanced=Please note that changing the advanced settings of TorBirdy is NOT recommended.\n\nYou should only continue if you are sure of what you are doing. -# torbirdy.email.advanced.nextwarning=Show this warning next time -# torbirdy.email.advanced.title=TorBirdy Advanced Settings +torbirdy.email.advanced=Please note that changing the advanced settings of TorBirdy is NOT recommended.\n\nYou should only continue if you are sure of what you are doing. +torbirdy.email.advanced.nextwarning=Show this warning next time +torbirdy.email.advanced.title=TorBirdy Advanced Settings -# torbirdy.restart=You must restart Thunderbird for the time zone preference to take effect. +torbirdy.restart=You must restart Thunderbird for the time zone preference to take effect. -# torbirdy.firstrun=You are now running TorBirdy.\n\nTo help protect your anonymity, TorBirdy will enforce the Thunderbird settings it has set, preventing them from being changed by you or by any add-on. There are some settings that can be changed and those are accessed through TorBirdy's preferences dialog. When TorBirdy is uninstalled or disabled, all settings that it changes are reset to their default values (the values prior to TorBirdy's install).\n\nIf you are a new user, it is recommended that you read through the TorBirdy website to understand what we are trying to accomplish with TorBirdy for our users. -# torbirdy.website=https://trac.torproject.org/projects/tor/wiki/torbirdy +torbirdy.firstrun=You are now running TorBirdy.\n\nTo help protect your anonymity, TorBirdy will enforce the Thunderbird settings it has set, preventing them from being changed by you or by any add-on. There are some settings that can be changed and those are accessed through TorBirdy's preferences dialog. When TorBirdy is uninstalled or disabled, all settings that it changes are reset to their default values (the values prior to TorBirdy's install).\n\nIf you are a new user, it is recommended that you read through the TorBirdy website to understand what we are trying to accomplish with TorBirdy for our users. +torbirdy.website=https://trac.torproject.org/projects/tor/wiki/torbirdy diff --git a/fil/torbirdy.properties b/fil/torbirdy.properties index 238be3e..e7d0af6 100644 --- a/fil/torbirdy.properties +++ b/fil/torbirdy.properties @@ -1,19 +1,19 @@ -# torbirdy.name=TorBirdy +torbirdy.name=TorBirdy torbirdy.enabled.tor=TorBirdy Pinaganang: Tor torbirdy.enabled.jondo=TorBirdy Pinaganang: JonDo torbirdy.enabled.custom=TorBirdy Pinaganang: Pasadyang Proxy -#
[tor-commits] [translation/tails-greeter_completed] Update translations for tails-greeter_completed
commit 533e11417e690f84b8941b72f9166a475f244e9b Author: Translation commit botDate: Mon Mar 21 16:57:21 2016 + Update translations for tails-greeter_completed --- ar/ar.po | 4 ++-- bg/bg.po | 4 ++-- ca/ca.po | 4 ++-- cs/cs.po | 4 ++-- da/da.po | 4 ++-- de/de.po | 6 +++--- el/el.po | 4 ++-- en_GB/en_GB.po | 4 ++-- es/es.po | 2 +- es_AR/es_AR.po | 4 ++-- es_MX/es_MX.po | 4 ++-- fa/fa.po | 4 ++-- fi/fi.po | 4 ++-- fr/fr.po | 4 ++-- fr_CA/fr_CA.po | 4 ++-- gl/gl.po | 4 ++-- he/he.po | 8 hr_HR/hr_HR.po | 8 hu/hu.po | 4 ++-- id/id.po | 6 +++--- it/it.po | 4 ++-- ja/ja.po | 2 +- ko/ko.po | 4 ++-- lb/lb.po | 4 ++-- lt/lt.po | 4 ++-- lv/lv.po | 4 ++-- nb/nb.po | 4 ++-- nl/nl.po | 4 ++-- pl/pl.po | 4 ++-- pt/pt.po | 4 ++-- pt_BR/pt_BR.po | 4 ++-- ro/ro.po | 4 ++-- ru/ru.po | 4 ++-- sv/sv.po | 4 ++-- ta/ta.po | 4 ++-- tr/tr.po | 4 ++-- uk/uk.po | 4 ++-- zh_CN/zh_CN.po | 6 +++--- zh_HK/zh_HK.po | 4 ++-- zh_TW/zh_TW.po | 4 ++-- 40 files changed, 85 insertions(+), 85 deletions(-) diff --git a/ar/ar.po b/ar/ar.po index a14bc83..a7f613e 100644 --- a/ar/ar.po +++ b/ar/ar.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-25 15:44+0100\n" -"PO-Revision-Date: 2016-02-05 06:04+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/bg/bg.po b/bg/bg.po index 9532c17..9920f14 100644 --- a/bg/bg.po +++ b/bg/bg.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 18:12+0100\n" -"PO-Revision-Date: 2015-12-21 09:22+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Bulgarian (http://www.transifex.com/otf/torproject/language/bg/)\n" "MIME-Version: 1.0\n" diff --git a/ca/ca.po b/ca/ca.po index e4c9dae..10584f4 100644 --- a/ca/ca.po +++ b/ca/ca.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-25 15:44+0100\n" -"PO-Revision-Date: 2016-01-27 19:57+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: laia_\n" "Language-Team: Catalan (http://www.transifex.com/otf/torproject/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/cs/cs.po b/cs/cs.po index 16cefaa..3aefab1 100644 --- a/cs/cs.po +++ b/cs/cs.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 18:12+0100\n" -"PO-Revision-Date: 2015-12-21 09:22+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Czech (http://www.transifex.com/otf/torproject/language/cs/)\n" "MIME-Version: 1.0\n" diff --git a/da/da.po b/da/da.po index 92162f9..98fbf88 100644 --- a/da/da.po +++ b/da/da.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 18:12+0100\n" -"PO-Revision-Date: 2015-12-21 09:22+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Danish (http://www.transifex.com/otf/torproject/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/de/de.po b/de/de.po index 2fd100e..a81781f 100644 --- a/de/de.po +++ b/de/de.po @@ -11,7 +11,7 @@ # Oliver Baumann , 2013 # Chris , 2012 # Sacro , 2012 -# spriver , 2015 +# spriver , 2015 # sycamoreone , 2014 # Tobias Bannert , 2013 # Tobias Bannert , 2014 @@ -24,8 +24,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 18:12+0100\n" -"PO-Revision-Date: 2015-12-21 09:22+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: German (http://www.transifex.com/otf/torproject/language/de/)\n" "MIME-Version: 1.0\n" diff --git a/el/el.po b/el/el.po index 14c24da..4d46808 100644 --- a/el/el.po +++ b/el/el.po @@ -14,8 +14,8 @@ msgid "" msgstr ""
[tor-commits] [translation/tails-greeter] Update translations for tails-greeter
commit 42ba2abbfb932b2bd3210ffce916c62c29d74acb Author: Translation commit botDate: Mon Mar 21 16:56:56 2016 + Update translations for tails-greeter --- af/af.po | 4 +-- ar/ar.po | 4 +-- ast/ast.po | 4 +-- az/az.po | 4 +-- be/be.po | 4 +-- bg/bg.po | 4 +-- bn/bn.po | 4 +-- bs/bs.po | 4 +-- ca/ca.po | 4 +-- cs/cs.po | 4 +-- cv/cv.po | 4 +-- cy/cy.po | 4 +-- da/da.po | 4 +-- de/de.po | 6 ++-- el/el.po | 4 +-- en_GB/en_GB.po | 4 +-- eo/eo.po | 4 +-- es/es.po | 2 +- es_AR/es_AR.po | 4 +-- es_CL/es_CL.po | 4 +-- es_CO/es_CO.po | 4 +-- es_MX/es_MX.po | 4 +-- et/et.po | 4 +-- eu/eu.po | 4 +-- fa/fa.po | 4 +-- fi/fi.po | 4 +-- fil/fil.po | 4 +-- fo/fo.po | 4 +-- fr/fr.po | 4 +-- fr_CA/fr_CA.po | 4 +-- fy/fy.po | 4 +-- gl/gl.po | 4 +-- gu/gu.po | 4 +-- he/he.po | 8 +++--- hi/hi.po | 4 +-- hr/hr.po | 4 +-- hr_HR/hr_HR.po | 72 +++--- hu/hu.po | 4 +-- ia/ia.po | 4 +-- id/id.po | 6 ++-- is/is.po | 4 +-- it/it.po | 4 +-- ja/ja.po | 2 +- ka/ka.po | 4 +-- kk/kk.po | 4 +-- km/km.po | 4 +-- kn/kn.po | 4 +-- ko/ko.po | 4 +-- ko_KR/ko_KR.po | 4 +-- ku_IQ/ku_IQ.po | 4 +-- ky/ky.po | 4 +-- la/la.po | 4 +-- lb/lb.po | 4 +-- lo/lo.po | 4 +-- lt/lt.po | 4 +-- lv/lv.po | 4 +-- mr/mr.po | 4 +-- ms_MY/ms_MY.po | 4 +-- my/my.po | 4 +-- nb/nb.po | 4 +-- nl/nl.po | 4 +-- nl_BE/nl_BE.po | 4 +-- nn/nn.po | 4 +-- pa/pa.po | 4 +-- pl/pl.po | 4 +-- pt/pt.po | 4 +-- pt_BR/pt_BR.po | 4 +-- ro/ro.po | 4 +-- ru/ru.po | 4 +-- ru@petr1708/r...@petr1708.po | 4 +-- si_LK/si_LK.po | 4 +-- sk/sk.po | 4 +-- sk_SK/sk_SK.po | 6 ++-- sl/sl.po | 4 +-- sl_SI/sl_SI.po | 4 +-- sq/sq.po | 4 +-- sr/sr.po | 4 +-- sr@latin/s...@latin.po | 4 +-- sv/sv.po | 4 +-- ta/ta.po | 4 +-- te_IN/te_IN.po | 4 +-- th/th.po | 4 +-- tr/tr.po | 4 +-- uk/uk.po | 4 +-- ur/ur.po | 4 +-- ur_PK/ur_PK.po | 4 +-- uz/uz.po | 4 +-- vi/vi.po | 4 +-- zh_CN/zh_CN.po | 6 ++-- zh_HK/zh_HK.po | 4 +-- zh_TW/zh_TW.po | 4 +-- 91 files changed, 220 insertions(+), 220 deletions(-) diff --git a/af/af.po b/af/af.po index 64cb6b3..f3e19d6 100644 --- a/af/af.po +++ b/af/af.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16 18:12+0100\n" -"PO-Revision-Date: 2015-12-21 09:22+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Afrikaans (http://www.transifex.com/otf/torproject/language/af/)\n" "MIME-Version: 1.0\n" diff --git a/ar/ar.po b/ar/ar.po index a14bc83..a7f613e 100644 --- a/ar/ar.po +++ b/ar/ar.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-25 15:44+0100\n" -"PO-Revision-Date: 2016-02-05 06:04+\n" +"POT-Creation-Date: 2016-02-29 14:32+0100\n" +"PO-Revision-Date: 2016-03-21 16:27+\n" "Last-Translator: carolyn \n" "Language-Team: Arabic (http://www.transifex.com/otf/torproject/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/ast/ast.po b/ast/ast.po index a740c24..6564df9 100644 --- a/ast/ast.po +++ b/ast/ast.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: The Tor Project\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-16