tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2019
- 21 participants
- 1811 discussions

[translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit 82f7293191e09668ad92f5b2d8858af15ccb85f0
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 22:21:11 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
contents+lt.po | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/contents+lt.po b/contents+lt.po
index 1598f21bdb..7939962c5e 100644
--- a/contents+lt.po
+++ b/contents+lt.po
@@ -1986,13 +1986,13 @@ msgid ""
" displaying correctly, so Tor Browser’s default setting is to allow all "
"websites to run scripts in \"Standard\" mode."
msgstr ""
-"Vartotojai, kuriems reikalingas aukštas saugumo lygis naršant internete, "
-"turėtų nustatyti Tor Naršyklės [Apsaugos slankiklį](/lt/security-slider) į "
-"„Saugesnis“ (kuris išjungia „JavaScript“ ne HTTPS svetainėse) arba "
-"„Saugiausias“ (kuris tai daro visoms svetainėms). Tačiau išjungus "
-"„JavaScript“ daugelis svetainių nebus tinkamai rodomos, todėl numatytasis "
-"Tor Naršyklės nustatymas yra leisti visoms svetainėms paleisti scenarijus "
-"„standartiniu“ režimu."
+"Naudotojai, kuriems, naršant internete, reikia aukšto saugumo lygmens, "
+"turėtų nusistatyti Tor Naršyklės [Saugumo sliaužiklį](/lt/security-slider) į"
+" „Saugesnį“ (kuris išjungia „JavaScript“ ne HTTPS internetinėse svetainėse) "
+"arba „Saugiausią“ (kuris tai atlieka visose internetinėse svetainėse). Vis "
+"dėlto, išjungus „JavaScript“ daugelis internetinių svetainių nebus tinkamai "
+"atvaizduojamos, todėl numatytasis Tor Naršyklės nustatymas yra leisti visoms"
+" internetinėms svetainėms vykdyti scenarijus „Standartinėje“ veiksenoje."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
@@ -2251,9 +2251,9 @@ msgid ""
"click OK."
msgstr ""
"* Norėdami paleisti Tor Naršyklę Ubuntu sistemose, naudotojai turi įvykdyti "
-"apvalkalo scenarijų. Atidarykite „Failai“ („Unity“ naršyklė), atidarykite "
-"„Nuostatos“ → „Elgesio“ skirtuką → Nustatykite „Vykdyti vykdomuosius "
-"tekstinius failus, kai jie atidaromi“, į „Klausti kiekvieną kartą“, tada "
+"apvalkalo scenarijų. Atverkite „Failus“ („Unity“ naršyklę), atverkite "
+"„Nuostatas“ → Elgsenos skirtuką → Nustatykite „Vykdyti vykdomuosius "
+"tekstinius failus, kai jie atveriami“ į „Klausti kiekvieną kartą“, tada "
"spustelėkite Gerai."
#: https//tb-manual.torproject.org/known-issues/
1
0

[translation/tbmanual-contentspot_completed] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot_completed
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit 4a319df15374d4e87e5f946fcb454f72701b9961
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 21:53:42 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspo…
---
contents+lt.po | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/contents+lt.po b/contents+lt.po
index 870321175f..b4d2a6ea51 100644
--- a/contents+lt.po
+++ b/contents+lt.po
@@ -1922,6 +1922,14 @@ msgid ""
"operators, or to an outside observer. For this reason, Flash is disabled by "
"default in Tor Browser, and enabling it is not recommended."
msgstr ""
+"Vaizdo įrašų svetainės, tokios kaip „Vimeo“, vaizdo įrašų turiniui rodyti "
+"naudoja „Flash grotuvo“ papildinį. Deja, ši programinė įranga veikia "
+"nepriklausomai nuo Tor Naršyklės ir negali būti lengvai priversta paklusti "
+"Tor Naršyklės įgaliotojo serverio nustatymams. Todėl šis grotuvas, "
+"internetinės svetainės, kurioje lankotės, operatoriams ar išoriniam "
+"stebėtojui, gali atskleisti tikrąją jūsų buvimo vietą ir IP adresą. Dėl šios"
+" priežasties, pagal numatymą, „Flash grotuvas“ Tor naršyklėje yra išjungtas,"
+" o jį įjungti yra nerekomenduojama."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
@@ -1947,6 +1955,11 @@ msgid ""
"Unfortunately, JavaScript can also enable attacks on the security of the "
"browser, which might lead to deanonymization."
msgstr ""
+"JavaScript yra programavimo kalba, kurią internetinės svetainės naudoja tam,"
+" kad pateiktų interaktyvius elementus, tokius kaip vaizdo įrašai, animacija,"
+" garso įrašai ir būsenos laiko linijos. Deja, JavaScript taip pat gali "
+"įgalinti išpuolius prieš naršyklės saugumą, o tai gali privesti prie "
+"deanonimizavimo."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
@@ -1957,6 +1970,11 @@ msgid ""
"control the JavaScript (and other scripts) that runs on individual web "
"pages, or block it entirely."
msgstr ""
+"Tor Naršyklėje yra priedas, pavadinimu „NoScript“. Jį galite pasiekti "
+"mėsainio (≡) meniu (pagrindiniame meniu) „Nuostatose“, tada pasirinkę "
+"„Tinkinti“ ir nutempę „S“ piktogramą į viršutinę dešinę lango dalį. "
+"„NoScript“ leidžia jums atskirose internetinėse svetainėse valdyti "
+"JavaScript (ir kitus scenarijus), arba visiškai ją blokuoti."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
1
0

[translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit db8c5ded7dfefda927a0019b65da81ec1d3d54eb
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 21:51:15 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
contents+lt.po | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/contents+lt.po b/contents+lt.po
index 55a7aecfa9..1598f21bdb 100644
--- a/contents+lt.po
+++ b/contents+lt.po
@@ -1922,13 +1922,14 @@ msgid ""
"operators, or to an outside observer. For this reason, Flash is disabled by "
"default in Tor Browser, and enabling it is not recommended."
msgstr ""
-"Vaizdo įrašų svetainėse, tokiose kaip „Vimeo“, vaizdo įrašų turiniui rodyti "
-"naudojamas „Flash Player“ papildinys. Deja, ši programinė įranga veikia "
+"Vaizdo įrašų svetainės, tokios kaip „Vimeo“, vaizdo įrašų turiniui rodyti "
+"naudoja „Flash grotuvo“ papildinį. Deja, ši programinė įranga veikia "
"nepriklausomai nuo Tor Naršyklės ir negali būti lengvai priversta paklusti "
-"Tor Naršyklė tarpinio serverio nustatymams. Todėl jis gali atskleisti "
-"tikrąją jūsų buvimo vietą ir IP adresą tinklalapio operatoriams ar išoriniam"
-" stebėtojui. Dėl šios priežasties „Flash“ pagal numatytuosius nustatymus Tor"
-" naršyklėje yra išjungta, o įjungti nerekomenduojama."
+"Tor Naršyklės įgaliotojo serverio nustatymams. Todėl šis grotuvas, "
+"internetinės svetainės, kurioje lankotės, operatoriams ar išoriniam "
+"stebėtojui, gali atskleisti tikrąją jūsų buvimo vietą ir IP adresą. Dėl šios"
+" priežasties, pagal numatymą, „Flash grotuvas“ Tor naršyklėje yra išjungtas,"
+" o jį įjungti yra nerekomenduojama."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
@@ -1954,10 +1955,11 @@ msgid ""
"Unfortunately, JavaScript can also enable attacks on the security of the "
"browser, which might lead to deanonymization."
msgstr ""
-"JavaScript yra programavimo kalba, kuria svetainės naudojasi teikdamos "
-"interaktyvius elementus, tokius kaip vaizdo įrašai, animacija, garso įrašai "
-"ir būsenos terminai. Deja, JavaScript taip pat gali įgalinti išpuolius prieš"
-" naršyklės saugumą, o tai gali sukelti deanonimizavimą."
+"JavaScript yra programavimo kalba, kurią internetinės svetainės naudoja tam,"
+" kad pateiktų interaktyvius elementus, tokius kaip vaizdo įrašai, animacija,"
+" garso įrašai ir būsenos laiko linijos. Deja, JavaScript taip pat gali "
+"įgalinti išpuolius prieš naršyklės saugumą, o tai gali privesti prie "
+"deanonimizavimo."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
@@ -1968,11 +1970,11 @@ msgid ""
"control the JavaScript (and other scripts) that runs on individual web "
"pages, or block it entirely."
msgstr ""
-"Tor naršyklėje yra priedas, vadinamas „NoScript“. Jį galite pasiekti "
-"hamburger meniu (pagrindiniame meniu) „Parinktyse“, tada pasirinkite "
-"„Tinkinti“ ir vilkite „S“ piktogramą į viršutinę dešinę lango dalį. "
-"„NoScript“ leidžia valdyti JavaScript (ir kitus scenarijus), kurie veikia "
-"atskiruose tinklalapiuose, arba visiškai jį blokuoti."
+"Tor Naršyklėje yra priedas, pavadinimu „NoScript“. Jį galite pasiekti "
+"mėsainio (≡) meniu (pagrindiniame meniu) „Nuostatose“, tada pasirinkę "
+"„Tinkinti“ ir nutempę „S“ piktogramą į viršutinę dešinę lango dalį. "
+"„NoScript“ leidžia jums atskirose internetinėse svetainėse valdyti "
+"JavaScript (ir kitus scenarijus), arba visiškai ją blokuoti."
#: https//tb-manual.torproject.org/plugins/
#: (content/plugins/contents+en.lrtopic.body)
1
0

18 Dec '19
commit 1e056fc82a4d22fbeefb99c2a1cc96246de0afa5
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon Dec 16 17:34:31 2019 +0100
Add two BridgeDB request graphs.
Implements #32135.
---
src/main/R/rserver/rserve-init.R | 56 ++++++++
.../torproject/metrics/stats/bridgedb/Main.java | 148 +++++++++++++++++++++
.../metrics/stats/collectdescs/Main.java | 1 +
.../org/torproject/metrics/stats/main/Main.java | 6 +-
src/main/resources/web.xml | 8 ++
src/main/resources/web/json/categories.json | 2 +
src/main/resources/web/json/metrics.json | 22 +++
.../resources/web/jsps/reproducible-metrics.jsp | 42 ++++++
src/main/resources/web/jsps/stats.jsp | 41 ++++++
9 files changed, 324 insertions(+), 2 deletions(-)
diff --git a/src/main/R/rserver/rserve-init.R b/src/main/R/rserver/rserve-init.R
index 5eac4d7..c4f1b7f 100644
--- a/src/main/R/rserver/rserve-init.R
+++ b/src/main/R/rserver/rserve-init.R
@@ -1721,3 +1721,59 @@ write_userstats_censorship_events <- function(start, end, path) {
write.csv(r, path, quote = FALSE, row.names = FALSE)
}
+prepare_bridgedb_transport <- function(start_p = NULL, end_p = NULL) {
+ read_csv(file = paste(stats_dir, "bridgedb-stats.csv", sep = ""),
+ col_types = cols(
+ date = col_date(format = ""),
+ distributor = col_skip(),
+ transport = col_character(),
+ requests = col_double())) %>%
+ filter(if (!is.null(start_p)) date >= as.Date(start_p) else TRUE) %>%
+ filter(if (!is.null(end_p)) date <= as.Date(end_p) else TRUE) %>%
+ group_by(date, transport) %>%
+ summarize(requests = sum(requests)) %>%
+ arrange(date, transport)
+}
+
+plot_bridgedb_transport <- function(start_p, end_p, path_p) {
+ prepare_bridgedb_transport(start_p, end_p) %>%
+ complete(date = full_seq(date, period = 1), nesting(transport)) %>%
+ ggplot(aes(x = date, y = requests, colour = transport)) +
+ geom_line(na.rm = TRUE) +
+ scale_x_date(name = "", breaks = custom_breaks,
+ labels = custom_labels, minor_breaks = custom_minor_breaks) +
+ scale_y_continuous(name = "", labels = formatter, limits = c(0, NA)) +
+ scale_colour_hue(name = "") +
+ ggtitle("BridgeDB requests by requested transport") +
+ labs(caption = copyright_notice)
+ ggsave(filename = path_p, width = 8, height = 5, dpi = 150)
+}
+
+prepare_bridgedb_distributor <- function(start_p = NULL, end_p = NULL) {
+ read_csv(file = paste(stats_dir, "bridgedb-stats.csv", sep = ""),
+ col_types = cols(
+ date = col_date(format = ""),
+ distributor = col_character(),
+ transport = col_skip(),
+ requests = col_double())) %>%
+ filter(if (!is.null(start_p)) date >= as.Date(start_p) else TRUE) %>%
+ filter(if (!is.null(end_p)) date <= as.Date(end_p) else TRUE) %>%
+ group_by(date, distributor) %>%
+ summarize(requests = sum(requests)) %>%
+ arrange(date, distributor)
+}
+
+plot_bridgedb_distributor <- function(start_p, end_p, path_p) {
+ prepare_bridgedb_distributor(start_p, end_p) %>%
+ complete(date = full_seq(date, period = 1), nesting(distributor)) %>%
+ ggplot(aes(x = date, y = requests, colour = distributor)) +
+ geom_line(na.rm = TRUE) +
+ scale_x_date(name = "", breaks = custom_breaks,
+ labels = custom_labels, minor_breaks = custom_minor_breaks) +
+ scale_y_continuous(name = "", labels = formatter, limits = c(0, NA)) +
+ scale_colour_hue(name = "") +
+ ggtitle("BridgeDB requests by distributor") +
+ labs(caption = copyright_notice)
+ ggsave(filename = path_p, width = 8, height = 5, dpi = 150)
+}
+
diff --git a/src/main/java/org/torproject/metrics/stats/bridgedb/Main.java b/src/main/java/org/torproject/metrics/stats/bridgedb/Main.java
new file mode 100644
index 0000000..16c3c21
--- /dev/null
+++ b/src/main/java/org/torproject/metrics/stats/bridgedb/Main.java
@@ -0,0 +1,148 @@
+/* Copyright 2019 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.metrics.stats.bridgedb;
+
+import org.torproject.descriptor.BridgedbMetrics;
+import org.torproject.descriptor.Descriptor;
+import org.torproject.descriptor.DescriptorSourceFactory;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+public class Main {
+
+ private static Logger log = LoggerFactory.getLogger(Main.class);
+
+ private static final Path bridgedbStatsCsvFile
+ = org.torproject.metrics.stats.main.Main.modulesDir.toPath()
+ .resolve("bridgedb/stats/bridgedb-stats.csv");
+
+ private static File[] descriptorsDirectories = new File[] {
+ new File(org.torproject.metrics.stats.main.Main.descriptorsDir,
+ "archive/bridgedb-metrics"),
+ new File(org.torproject.metrics.stats.main.Main.descriptorsDir,
+ "recent/bridgedb-metrics") };
+
+ /** Executes this data-processing module. */
+ public static void main(String[] args) throws IOException {
+ SortedMap<String, Long> previousStatistics
+ = readBridgedbStatsFile(bridgedbStatsCsvFile);
+ SortedMap<String, Long> currentStatistics = parseStatistics(
+ previousStatistics, descriptorsDirectories);
+ writeBridgedbStatsFile(bridgedbStatsCsvFile, currentStatistics);
+ }
+
+ static SortedMap<String, Long>
+ readBridgedbStatsFile(Path bridgedbStatsCsvFile) throws IOException {
+ SortedMap<String, Long> readStatistics = new TreeMap<>();
+ if (Files.exists(bridgedbStatsCsvFile)) {
+ for (String line : Files.readAllLines(bridgedbStatsCsvFile)) {
+ if (line.startsWith("date")) {
+ continue;
+ }
+ String[] lineParts = line.split(",");
+ if (lineParts.length != 4) {
+ log.warn("Skipping unrecognized line '{}' in {}.", line,
+ bridgedbStatsCsvFile.toAbsolutePath());
+ continue;
+ }
+ String key = String.format("%s,%s,%s", lineParts[0], lineParts[1],
+ lineParts[2]);
+ long value = Long.parseLong(lineParts[3]);
+ readStatistics.put(key, value);
+ }
+ log.debug("Read {} containing {} non-header lines.", bridgedbStatsCsvFile,
+ readStatistics.size());
+ }
+ return readStatistics;
+ }
+
+ static SortedMap<String, Long> parseStatistics(
+ SortedMap<String, Long> previousStatistics,
+ File[] descriptorsDirectories) {
+ SortedMap<String, Long> currentStatistics
+ = new TreeMap<>(previousStatistics);
+ for (Descriptor descriptor : DescriptorSourceFactory
+ .createDescriptorReader().readDescriptors(descriptorsDirectories)) {
+ if (!(descriptor instanceof BridgedbMetrics)) {
+ continue;
+ }
+ BridgedbMetrics bridgedbMetrics = (BridgedbMetrics) descriptor;
+ if (!"1".equals(bridgedbMetrics.bridgedbMetricsVersion())) {
+ log.warn("Unable to process BridgeDB metrics version {} != 1.",
+ bridgedbMetrics.bridgedbMetricsVersion());
+ continue;
+ }
+ if (!bridgedbMetrics.bridgedbMetricCounts().isPresent()) {
+ continue;
+ }
+ String bridgedbMetricsEndDate = bridgedbMetrics.bridgedbMetricsEnd()
+ .toLocalDate().toString();
+ SortedMap<String, Long> parsedStatistics = new TreeMap<>();
+ for (Map.Entry<String, Long> bridgedbMetricCount
+ : bridgedbMetrics.bridgedbMetricCounts().get().entrySet()) {
+ String[] keyParts = bridgedbMetricCount.getKey().split("\\.");
+ if (keyParts.length < 3) {
+ /* Unable to extract relevant key parts. */
+ continue;
+ }
+ if (bridgedbMetricCount.getValue() < 10) {
+ log.warn("Skipping too small BridgeDB metric count {} < 10 in {}.",
+ bridgedbMetricCount.getValue(),
+ descriptor.getDescriptorFile().getAbsolutePath());
+ continue;
+ }
+ String distributor = keyParts[0];
+ String transport = keyParts[1];
+ String ccOrEmail = keyParts[2];
+ if (ccOrEmail.equals("zz")) {
+ /* Skip requests coming in over Tor exits. */
+ continue;
+ }
+ String key = String.format("%s,%s,%s", bridgedbMetricsEndDate,
+ distributor, transport);
+ long countsSoFar = parsedStatistics.getOrDefault(key, 0L);
+ countsSoFar += bridgedbMetricCount.getValue() - 5L;
+ parsedStatistics.put(key, countsSoFar);
+ }
+ if (!Collections.disjoint(currentStatistics.keySet(),
+ parsedStatistics.keySet())) {
+ /* Statististics for this date (and any combination of distributor and
+ * transport) are already contained. */
+ continue;
+ }
+ currentStatistics.putAll(parsedStatistics);
+ }
+ return currentStatistics;
+ }
+
+ static void writeBridgedbStatsFile(Path bridgedbStatsCsvFile,
+ SortedMap<String, Long> currentStatistics) throws IOException {
+ if (!Files.exists(bridgedbStatsCsvFile.getParent())) {
+ Files.createDirectories(bridgedbStatsCsvFile.getParent());
+ }
+ List<String> lines = new ArrayList<>();
+ lines.add("date,distributor,transport,requests");
+ for (Map.Entry<String, Long> statistic : currentStatistics.entrySet()) {
+ lines.add(String.format("%s,%d", statistic.getKey(),
+ statistic.getValue()));
+ }
+ Files.write(bridgedbStatsCsvFile, lines, StandardOpenOption.CREATE);
+ log.debug("Wrote {} containing {} non-header lines.", bridgedbStatsCsvFile,
+ lines.size() - 1);
+ }
+}
+
diff --git a/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java b/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java
index 1d0d840..26911ab 100644
--- a/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java
+++ b/src/main/java/org/torproject/metrics/stats/collectdescs/Main.java
@@ -20,6 +20,7 @@ public class Main {
DescriptorSourceFactory.createDescriptorCollector();
collector.collectDescriptors(
"https://collector.torproject.org", new String[] {
+ "/recent/bridgedb-metrics/",
"/recent/bridge-descriptors/extra-infos/",
"/recent/bridge-descriptors/server-descriptors/",
"/recent/bridge-descriptors/statuses/",
diff --git a/src/main/java/org/torproject/metrics/stats/main/Main.java b/src/main/java/org/torproject/metrics/stats/main/Main.java
index 1dec6a3..4ea15b4 100644
--- a/src/main/java/org/torproject/metrics/stats/main/Main.java
+++ b/src/main/java/org/torproject/metrics/stats/main/Main.java
@@ -56,7 +56,8 @@ public class Main {
org.torproject.metrics.stats.clients.Main.class,
org.torproject.metrics.stats.servers.Main.class,
org.torproject.metrics.stats.webstats.Main.class,
- org.torproject.metrics.stats.totalcw.Main.class
+ org.torproject.metrics.stats.totalcw.Main.class,
+ org.torproject.metrics.stats.bridgedb.Main.class
};
for (Class<?> module : modules) {
@@ -84,7 +85,8 @@ public class Main {
new File(modulesDir, "clients/stats/userstats-combined.csv"),
new File(modulesDir, "servers/stats"),
new File(modulesDir, "webstats/stats"),
- new File(modulesDir, "totalcw/stats")
+ new File(modulesDir, "totalcw/stats"),
+ new File(modulesDir, "bridgedb/stats")
};
List<String> copiedFiles = new ArrayList<>();
for (File moduleStatsDir : moduleStatsDirs) {
diff --git a/src/main/resources/web.xml b/src/main/resources/web.xml
index 10d12ee..08a3bcd 100644
--- a/src/main/resources/web.xml
+++ b/src/main/resources/web.xml
@@ -57,6 +57,8 @@
<url-pattern>/bridges-ipv6.html</url-pattern>
<url-pattern>/advbw-ipv6.html</url-pattern>
<url-pattern>/totalcw.html</url-pattern>
+ <url-pattern>/bridgedb-transport.html</url-pattern>
+ <url-pattern>/bridgedb-distributor.html</url-pattern>
</servlet-mapping>
<servlet>
@@ -201,6 +203,12 @@
<url-pattern>/totalcw.png</url-pattern>
<url-pattern>/totalcw.pdf</url-pattern>
<url-pattern>/totalcw.csv</url-pattern>
+ <url-pattern>/bridgedb-transport.png</url-pattern>
+ <url-pattern>/bridgedb-transport.pdf</url-pattern>
+ <url-pattern>/bridgedb-transport.csv</url-pattern>
+ <url-pattern>/bridgedb-distributor.png</url-pattern>
+ <url-pattern>/bridgedb-distributor.pdf</url-pattern>
+ <url-pattern>/bridgedb-distributor.csv</url-pattern>
</servlet-mapping>
<servlet>
diff --git a/src/main/resources/web/json/categories.json b/src/main/resources/web/json/categories.json
index 3771631..d091ed7 100644
--- a/src/main/resources/web/json/categories.json
+++ b/src/main/resources/web/json/categories.json
@@ -11,6 +11,8 @@
"userstats-bridge-transport",
"userstats-bridge-combined",
"userstats-bridge-version",
+ "bridgedb-transport",
+ "bridgedb-distributor",
"userstats-relay-table",
"userstats-censorship-events",
"userstats-bridge-table",
diff --git a/src/main/resources/web/json/metrics.json b/src/main/resources/web/json/metrics.json
index 54ce78b..b8921c7 100644
--- a/src/main/resources/web/json/metrics.json
+++ b/src/main/resources/web/json/metrics.json
@@ -447,5 +447,27 @@
"start",
"end"
]
+ },
+ {
+ "id": "bridgedb-transport",
+ "title": "BridgeDB requests by requested transport",
+ "type": "Graph",
+ "description": "<p>This graph shows the number of BridgeDB requests for each requested transport. BridgeDB requests over Tor are not included in these numbers.</p>",
+ "function": "bridgedb_transport",
+ "parameters": [
+ "start",
+ "end"
+ ]
+ },
+ {
+ "id": "bridgedb-distributor",
+ "title": "BridgeDB requests by distributor",
+ "type": "Graph",
+ "description": "<p>This graph shows the number of BridgeDB requests for each distributor. HTTPS requests over Tor are not included in these numbers.</p>",
+ "function": "bridgedb_distributor",
+ "parameters": [
+ "start",
+ "end"
+ ]
}
]
diff --git a/src/main/resources/web/jsps/reproducible-metrics.jsp b/src/main/resources/web/jsps/reproducible-metrics.jsp
index 9b21aa7..ed3ad4c 100644
--- a/src/main/resources/web/jsps/reproducible-metrics.jsp
+++ b/src/main/resources/web/jsps/reproducible-metrics.jsp
@@ -230,6 +230,48 @@ We therefore refer to Step 4 of the <a href="#relay-users">Relay users</a> descr
</div>
<div class="container">
+<h3 id="bridgedb-requests" class="hover">BridgeDB requests
+<a href="#bridgedb-requests" class="anchor">#</a>
+</h3>
+
+<p>BridgeDB metrics contain aggregated information about requests to the BridgeDB service.
+BridgeDB keeps track of each request per distribution method (HTTPS, moat, email), per bridge type (e.g., <code>vanilla</code> or <code>obfs4</code>) per country code or email provider (e.g., <code>"ru"</code> or <code>"gmail"</code>) per request success (<code>"success"</code> or <code>"fail"</code>).
+Every 24 hours, BridgeDB writes these metrics to disk and then begins a new measurement interval.</p>
+
+<p>The following description applies to the following graphs:</p>
+
+<ul>
+<li>BridgeDB requests by requested transport <a href="/bridgedb-transport.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a></li>
+<li>BridgeDB requests by distributor <a href="/bridgedb-distributor.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a></li>
+</ul>
+
+<h4>Step 1: Parse BridgeDB metrics to obtain reported request numbers</h4>
+
+<p>Obtain BridgeDB metrics from <a href="/collector.html#type-bridgedb-metrics">CollecTor</a>.
+Refer to the <a href="https://gitweb.torproject.org/bridgedb.git/tree/doc/bridgedb-metrics-spec.t…">BridgeDB metrics specification</a> for details on the descriptor format.</p>
+
+<h4>Step 2: Skip requests coming in over Tor exits</h4>
+
+<p>Skip any request counts with <code>"zz"</code> as their <code>CC/EMAIL</code> metrics key part.
+We use the <code>"zz"</code> pseudo country code for requests originating from Tor exit relays.
+We're discarding these requests because <a href="https://bugs.torproject.org/32117">bots use the Tor network to crawl BridgeDB</a>, and including bot requests would provide a
+false sense of how users interact with BridgeDB.
+Note that BridgeDB maintains a separate distribution pool for requests coming from Tor exit relays.</p>
+
+<h4>Step 3: Aggregate requests by date, distributor, and transport</h4>
+
+<p>BridgeDB metrics contain request numbers broken down by distributor, bridge type, and a few more dimensions.
+For our purposes we only care about total request numbers by date and either distributor or transport.
+Our total request number includes both successful (i.e., the user ended up getting bridge lines)
+and unsuccessful (e.g., the user failed to solve the CAPTCHA) requests.
+We're using request sums by these three dimensions as aggregates and we are subtracting <code>bin_size/2</code>
+from each count to better approximate the count before binning.
+As date we're using the date of the BridgeDB metrics interval end.
+If we encounter more than one BridgeDB metrics interval end on the same UTC date (which shouldn't be possible with an interval length of 24 hours), we arbitrarily keep whichever we process first.</p>
+
+</div>
+
+<div class="container">
<h2><i class="fa fa-server fa-fw" aria-hidden="true"></i>
Servers <a href="#servers" name="servers" class="anchor">#</a></h2>
diff --git a/src/main/resources/web/jsps/stats.jsp b/src/main/resources/web/jsps/stats.jsp
index 3ce295d..25eb239 100644
--- a/src/main/resources/web/jsps/stats.jsp
+++ b/src/main/resources/web/jsps/stats.jsp
@@ -54,6 +54,7 @@ https://metrics.torproject.org/identifier.csv
<li><b>June 2, 2019:</b> Added <a href="#onionperf-throughput">Throughput</a> graph.</li>
<li><b>August 5, 2019:</b> Re-added the <a href="#bandwidth">Total relay bandwidth</a> graph due to popular demand.</li>
<li><b>October 2, 2019:</b> Added <a href="#webstats-tb-channel">Tor Browser updates by release channel</a> graph.</li>
+<li><b>December 18, 2019:</b> Added <a href="#bridgedb-transport">BridgeDB requests by requested transport</a> and <a href="#bridgedb-distributor">BridgeDB requests by distributor</a> graphs.</li>
</ul>
</div>
@@ -178,6 +179,46 @@ using bridges, which can be either <b>"v4"</b> or <b>"v6"</b>.</li>
<li><b>frac:</b> Fraction of bridges in percent that the estimate is based on.</li>
</ul>
+<h3>BridgeDB requests by requested transport
+<a href="/bridgedb-transport.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a>
+<a href="/bridgedb-transport.csv" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> data</a>
+<a href="#bridgedb-transport" name="bridgedb-transport" class="anchor">#</a></h3>
+
+<h4>Parameters</h4>
+
+<ul>
+<li><b>start:</b> First UTC date (YYYY-MM-DD) to include in the file.</li>
+<li><b>end:</b> Last UTC date (YYYY-MM-DD) to include in the file.</li>
+</ul>
+
+<h4>Columns</h4>
+
+<ul>
+<li><b>date:</b> UTC date (YYYY-MM-DD) when requests were sent to BridgeDB.</li>
+<li><b>transport:</b> Name of the pluggable transport protocol, which includes <code>"obfs2"</code>, <code>"obfs3"</code>, <code>"obfs4"</code>, <code>"scramblesuit"</code>, and <code>"fte"</code>, and which will change in the future.</li>
+<li><b>requests:</b> Approximate number of requests for the given transport.</li>
+</ul>
+
+<h3>BridgeDB requests by distributor
+<a href="/bridgedb-distributor.html" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> graph</a>
+<a href="/bridgedb-distributor.csv" class="btn btn-primary btn-xs"><i class="fa fa-chevron-right" aria-hidden="true"></i> data</a>
+<a href="#bridgedb-distributor" name="bridgedb-distributor" class="anchor">#</a></h3>
+
+<h4>Parameters</h4>
+
+<ul>
+<li><b>start:</b> First UTC date (YYYY-MM-DD) to include in the file.</li>
+<li><b>end:</b> Last UTC date (YYYY-MM-DD) to include in the file.</li>
+</ul>
+
+<h4>Columns</h4>
+
+<ul>
+<li><b>date:</b> UTC date (YYYY-MM-DD) when requests were sent to BridgeDB.</li>
+<li><b>distributor:</b> Name of BridgeDB's distributor, which includes <code>"https"</code>, <code>"email"</code>, and <code>"moat"</code>, and which may change in the future.</li>
+<li><b>requests:</b> Approximate number of requests for the given distributor.</li>
+</ul>
+
</div>
<div class="container">
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit 203a697747df615092645387fe7bf1d8519293d3
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 18:54:43 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ja.po | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/contents+ja.po b/contents+ja.po
index 4125a58865..a9c2898c82 100644
--- a/contents+ja.po
+++ b/contents+ja.po
@@ -134,7 +134,7 @@ msgstr "Tor ブラウザーを使用する際、誰が私が訪問したウェ
#: https//support.torproject.org/tbb/tbb-3/
#: (content/tbb/tbb-3/contents+en.lrquestion.description)
msgid "Tor Browser prevents people from knowing the websites you visit."
-msgstr ""
+msgstr "Torブラウザーはあなたが訪れたウェブサイトを他人に知られることを防いでくれます。"
#: https//support.torproject.org/faq/faq-1/
#: (content/faq/faq-1/contents+en.lrquestion.description)
@@ -166,7 +166,7 @@ msgstr "私たちのWEBサイトは検閲によりブロックされました。
msgid ""
"Tor Browser can certainly help people access your website in places where it"
" is blocked."
-msgstr ""
+msgstr "Tor ブラウザはネット接続が遮断された場所で確実にあなたのウェブサイトにアクセスできるよう手助けします。"
#: https//support.torproject.org/faq/faq-2/
#: (content/faq/faq-2/contents+en.lrquestion.description)
@@ -221,7 +221,7 @@ msgstr ""
msgid ""
"It's strongly discouraged to install new add-ons in Tor Browser, because "
"they can compromise your privacy and security."
-msgstr "Torブラウザに新しいアドオンをインストールすることは、プライバシーとセキュリティの両方を損なう可能性があるため、強くお勧めします。"
+msgstr "Torブラウザーに新しいアドオンをインストールすることは、プライバシーとセキュリティの両方を損なう可能性があるため、強くお勧めします。"
#: https//support.torproject.org/faq/faq-3/
#: (content/faq/faq-3/contents+en.lrquestion.description)
@@ -387,12 +387,12 @@ msgstr ""
#: https//support.torproject.org/about/backdoor/
#: (content/about/backdoor/contents+en.lrquestion.title)
msgid "Is there a backdoor in Tor?"
-msgstr ""
+msgstr "Torにはバックドアはありますか?"
#: https//support.torproject.org/about/backdoor/
#: (content/about/backdoor/contents+en.lrquestion.description)
msgid "There is absolutely no backdoor in Tor."
-msgstr ""
+msgstr "Torにバックドアは絶対に存在しません。"
#: https//support.torproject.org/about/backdoor/
#: (content/about/backdoor/contents+en.lrquestion.description)
@@ -410,7 +410,7 @@ msgstr ""
#: https//support.torproject.org/about/backdoor/
#: (content/about/backdoor/contents+en.lrquestion.description)
msgid "We will never put a backdoor in Tor."
-msgstr ""
+msgstr "我々がTorにバックドアを設置することは絶対にありません。"
#: https//support.torproject.org/about/backdoor/
#: (content/about/backdoor/contents+en.lrquestion.description)
@@ -7901,7 +7901,7 @@ msgstr ""
#: https//support.torproject.org/get-in-touch/why-i-cant-join-tor-channels/
#: (content/get-in-touch/why-i-cant-join-tor-channels/contents+en.lrquestion.description)
msgid "Your nick is verified!"
-msgstr ""
+msgstr "あなたのニックネームが認証されました。"
#: https//support.torproject.org/get-in-touch/why-i-cant-join-tor-channels/
#: (content/get-in-touch/why-i-cant-join-tor-channels/contents+en.lrquestion.description)
@@ -8342,7 +8342,7 @@ msgstr "追跡と監視から身を守る。検閲を回避する。"
#: templates/layout.html:10
msgid "Tor Project | Support"
-msgstr ""
+msgstr "Torプロジェクトをサポート"
#: templates/sidenav.html:4 templates/sidenav.html:36
msgid "Topics"
1
0

[translation/donatepages-messagespot] https://gitweb.torproject.org/translation.git/commit/?h=donatepages-messagespot
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit 2a8c948adfc51db4cc8e6e63fa73a487bbcf9d53
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 18:45:33 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=donatepages-message…
---
locale/de/LC_MESSAGES/messages.po | 47 +++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/locale/de/LC_MESSAGES/messages.po b/locale/de/LC_MESSAGES/messages.po
index eecc213a35..94f1c7745d 100644
--- a/locale/de/LC_MESSAGES/messages.po
+++ b/locale/de/LC_MESSAGES/messages.po
@@ -924,6 +924,11 @@ msgid ""
"supporting their unrestricted availability and use, and furthering their "
"scientific and popular understanding."
msgstr ""
+"Die Mission des Tor Project ist es, die Menschenrechte und Freiheiten zu "
+"fördern, indem es kostenlose und offene Anonymitäts- und "
+"Datenschutztechnologien entwickelt und einsetzt, ihre uneingeschränkte "
+"Verfügbarkeit und Nutzung unterstützt und ihr wissenschaftliches und "
+"populäres Verständnis fördert."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:155
msgid ""
@@ -932,10 +937,15 @@ msgid ""
"target=\"_blank\">Tor Browser</a>, which enables people to browse the "
"internet anonymously."
msgstr ""
+"Das Hauptprodukt des Tor Project ist <a "
+"href=\"https://www.torproject.org/download/download-easy.html.en\" "
+"target=\"_blank\">Tor Browser</a>, mit dem man anonym im Internet surfen "
+"kann."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:157
msgid "The Tor Project is a 501(c)3 tax-exempt non-profit organization."
msgstr ""
+"Das Tor Project ist eine 501(c)3 steuerbefreite Non-profit-Organization."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:159
msgid "It was founded in 2006."
@@ -1013,6 +1023,9 @@ msgid ""
"href=\"https://www.torproject.org/projects/torbrowser.html.en\"><span "
"class=\"links\">download Tor Browser</span></a>."
msgstr ""
+"Um zu beginnen, musst du <a class=\"hyperlinks links\" target=\"_blank\" "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en\"><span "
+"class=\"links\">Tor Browser herunterladen</span></a>."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:198
msgid ""
@@ -1026,6 +1039,15 @@ msgid ""
" and <a class=\"hyperlinks links\" target=\"_blank\" "
"href=\"https://www.torproject.org/download/#android\">Android</a>."
msgstr ""
+"Wir bieten Anleitungen zum Herunterladen für <a class=\"hyperlinks links\" "
+"target=\"_blank\" "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en#windows\">Windows</a>,"
+" <a class=\"hyperlinks links\" target=\"_blank\" "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en#macosx\">Mac "
+"OS X</a>, <a class=\"hyperlinks links\" target=\"_blank\" "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en#linux\">Linux</a>,"
+" und <a class=\"hyperlinks links\" target=\"_blank\" "
+"href=\"https://www.torproject.org/download/#android\">Android</a>."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:204
msgid "What kinds of people support Tor?"
@@ -1047,6 +1069,15 @@ msgid ""
"Germany, the U.S. Naval Research Laboratory, Omidyar Network, SRI "
"International, and Open Technology Fund."
msgstr ""
+"Tausende von Personen haben gespendet, um das Tor Project zu unterstützen, "
+"und wir haben auch Mittel von <a class=\"hyperlinks links\" "
+"href=\"https://www.torproject.org/about/sponsors/\" "
+"target=\"_blank\">verschiedenen Organisationen</a> erhalten, darunter "
+"Google, die Ford Foundation, die Knight Foundation, Reddit, die U.S. "
+"National Science Foundation, die Electronic Frontier Foundation, Human "
+"Rights Watch, die Swedish International Development Cooperation Agency, das "
+"Auswärtige Amt Deutschlands, das U.S. Naval Research Laboratory, Omidyar "
+"Network, SRI International und Open Technology Fund."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:212
msgid ""
@@ -1055,6 +1086,10 @@ msgid ""
"target=\"_blank\">running Tor relays</a> to help carry traffic for other "
"users."
msgstr ""
+"Die Leute unterstützen Tor auch auf nicht-finanzielle Weise, z.B. indem sie "
+"<a class=\"hyperlinks links\" "
+"href=\"https://community.torproject.org/relay/\" target=\"_blank\">Tor "
+"Relays</a> betreiben, um den Traffic für andere Benutzer zu transportieren."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:214
msgid ""
@@ -1102,6 +1137,9 @@ msgid ""
"<a class=\"hyperlinks links\" href=\"https://youtu.be/JWII85UlzKw\" "
"target=\"_blank\">Watch this video</a> to learn more about how Tor works."
msgstr ""
+"<a class=\"hyperlinks links\" href=\"https://youtu.be/JWII85UlzKw\" "
+"target=\"_blank\">Schau dieses Video</a>, um mehr darüber zu erfahren, wie "
+"Tor arbeitet."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:237
msgid ""
@@ -1117,6 +1155,9 @@ msgid ""
"href=\"https://support.torproject.org/faq/\">This Tor Project FAQ</a> has "
"answers to all those questions, and more."
msgstr ""
+"<a class=\"hyperlinks links\" target=\"_blank\" "
+"href=\"https://support.torproject.org/faq/\">Das Tor Project F&A</a> hat "
+"Antworten auf alle diese Fragen, und weitere."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:247
msgid "Does the Tor software work?"
@@ -1150,6 +1191,12 @@ msgid ""
"book Data and Goliath, security expert Bruce Schneier wrote, \"the current "
"best tool to protect your anonymity when browsing the web is Tor.\""
msgstr ""
+"Die Electronic Frontier Foundation sagt, dass Tor <a class=\"hyperlinks "
+"links\" target=\"_blank\" href=\"https://www.eff.org/deeplinks/2014/07/7"
+"-things-you-should-know-about-tor\">eine der stärksten Anonymitätssoftware "
+"anbietet, die es gibt</a>, und in seinem Buch Data and Goliath schrieb der "
+"Sicherheitsexperte Bruce Schneier: \"Das derzeit beste Tool zum Schutz Ihrer"
+" Anonymität beim Surfen im Internet ist Tor\"."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:261
msgid "Is what Tor does legal? Can I get in trouble for using it?"
1
0

[translation/donatepages-messagespot] https://gitweb.torproject.org/translation.git/commit/?h=donatepages-messagespot
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit d6941b76cb4231e28f2114b1c8c473516a18dcda
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 18:15:36 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=donatepages-message…
---
locale/de/LC_MESSAGES/messages.po | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/locale/de/LC_MESSAGES/messages.po b/locale/de/LC_MESSAGES/messages.po
index 6353235f0f..eecc213a35 100644
--- a/locale/de/LC_MESSAGES/messages.po
+++ b/locale/de/LC_MESSAGES/messages.po
@@ -9,14 +9,14 @@
# Traumschule Riebau <traumschuleriebau(a)riseup.net>, 2019
# c8faa9c4b9d81319c5c2fd62ae3a9956, 2019
# John Weber, 2019
-# Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019
# Not AName <atzeje(a)web.de>, 2019
# erinm, 2019
# Philipp . <Kuschat(a)gmx.de>, 2019
+# Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019
#
msgid ""
msgstr ""
-"Last-Translator: Philipp . <Kuschat(a)gmx.de>, 2019\n"
+"Last-Translator: Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019\n"
"Language-Team: German (https://www.transifex.com/otf/teams/1519/de/)\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -547,6 +547,8 @@ msgid ""
"Get this year's Take Back the Internet With Tor t-shirt and the Tor: "
"Strength in Numbers t-shirt."
msgstr ""
+"Hol dir das diesjährige Take Back the Internet with Tor-T-Shirt und Tor: "
+"Strength in numbers-T-Shirt. "
#: tmp/cache_locale/af/af919ed4d7946ee7ed7d71a5580f4c75c5fb2b9374dd8d99d3a0671f71654f60.php:277
msgid "sweatshirt"
@@ -560,7 +562,7 @@ msgstr ""
#: tmp/cache_locale/af/af919ed4d7946ee7ed7d71a5580f4c75c5fb2b9374dd8d99d3a0671f71654f60.php:294
msgid "how do you want to <span class=\"lime\">DONATE</span>?"
-msgstr ""
+msgstr "wie willst du <span class=\"lime\">SPENDEN</span>?"
#: tmp/cache_locale/af/af919ed4d7946ee7ed7d71a5580f4c75c5fb2b9374dd8d99d3a0671f71654f60.php:300
msgid "Credit Card"
@@ -854,6 +856,10 @@ msgid ""
"links\" href=\"https://2019.www.torproject.org/donate/donate.html.en\" "
"target=\"_blank\">credit card or PayPal, please click here.</a>"
msgstr ""
+"Hinweis: Wenn du per <a class=\"hyperlinks links\" "
+"href=\"https://2019.www.torproject.org/donate/donate.html.en\" "
+"target=\"_blank\"> Kreditkarte oder PayPal für das Tor Project spenden "
+"möchtest, klicke bitte hier.</a>"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:95
msgid ""
@@ -863,15 +869,15 @@ msgstr ""
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:102
msgid "Bitcoin and Other Cryptocurrencies"
-msgstr ""
+msgstr "Bitcoin und andere Kryptowährungen"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:108
msgid "BTCPayServer"
-msgstr ""
+msgstr "BTCPayServer"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:112
msgid "BottlePay"
-msgstr ""
+msgstr "BottlePay"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:116
msgid "Amazon Smile"
@@ -883,17 +889,19 @@ msgstr "Unterstützung geben"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:126
msgid "EU Bank Transfer"
-msgstr ""
+msgstr "EU Bank Transfer"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:132
msgid ""
"Checks</a> or <a class=\"hyperlinks links\" href=\"/%langcode%/donor-faq"
"#donate-anonymous\">Money Orders</a>"
msgstr ""
+"Schecks</a> oder <a class=\"hyperlinks links\" href=\"/%langcode%/donor-faq"
+"#donate-anonymous\">Geldüberweisungen</a>"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:138
msgid "Stock Donation"
-msgstr ""
+msgstr "Aktienspende"
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:143
msgid ""
@@ -901,6 +909,9 @@ msgid ""
"making a donation with one of the methods above, please email <span "
"class=\"email\">giving(at)torproject.org</span>."
msgstr ""
+"Wenn du Fragen hast oder nach einer Spende mit einer der oben genannten "
+"Methoden ein Dankgeschenk erhalten möchtest, schicke bitte eine E-Mail an "
+"<span class=\"email\">giving(at)torproject.org</span>."
#: tmp/cache_locale/7d/7d56367a61f987367eeb2a89d0c6db83fd0801cce86278bf7e99ed39b5b46254.php:149
msgid "What is the Tor Project and what does it do?"
1
0

[translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit 169906c8a99e3530e065776d5fbcd3b7469a2117
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 17:25:15 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
contents+ja.po | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/contents+ja.po b/contents+ja.po
index ccbc54ce95..4125a58865 100644
--- a/contents+ja.po
+++ b/contents+ja.po
@@ -5,8 +5,8 @@
# Emma Peel, 2019
# ue zaeco, 2019
# Tokumei Nanashi, 2019
-# 987 pluto <pluto987(a)protonmail.com>, 2019
# h345u37g3 h345u37g3, 2019
+# 987 pluto <pluto987(a)protonmail.com>, 2019
#
msgid ""
msgstr ""
@@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-11-14 16:04+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
-"Last-Translator: h345u37g3 h345u37g3, 2019\n"
+"Last-Translator: 987 pluto <pluto987(a)protonmail.com>, 2019\n"
"Language-Team: Japanese (https://www.transifex.com/otf/teams/1519/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -2786,7 +2786,7 @@ msgstr ""
#: https//support.torproject.org/tbb/tbb-editing-torrc/
#: (content/tbb/tbb-editing-torrc/contents+en.lrquestion.description)
msgid "On macOS:"
-msgstr ""
+msgstr "macOSにて"
#: https//support.torproject.org/tbb/tbb-editing-torrc/
#: (content/tbb/tbb-editing-torrc/contents+en.lrquestion.description)
1
0

[translation/tbmanual-contentspot] https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
by translation@torproject.org 18 Dec '19
by translation@torproject.org 18 Dec '19
18 Dec '19
commit ac89a31ff81b554299f7bcd54fb0d9632ca2027e
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Dec 18 17:21:08 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tbmanual-contentspot
---
contents+ja.po | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/contents+ja.po b/contents+ja.po
index b54fe38920..52527c0aac 100644
--- a/contents+ja.po
+++ b/contents+ja.po
@@ -6,8 +6,8 @@
# Emma Peel, 2019
# Tokumei Nanashi, 2019
# 323484, 2019
-# 987 pluto <pluto987(a)protonmail.com>, 2019
# h345u37g3 h345u37g3, 2019
+# 987 pluto <pluto987(a)protonmail.com>, 2019
#
msgid ""
msgstr ""
@@ -15,7 +15,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-11-29 10:58+CET\n"
"PO-Revision-Date: 2018-11-14 12:31+0000\n"
-"Last-Translator: h345u37g3 h345u37g3, 2019\n"
+"Last-Translator: 987 pluto <pluto987(a)protonmail.com>, 2019\n"
"Language-Team: Japanese (https://www.transifex.com/otf/teams/1519/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1467,6 +1467,7 @@ msgid ""
"Wait for the update to download and install, then Tor Browser will restart "
"itself. You will now be running the latest version."
msgstr ""
+"アップデートをダウンロードやインストールするまで待機する。Tor ブラウザを自身で再起動する際、次回、Tor ブラウザが最新バージョンで起動されます。"
#: https//tb-manual.torproject.org/updating/
#: (content/updating/contents+en.lrtopic.body)
@@ -1582,7 +1583,7 @@ msgstr ""
#: https//tb-manual.torproject.org/troubleshooting/
#: (content/troubleshooting/contents+en.lrtopic.body)
msgid "### KNOWN ISSUES"
-msgstr ""
+msgstr "### 既知の問題"
#: https//tb-manual.torproject.org/troubleshooting/
#: (content/troubleshooting/contents+en.lrtopic.body)
@@ -1701,7 +1702,7 @@ msgstr "Tor Browser のシステムからの削除は簡単です。"
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
msgid "On Windows:"
-msgstr ""
+msgstr "ウィンドウズ上にて"
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
@@ -1723,7 +1724,7 @@ msgstr "* ごみ箱を空にします。"
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
msgid "On macOS:"
-msgstr ""
+msgstr "macOSにて"
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
@@ -1790,7 +1791,7 @@ msgstr ""
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
msgid "On Linux:"
-msgstr ""
+msgstr "リナックス上で"
#: https//tb-manual.torproject.org/uninstalling/
#: (content/uninstalling/contents+en.lrtopic.body)
@@ -1900,12 +1901,12 @@ msgstr ""
#: https//tb-manual.torproject.org/make-tor-portable/
#: (content/make-tor-portable/contents+en.lrtopic.title)
msgid "MAKE TOR BROWSER PORTABLE"
-msgstr ""
+msgstr "Tor ブラウザをポータブルにしよう"
#: https//tb-manual.torproject.org/make-tor-portable/
#: (content/make-tor-portable/contents+en.lrtopic.description)
msgid "How to install Tor Browser onto removable media"
-msgstr ""
+msgstr "Tor ブラウザをリムーバブルメディアへインストールする方法"
#: https//tb-manual.torproject.org/make-tor-portable/
#: (content/make-tor-portable/contents+en.lrtopic.body)
1
0

18 Dec '19
commit dc1fa8a4b18468440e589c685eafb266211595dc
Author: JeremyRand <jeremyrand(a)airmail.cc>
Date: Wed Dec 18 13:50:27 2019 +0000
Bug 30558: Optionally enable Namecoin
Namecoin will be enabled if all the following are true:
* rbm var/namecoin is set to 1 at build time
* This is true for nightly on linux only
* env var TOR_ENABLE_NAMECOIN=1 is set at run-time
---
projects/aiohttp/build | 14 ++
projects/aiohttp/config | 11 ++
projects/aiohttp_socks/build | 14 ++
projects/aiohttp_socks/config | 11 ++
projects/aiorpcx/build | 14 ++
projects/aiorpcx/config | 11 ++
projects/async_timeout/build | 14 ++
projects/async_timeout/config | 11 ++
projects/attr/build | 14 ++
projects/attr/config | 11 ++
projects/certifi/build | 16 ++
projects/certifi/config | 13 ++
projects/certifi/roots_of_top_10_issuers.pem | 217 +++++++++++++++++++++
projects/chardet/build | 14 ++
projects/chardet/config | 11 ++
projects/dns/build | 17 ++
projects/dns/config | 11 ++
projects/ecdsa/build | 14 ++
projects/ecdsa/config | 11 ++
projects/electrum-nmc/build | 42 ++++
projects/electrum-nmc/config | 48 +++++
projects/firefox/build | 10 +
projects/firefox/config | 5 +
projects/firefox/namecoin-etld.patch | 25 +++
projects/firefox/namecoin-torbutton.patch | 105 ++++++++++
projects/goansicolor/config | 16 ++
projects/gobtcd/config | 32 +++
projects/gobtcd2/config | 32 +++
projects/gobtclog/config | 16 ++
projects/gobtcutil/config | 23 +++
projects/gobuildinfo/config | 31 +++
projects/goconfigurable/config | 16 ++
projects/godegoutils/config | 22 +++
projects/godexlogconfig/config | 40 ++++
projects/godns/config | 26 +++
projects/goeasyconfig/config | 35 ++++
projects/gogroupcache/config | 18 ++
projects/goisatty/config | 20 ++
projects/gokingpin/config | 23 +++
projects/gomadns/config | 40 ++++
projects/goncbtcjson/config | 20 ++
projects/goncrpcclient/config | 23 +++
projects/gopflag/config | 16 ++
projects/gopretty/config | 20 ++
projects/goservice/config | 44 +++++
projects/gosocks/config | 18 ++
projects/gosvcutils/config | 47 +++++
projects/gosystemd/config | 29 +++
projects/gotemplate/config | 16 ++
projects/gotext/config | 16 ++
projects/gotoml/config | 16 ++
projects/gounits/config | 16 ++
projects/gowebsocket/config | 16 ++
projects/goxcryptoed25519/config | 19 ++
projects/goxcryptoripemd160/config | 19 ++
projects/goxlog/config | 23 +++
projects/goxnetip/config | 24 +++
projects/goxsysunix/config | 19 ++
projects/idna/build | 14 ++
projects/idna/config | 11 ++
projects/idna_ssl/build | 14 ++
projects/idna_ssl/config | 11 ++
projects/jsonrpclib/build | 14 ++
projects/jsonrpclib/config | 11 ++
projects/multidict/build | 14 ++
projects/multidict/config | 11 ++
projects/ncdns/build | 31 +++
projects/ncdns/config | 82 ++++++++
projects/ncprop279/build | 32 +++
projects/ncprop279/config | 32 +++
projects/pyaes/build | 14 ++
projects/pyaes/config | 11 ++
projects/six/build | 14 ++
projects/six/config | 11 ++
projects/stemns/build | 25 +++
projects/stemns/config | 17 ++
projects/stemns/settings_port.py | 1 +
projects/stemns/settings_services.py | 4 +
.../Bundle-Data/linux/Data/Electrum-NMC/config | 6 +
.../linux/Data/ncprop279/ncprop279.conf | 12 ++
projects/tor-browser/build | 25 ++-
projects/tor-browser/config | 12 ++
projects/tor-browser/namecoin.patch | 83 ++++++++
projects/typing_extensions/build | 14 ++
projects/typing_extensions/config | 11 ++
projects/yarl/build | 14 ++
projects/yarl/config | 11 ++
rbm.conf | 5 +
88 files changed, 2041 insertions(+), 1 deletion(-)
diff --git a/projects/aiohttp/build b/projects/aiohttp/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/aiohttp/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiohttp/config b/projects/aiohttp/config
new file mode 100644
index 0000000..79f8f64
--- /dev/null
+++ b/projects/aiohttp/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.5.4
+git_url: https://github.com/aio-libs/aiohttp.git
+git_hash: f6f647eb828fa738610d61481f11fa51e42599e9
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/aiohttp_socks/build b/projects/aiohttp_socks/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/aiohttp_socks/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiohttp_socks/config b/projects/aiohttp_socks/config
new file mode 100644
index 0000000..3e24f2f
--- /dev/null
+++ b/projects/aiohttp_socks/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.2.2
+git_url: https://github.com/romis2012/aiohttp-socks.git
+git_hash: 3252f4bdd37fb9a7360481977f800189cb3e3aca
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/aiorpcx/build b/projects/aiorpcx/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/aiorpcx/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/aiorpcx/config b/projects/aiorpcx/config
new file mode 100644
index 0000000..fd8eb5a
--- /dev/null
+++ b/projects/aiorpcx/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.18.3
+git_url: https://github.com/kyuupichan/aiorpcX.git
+git_hash: 4f39366e5dee3fd0a857e53f383c628807cd2715
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/async_timeout/build b/projects/async_timeout/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/async_timeout/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/async_timeout/config b/projects/async_timeout/config
new file mode 100644
index 0000000..1e0faa7
--- /dev/null
+++ b/projects/async_timeout/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.0.1
+git_url: https://github.com/aio-libs/async-timeout.git
+git_hash: 992fd174a5282258228b74127914f4b8135bf30a
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/attr/build b/projects/attr/build
new file mode 100644
index 0000000..296b5f4
--- /dev/null
+++ b/projects/attr/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/src/[% project %]/*.py ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/attr/config b/projects/attr/config
new file mode 100644
index 0000000..bf62203
--- /dev/null
+++ b/projects/attr/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 19.1.0
+git_url: https://github.com/python-attrs/attrs.git
+git_hash: 0356f0603eb5d8d4e7bae132ab80847fff4abcfc
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/certifi/build b/projects/certifi/build
new file mode 100644
index 0000000..7531001
--- /dev/null
+++ b/projects/certifi/build
@@ -0,0 +1,16 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+cp $rootdir/roots_of_top_10_issuers.pem ./[% project %]/cacert.pem
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/certifi/config b/projects/certifi/config
new file mode 100644
index 0000000..cd1120d
--- /dev/null
+++ b/projects/certifi/config
@@ -0,0 +1,13 @@
+# vim: filetype=yaml sw=2
+version: 2019.3.9
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/c/certifi/certifi-[% c("version") %].tar.gz
+ sha256sum: b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae
+ # TODO: This package uses GPG sigs; we should switch from SHA256 hash to GPG verification.
+ - filename: roots_of_top_10_issuers.pem
diff --git a/projects/certifi/roots_of_top_10_issuers.pem b/projects/certifi/roots_of_top_10_issuers.pem
new file mode 100644
index 0000000..2d53dd8
--- /dev/null
+++ b/projects/certifi/roots_of_top_10_issuers.pem
@@ -0,0 +1,217 @@
+# This file contains the root CA's used by the top 10 HTTPS cert issuers for
+# the Alexa Top 1 Million as of February 2019, according to Scott Helme's HTTPS
+# issuer list and crt.sh's root CA database. Each root CA is copied verbatim
+# from cacert.pem from certifi-2019.3.9.
+
+# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Label: "DST Root CA X3"
+# Serial: 91299735575339953335919266965803778155
+# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5
+# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13
+# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39
+-----BEGIN CERTIFICATE-----
+MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
+PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
+Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
+rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
+OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
+xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
+7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
+aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
+SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
+ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
+AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
+R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
+JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
+Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Label: "COMODO RSA Certification Authority"
+# Serial: 101909084537582093308941363524873193117
+# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18
+# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4
+# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
+6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
+pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
+9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
+/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
+Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
+qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
+SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
+u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
+Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
+crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
+/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
+wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
+4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
+2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
+FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
+CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
+boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
+jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
+S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
+QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
+0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
+NVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Label: "COMODO ECC Certification Authority"
+# Serial: 41578283867086692638256921589707938090
+# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23
+# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11
+# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7
+-----BEGIN CERTIFICATE-----
+MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
+IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
+MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
+ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
+T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
+FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
+cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
+BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
+fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
+GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Label: "Go Daddy Root Certificate Authority - G2"
+# Serial: 0
+# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01
+# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b
+# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
+EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
+ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
+NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
+EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
+AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
+E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
+/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
+DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
+GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
+tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
+AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
+FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
+WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
+9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
+gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
+2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
+LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
+4uJEvlz36hz1
+-----END CERTIFICATE-----
+
+# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Label: "Baltimore CyberTrust Root"
+# Serial: 33554617
+# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
+# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
+# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
+RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
+VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
+DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
+ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
+VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
+mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
+IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
+mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
+XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
+dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
+jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
+BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
+DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
+9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
+jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
+Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
+ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
+R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 1 O=Amazon
+# Subject: CN=Amazon Root CA 1 O=Amazon
+# Label: "Amazon Root CA 1"
+# Serial: 143266978916655856878034712317230054538369994
+# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6
+# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16
+# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e
+-----BEGIN CERTIFICATE-----
+MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
+ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
+9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
+IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
+VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
+93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
+jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
+A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
+U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
+N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
+o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
+5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
+rqXRfboQnoZsG4q5WTP468SQvvG5
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Global Root CA"
+# Serial: 10944719598952040374951832963794454346
+# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
+# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
+# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+
diff --git a/projects/chardet/build b/projects/chardet/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/chardet/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/chardet/config b/projects/chardet/config
new file mode 100644
index 0000000..94884fb
--- /dev/null
+++ b/projects/chardet/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.0.4
+git_url: https://github.com/chardet/chardet.git
+git_hash: 9b8c5c2fb118d76c6beeab9affd01c332732a530
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/dns/build b/projects/dns/build
new file mode 100644
index 0000000..c610ada
--- /dev/null
+++ b/projects/dns/build
@@ -0,0 +1,17 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+shopt -s globstar
+
+unzip dnspython-[% c('version') %].zip
+
+mkdir -p /var/tmp/dist/[% project %]
+
+cd $rootdir/dnspython*/[% project %]
+cp --parents **/*.py /var/tmp/dist/[% project %]/
+
+cd /var/tmp/dist/
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/dns/config b/projects/dns/config
new file mode 100644
index 0000000..e18fc85
--- /dev/null
+++ b/projects/dns/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.16.0
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/d/dnspython/dnspython-[% c("version") %].zip
+ sha256sum: 36c5e8e38d4369a08b6780b7f27d790a292b2b08eea01607865bf0936c558e01
+ # TODO: This package uses GPG sigs; we should switch from SHA256 hash to GPG verification.
diff --git a/projects/ecdsa/build b/projects/ecdsa/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/ecdsa/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/ecdsa/config b/projects/ecdsa/config
new file mode 100644
index 0000000..e4ee567
--- /dev/null
+++ b/projects/ecdsa/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.13.2
+git_url: https://github.com/warner/python-ecdsa.git
+git_hash: bb359d32e93acc3eb4d216aff4ba0e7531599cfb
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/electrum-nmc/build b/projects/electrum-nmc/build
new file mode 100644
index 0000000..8371744
--- /dev/null
+++ b/projects/electrum-nmc/build
@@ -0,0 +1,42 @@
+#!/bin/sh
+[% c("var/set_default_env") -%]
+mkdir -p /var/tmp/build/[% project %]
+tar -C /var/tmp/build/[% project %] -xf [% project %]-[% c("version") %].tar.gz
+
+cd /var/tmp/build/[% project %]/[% project %]-*
+
+mkdir packages
+cd packages
+
+[% FOREACH dep = ['aiohttp', 'aiohttp_socks', 'aiorpcx', 'async_timeout', 'attr', 'certifi', 'chardet', 'dns', 'ecdsa', 'idna', 'idna_ssl', 'jsonrpclib', 'multidict', 'pyaes', 'six', 'typing_extensions', 'yarl'] -%]
+ tar -C . -xf $rootdir/[% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a /var/tmp/build/[% project %]/[% project %]* ./Electrum-NMC
+
+cd ./Electrum-NMC
+# Remove GUI, since it's not used in Tor Browser.
+rm -r electrum_nmc/electrum/gui/
+# Remove plugins, since they're not used in Tor Browser.
+rm -r electrum_nmc/electrum/plugins/*/
+# Remove wallet functionality, since it's not used in Tor Browser.
+mv electrum_nmc/electrum/null_impl/null_wallet/*.py electrum_nmc/electrum/
+rm -r electrum_nmc/electrum/null_impl/
+# Remove some other files that aren't needed. We have to leave
+# electrum-nmc.desktop there, because it's used in run_electrum_nmc's is_local
+# detection.
+rm -r .git*
+rm -r .travis*
+rm -r contrib/
+rm -r electrum_nmc/electrum/tests/
+rm -r pubkeys
+rm -r tox.ini
+cd ../
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/electrum-nmc/config b/projects/electrum-nmc/config
new file mode 100644
index 0000000..57cabe5
--- /dev/null
+++ b/projects/electrum-nmc/config
@@ -0,0 +1,48 @@
+# vim: filetype=yaml sw=2
+filename: 'Electrum-NMC-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: 3.3.8
+git_url: https://github.com/namecoin/electrum-nmc.git
+# Note: this Git hash has a couple of fixes on top of the 3.3.8 tag, which
+# aren't yet in a release tag.
+git_hash: 74b87da8f2ddbbf33c23cc8e63b0e1515f427d86
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - project: aiohttp
+ name: aiohttp
+ - project: aiohttp_socks
+ name: aiohttp_socks
+ - project: aiorpcx
+ name: aiorpcx
+ - project: async_timeout
+ name: async_timeout
+ - project: attr
+ name: attr
+ - project: certifi
+ name: certifi
+ - project: chardet
+ name: chardet
+ - project: dns
+ name: dns
+ - project: ecdsa
+ name: ecdsa
+ - project: idna
+ name: idna
+ - project: idna_ssl
+ name: idna_ssl
+ - project: jsonrpclib
+ name: jsonrpclib
+ - project: multidict
+ name: multidict
+ - project: pyaes
+ name: pyaes
+ - project: six
+ name: six
+ - project: typing_extensions
+ name: typing_extensions
+ - project: yarl
+ name: yarl
diff --git a/projects/firefox/build b/projects/firefox/build
index 5179634..b42b301 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -92,11 +92,21 @@ fi
export LDFLAGS="-Wl,--no-insert-timestamp"
[% END -%]
+[% IF c("var/namecoin") %]
+ patch -p1 < $rootdir/namecoin-etld.patch
+[% END -%]
+
[% IF ! c("var/android") %]
# Place a copy of the Tor Launcher sources under browser/extensions
tar -C browser/extensions -xf $rootdir/[% c('input_files_by_name/tor-launcher') %]
[% END -%]
+[% IF c("var/namecoin") %]
+ pushd toolkit/torproject/torbutton
+ patch -p1 < $rootdir/namecoin-torbutton.patch
+ popd
+[% END %]
+
rm -f configure
rm -f js/src/configure
diff --git a/projects/firefox/config b/projects/firefox/config
index c6f840b..0931a3f 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -182,3 +182,8 @@ input_files:
- project: tba-translation
name: tba-translation
enable: '[% c("var/android") %]'
+ - filename: namecoin-torbutton.patch
+ enable: '[% c("var/namecoin") %]'
+ # TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
+ - filename: namecoin-etld.patch
+ enable: '[% c("var/namecoin") %]'
diff --git a/projects/firefox/namecoin-etld.patch b/projects/firefox/namecoin-etld.patch
new file mode 100644
index 0000000..4a97f99
--- /dev/null
+++ b/projects/firefox/namecoin-etld.patch
@@ -0,0 +1,25 @@
+diff --git a/mobile/android/app/src/main/assets/publicsuffixlist b/mobile/android/app/src/main/assets/publicsuffixlist
+index 7f834b1..6874b40 100644
+--- a/mobile/android/app/src/main/assets/publicsuffixlist
++++ b/mobile/android/app/src/main/assets/publicsuffixlist
+@@ -3005,6 +3005,8 @@ edu.mn
+ gov.mn
+ london
+ fashion
++onion
++bit.onion
+ creditunion
+ vision
+ eurovision
+diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
+index 9dd962a..3402b20 100644
+--- a/netwerk/dns/effective_tld_names.dat
++++ b/netwerk/dns/effective_tld_names.dat
+@@ -5480,6 +5480,7 @@ pro.om
+
+ // onion : https://tools.ietf.org/html/rfc7686
+ onion
++bit.onion
+
+ // org : https://en.wikipedia.org/wiki/.org
+ org
diff --git a/projects/firefox/namecoin-torbutton.patch b/projects/firefox/namecoin-torbutton.patch
new file mode 100644
index 0000000..11cf7a1
--- /dev/null
+++ b/projects/firefox/namecoin-torbutton.patch
@@ -0,0 +1,105 @@
+diff --git a/chrome/content/tor-circuit-display.js b/chrome/content/tor-circuit-display.js
+index 5ecbe7d..f771150 100644
+--- a/chrome/content/tor-circuit-display.js
++++ b/chrome/content/tor-circuit-display.js
+@@ -49,7 +49,11 @@ let credentialsToNodeDataMap = new Map(),
+ knownCircuitIDs = new Map(),
+ // A mutable map that records the SOCKS credentials for the
+ // latest channels for each browser + domain.
+- browserToCredentialsMap = new Map();
++ browserToCredentialsMap = new Map(),
++ // A mutable map from stream id to .bit[.onion] domains
++ bitTargets = {},
++ // A mutable map from .bit[.onion] domains to .onion domains.
++ bitToOnionMap = {};
+
+ // __trimQuotes(s)__.
+ // Removes quotation marks around a quoted string.
+@@ -126,6 +130,28 @@ let getCircuitStatusByID = async function (aController, circuitID) {
+ return null;
+ };
+
++// __collectBitTargets(aContoller)__.
++// Watches for STREAM NEW events. When a NEW event occurs, we will see
++// the stream's target domain. If that target is a .bit domain, then
++// we want to be sure to record this so we can later record if it is
++// remapped to a .onion domain.
++let collectBitTargets = function (aController) {
++ return aController.watchEvent(
++ "STREAM",
++ streamEvent => streamEvent.StreamStatus === "NEW",
++ async (streamEvent) => {
++ logger.eclog(3, "new streamEvent:" + JSON.stringify(streamEvent));
++ if (streamEvent && streamEvent.StreamID && streamEvent.Target) {
++ let targetDomain = streamEvent.Target.split(":")[0];
++ if (targetDomain.endsWith(".bit") ||
++ targetDomain.endsWith(".bit.onion")) {
++ bitTargets[streamEvent.StreamID] = Services.eTLD.getBaseDomainFromHost(targetDomain);
++ logger.eclog(3, "stream on .bit domain: " + targetDomain);
++ }
++ }
++ });
++};
++
+ // __collectIsolationData(aController, updateUI)__.
+ // Watches for STREAM SENTCONNECT events. When a SENTCONNECT event occurs, then
+ // we assume isolation settings (SOCKS username+password) are now fixed for the
+@@ -139,6 +165,15 @@ let collectIsolationData = function (aController, updateUI) {
+ "STREAM",
+ streamEvent => streamEvent.StreamStatus === "SENTCONNECT",
+ async (streamEvent) => {
++ logger.eclog(3, "sentconnect streamEvent:" + JSON.stringify(streamEvent));
++ // Collect any stream target that might be an onion.
++ if (streamEvent && streamEvent.StreamID && streamEvent.Target) {
++ let targetDomain = streamEvent.Target.split(":")[0];
++ if (targetDomain.endsWith(".onion")) {
++ bitToOnionMap[bitTargets[streamEvent.StreamID]] = targetDomain;
++ logger.eclog(3, "mapped " + bitTargets[streamEvent.StreamID] + " to " + targetDomain);
++ }
++ }
+ if (!knownCircuitIDs.get(streamEvent.CircuitID)) {
+ logger.eclog(3, "streamEvent.CircuitID: " + streamEvent.CircuitID);
+ knownCircuitIDs.set(streamEvent.CircuitID, true);
+@@ -306,12 +341,14 @@ let updateCircuitDisplay = function () {
+ (i === 0 && nodeData[0].type !== "bridge") ?
+ ["span", { class: "circuit-guard-info" }, uiString("guard")] : null);
+ }
+- if (domain.endsWith(".onion")) {
++ logger.eclog(3, "bit to onion map:" + JSON.stringify(bitToOnionMap) + ", domain: " + domain);
++ let mappedOnion = bitToOnionMap[domain];
++ if (domain.endsWith(".onion") || mappedOnion) {
+ for (let i = 0; i < 3; ++i) {
+ li(uiString("relay"));
+ }
+ }
+- li(domain);
++ li(domain, " ", mappedOnion ? ["span", { class: "circuit-ip-address" }, mappedOnion] : null);
+ // Hide the note about guards if we are using a bridge.
+ document.getElementById("circuit-guard-note-container").style.display =
+ (nodeData[0].type === "bridge") ? "none" : "block";
+@@ -418,6 +455,7 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ stopCollectingIsolationData = null,
+ stopCollectingBrowserCredentials = null,
+ stopEnsuringCorrectPopupDimensions = null,
++ stopCollectingBitTargets = null,
+ stop = function() {
+ syncDisplayWithSelectedTab(false);
+ if (myController) {
+@@ -430,6 +468,9 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ if (stopEnsuringCorrectPopupDimensions) {
+ stopEnsuringCorrectPopupDimensions();
+ }
++ if (stopCollectingBitTargets) {
++ stopCollectingBitTargets();
++ }
+ myController = null;
+ }
+ },
+@@ -444,6 +485,7 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+ stop();
+ });
+ syncDisplayWithSelectedTab(true);
++ stopCollectingBitTargets = collectBitTargets(myController);
+ stopCollectingIsolationData = collectIsolationData(myController, updateCircuitDisplay);
+ stopCollectingBrowserCredentials = collectBrowserCredentials();
+ stopEnsuringCorrectPopupDimensions = ensureCorrectPopupDimensions();
diff --git a/projects/goansicolor/config b/projects/goansicolor/config
new file mode 100644
index 0000000..6d1a73e
--- /dev/null
+++ b/projects/goansicolor/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/shiena/ansicolor.git
+git_hash: a422bbe96644373c5753384a59d678f7d261ff10
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/shiena/ansicolor
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtcd/config b/projects/gobtcd/config
new file mode 100644
index 0000000..56dcca4
--- /dev/null
+++ b/projects/gobtcd/config
@@ -0,0 +1,32 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/btcd.git
+git_hash: 6cfad711d4ee7367b3ab9dc572097438dbca56eb
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/btcd
+ go_lib_install:
+ - github.com/namecoin/btcd/btcjson
+ - github.com/namecoin/btcd/rpcclient
+ go_lib_deps:
+ - gobtclog
+ - gobtcutil
+ - gosocks
+ - gowebsocket
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtclog
+ project: gobtclog
+ - name: gobtcutil
+ project: gobtcutil
+ - name: gosocks
+ project: gosocks
+ - name: gowebsocket
+ project: gowebsocket
diff --git a/projects/gobtcd2/config b/projects/gobtcd2/config
new file mode 100644
index 0000000..5324737
--- /dev/null
+++ b/projects/gobtcd2/config
@@ -0,0 +1,32 @@
+# vim: filetype=yaml sw=2
+
+# You're probably wondering why gobtcd2 is a thing, rather than being part of
+# gobtcd. gobtcd builds the btcjson and rpcclient subpackages of btcd.
+# gobtcd2 builds the btcec, chaincfg, chaincfg/chainhash, and wire subpackages
+# of btcd. The former set depends on gobtcutil, which depends on the latter
+# set. This is fine for the dependency management done by "go get", which
+# operates on a per-package level rather than a per-repo level. Alas, since
+# rbm instead operates on a per-repo level (since each project is one repo),
+# splitting it up was necessary.
+
+version: '[% c("abbrev") %]'
+git_url: '[% pc("gobtcd", "git_url") %]'
+git_hash: '[% pc("gobtcd", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btcd
+ go_lib_install:
+ - github.com/btcsuite/btcd/btcec
+ - github.com/btcsuite/btcd/chaincfg
+ - github.com/btcsuite/btcd/chaincfg/chainhash
+ - github.com/btcsuite/btcd/wire
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtclog/config b/projects/gobtclog/config
new file mode 100644
index 0000000..9fcb6c6
--- /dev/null
+++ b/projects/gobtclog/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/btclog.git
+git_hash: 84c8d2346e9fc8c7b947e243b9c24e6df9fd206a
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btclog
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gobtcutil/config b/projects/gobtcutil/config
new file mode 100644
index 0000000..63a8f90
--- /dev/null
+++ b/projects/gobtcutil/config
@@ -0,0 +1,23 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/btcutil.git
+git_hash: 9e5f4b9a998d263e3ce9c56664a7816001ac8000
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/btcutil
+ go_lib_deps:
+ - gobtcd2
+ - goxcryptoripemd160
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd2
+ project: gobtcd2
+ - name: goxcryptoripemd160
+ project: goxcryptoripemd160
diff --git a/projects/gobuildinfo/config b/projects/gobuildinfo/config
new file mode 100644
index 0000000..5ca103c
--- /dev/null
+++ b/projects/gobuildinfo/config
@@ -0,0 +1,31 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/buildinfo.git
+git_hash: 337a29b5499734e584d4630ce535af64c5fe7813
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/buildinfo
+ go_lib_deps:
+ - goeasyconfig
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: goeasyconfig
+ project: goeasyconfig
diff --git a/projects/goconfigurable/config b/projects/goconfigurable/config
new file mode 100644
index 0000000..07bace5
--- /dev/null
+++ b/projects/goconfigurable/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/configurable.git
+git_hash: 34642c4c8cbf56801d0e34f0e82187305983ac26
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/configurable.v1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/godegoutils/config b/projects/godegoutils/config
new file mode 100644
index 0000000..f4f380a
--- /dev/null
+++ b/projects/godegoutils/config
@@ -0,0 +1,22 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/degoutils.git
+git_hash: 8fa2440b63444dad556d76366f1c3ee070c8a577
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/degoutils
+ go_lib_install:
+ - github.com/hlandau/degoutils/net
+ go_lib_deps:
+ - goxnet
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxnet
+ project: goxnet
diff --git a/projects/godexlogconfig/config b/projects/godexlogconfig/config
new file mode 100644
index 0000000..0dccbe2
--- /dev/null
+++ b/projects/godexlogconfig/config
@@ -0,0 +1,40 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/dexlogconfig.git
+git_hash: 244f29bd260884993b176cd14ef2f7631f6f3c18
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/dexlogconfig
+ go_lib_deps:
+ - gobuildinfo
+ - goeasyconfig
+ - gosystemd
+ - goxlog
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: goxlog
+ project: goxlog
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: gosystemd
+ project: gosystemd
+ - name: gobuildinfo
+ project: gobuildinfo
diff --git a/projects/godns/config b/projects/godns/config
new file mode 100644
index 0000000..a005c32
--- /dev/null
+++ b/projects/godns/config
@@ -0,0 +1,26 @@
+version: 1.1.22
+git_url: https://github.com/miekg/dns.git
+git_hash: 1e224ff5dead8366ed6fcdcb832794be42e73f0e
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/miekg/dns
+ go_lib_deps:
+ - goxcryptoed25519
+ - goxnetip
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxcryptoed25519
+ project: goxcryptoed25519
+ - name: goxnetip
+ project: goxnetip
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/goeasyconfig/config b/projects/goeasyconfig/config
new file mode 100644
index 0000000..a87283e
--- /dev/null
+++ b/projects/goeasyconfig/config
@@ -0,0 +1,35 @@
+version: 1.0.17
+git_url: https://github.com/hlandau/easyconfig.git
+git_hash: c31249162931b4963bbe6e501cccb60d23271a3f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/easyconfig.v1
+ go_lib_deps:
+ - goconfigurable
+ - gosvcutils
+ - gotoml
+ - gopflag
+ - gokingpin
+ go_lib_install:
+ - gopkg.in/hlandau/easyconfig.v1
+ - gopkg.in/hlandau/easyconfig.v1/cflag
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goconfigurable
+ project: goconfigurable
+ - name: gosvcutils
+ project: gosvcutils
+ - name: gotoml
+ project: gotoml
+ - name: gopflag
+ project: gopflag
+ - name: gokingpin
+ project: gokingpin
diff --git a/projects/gogroupcache/config b/projects/gogroupcache/config
new file mode 100644
index 0000000..5646737
--- /dev/null
+++ b/projects/gogroupcache/config
@@ -0,0 +1,18 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/golang/groupcache.git
+git_hash: 611e8accdfc92c4187d399e95ce826046d4c8d73
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/golang/groupcache
+ go_lib_install:
+ - github.com/golang/groupcache/lru
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goisatty/config b/projects/goisatty/config
new file mode 100644
index 0000000..0f5fc17
--- /dev/null
+++ b/projects/goisatty/config
@@ -0,0 +1,20 @@
+version: 0.0.10
+git_url: https://github.com/mattn/go-isatty.git
+git_hash: 88ba11cfdc67c7588b30042edf244b2875f892b6
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/mattn/go-isatty
+ go_lib_deps:
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/gokingpin/config b/projects/gokingpin/config
new file mode 100644
index 0000000..dd209f4
--- /dev/null
+++ b/projects/gokingpin/config
@@ -0,0 +1,23 @@
+version: 2.2.6
+git_url: https://github.com/alecthomas/kingpin.git
+git_hash: 947dcec5ba9c011838740e680966fd7087a71d0d
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/alecthomas/kingpin.v2
+ go_lib_deps:
+ - gotemplate
+ - gounits
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gotemplate
+ project: gotemplate
+ - name: gounits
+ project: gounits
diff --git a/projects/gomadns/config b/projects/gomadns/config
new file mode 100644
index 0000000..a53f410
--- /dev/null
+++ b/projects/gomadns/config
@@ -0,0 +1,40 @@
+version: 2.0.1
+git_url: https://github.com/hlandau/madns.git
+git_hash: 26979b3e4b5aa3e0bd53cf0a014f9eaf43b578e3
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/madns.v2
+ go_lib_deps:
+ - godns
+ - gobuildinfo
+ - goxlog
+ go_lib_install:
+ - gopkg.in/hlandau/madns.v2
+ - gopkg.in/hlandau/madns.v2/merr
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: godns
+ project: godns
+ - name: gobuildinfo
+ project: gobuildinfo
+ - name: goxlog
+ project: goxlog
diff --git a/projects/goncbtcjson/config b/projects/goncbtcjson/config
new file mode 100644
index 0000000..708bfc8
--- /dev/null
+++ b/projects/goncbtcjson/config
@@ -0,0 +1,20 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncbtcjson.git
+git_hash: 0d2f400334751d149ca21bfd4535c9d2274f7264
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/ncbtcjson
+ go_lib_deps:
+ - gobtcd
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd
+ project: gobtcd
diff --git a/projects/goncrpcclient/config b/projects/goncrpcclient/config
new file mode 100644
index 0000000..122700c
--- /dev/null
+++ b/projects/goncrpcclient/config
@@ -0,0 +1,23 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncrpcclient.git
+git_hash: 858e1a5acd8b2da56462f50323633cdf2fe80977
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/namecoin/ncrpcclient
+ go_lib_deps:
+ - gobtcd
+ - goncbtcjson
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gobtcd
+ project: gobtcd
+ - name: goncbtcjson
+ project: goncbtcjson
diff --git a/projects/gopflag/config b/projects/gopflag/config
new file mode 100644
index 0000000..16141cc
--- /dev/null
+++ b/projects/gopflag/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/ogier/pflag.git
+git_hash: 45c278ab3607870051a2ea9040bb85fcb8557481
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/ogier/pflag
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gopretty/config b/projects/gopretty/config
new file mode 100644
index 0000000..a2ceecf
--- /dev/null
+++ b/projects/gopretty/config
@@ -0,0 +1,20 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/kr/pretty.git
+git_hash: 71e7e49937503c662b9b636fd6b2c14b1aa818a5
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/kr/pretty
+ go_lib_deps:
+ - gotext
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: gotext
+ project: gotext
diff --git a/projects/goservice/config b/projects/goservice/config
new file mode 100644
index 0000000..67eff54
--- /dev/null
+++ b/projects/goservice/config
@@ -0,0 +1,44 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/hlandau/service.git
+git_hash: 0496f910e39ef577ba805f512f6e1b80d652c4b9
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/service.v2
+ go_lib_deps:
+ - gosvcutils
+ - goeasyconfig
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: gosvcutils
+ project: gosvcutils
+ - name: goeasyconfig
+ project: goeasyconfig
diff --git a/projects/gosocks/config b/projects/gosocks/config
new file mode 100644
index 0000000..1d9a5a8
--- /dev/null
+++ b/projects/gosocks/config
@@ -0,0 +1,18 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/go-socks.git
+git_hash: 4720035b7bfd2a9bb130b1c184f8bbe41b6f0d0f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/go-socks
+ go_lib_install:
+ - github.com/btcsuite/go-socks/socks
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gosvcutils/config b/projects/gosvcutils/config
new file mode 100644
index 0000000..b941e05
--- /dev/null
+++ b/projects/gosvcutils/config
@@ -0,0 +1,47 @@
+version: 1.0.10
+git_url: https://github.com/hlandau/svcutils.git
+git_hash: c25dac49e50cbbcbef8c81b089f56156f4067729
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: gopkg.in/hlandau/svcutils.v1
+ go_lib_install:
+ - gopkg.in/hlandau/svcutils.v1
+ - gopkg.in/hlandau/svcutils.v1/caps
+ - gopkg.in/hlandau/svcutils.v1/chroot
+ - gopkg.in/hlandau/svcutils.v1/dupfd
+ - gopkg.in/hlandau/svcutils.v1/exepath
+ - gopkg.in/hlandau/svcutils.v1/passwd
+ - gopkg.in/hlandau/svcutils.v1/pidfile
+ - gopkg.in/hlandau/svcutils.v1/setuid
+ - gopkg.in/hlandau/svcutils.v1/systemd
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
diff --git a/projects/gosystemd/config b/projects/gosystemd/config
new file mode 100644
index 0000000..daa9f79
--- /dev/null
+++ b/projects/gosystemd/config
@@ -0,0 +1,29 @@
+version: 21
+git_url: https://github.com/coreos/go-systemd.git
+git_hash: d3cd4ed1dbcf5835feba465b180436db54f20228
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/coreos/go-systemd
+ go_lib_install:
+ - github.com/coreos/go-systemd/journal
+ build_go_lib_pre: |
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
+ export CGO_ENABLED=1
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
diff --git a/projects/gotemplate/config b/projects/gotemplate/config
new file mode 100644
index 0000000..62cddc9
--- /dev/null
+++ b/projects/gotemplate/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/alecthomas/template.git
+git_hash: fb15b899a75114aa79cc930e33c46b577cc664b1
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/alecthomas/template
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gotext/config b/projects/gotext/config
new file mode 100644
index 0000000..5493329
--- /dev/null
+++ b/projects/gotext/config
@@ -0,0 +1,16 @@
+version: 0.1.0
+git_url: https://github.com/kr/text.git
+git_hash: e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/kr/text
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gotoml/config b/projects/gotoml/config
new file mode 100644
index 0000000..c40c582
--- /dev/null
+++ b/projects/gotoml/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/BurntSushi/toml.git
+git_hash: 3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/BurntSushi/toml
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gounits/config b/projects/gounits/config
new file mode 100644
index 0000000..8cf7395
--- /dev/null
+++ b/projects/gounits/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/alecthomas/units.git
+git_hash: f65c72e2690dc4b403c8bd637baf4611cd4c069b
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/alecthomas/units
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/gowebsocket/config b/projects/gowebsocket/config
new file mode 100644
index 0000000..1e103d3
--- /dev/null
+++ b/projects/gowebsocket/config
@@ -0,0 +1,16 @@
+version: '[% c("abbrev") %]'
+git_url: https://github.com/btcsuite/websocket.git
+git_hash: 31079b6807923eb23992c421b114992b95131b55
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/btcsuite/websocket
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxcryptoed25519/config b/projects/goxcryptoed25519/config
new file mode 100644
index 0000000..d065de1
--- /dev/null
+++ b/projects/goxcryptoed25519/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxcrypto", "git_url") %]'
+git_hash: '[% pc("goxcrypto", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/crypto
+ go_lib_install:
+ - golang.org/x/crypto/ed25519
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxcryptoripemd160/config b/projects/goxcryptoripemd160/config
new file mode 100644
index 0000000..b14e71d
--- /dev/null
+++ b/projects/goxcryptoripemd160/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxcrypto", "git_url") %]'
+git_hash: '[% pc("goxcrypto", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/crypto
+ go_lib_install:
+ - golang.org/x/crypto/ripemd160
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/goxlog/config b/projects/goxlog/config
new file mode 100644
index 0000000..fa47d30
--- /dev/null
+++ b/projects/goxlog/config
@@ -0,0 +1,23 @@
+version: 1.0.0
+git_url: https://github.com/hlandau/xlog.git
+git_hash: 197ef798aed28e08ed3e176e678fda81be993a31
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: github.com/hlandau/xlog
+ go_lib_deps:
+ - goisatty
+ - goansicolor
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goisatty
+ project: goisatty
+ - name: goansicolor
+ project: goansicolor
diff --git a/projects/goxnetip/config b/projects/goxnetip/config
new file mode 100644
index 0000000..db1c85e
--- /dev/null
+++ b/projects/goxnetip/config
@@ -0,0 +1,24 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxnet", "git_url") %]'
+git_hash: '[% pc("goxnet", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/net
+ go_lib_install:
+ - golang.org/x/net/ipv4
+ - golang.org/x/net/ipv6
+ go_lib_deps:
+ - goxsysunix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: goxsysunix
+ project: goxsysunix
diff --git a/projects/goxsysunix/config b/projects/goxsysunix/config
new file mode 100644
index 0000000..a2fe03c
--- /dev/null
+++ b/projects/goxsysunix/config
@@ -0,0 +1,19 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: '[% pc("goxsys", "git_url") %]'
+git_hash: '[% pc("goxsys", "git_hash") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+build: '[% c("projects/go/var/build_go_lib") %]'
+
+var:
+ container:
+ use_container: 1
+ go_lib: golang.org/x/sys
+ go_lib_install:
+ - golang.org/x/sys/unix
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
diff --git a/projects/idna/build b/projects/idna/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/idna/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/idna/config b/projects/idna/config
new file mode 100644
index 0000000..c499a80
--- /dev/null
+++ b/projects/idna/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 2.8
+git_url: https://github.com/kjd/idna.git
+git_hash: 1cdf175e259b299be76f49c3ddc8794214f9931f
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/idna_ssl/build b/projects/idna_ssl/build
new file mode 100644
index 0000000..6f65b22
--- /dev/null
+++ b/projects/idna_ssl/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/idna_ssl/config b/projects/idna_ssl/config
new file mode 100644
index 0000000..7331027
--- /dev/null
+++ b/projects/idna_ssl/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.1.0
+git_url: https://github.com/aio-libs/idna-ssl.git
+git_hash: 1ab8304810f8bd9a880c0a013276cddd3c6e9551
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/jsonrpclib/build b/projects/jsonrpclib/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/jsonrpclib/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/jsonrpclib/config b/projects/jsonrpclib/config
new file mode 100644
index 0000000..e5b469b
--- /dev/null
+++ b/projects/jsonrpclib/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 0.4.0
+git_url: https://github.com/tcalmant/jsonrpclib.git
+git_hash: fe9fcf2c99973507f7055d6c9e05e155957c2549
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/multidict/build b/projects/multidict/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/multidict/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/multidict/config b/projects/multidict/config
new file mode 100644
index 0000000..d242b08
--- /dev/null
+++ b/projects/multidict/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 4.5.2
+git_url: https://github.com/aio-libs/multidict.git
+git_hash: bd40998bf220820a7d636d5f02912c8d4abcac23
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/ncdns/build b/projects/ncdns/build
new file mode 100644
index 0000000..5ec0bc8
--- /dev/null
+++ b/projects/ncdns/build
@@ -0,0 +1,31 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+export PATH="/var/tmp/dist/binutils/bin:$PATH"
+export CGO_ENABLED=1
+distdir=/var/tmp/dist/[% project %]
+mkdir -p $distdir
+
+[% FOREACH dep = c("var/go_lib_deps") -%]
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p $GOPATH/src/github.com/namecoin
+tar -C $GOPATH/src/github.com/namecoin -xf [% project %]-[% c('version') %].tar.gz
+mv $GOPATH/src/github.com/namecoin/ncdns-[% c('version') %] $GOPATH/src/github.com/namecoin/ncdns
+
+TAGS="-tags no_namecoin_tls"
+
+[% FOREACH inst IN c("var/go_lib_install") %]
+ go install $TAGS -ldflags '-s' [% inst %]
+[% END %]
+
+cd /var/tmp/dist
+
+[% c('tar', {
+ tar_src => [ 'gopath' ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+}) %]
diff --git a/projects/ncdns/config b/projects/ncdns/config
new file mode 100644
index 0000000..0785e51
--- /dev/null
+++ b/projects/ncdns/config
@@ -0,0 +1,82 @@
+#version: 0.0.9
+# Using latest master branch because we need the stream isolation and
+# disable_namecoin_tlsa features. Once they're in a tagged release, we'll go
+# back to using a version number here.
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncdns.git
+# Using latest master branch because we need the stream isolation and
+# disable_namecoin_tlsa features. Once they're in a tagged release, we'll go
+# back to using a hash that corresponds to a tag here.
+git_hash: 'ca0fe5552806a4275f38468c4d3fbcb2cba1cb79'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+ go_lib_deps:
+ - gogroupcache
+ - godegoutils
+ - godexlogconfig
+ - goncbtcjson
+ - goncrpcclient
+ - gobtcd
+ - gopretty
+ - godns
+ - gomadns
+ - goeasyconfig
+ - goservice
+ - goxnet
+ go_lib_install:
+ - github.com/namecoin/ncdns
+ - github.com/namecoin/ncdns/backend
+ - github.com/namecoin/ncdns/namecoin
+ - github.com/namecoin/ncdns/ncdomain
+ - github.com/namecoin/ncdns/ncdt
+ - github.com/namecoin/ncdns/rrtourl
+ - github.com/namecoin/ncdns/server
+ - github.com/namecoin/ncdns/testutil
+ - github.com/namecoin/ncdns/tlshook
+ - github.com/namecoin/ncdns/util
+
+targets:
+ linux-i686:
+ var:
+ arch_deps:
+ - libcap-dev:i386
+ linux-x86_64:
+ var:
+ arch_deps:
+ - libcap-dev
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - name: binutils
+ project: binutils
+ - name: godexlogconfig
+ project: godexlogconfig
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: goservice
+ project: goservice
+ - name: gogroupcache
+ project: gogroupcache
+ - name: goncbtcjson
+ project: goncbtcjson
+ - name: goncrpcclient
+ project: goncrpcclient
+ - name: gobtcd
+ project: gobtcd
+ - name: godns
+ project: godns
+ - name: gomadns
+ project: gomadns
+ - name: gopretty
+ project: gopretty
+ - name: godegoutils
+ project: godegoutils
+ - name: goxnet
+ project: goxnet
diff --git a/projects/ncprop279/build b/projects/ncprop279/build
new file mode 100644
index 0000000..a035277
--- /dev/null
+++ b/projects/ncprop279/build
@@ -0,0 +1,32 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
+export CGO_ENABLED=0
+distdir=/var/tmp/dist/[% project %]
+mkdir -p $distdir
+
+[% FOREACH dep = c("var/go_lib_deps") -%]
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/' _ dep) %]
+[% END -%]
+
+mkdir -p $GOPATH/src/github.com/namecoin
+tar -C $GOPATH/src/github.com/namecoin -xf [% project %]-[% c('version') %].tar.gz
+mv $GOPATH/src/github.com/namecoin/ncprop279-[% c('version') %] $GOPATH/src/github.com/namecoin/ncprop279
+
+TAGS="-tags no_namecoin_tls"
+
+go install $TAGS -ldflags '-s' github.com/namecoin/ncprop279
+
+[% IF c("var/linux-x86_64") -%]
+ GOPATHBIN="${GOPATH}/bin"
+[% ELSE -%]
+ GOPATHBIN="${GOPATH}/bin/${GOOS}_${GOARCH}"
+[% END -%]
+
+cp -a $GOPATHBIN/ncprop279 $distdir/
+
+cd $distdir
+[% c('tar', {
+ tar_src => [ '.' ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/ncprop279/config b/projects/ncprop279/config
new file mode 100644
index 0000000..5d4ee51
--- /dev/null
+++ b/projects/ncprop279/config
@@ -0,0 +1,32 @@
+#version: '0.0.2'
+# Using latest master branch because we need the stream isolation feature.
+# Once it's in a tagged release, we'll go back to using a version number here.
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/ncprop279.git
+# Using latest master branch because we need the stream isolation feature.
+# Once it's in a tagged release, we'll go back to using a hash that corresponds
+# to a tag here.
+git_hash: '7bdd741d70258407f66aab52b24788f1acccc56b'
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+ go_lib_deps:
+ - godns
+ - goeasyconfig
+ - gomadns
+ - ncdns
+
+input_files:
+ - project: container-image
+ - name: go
+ project: go
+ - name: godns
+ project: godns
+ - name: goeasyconfig
+ project: goeasyconfig
+ - name: gomadns
+ project: gomadns
+ - name: ncdns
+ project: ncdns
diff --git a/projects/pyaes/build b/projects/pyaes/build
new file mode 100644
index 0000000..0747718
--- /dev/null
+++ b/projects/pyaes/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %] ./[% project %]
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/pyaes/config b/projects/pyaes/config
new file mode 100644
index 0000000..6fba344
--- /dev/null
+++ b/projects/pyaes/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.6.1
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
+ - URL: https://files.pythonhosted.org/packages/source/p/pyaes/pyaes-[% c("version") %].tar.gz
+ sha256sum: 02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
+ # TODO: This version doesn't show up as a Git tag; where did it come from?
diff --git a/projects/six/build b/projects/six/build
new file mode 100644
index 0000000..6f65b22
--- /dev/null
+++ b/projects/six/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/six/config b/projects/six/config
new file mode 100644
index 0000000..e0945d1
--- /dev/null
+++ b/projects/six/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.12.0
+git_url: https://github.com/benjaminp/six.git
+git_hash: d927b9e27617abca8dbf4d66cc9265ebbde261d6
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/stemns/build b/projects/stemns/build
new file mode 100644
index 0000000..3784894
--- /dev/null
+++ b/projects/stemns/build
@@ -0,0 +1,25 @@
+#!/bin/sh
+[% c("var/set_default_env") -%]
+distdir=/var/tmp/dist/StemNS
+mkdir /var/tmp/build
+mkdir /var/tmp/dist
+
+# Extract StemNS
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+cp -a /var/tmp/build/[% project %]-[% c('version') %] ${distdir}
+
+# Extract Stem
+tar -C /var/tmp/build -xf stem-[% c("var/stem-version") %].tar.gz
+
+cp -a /var/tmp/build/stem-[% c("var/stem-version") %]/stem ${distdir}/stem
+
+# Apply settings
+cp -a settings_port.py settings_services.py ${distdir}/
+
+cd /var/tmp/dist/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/stemns/config b/projects/stemns/config
new file mode 100644
index 0000000..6c83335
--- /dev/null
+++ b/projects/stemns/config
@@ -0,0 +1,17 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: https://github.com/namecoin/StemNS.git
+git_hash: '32ed59be344d6bb949faa4a2bf70ae058bfe4d21'
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+var:
+ container:
+ use_container: 1
+ stem-version: 1.7.1
+
+input_files:
+ - project: container-image
+ - URL: 'https://files.pythonhosted.org/packages/source/s/stem/stem-[% c("var/stem-version") %].tar.gz'
+ sha256sum: c9eaf3116cb60c15995cbd3dec3a5cbc50e9bb6e062c4d6d42201e566f498ca2
+ # TODO: This sha256sum was grabbed from PyPI and hasn't been verified. We should probably switch to using an OpenPGP sig.
+ - filename: settings_port.py
+ - filename: settings_services.py
diff --git a/projects/stemns/settings_port.py b/projects/stemns/settings_port.py
new file mode 100644
index 0000000..e9f290d
--- /dev/null
+++ b/projects/stemns/settings_port.py
@@ -0,0 +1 @@
+tor_control_port = 9151
diff --git a/projects/stemns/settings_services.py b/projects/stemns/settings_services.py
new file mode 100644
index 0000000..57897f0
--- /dev/null
+++ b/projects/stemns/settings_services.py
@@ -0,0 +1,4 @@
+_service_to_command = {
+ "bit.onion": ['TorBrowser/ncprop279/ncprop279', '--conf=TorBrowser/Data/ncprop279/ncprop279.conf'],
+ "bit": ['TorBrowser/ncprop279/ncprop279', '--conf=TorBrowser/Data/ncprop279/ncprop279.conf'],
+}
diff --git a/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config b/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config
new file mode 100644
index 0000000..df1ab17
--- /dev/null
+++ b/projects/tor-browser/Bundle-Data/linux/Data/Electrum-NMC/config
@@ -0,0 +1,6 @@
+{
+ "proxy": "socks5:127.0.0.1:9150::",
+ "rpcpassword": "password",
+ "rpcport": 8336,
+ "rpcuser": "user"
+}
\ No newline at end of file
diff --git a/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf b/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf
new file mode 100644
index 0000000..afcba1b
--- /dev/null
+++ b/projects/tor-browser/Bundle-Data/linux/Data/ncprop279/ncprop279.conf
@@ -0,0 +1,12 @@
+[ncprop279]
+
+namecoinrpcaddress="127.0.0.1:8336"
+namecoinrpcusername="user"
+namecoinrpcpassword="password"
+namecoinrpctimeout="10000"
+onlyonion="true"
+
+[xlog]
+
+# Uncomment this to enable debug logging
+#severity="DEBUG"
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 2979658..2c72e03 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -61,6 +61,11 @@ tar -C "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]" -xf [% c('input
cat > ${TB_STAGE_DIR}/Browser/start-tor-browser << 'RBM_TB_EOF'
[% INCLUDE 'RelativeLink/start-tor-browser' -%]
RBM_TB_EOF
+ [% IF c("var/namecoin") %]
+ pushd ${TB_STAGE_DIR}/Browser/
+ patch -p1 < $rootdir/namecoin.patch
+ popd
+ [% END %]
chmod +x ${TB_STAGE_DIR}/Browser/start-tor-browser
# Make sure we get the desired scrollbar behavior with Gtk3, see bug 27546.
GTK_SETTINGS_DIR=${TB_STAGE_DIR}/Browser/.config/gtk-3.0
@@ -70,6 +75,17 @@ RBM_TB_EOF
tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/tor-browser.tar.gz
tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files_by_name/tor') %]/tor.tar.gz
+[% IF c("var/namecoin") %]
+ # Extract Electrum-NMC
+ tar -C "$TBDIR/TorBrowser" -xf [% c('input_files_by_name/electrum-nmc') %]
+
+ # Extract ncprop279
+ mkdir "$TBDIR/TorBrowser/ncprop279"
+ tar -C "$TBDIR/TorBrowser/ncprop279" -xf [% c('input_files_by_name/ncprop279') %]
+
+ # Extract StemNS
+ tar -C "$TBDIR/TorBrowser" -xf [% c('input_files_by_name/stemns') %]
+[% END %]
[% IF c("var/linux");
SET bundledata_osname = 'linux';
@@ -105,7 +121,14 @@ tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files
mkdir -p "$TBDIR/$DOCSPATH"
cp -a Bundle-Data/Docs/* "$TBDIR/$DOCSPATH"
-tar -C Bundle-Data/[% bundledata_osname %] -c . | tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -x
+[% IF c("var/namecoin") %]
+ EXCLUDE_ELECTRUM=""
+ EXCLUDE_NCPROP279=""
+[% ELSE %]
+ EXCLUDE_ELECTRUM="--exclude=*Electrum-NMC*"
+ EXCLUDE_NCPROP279="--exclude=*ncprop279*"
+[% END %]
+tar -C Bundle-Data/[% bundledata_osname %] "${EXCLUDE_ELECTRUM}" "${EXCLUDE_NCPROP279}" -c . | tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -x
cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$TBDIR/$TORCONFIGPATH/torrc-defaults"
[% IF ! c("var/snowflake") %]
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 819ebad..85d8bff 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -14,6 +14,7 @@ var:
- unzip
- bzip2
- xz-utils
+ - patch
targets:
linux-i686:
@@ -104,3 +105,14 @@ input_files:
name: apktool
sha256sum: a0f116e8916d6f21160e1559847bb8b8c32ee71900f321cafeadbe37b87ebcc1
enable: '[% c("var/android") %]'
+ - name: electrum-nmc
+ project: electrum-nmc
+ enable: '[% c("var/namecoin") %]'
+ - name: ncprop279
+ project: ncprop279
+ enable: '[% c("var/namecoin") %]'
+ - name: stemns
+ project: stemns
+ enable: '[% c("var/namecoin") %]'
+ - filename: namecoin.patch
+ enable: '[% c("var/namecoin") %]'
diff --git a/projects/tor-browser/namecoin.patch b/projects/tor-browser/namecoin.patch
new file mode 100644
index 0000000..f0c2cd0
--- /dev/null
+++ b/projects/tor-browser/namecoin.patch
@@ -0,0 +1,83 @@
+diff -ru RelativeLink/start-tor-browser RelativeLinkNamecoin/start-tor-browser
+--- RelativeLink/start-tor-browser 2019-11-03 06:56:36.062938844 +0000
++++ RelativeLinkNamecoin/start-tor-browser 2019-12-13 12:00:58.000000000 +0000
+@@ -169,6 +169,11 @@
+ detach=0
+ fi
+
++# We can't detach and enable Namecoin at the same time..
++if [ "$TOR_ENABLE_NAMECOIN" = 1 -a "$detach" -eq 1 ]; then
++ detach=0
++fi
++
+ if [ "$show_output" -eq 0 ]; then
+ # If the user hasn't requested 'debug mode' or --help, close stdout and stderr,
+ # to keep Firefox and the stuff loaded by/for it (including the
+@@ -352,6 +357,55 @@
+ #
+ # The --class parameter was added to fix bug 11102.
+
++# The Namecoin support in this script is a placeholder proof-of-concept only.
++# In the real world this would be moved to Tor Launcher.
++terminate_namecoin () {
++ echo "Terminating Namecoin..."
++ kill ${ELECTRUM_NMC_PID}
++ kill -s SIGKILL ${STEM_NS_PID}
++ echo "Terminated Namecoin."
++}
++if [ "${TOR_ENABLE_NAMECOIN}" = 1 ]; then
++ python3 -c 'import sys; exit(0) if sys.version_info[:2] >= (3, 6) else exit(1)'
++ if [ "$?" -ne 0 ]; then
++ complain "Namecoin requires at least Python 3.6."
++ exit 1
++ fi
++
++ if [ "$show_usage" -eq 1 ]; then
++ # No help exists for Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$detach" -eq 1 ] ; then
++ # No support yet for detached Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$log_output" -eq 1 -a "$show_output" -eq 1 ]; then
++ # No support yet for logging Namecoin
++ TOR_ENABLE_NAMECOIN=0
++ elif [ "$show_output" -eq 1 ]; then
++ # Launch Namecoin in verbose mode
++ echo "Launching Namecoin..."
++ trap terminate_namecoin SIGINT SIGTERM
++ grep --quiet "__LeaveStreamsUnattached 1" TorBrowser/Data/Tor/torrc-defaults || echo "__LeaveStreamsUnattached 1" >> TorBrowser/Data/Tor/torrc-defaults
++ TorBrowser/Electrum-NMC/run_electrum_nmc daemon -v --dir "TorBrowser/Data/Electrum-NMC/" &
++ ELECTRUM_NMC_PID=$!
++ python3 TorBrowser/StemNS/poc.py &
++ STEM_NS_PID=$!
++ echo "Launched Namecoin."
++ else
++ # Launch Namecoin
++ trap terminate_namecoin SIGINT SIGTERM
++ grep --quiet "__LeaveStreamsUnattached 1" TorBrowser/Data/Tor/torrc-defaults || echo "__LeaveStreamsUnattached 1" >> TorBrowser/Data/Tor/torrc-defaults
++ TorBrowser/Electrum-NMC/run_electrum_nmc daemon --dir "TorBrowser/Data/Electrum-NMC/" &
++ ELECTRUM_NMC_PID=$!
++ python3 TorBrowser/StemNS/poc.py &
++ STEM_NS_PID=$!
++ fi
++fi
++
++if [ "${TOR_ENABLE_NAMECOIN}" != 1 ]; then
++ perl -i -p -e 's/__LeaveStreamsUnattached 1\n//' TorBrowser/Data/Tor/torrc-defaults
++fi
++
+ if [ "$show_usage" -eq 1 ]; then
+ # Display Firefox help, then our help
+ TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
+@@ -373,4 +427,10 @@
+ -profile TorBrowser/Data/Browser/profile.default "${@}" > "$logfile" 2>&1 </dev/null
+ fi
+
+-exit $?
++FIREFOX_EXIT_CODE=$?
++
++if [ "${TOR_ENABLE_NAMECOIN}" = 1 ]; then
++ terminate_namecoin
++fi
++
++exit ${FIREFOX_EXIT_CODE}
diff --git a/projects/typing_extensions/build b/projects/typing_extensions/build
new file mode 100644
index 0000000..2628ad1
--- /dev/null
+++ b/projects/typing_extensions/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/src_py3/[% project %].py ./[% project %].py
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/typing_extensions/config b/projects/typing_extensions/config
new file mode 100644
index 0000000..4926d82
--- /dev/null
+++ b/projects/typing_extensions/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 3.7.4
+git_url: https://github.com/python/typing.git
+git_hash: baf63c5924a2b9695175df5d47ced40596024b78
+# TODO: This Git repo uses GPG sigs; we should switch from commit hash to GPG verification.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/projects/yarl/build b/projects/yarl/build
new file mode 100644
index 0000000..e0f9400
--- /dev/null
+++ b/projects/yarl/build
@@ -0,0 +1,14 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+tar xvf [% project %]-[% c('version') %].tar.gz
+
+mkdir -p /var/tmp/dist/[% project %]
+cd /var/tmp/dist/
+
+cp -a $rootdir/[% project %]*/[% project %]/*.py ./[% project %]/
+
+[% c('tar', {
+ tar_src => '.',
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/yarl/config b/projects/yarl/config
new file mode 100644
index 0000000..506bec1
--- /dev/null
+++ b/projects/yarl/config
@@ -0,0 +1,11 @@
+# vim: filetype=yaml sw=2
+version: 1.3.0
+git_url: https://github.com/aio-libs/yarl.git
+git_hash: 619cc2203b8888fb9ad552c4a3da6f8b31d1fbac
+# TODO: This Git repo doesn't use GPG sigs. We should pester them about that.
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
diff --git a/rbm.conf b/rbm.conf
index 0fe7acb..31f60bb 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -233,6 +233,7 @@ targets:
android_min_api_x86: 16
android_min_api_x86_64: 21
snowflake: 0
+ namecoin: 0
CC: '$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/bin/clang'
CXX: '$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/bin/clang++'
container:
@@ -275,6 +276,8 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ # Only build Namecoin for linux on nightly
+ namecoin: '[% c("var/nightly") %]'
container:
suite: wheezy
arch: amd64
@@ -327,6 +330,7 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ namecoin: 0
deps:
- build-essential
- python
@@ -355,6 +359,7 @@ targets:
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
+ namecoin: 0
deps:
- build-essential
- python
1
0