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
March 2013
- 21 participants
- 1373 discussions

[translation/torbirdy_completed] Update translations for torbirdy_completed
by translation@torproject.org 10 Mar '13
by translation@torproject.org 10 Mar '13
10 Mar '13
commit aff624f729f20db3607070298138754b6fae81a6
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Mar 10 08:46:30 2013 +0000
Update translations for torbirdy_completed
---
templates/torbirdy.dtd | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/templates/torbirdy.dtd b/templates/torbirdy.dtd
index 6e14cd4..e52b76f 100644
--- a/templates/torbirdy.dtd
+++ b/templates/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "n">
<!ENTITY torbirdy.prefs.proxy.label "Proxy Settings">
<!ENTITY torbirdy.prefs.privacy.label "Privacy Settings">
+<!ENTITY torbirdy.prefs.enigmail.label "Enigmail Settings">
+<!ENTITY torbirdy.prefs.security.label "Security Settings">
<!ENTITY torbirdy.prefs.recommended.text "Use the recommended proxy settings for TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Choose an anonymization service">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Enable Thunderbird's automatic email configuration wizard [default: disabled]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "Allow connections to servers that do not support SSL/TLS with secure renegotiation [default: do not allow]">
+<!ENTITY torbirdy.prefs.renegotiation.key "r">
<!ENTITY torbirdy.prefs.account_specific "Account-Specific">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Choose an account: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "Keyserver(s) to use: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "k">
<!ENTITY torbirdy.panel.usetor.label "Use Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Use JonDo (Premium)">
1
0

10 Mar '13
commit 19c1c8fa7c6bb956fb6346d64aabca1d415f108d
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Mar 10 08:46:26 2013 +0000
Update translations for torbirdy
---
ar/torbirdy.dtd | 6 ++++++
cs/torbirdy.dtd | 6 ++++++
de/torbirdy.dtd | 6 ++++++
el/torbirdy.dtd | 6 ++++++
es/torbirdy.dtd | 6 ++++++
eu/torbirdy.dtd | 6 ++++++
fa/torbirdy.dtd | 6 ++++++
fr/torbirdy.dtd | 6 ++++++
he/torbirdy.dtd | 6 ++++++
hu/torbirdy.dtd | 6 ++++++
it/torbirdy.dtd | 6 ++++++
ko/torbirdy.dtd | 6 ++++++
lv/torbirdy.dtd | 6 ++++++
nb/torbirdy.dtd | 6 ++++++
nl/torbirdy.dtd | 6 ++++++
pa/torbirdy.dtd | 6 ++++++
pl/torbirdy.dtd | 6 ++++++
pt_BR/torbirdy.dtd | 6 ++++++
ru/torbirdy.dtd | 6 ++++++
sr/torbirdy.dtd | 6 ++++++
sv/torbirdy.dtd | 6 ++++++
templates/torbirdy.dtd | 6 ++++++
zh_CN/torbirdy.dtd | 6 ++++++
23 files changed, 138 insertions(+), 0 deletions(-)
diff --git a/ar/torbirdy.dtd b/ar/torbirdy.dtd
index ef5f125..6e2cc0e 100644
--- a/ar/torbirdy.dtd
+++ b/ar/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "إعدادات البروكسي">
<!ENTITY torbirdy.prefs.privacy.label "اعدادات الخصوصية">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "استعمل خيارات البروكسي الموصى بها لتوربيردي (تور)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "اختر خدمة اخفاء هوية">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "مرتبط بالحساب">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "اختر حساباً">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "قم باستخدام تور">
<!ENTITY torbirdy.panel.usejondo.label "قم باستخدام جون دو (JonDo) النسخة Premium">
diff --git a/cs/torbirdy.dtd b/cs/torbirdy.dtd
index c252168..a74b149 100644
--- a/cs/torbirdy.dtd
+++ b/cs/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Nastavení Proxy">
<!ENTITY torbirdy.prefs.privacy.label "Nastavení soukromý">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Použít doporučené nastavení proxy pro TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Použít anonymizační službu">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Účet-specifický">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Vyber účet:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Použít Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Použít JonDo (Premium)">
diff --git a/de/torbirdy.dtd b/de/torbirdy.dtd
index 2ac93e2..9301583 100644
--- a/de/torbirdy.dtd
+++ b/de/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "p">
<!ENTITY torbirdy.prefs.proxy.label "Proxy Einstellungen">
<!ENTITY torbirdy.prefs.privacy.label "Privacy Einstellungen">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Empfohlene Proxy Einstellungen für TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Anonymisierungsdienst auswählen">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Thunderbird's automatischen Email-Konfigurator aktivieren [standard: deaktiviert]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Konten-spezifisch">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Konto auswählen: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Tor Onion Router nutzen">
<!ENTITY torbirdy.panel.usejondo.label "JonDo (Premium) nutzen">
diff --git a/el/torbirdy.dtd b/el/torbirdy.dtd
index fe3ee41..ea2d00a 100644
--- a/el/torbirdy.dtd
+++ b/el/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Ρυθμίσεις Proxy">
<!ENTITY torbirdy.prefs.privacy.label "Ρυθμίσεις απορρήτου">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Χρήση των προτεινόμενων ρυθμίσεων Proxy για το TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Επιλογή μιας υπηρεσίας ανωνυμίας">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Ειδικός λογαριασμός">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Επιλογή ενός λογαριασμού">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "">
<!ENTITY torbirdy.panel.usejondo.label "">
diff --git a/es/torbirdy.dtd b/es/torbirdy.dtd
index 2e1bdd3..278cc84 100644
--- a/es/torbirdy.dtd
+++ b/es/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Configuración para proxy">
<!ENTITY torbirdy.prefs.privacy.label "Parámetros de privacidad">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Usar la configuración de proxy recomendada para TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Escoger un servicio de anonimización">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Habilitar asistente de configuración automática de correo electrónico de Thunderbird [predeterminado: deshabilitado]">
<!ENTITY torbirdy.prefs.emailwizard.key "a">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Configuración específica de la cuenta">
<!ENTITY torbirdy.prefs.select_account.key "c">
<!ENTITY torbirdy.prefs.select_account.label "Elegir una cuenta">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Usar Tor (Onion Routing)">
<!ENTITY torbirdy.panel.usejondo.label "Usar JonDo (premium)">
diff --git a/eu/torbirdy.dtd b/eu/torbirdy.dtd
index 14f1fc5..72f598a 100644
--- a/eu/torbirdy.dtd
+++ b/eu/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Proxy ezarpenak">
<!ENTITY torbirdy.prefs.privacy.label "Pribatutasun ezarpenak">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "TorBirdy(Tor)rentzako gomendatutako proxy ezarpenak erabili">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Aukeratu anonimotasun zerbitzu bat">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Gaitu Thunderbirden eposta konfigurazio morroi automatikoa [lehenetsia: ezgaituta]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Kontuaren araberakoa">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Kontu bat aukeratu:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Erabili Tor Tipula Bideratzailea">
<!ENTITY torbirdy.panel.usejondo.label "Erabili JonDo (Premium)">
diff --git a/fa/torbirdy.dtd b/fa/torbirdy.dtd
index d6d2dd5..4d83bd0 100644
--- a/fa/torbirdy.dtd
+++ b/fa/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "تنظیمات پراکسی">
<!ENTITY torbirdy.prefs.privacy.label "تنظیمات حریم خصوصی">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "از تنظیمات پراکسی توصیه شده برای توربِردی استفاده کن (تور)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "یک سرویس ناشناسی انتخاب کنید">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "مخصوص حساب کاربری">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "یک حساب کاربری انتخاب کنید:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "از روترِ پیازیِ تور استفاده کن">
<!ENTITY torbirdy.panel.usejondo.label "از JonDo استفاده کن (ویژه)">
diff --git a/fr/torbirdy.dtd b/fr/torbirdy.dtd
index 3b8f6a8..015a99e 100644
--- a/fr/torbirdy.dtd
+++ b/fr/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Paramètres proxy">
<!ENTITY torbirdy.prefs.privacy.label "Paramètres de vie privé">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Utiliser les paramètres proxy recommandé pour TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Choisir un service d'anonymat">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Activer l'assistant de configuration automatique d'e-mail de Thunderbird [défaut : désactivé]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Compte-spécifique">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Choisir un compte: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Utiliser un routeur Oignon Tor">
<!ENTITY torbirdy.panel.usejondo.label "Utiliser JonDo (Premium)">
diff --git a/he/torbirdy.dtd b/he/torbirdy.dtd
index 19d9335..964171a 100644
--- a/he/torbirdy.dtd
+++ b/he/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "הגדרות שרת פרוקסי">
<!ENTITY torbirdy.prefs.privacy.label "הגדרות פרטיות">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "השתמש בהגדרות המומלצות עבור TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "בחר שרות עבור אלמוניות">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "חשבון ספציפי">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "בחר חשבון: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "תשתמש ב Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "תשתמש ב JonDo (Premium)">
diff --git a/hu/torbirdy.dtd b/hu/torbirdy.dtd
index b6217a2..467d47c 100644
--- a/hu/torbirdy.dtd
+++ b/hu/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "t">
<!ENTITY torbirdy.prefs.proxy.label "Proxy Beállítások">
<!ENTITY torbirdy.prefs.privacy.label "Adatvédelmi Beállítások">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Az ajánlott proxy beállítások használata a TorBirdy (Tor) használatához">
<!ENTITY torbirdy.prefs.recommended.key "a">
<!ENTITY torbirdy.prefs.anonservice.text "Névtelenné tevő szerver választása">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Fiók-specifikus">
<!ENTITY torbirdy.prefs.select_account.key "V">
<!ENTITY torbirdy.prefs.select_account.label "Válasszon egy fiókot:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "">
<!ENTITY torbirdy.panel.usejondo.label "">
diff --git a/it/torbirdy.dtd b/it/torbirdy.dtd
index 26338b9..f90a64f 100644
--- a/it/torbirdy.dtd
+++ b/it/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Impostazioni Proxy">
<!ENTITY torbirdy.prefs.privacy.label "Impostazioni Privacy">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Utilizza le impostazioni consigliate per TorBirdy(Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Scegli un servizio per l'anonimato">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Attiva il wizard di configurazione automatica email di Thunderbird [default: disabilitato]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Specifico Account">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Seleziona un account:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Usa Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Usa JonDo (Premium)">
diff --git a/ko/torbirdy.dtd b/ko/torbirdy.dtd
index 4d6b51f..8ed3598 100644
--- a/ko/torbirdy.dtd
+++ b/ko/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "프록시 설정">
<!ENTITY torbirdy.prefs.privacy.label "개인 정보 설정">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Torbirdy를 위한 추천되는 프록시 설정을 사용합니다.">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "익명화 서비스 선택">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "썬더버드의 자동 이메일 환경설정 마법사 활성화 [기본값 : 비활성화]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "계정-특징적">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "계정 선택 : ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Tor Onion Router 사용">
<!ENTITY torbirdy.panel.usejondo.label "JonDo 사용 (프리미엄)">
diff --git a/lv/torbirdy.dtd b/lv/torbirdy.dtd
index 65bdded..8ff5281 100644
--- a/lv/torbirdy.dtd
+++ b/lv/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Starpniekdatora iestatījumi">
<!ENTITY torbirdy.prefs.privacy.label "Privātuma iestatījumi">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Lietot Tor Birdy (Tor) ieteiktos starpniekdatora iestatījumus">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Izvēlieties anonimizācijas pakalpojumu">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Iespējot Thunderbird'a automātisko e-pasta konfigurācijas palīgu [noklusējumvērtība: atspējots]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Kontam-piemītošs">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Izvēlēties kontu:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Lietot maršrutētāju Tor sīpols">
<!ENTITY torbirdy.panel.usejondo.label "Lietot JonDo (īpašs)">
diff --git a/nb/torbirdy.dtd b/nb/torbirdy.dtd
index 3dc83c1..9ff8df9 100644
--- a/nb/torbirdy.dtd
+++ b/nb/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "n">
<!ENTITY torbirdy.prefs.proxy.label "Proxy innstillinger">
<!ENTITY torbirdy.prefs.privacy.label "Personvern Innstillinger">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Bruk de anbefalte proxyinnstillingene for TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Velg en anonymiseringstjeneste">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Aktiver Thunderbirds automatiske konfigureringshjelp [standard: deaktivert]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Kontospesifikt">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Velg en konto:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Bruk Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Bruk JonDo (Premium)">
diff --git a/nl/torbirdy.dtd b/nl/torbirdy.dtd
index 0c6a5a9..95011e5 100644
--- a/nl/torbirdy.dtd
+++ b/nl/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Proxy configuratie">
<!ENTITY torbirdy.prefs.privacy.label "Privacy configuratie">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Aanbevolen configuratie voor TorBirdy (Tor) gebruiken">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Kies een anonimiseringsdienst">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Schakel Thunderbird's automatische e-mail configuratie-wizard in [standaard: uitgeschakeld]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Account-specifiek">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Kies een account: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Gebruik Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Gebruik JonDo (Premium)">
diff --git a/pa/torbirdy.dtd b/pa/torbirdy.dtd
index 5e5c90f..28045cd 100644
--- a/pa/torbirdy.dtd
+++ b/pa/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "ਪਰਾਕਸੀ ਸੈਟਿੰਗ">
<!ENTITY torbirdy.prefs.privacy.label "ਪਰਾਈਵੇਸੀ ਸੈਟਿੰਗ">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "ਟੌਰਬਰਡੀ ਲਈ ਆਖੀ ਹੋਈ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਵਰਤੋ ਕਰੋ (ਟੌਰ)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "ਗੁਪਤ ਸਰਵਿਸ ਚੁਣ ਕਰੋ">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "ਅਕਾਊਂਟ-ਵਿਸ਼ਿਸ਼ਟ">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "ਅਕਾਊਂਟ ਚੁਣੋ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "ਟੌਰ ਦੀ ਵਰਤੋ ਕਰੋ">
<!ENTITY torbirdy.panel.usejondo.label "ਜੋਨ ਦੋ ਦੀ ਵਰਤੋ ਕਰੋ (ਪ੍ਰੀਮੀਅਮ)">
diff --git a/pl/torbirdy.dtd b/pl/torbirdy.dtd
index ce3a85b..92388a4 100644
--- a/pl/torbirdy.dtd
+++ b/pl/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "w">
<!ENTITY torbirdy.prefs.proxy.label "Ustawienia Proxy">
<!ENTITY torbirdy.prefs.privacy.label "Ustawienia Prywatności">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Użyj zalecanych ustawień proxy dla TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "j">
<!ENTITY torbirdy.prefs.anonservice.text "Wybierz usługę anonimizującą">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Włącz automatyczny kreator konfiguracji e-mail Thunderbirda [domyślnie: wyłączony]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Specyficzne dla konta">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Wybierz konto:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Używaj The Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Używaj JonDo (Premium)">
diff --git a/pt_BR/torbirdy.dtd b/pt_BR/torbirdy.dtd
index 9fad8c7..20e7a57 100644
--- a/pt_BR/torbirdy.dtd
+++ b/pt_BR/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "c">
<!ENTITY torbirdy.prefs.proxy.label "Configurações de Proxy">
<!ENTITY torbirdy.prefs.privacy.label "Configurações de Privacidade">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Utilize as configurações de proxy recomendadas pelo TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Escolha um serviço de anonimação">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "Ativar o assistente de configuração de email do Thunderbird [padrão: desativar]">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Configurações da Conta">
<!ENTITY torbirdy.prefs.select_account.key "s">
<!ENTITY torbirdy.prefs.select_account.label "Escolha uma conta:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "Usar o Roteador Tor Onion">
<!ENTITY torbirdy.panel.usejondo.label "Usar o JonDo (Usuário Premium)">
diff --git a/ru/torbirdy.dtd b/ru/torbirdy.dtd
index b23ffee..760f888 100644
--- a/ru/torbirdy.dtd
+++ b/ru/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Настройки Прокси">
<!ENTITY torbirdy.prefs.privacy.label "Настройки приватности">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Использовать рекомендуемые параметры прокси-сервера для TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Выберите сервис анонимизации">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Активировать автоматический мастер настройки почты Thunderbird [по умолчанию: не активирован]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Выберите аккаунт:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "">
<!ENTITY torbirdy.panel.usejondo.label "">
diff --git a/sr/torbirdy.dtd b/sr/torbirdy.dtd
index 2d96a60..e018444 100644
--- a/sr/torbirdy.dtd
+++ b/sr/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "Прокси подешавања">
<!ENTITY torbirdy.prefs.privacy.label "Подешавања приватности">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "Користите препоручена прокси подешавања за TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Изаберите сервис заштите (анонимности)">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "Специјално-за налог">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Изабери налог: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "">
<!ENTITY torbirdy.panel.usejondo.label "">
diff --git a/sv/torbirdy.dtd b/sv/torbirdy.dtd
index 076b07c..801197a 100644
--- a/sv/torbirdy.dtd
+++ b/sv/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "">
<!ENTITY torbirdy.prefs.proxy.label "">
<!ENTITY torbirdy.prefs.privacy.label "">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "">
<!ENTITY torbirdy.prefs.recommended.key "">
<!ENTITY torbirdy.prefs.anonservice.text "">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "">
<!ENTITY torbirdy.prefs.emailwizard.label "">
<!ENTITY torbirdy.prefs.emailwizard.key "">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "">
<!ENTITY torbirdy.prefs.select_account.key "">
<!ENTITY torbirdy.prefs.select_account.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "">
<!ENTITY torbirdy.panel.usejondo.label "">
diff --git a/templates/torbirdy.dtd b/templates/torbirdy.dtd
index 6e14cd4..e52b76f 100644
--- a/templates/torbirdy.dtd
+++ b/templates/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "n">
<!ENTITY torbirdy.prefs.proxy.label "Proxy Settings">
<!ENTITY torbirdy.prefs.privacy.label "Privacy Settings">
+<!ENTITY torbirdy.prefs.enigmail.label "Enigmail Settings">
+<!ENTITY torbirdy.prefs.security.label "Security Settings">
<!ENTITY torbirdy.prefs.recommended.text "Use the recommended proxy settings for TorBirdy (Tor)">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "Choose an anonymization service">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "Enable Thunderbird's automatic email configuration wizard [default: disabled]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "Allow connections to servers that do not support SSL/TLS with secure renegotiation [default: do not allow]">
+<!ENTITY torbirdy.prefs.renegotiation.key "r">
<!ENTITY torbirdy.prefs.account_specific "Account-Specific">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "Choose an account: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "Keyserver(s) to use: ">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "k">
<!ENTITY torbirdy.panel.usetor.label "Use Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "Use JonDo (Premium)">
diff --git a/zh_CN/torbirdy.dtd b/zh_CN/torbirdy.dtd
index a07c73f..f8860ac 100644
--- a/zh_CN/torbirdy.dtd
+++ b/zh_CN/torbirdy.dtd
@@ -16,6 +16,8 @@
<!ENTITY torbirdy.prefs.extra2.key "g">
<!ENTITY torbirdy.prefs.proxy.label "代理设置">
<!ENTITY torbirdy.prefs.privacy.label "隐私设置">
+<!ENTITY torbirdy.prefs.enigmail.label "">
+<!ENTITY torbirdy.prefs.security.label "">
<!ENTITY torbirdy.prefs.recommended.text "使用 TorBirdy(Tor)推荐的代理设置">
<!ENTITY torbirdy.prefs.recommended.key "r">
<!ENTITY torbirdy.prefs.anonservice.text "选择一个匿名服务">
@@ -41,9 +43,13 @@
<!ENTITY torbirdy.prefs.confirmemail.key "m">
<!ENTITY torbirdy.prefs.emailwizard.label "启用 Thunderbird 自动电子邮件配置向导 [默认:禁用]">
<!ENTITY torbirdy.prefs.emailwizard.key "w">
+<!ENTITY torbirdy.prefs.renegotiation.label "">
+<!ENTITY torbirdy.prefs.renegotiation.key "">
<!ENTITY torbirdy.prefs.account_specific "指定帐户">
<!ENTITY torbirdy.prefs.select_account.key "C">
<!ENTITY torbirdy.prefs.select_account.label "选择帐户:">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.label "">
+<!ENTITY torbirdy.prefs.enigmail.keyserver.key "">
<!ENTITY torbirdy.panel.usetor.label "使用 Tor Onion Router">
<!ENTITY torbirdy.panel.usejondo.label "使用 JonDo (Premium)">
1
0

[stem/master] Renaming stem.util.connection.is_valid_ip_address()
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit 08c5f3d6020c860077125a976a336f076f9b9e7c
Author: Damian Johnson <atagar(a)torproject.org>
Date: Fri Mar 8 09:37:35 2013 -0800
Renaming stem.util.connection.is_valid_ip_address()
Changing is_valid_ip_address() to is_valid_ipv4_address() so it'll be in better
keeping with the modules conventions now that it also supports IPv6. We might
add is_valid_ip_address() later to check if it's an IPv4 *or* IPv6 address.
---
stem/control.py | 4 ++--
stem/descriptor/extrainfo_descriptor.py | 2 +-
stem/descriptor/networkstatus.py | 6 +++---
stem/descriptor/router_status_entry.py | 4 ++--
stem/descriptor/server_descriptor.py | 4 ++--
stem/exit_policy.py | 6 +++---
stem/util/conf.py | 2 +-
stem/util/connection.py | 8 ++++----
test/integ/control/controller.py | 2 +-
test/network.py | 2 +-
test/unit/util/connection.py | 8 ++++----
11 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/stem/control.py b/stem/control.py
index 85b1c8e..d64373b 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -635,7 +635,7 @@ class Controller(BaseController):
:raises: :class:`stem.SocketError` if we're unable to establish a connection
"""
- if not stem.util.connection.is_valid_ip_address(address):
+ if not stem.util.connection.is_valid_ipv4_address(address):
raise ValueError("Invalid IP address: %s" % address)
elif not stem.util.connection.is_valid_port(port):
raise ValueError("Invalid port: %s" % port)
@@ -928,7 +928,7 @@ class Controller(BaseController):
# validate that address/ports are valid, and convert ports to ints
for addr, port in proxy_addrs:
- if not stem.util.connection.is_valid_ip_address(addr):
+ if not stem.util.connection.is_valid_ipv4_address(addr):
raise stem.ProtocolError("Invalid address for a SOCKS listener: %s" % addr)
elif not stem.util.connection.is_valid_port(port):
raise stem.ProtocolError("Invalid port for a SOCKS listener: %s" % port)
diff --git a/stem/descriptor/extrainfo_descriptor.py b/stem/descriptor/extrainfo_descriptor.py
index 9b0ffa3..3d7bb3c 100644
--- a/stem/descriptor/extrainfo_descriptor.py
+++ b/stem/descriptor/extrainfo_descriptor.py
@@ -502,7 +502,7 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
else:
address, port_str = value_comp[1].split(':', 1)
- if not stem.util.connection.is_valid_ip_address(address) or \
+ if not stem.util.connection.is_valid_ipv4_address(address) or \
stem.util.connection.is_valid_ipv6_address(address):
raise ValueError("Transport line has a malformed address: %s" % line)
elif not stem.util.connection.is_valid_port(port_str):
diff --git a/stem/descriptor/networkstatus.py b/stem/descriptor/networkstatus.py
index c3fac3e..e032f76 100644
--- a/stem/descriptor/networkstatus.py
+++ b/stem/descriptor/networkstatus.py
@@ -343,7 +343,7 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
if not dir_source_comp[0]:
# https://trac.torproject.org/7055
raise ValueError("Authority's hostname can't be blank: %s" % line)
- elif not stem.util.connection.is_valid_ip_address(dir_source_comp[1]):
+ elif not stem.util.connection.is_valid_ipv4_address(dir_source_comp[1]):
raise ValueError("Authority's address isn't a valid IPv4 address: %s" % dir_source_comp[1])
elif not stem.util.connection.is_valid_port(dir_source_comp[2], allow_zero = True):
raise ValueError("Authority's DirPort is invalid: %s" % dir_source_comp[2])
@@ -1112,7 +1112,7 @@ class DirectoryAuthority(stem.descriptor.Descriptor):
elif not dir_source_comp[2]:
# https://trac.torproject.org/7055
raise ValueError("Authority's hostname can't be blank: %s" % line)
- elif not stem.util.connection.is_valid_ip_address(dir_source_comp[3]):
+ elif not stem.util.connection.is_valid_ipv4_address(dir_source_comp[3]):
raise ValueError("Authority's address isn't a valid IPv4 address: %s" % dir_source_comp[3])
elif not stem.util.connection.is_valid_port(dir_source_comp[4], allow_zero = True):
raise ValueError("Authority's DirPort is invalid: %s" % dir_source_comp[4])
@@ -1273,7 +1273,7 @@ class KeyCertificate(stem.descriptor.Descriptor):
address, dirport = value.split(':', 1)
if validate:
- if not stem.util.connection.is_valid_ip_address(address):
+ if not stem.util.connection.is_valid_ipv4_address(address):
raise ValueError("Key certificate's address isn't a valid IPv4 address: %s" % line)
elif not stem.util.connection.is_valid_port(dirport):
raise ValueError("Key certificate's dirport is invalid: %s" % line)
diff --git a/stem/descriptor/router_status_entry.py b/stem/descriptor/router_status_entry.py
index 5a020b0..ef810ec 100644
--- a/stem/descriptor/router_status_entry.py
+++ b/stem/descriptor/router_status_entry.py
@@ -487,7 +487,7 @@ def _parse_r_line(desc, value, validate, include_digest = True):
if validate:
if not stem.util.tor_tools.is_valid_nickname(r_comp[0]):
raise ValueError("%s nickname isn't valid: %s" % (desc._name(), r_comp[0]))
- elif not stem.util.connection.is_valid_ip_address(r_comp[5]):
+ elif not stem.util.connection.is_valid_ipv4_address(r_comp[5]):
raise ValueError("%s address isn't a valid IPv4 address: %s" % (desc._name(), r_comp[5]))
elif not stem.util.connection.is_valid_port(r_comp[6]):
raise ValueError("%s ORPort is invalid: %s" % (desc._name(), r_comp[6]))
@@ -530,7 +530,7 @@ def _parse_a_line(desc, value, validate):
if is_ipv6:
address = address[1:-1] # remove brackets
- if not ((not is_ipv6 and stem.util.connection.is_valid_ip_address(address)) or
+ if not ((not is_ipv6 and stem.util.connection.is_valid_ipv4_address(address)) or
(is_ipv6 and stem.util.connection.is_valid_ipv6_address(address))):
if not validate:
return
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index b1c1cef..298b480 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -357,7 +357,7 @@ class ServerDescriptor(stem.descriptor.Descriptor):
if validate:
if not stem.util.tor_tools.is_valid_nickname(router_comp[0]):
raise ValueError("Router line entry isn't a valid nickname: %s" % router_comp[0])
- elif not stem.util.connection.is_valid_ip_address(router_comp[1]):
+ elif not stem.util.connection.is_valid_ipv4_address(router_comp[1]):
raise ValueError("Router line entry isn't a valid IPv4 address: %s" % router_comp[1])
elif not stem.util.connection.is_valid_port(router_comp[2], allow_zero = True):
raise ValueError("Router line's ORPort is invalid: %s" % router_comp[2])
@@ -523,7 +523,7 @@ class ServerDescriptor(stem.descriptor.Descriptor):
if is_ipv6:
address = address[1:-1] # remove brackets
- if not ((not is_ipv6 and stem.util.connection.is_valid_ip_address(address)) or
+ if not ((not is_ipv6 and stem.util.connection.is_valid_ipv4_address(address)) or
(is_ipv6 and stem.util.connection.is_valid_ipv6_address(address))):
if not validate:
continue
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index 475d67e..bae7af1 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -546,7 +546,7 @@ class ExitPolicyRule(object):
if address is not None:
address_type = self.get_address_type()
- if stem.util.connection.is_valid_ip_address(address):
+ if stem.util.connection.is_valid_ipv4_address(address):
if address_type == AddressType.IPv6:
return False
elif stem.util.connection.is_valid_ipv6_address(address, allow_brackets = True):
@@ -705,7 +705,7 @@ class ExitPolicyRule(object):
if addrspec == "*":
self._address_type = _address_type_to_int(AddressType.WILDCARD)
self.address = self._masked_bits = None
- elif stem.util.connection.is_valid_ip_address(self.address):
+ elif stem.util.connection.is_valid_ipv4_address(self.address):
# ipv4spec ::= ip4 | ip4 "/" num_ip4_bits | ip4 "/" ip4mask
# ip4 ::= an IPv4 address in dotted-quad format
# ip4mask ::= an IPv4 mask in dotted-quad format
@@ -715,7 +715,7 @@ class ExitPolicyRule(object):
if addr_extra is None:
self._masked_bits = 32
- elif stem.util.connection.is_valid_ip_address(addr_extra):
+ elif stem.util.connection.is_valid_ipv4_address(addr_extra):
# provided with an ip4mask
try:
self._masked_bits = stem.util.connection.get_masked_bits(addr_extra)
diff --git a/stem/util/conf.py b/stem/util/conf.py
index 292e3d5..795cd82 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -57,7 +57,7 @@ To do this use the :func:`~stem.util.conf.config_dict` function. For example...
# require at least a one second timeout
return max(1, value)
elif key == "endpoint":
- if not connection.is_valid_ip_address(value):
+ if not connection.is_valid_ipv4_address(value):
raise ValueError("'%s' isn't a valid IPv4 address" % value)
elif key == "port":
if not connection.is_valid_port(value):
diff --git a/stem/util/connection.py b/stem/util/connection.py
index 90961fc..52a3954 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -9,7 +9,7 @@ but for now just moving the parts we need.
::
- is_valid_ip_address - checks if a string is a valid IPv4 address
+ is_valid_ipv4_address - checks if a string is a valid IPv4 address
is_valid_ipv6_address - checks if a string is a valid IPv6 address
is_valid_port - checks if something is a valid representation for a port
expand_ipv6_address - provides an IPv6 address with its collapsed portions expanded
@@ -34,7 +34,7 @@ FULL_IPv4_MASK = "255.255.255.255"
FULL_IPv6_MASK = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"
-def is_valid_ip_address(address):
+def is_valid_ipv4_address(address):
"""
Checks if a string is a valid IPv4 address.
@@ -202,7 +202,7 @@ def get_masked_bits(mask):
:raises: **ValueError** if the mask is invalid or can't be converted
"""
- if not is_valid_ip_address(mask):
+ if not is_valid_ipv4_address(mask):
raise ValueError("'%s' is an invalid subnet mask" % mask)
# converts octets to binary representation
@@ -264,7 +264,7 @@ def get_address_binary(address):
:raises: **ValueError** if address is neither an IPv4 nor IPv6 address
"""
- if is_valid_ip_address(address):
+ if is_valid_ipv4_address(address):
return "".join([get_binary(int(octet), 8) for octet in address.split(".")])
elif is_valid_ipv6_address(address):
address = expand_ipv6_address(address)
diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index b93b802..f35932f 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -797,7 +797,7 @@ class TestController(unittest.TestCase):
# The response data for our request for request should be an IP address + '\n'
ip_addr = response[response.find("\r\n\r\n"):].strip()
- self.assertTrue(stem.util.connection.is_valid_ip_address(ip_addr))
+ self.assertTrue(stem.util.connection.is_valid_ipv4_address(ip_addr))
def test_get_microdescriptor(self):
"""
diff --git a/test/network.py b/test/network.py
index c8f0e97..2d4d9ba 100644
--- a/test/network.py
+++ b/test/network.py
@@ -202,7 +202,7 @@ class Socks(_socket_socket):
if response != SOCKS5_NOAUTH_RESPONSE:
raise SocksError(0x01)
- if stem.util.connection.is_valid_ip_address(address[0]):
+ if stem.util.connection.is_valid_ipv4_address(address[0]):
header = self._ints_to_bytes(SOCKS5_CONN_BY_IPV4)
header = header + socket.inet_aton(address[0])
else:
diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py
index 756852b..c7db6d3 100644
--- a/test/unit/util/connection.py
+++ b/test/unit/util/connection.py
@@ -8,9 +8,9 @@ import stem.util.connection
class TestConnection(unittest.TestCase):
- def test_is_valid_ip_address(self):
+ def test_is_valid_ipv4_address(self):
"""
- Checks the is_valid_ip_address function.
+ Checks the is_valid_ipv4_address function.
"""
valid_addresses = (
@@ -30,10 +30,10 @@ class TestConnection(unittest.TestCase):
)
for address in valid_addresses:
- self.assertTrue(stem.util.connection.is_valid_ip_address(address))
+ self.assertTrue(stem.util.connection.is_valid_ipv4_address(address))
for address in invalid_addresses:
- self.assertFalse(stem.util.connection.is_valid_ip_address(address))
+ self.assertFalse(stem.util.connection.is_valid_ipv4_address(address))
def test_is_valid_ipv6_address(self):
"""
1
0

[stem/master] Notice to stem users not to use stem.util.ordereddict
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit ec0b5538a95a39f7e2b3a3fbcf47a03739f16a6b
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 22:33:07 2013 -0800
Notice to stem users not to use stem.util.ordereddict
The ordereddict module is to allow us to support python 2.5 and 2.6. Adding a
notice that it may be dropped in the future.
---
stem/util/ordereddict.py | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/stem/util/ordereddict.py b/stem/util/ordereddict.py
index 1ca0bf7..07c7d4e 100644
--- a/stem/util/ordereddict.py
+++ b/stem/util/ordereddict.py
@@ -1,5 +1,8 @@
# Drop in replacement for python 2.7's OrderedDict, from...
# http://pypi.python.org/pypi/ordereddict
+#
+# Stem users should *not* rely upon this module. It will be removed when we
+# drop support for python 2.6 and below.
# Copyright (c) 2009 Raymond Hettinger
#
1
0

[stem/master] Making several stem.util.connection functions private
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit f8b538b00bd16fece4d368c892a7977dd0f8260b
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 22:29:37 2013 -0800
Making several stem.util.connection functions private
The connection module has several functions that I'd rather not vend. Marking
them as private to discourage their use.
---
stem/connection.py | 6 +++---
stem/exit_policy.py | 8 ++++----
stem/util/connection.py | 30 ++++++++++++------------------
test/unit/util/connection.py | 22 +++++++++++-----------
4 files changed, 30 insertions(+), 36 deletions(-)
diff --git a/stem/connection.py b/stem/connection.py
index 952c17f..dc70bce 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -732,15 +732,15 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
else:
raise AuthChallengeFailed("Unable to parse AUTHCHALLENGE response: %s" % exc, cookie_path)
- expected_server_hash = stem.util.connection.hmac_sha256(
+ expected_server_hash = stem.util.connection._hmac_sha256(
SERVER_HASH_CONSTANT,
cookie_data + client_nonce + authchallenge_response.server_nonce)
- if not stem.util.connection.cryptovariables_equal(authchallenge_response.server_hash, expected_server_hash):
+ if not stem.util.connection._cryptovariables_equal(authchallenge_response.server_hash, expected_server_hash):
raise AuthSecurityFailure("Tor provided the wrong server nonce", cookie_path)
try:
- client_hash = stem.util.connection.hmac_sha256(
+ client_hash = stem.util.connection._hmac_sha256(
CLIENT_HASH_CONSTANT,
cookie_data + client_nonce + authchallenge_response.server_nonce)
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index 6b31f73..48dc28a 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -568,7 +568,7 @@ class ExitPolicyRule(object):
if address is None:
return False
else:
- comparison_addr_bin = int(stem.util.connection.get_address_binary(address), 2)
+ comparison_addr_bin = int(stem.util.connection._get_address_binary(address), 2)
comparison_addr_bin &= self._get_mask_bin()
if self._get_address_bin() != comparison_addr_bin:
@@ -681,7 +681,7 @@ class ExitPolicyRule(object):
# provides an integer representation of our mask
if self._mask_bin is None:
- self._mask_bin = int(stem.util.connection.get_address_binary(self.get_mask(False)), 2)
+ self._mask_bin = int(stem.util.connection._get_address_binary(self.get_mask(False)), 2)
return self._mask_bin
@@ -689,7 +689,7 @@ class ExitPolicyRule(object):
# provides an integer representation of our address
if self._addr_bin is None:
- self._addr_bin = int(stem.util.connection.get_address_binary(self.address), 2) & self._mask_bin
+ self._addr_bin = int(stem.util.connection._get_address_binary(self.address), 2) & self._mask_bin
return self._addr_bin
@@ -718,7 +718,7 @@ class ExitPolicyRule(object):
elif stem.util.connection.is_valid_ipv4_address(addr_extra):
# provided with an ip4mask
try:
- self._masked_bits = stem.util.connection.get_masked_bits(addr_extra)
+ self._masked_bits = stem.util.connection._get_masked_bits(addr_extra)
except ValueError:
# mask can't be represented as a number of bits (ex. "255.255.0.255")
self._mask = addr_extra
diff --git a/stem/util/connection.py b/stem/util/connection.py
index 92776f5..b1a292d 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -15,12 +15,6 @@ but for now just moving the parts we need.
expand_ipv6_address - provides an IPv6 address with its collapsed portions expanded
get_mask_ipv4 - provides the mask representation for a given number of bits
get_mask_ipv6 - provides the IPv6 mask representation for a given number of bits
- get_masked_bits - provides the number of bits represented by a mask
- get_binary - provides the binary representation for an integer with padding
- get_address_binary - provides the binary representation for an address
-
- hmac_sha256 - provides a sha256 digest
- cryptovariables_equal - string comparison for cryptographic operations
"""
import hashlib
@@ -181,7 +175,7 @@ def get_mask_ipv4(bits):
return FULL_IPv4_MASK
# get the binary representation of the mask
- mask_bin = get_binary(2 ** bits - 1, 32)[::-1]
+ mask_bin = _get_binary(2 ** bits - 1, 32)[::-1]
# breaks it into eight character groupings
octets = [mask_bin[8 * i:8 * (i + 1)] for i in xrange(4)]
@@ -208,7 +202,7 @@ def get_mask_ipv6(bits):
return FULL_IPv6_MASK
# get the binary representation of the mask
- mask_bin = get_binary(2 ** bits - 1, 128)[::-1]
+ mask_bin = _get_binary(2 ** bits - 1, 128)[::-1]
# breaks it into sixteen character groupings
groupings = [mask_bin[16 * i:16 * (i + 1)] for i in xrange(8)]
@@ -217,7 +211,7 @@ def get_mask_ipv6(bits):
return ":".join(["%04x" % int(group, 2) for group in groupings]).upper()
-def get_masked_bits(mask):
+def _get_masked_bits(mask):
"""
Provides the number of bits that an IPv4 subnet mask represents. Note that
not all masks can be represented by a bit count.
@@ -233,7 +227,7 @@ def get_masked_bits(mask):
raise ValueError("'%s' is an invalid subnet mask" % mask)
# converts octets to binary representation
- mask_bin = get_address_binary(mask)
+ mask_bin = _get_address_binary(mask)
mask_match = re.match("^(1*)(0*)$", mask_bin)
if mask_match:
@@ -242,7 +236,7 @@ def get_masked_bits(mask):
raise ValueError("Unable to convert mask to a bit count: %s" % mask)
-def get_binary(value, bits):
+def _get_binary(value, bits):
"""
Provides the given value as a binary string, padded with zeros to the given
number of bits.
@@ -255,7 +249,7 @@ def get_binary(value, bits):
return "".join([str((value >> y) & 1) for y in range(bits - 1, -1, -1)])
-def get_address_binary(address):
+def _get_address_binary(address):
"""
Provides the binary value for an IPv4 or IPv6 address.
@@ -265,15 +259,15 @@ def get_address_binary(address):
"""
if is_valid_ipv4_address(address):
- return "".join([get_binary(int(octet), 8) for octet in address.split(".")])
+ return "".join([_get_binary(int(octet), 8) for octet in address.split(".")])
elif is_valid_ipv6_address(address):
address = expand_ipv6_address(address)
- return "".join([get_binary(int(grouping, 16), 16) for grouping in address.split(":")])
+ return "".join([_get_binary(int(grouping, 16), 16) for grouping in address.split(":")])
else:
raise ValueError("'%s' is neither an IPv4 or IPv6 address" % address)
-def hmac_sha256(key, msg):
+def _hmac_sha256(key, msg):
"""
Generates a sha256 digest using the given key and message.
@@ -286,7 +280,7 @@ def hmac_sha256(key, msg):
return hmac.new(key, msg, hashlib.sha256).digest()
-def cryptovariables_equal(x, y):
+def _cryptovariables_equal(x, y):
"""
Compares two strings for equality securely.
@@ -297,5 +291,5 @@ def cryptovariables_equal(x, y):
"""
return (
- hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, x) ==
- hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, y))
+ _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, x) ==
+ _hmac_sha256(CRYPTOVARIABLE_EQUALITY_COMPARISON_NONCE, y))
diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py
index ecbe04a..99ee050 100644
--- a/test/unit/util/connection.py
+++ b/test/unit/util/connection.py
@@ -123,20 +123,20 @@ class TestConnection(unittest.TestCase):
def test_get_masked_bits(self):
"""
- Checks the get_masked_bits function.
+ Checks the _get_masked_bits function.
"""
- self.assertEquals(32, stem.util.connection.get_masked_bits("255.255.255.255"))
- self.assertEquals(29, stem.util.connection.get_masked_bits("255.255.255.248"))
- self.assertEquals(23, stem.util.connection.get_masked_bits("255.255.254.0"))
- self.assertEquals(0, stem.util.connection.get_masked_bits("0.0.0.0"))
+ self.assertEquals(32, stem.util.connection._get_masked_bits("255.255.255.255"))
+ self.assertEquals(29, stem.util.connection._get_masked_bits("255.255.255.248"))
+ self.assertEquals(23, stem.util.connection._get_masked_bits("255.255.254.0"))
+ self.assertEquals(0, stem.util.connection._get_masked_bits("0.0.0.0"))
- self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "blarg")
- self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "255.255.0.255")
+ self.assertRaises(ValueError, stem.util.connection._get_masked_bits, "blarg")
+ self.assertRaises(ValueError, stem.util.connection._get_masked_bits, "255.255.0.255")
def test_get_address_binary(self):
"""
- Checks the get_address_binary function.
+ Checks the _get_address_binary function.
"""
test_values = {
@@ -151,7 +151,7 @@ class TestConnection(unittest.TestCase):
}
for test_arg, expected in test_values.items():
- self.assertEquals(expected, stem.util.connection.get_address_binary(test_arg))
+ self.assertEquals(expected, stem.util.connection._get_address_binary(test_arg))
- self.assertRaises(ValueError, stem.util.connection.get_address_binary, "")
- self.assertRaises(ValueError, stem.util.connection.get_address_binary, "blarg")
+ self.assertRaises(ValueError, stem.util.connection._get_address_binary, "")
+ self.assertRaises(ValueError, stem.util.connection._get_address_binary, "blarg")
1
0

10 Mar '13
commit 26c854e7c032d2f7df822316f56b0d62075d29d2
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 22:18:22 2013 -0800
Renaming stem.util.connection.get_mask()
Renaming the function to get_mask_ipv4() to match the module conventions now
that we have ipv6 support.
---
stem/exit_policy.py | 2 +-
stem/util/connection.py | 56 +++++++++++++++++++++---------------------
test/unit/util/connection.py | 40 +++++++++++++++---------------
3 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index bae7af1..6b31f73 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -610,7 +610,7 @@ class ExitPolicyRule(object):
if address_type == AddressType.WILDCARD:
mask = None
elif address_type == AddressType.IPv4:
- mask = stem.util.connection.get_mask(self._masked_bits)
+ mask = stem.util.connection.get_mask_ipv4(self._masked_bits)
elif address_type == AddressType.IPv6:
mask = stem.util.connection.get_mask_ipv6(self._masked_bits)
diff --git a/stem/util/connection.py b/stem/util/connection.py
index 52a3954..92776f5 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -13,9 +13,9 @@ but for now just moving the parts we need.
is_valid_ipv6_address - checks if a string is a valid IPv6 address
is_valid_port - checks if something is a valid representation for a port
expand_ipv6_address - provides an IPv6 address with its collapsed portions expanded
- get_mask - provides the mask representation for a given number of bits
- get_masked_bits - provides the number of bits represented by a mask
+ get_mask_ipv4 - provides the mask representation for a given number of bits
get_mask_ipv6 - provides the IPv6 mask representation for a given number of bits
+ get_masked_bits - provides the number of bits represented by a mask
get_binary - provides the binary representation for an integer with padding
get_address_binary - provides the binary representation for an address
@@ -164,7 +164,7 @@ def expand_ipv6_address(address):
return address
-def get_mask(bits):
+def get_mask_ipv4(bits):
"""
Provides the IPv4 mask for a given number of bits, in the dotted-quad format.
@@ -190,31 +190,6 @@ def get_mask(bits):
return ".".join([str(int(octet, 2)) for octet in octets])
-def get_masked_bits(mask):
- """
- Provides the number of bits that an IPv4 subnet mask represents. Note that
- not all masks can be represented by a bit count.
-
- :param str mask: mask to be converted
-
- :returns: **int** with the number of bits represented by the mask
-
- :raises: **ValueError** if the mask is invalid or can't be converted
- """
-
- if not is_valid_ipv4_address(mask):
- raise ValueError("'%s' is an invalid subnet mask" % mask)
-
- # converts octets to binary representation
- mask_bin = get_address_binary(mask)
- mask_match = re.match("^(1*)(0*)$", mask_bin)
-
- if mask_match:
- return 32 - len(mask_match.groups()[1])
- else:
- raise ValueError("Unable to convert mask to a bit count: %s" % mask)
-
-
def get_mask_ipv6(bits):
"""
Provides the IPv6 mask for a given number of bits, in the hex colon-delimited
@@ -242,6 +217,31 @@ def get_mask_ipv6(bits):
return ":".join(["%04x" % int(group, 2) for group in groupings]).upper()
+def get_masked_bits(mask):
+ """
+ Provides the number of bits that an IPv4 subnet mask represents. Note that
+ not all masks can be represented by a bit count.
+
+ :param str mask: mask to be converted
+
+ :returns: **int** with the number of bits represented by the mask
+
+ :raises: **ValueError** if the mask is invalid or can't be converted
+ """
+
+ if not is_valid_ipv4_address(mask):
+ raise ValueError("'%s' is an invalid subnet mask" % mask)
+
+ # converts octets to binary representation
+ mask_bin = get_address_binary(mask)
+ mask_match = re.match("^(1*)(0*)$", mask_bin)
+
+ if mask_match:
+ return 32 - len(mask_match.groups()[1])
+ else:
+ raise ValueError("Unable to convert mask to a bit count: %s" % mask)
+
+
def get_binary(value, bits):
"""
Provides the given value as a binary string, padded with zeros to the given
diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py
index c7db6d3..ecbe04a 100644
--- a/test/unit/util/connection.py
+++ b/test/unit/util/connection.py
@@ -96,18 +96,30 @@ class TestConnection(unittest.TestCase):
self.assertRaises(ValueError, stem.util.connection.expand_ipv6_address, "127.0.0.1")
- def test_get_mask(self):
+ def test_get_mask_ipv4(self):
"""
- Checks the get_mask function.
+ Checks the get_mask_ipv4 function.
"""
- self.assertEquals("255.255.255.255", stem.util.connection.get_mask(32))
- self.assertEquals("255.255.255.248", stem.util.connection.get_mask(29))
- self.assertEquals("255.255.254.0", stem.util.connection.get_mask(23))
- self.assertEquals("0.0.0.0", stem.util.connection.get_mask(0))
+ self.assertEquals("255.255.255.255", stem.util.connection.get_mask_ipv4(32))
+ self.assertEquals("255.255.255.248", stem.util.connection.get_mask_ipv4(29))
+ self.assertEquals("255.255.254.0", stem.util.connection.get_mask_ipv4(23))
+ self.assertEquals("0.0.0.0", stem.util.connection.get_mask_ipv4(0))
- self.assertRaises(ValueError, stem.util.connection.get_mask, -1)
- self.assertRaises(ValueError, stem.util.connection.get_mask, 33)
+ self.assertRaises(ValueError, stem.util.connection.get_mask_ipv4, -1)
+ self.assertRaises(ValueError, stem.util.connection.get_mask_ipv4, 33)
+
+ def test_get_mask_ipv6(self):
+ """
+ Checks the get_mask_ipv6 function.
+ """
+
+ self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", stem.util.connection.get_mask_ipv6(128))
+ self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFE:0000", stem.util.connection.get_mask_ipv6(111))
+ self.assertEquals("0000:0000:0000:0000:0000:0000:0000:0000", stem.util.connection.get_mask_ipv6(0))
+
+ self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, -1)
+ self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, 129)
def test_get_masked_bits(self):
"""
@@ -122,18 +134,6 @@ class TestConnection(unittest.TestCase):
self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "blarg")
self.assertRaises(ValueError, stem.util.connection.get_masked_bits, "255.255.0.255")
- def test_get_mask_ipv6(self):
- """
- Checks the get_mask_ipv6 function.
- """
-
- self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", stem.util.connection.get_mask_ipv6(128))
- self.assertEquals("FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFE:0000", stem.util.connection.get_mask_ipv6(111))
- self.assertEquals("0000:0000:0000:0000:0000:0000:0000:0000", stem.util.connection.get_mask_ipv6(0))
-
- self.assertRaises(ValueError, stem.util.connection.get_mask_ipv6, -1)
- self.assertRaises(ValueError, stem.util.connection.get_mask, 129)
-
def test_get_address_binary(self):
"""
Checks the get_address_binary function.
1
0

[stem/master] Marking the log, proc, term, and tor_tools utils as being private
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit 7f4b7a93d2ff55388a8566919fc19baf2f1a48df
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 22:47:05 2013 -0800
Marking the log, proc, term, and tor_tools utils as being private
More modules that I'd rather not yet vend to stem users. They're more than
welcome to use them, but I can't yet promise a stable API (and in many of these
cases there's little reason they ever should be used outside of stem).
---
docs/api.rst | 4 ----
stem/util/log.py | 4 ++++
stem/util/proc.py | 3 +++
stem/util/term.py | 3 +++
stem/util/tor_tools.py | 3 +++
5 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/docs/api.rst b/docs/api.rst
index 6ea028a..82dba0c 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -42,10 +42,6 @@ Utilities
* `stem.util.conf <api/util/conf.html>`_ - Configuration file handling.
* `stem.util.connection <api/util/connection.html>`_ - Connection and IP related utilities.
* `stem.util.enum <api/util/enum.html>`_ - Enumeration class.
-* `stem.util.log <api/util/log.html>`_ - Logging utilities.
-* `stem.util.proc <api/util/proc.html>`_ - Tools to read a process' proc contents.
* `stem.util.str_tools <api/util/str_tools.html>`_ - String utilities.
* `stem.util.system <api/util/system.html>`_ - Tools related to the local system.
-* `stem.util.term <api/util/term.html>`_ - Tools for interacting with the terminal.
-* `stem.util.tor_tools <api/util/tor_tools.html>`_ - Helper functions for working with tor.
diff --git a/stem/util/log.py b/stem/util/log.py
index e32c42f..5dc54be 100644
--- a/stem/util/log.py
+++ b/stem/util/log.py
@@ -5,6 +5,10 @@
Functions to aid library logging. The default logging
:data:`~stem.util.log.Runlevel` is usually NOTICE and above.
+**Stem users are more than welcome to listen for stem events, but these
+functions are not being vended to our users. They may change in the future, use
+them at your own risk.**
+
**Module Overview:**
::
diff --git a/stem/util/proc.py b/stem/util/proc.py
index bf7675d..e165b89 100644
--- a/stem/util/proc.py
+++ b/stem/util/proc.py
@@ -12,6 +12,9 @@ The method for reading these files (and a little code) are borrowed from
`psutil <https://code.google.com/p/psutil/>`_, which was written by Jay Loden,
Dave Daeschler, Giampaolo Rodola' and is under the BSD license.
+**These functions are not being vended to stem users. They may change in the
+future, use them at your own risk.**
+
**Module Overview:**
::
diff --git a/stem/util/term.py b/stem/util/term.py
index fee7596..5f54b5d 100644
--- a/stem/util/term.py
+++ b/stem/util/term.py
@@ -4,6 +4,9 @@
"""
Utilities for working with the terminal.
+**These functions are not being vended to stem users. They may change in the
+future, use them at your own risk.**
+
**Module Overview:**
::
diff --git a/stem/util/tor_tools.py b/stem/util/tor_tools.py
index 9c0f572..3f6ab79 100644
--- a/stem/util/tor_tools.py
+++ b/stem/util/tor_tools.py
@@ -5,6 +5,9 @@
"""
Miscellaneous utility functions for working with tor.
+**These functions are not being vended to stem users. They may change in the
+future, use them at your own risk.**
+
**Module Overview:**
::
1
0

[stem/master] Marking stem.util modules and functions as being private
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit a7fae56f9dab6cf766699c229edb2fd0531b7bd9
Merge: d45f89d aab3bf5
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 23:10:26 2013 -0800
Marking stem.util modules and functions as being private
The stem.util space has several things that I'd rather not vend. Things that
are either likely to change in the future or simply don't make sense outside of
stem's internal use. Marking functions and some entire modules as being
private.
docs/api.rst | 4 -
stem/connection.py | 14 ++--
stem/control.py | 4 +-
stem/descriptor/__init__.py | 8 +-
stem/descriptor/extrainfo_descriptor.py | 4 +-
stem/descriptor/networkstatus.py | 10 ++--
stem/descriptor/router_status_entry.py | 6 +-
stem/descriptor/server_descriptor.py | 10 ++--
stem/exit_policy.py | 16 +++---
stem/response/authchallenge.py | 4 +-
stem/response/events.py | 4 +-
stem/socket.py | 6 +-
stem/util/conf.py | 2 +-
stem/util/connection.py | 86 +++++++++++++---------------
stem/util/enum.py | 2 +-
stem/util/log.py | 4 +
stem/util/ordereddict.py | 3 +
stem/util/proc.py | 3 +
stem/util/str_tools.py | 27 ++++-----
stem/util/system.py | 2 +-
stem/util/term.py | 5 +-
stem/util/tor_tools.py | 3 +
test/integ/control/controller.py | 2 +-
test/network.py | 2 +-
test/settings.cfg | 4 +-
test/unit/descriptor/server_descriptor.py | 2 +-
test/unit/util/connection.py | 60 ++++++++++----------
test/unit/util/str_tools.py | 22 ++++----
28 files changed, 160 insertions(+), 159 deletions(-)
1
0

[stem/master] Marking stem.util.str_tools functions as being private
by atagar@torproject.org 10 Mar '13
by atagar@torproject.org 10 Mar '13
10 Mar '13
commit aab3bf57a87bb09d4d572195e568e73da489f38a
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 23:07:23 2013 -0800
Marking stem.util.str_tools functions as being private
Swapping several of the functions that we don't want to vend as being private.
The to_bytes() and to_unicode() functions in particular are simply there for
python 3.x support, so they'll disappear if/when we drop python 2.x support.
---
stem/connection.py | 8 ++++----
stem/descriptor/__init__.py | 8 ++++----
stem/descriptor/extrainfo_descriptor.py | 2 +-
stem/descriptor/networkstatus.py | 4 ++--
stem/descriptor/router_status_entry.py | 2 +-
stem/descriptor/server_descriptor.py | 6 +++---
stem/response/authchallenge.py | 4 ++--
stem/response/events.py | 4 ++--
stem/socket.py | 6 +++---
stem/util/enum.py | 2 +-
stem/util/str_tools.py | 27 +++++++++++----------------
stem/util/system.py | 2 +-
stem/util/term.py | 2 +-
test/settings.cfg | 4 ++--
test/unit/descriptor/server_descriptor.py | 2 +-
test/unit/util/str_tools.py | 22 +++++++++++-----------
16 files changed, 50 insertions(+), 55 deletions(-)
diff --git a/stem/connection.py b/stem/connection.py
index dc70bce..4f63378 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -596,8 +596,8 @@ def authenticate_cookie(controller, cookie_path, suppress_ctl_errors = True):
# This seems dumb but oh well. Converting the result to unicode so it won't
# misbehave.
- auth_token_hex = binascii.b2a_hex(stem.util.str_tools.to_bytes(cookie_data))
- msg = "AUTHENTICATE %s" % stem.util.str_tools.to_unicode(auth_token_hex)
+ auth_token_hex = binascii.b2a_hex(stem.util.str_tools._to_bytes(cookie_data))
+ msg = "AUTHENTICATE %s" % stem.util.str_tools._to_unicode(auth_token_hex)
auth_response = _msg(controller, msg)
# if we got anything but an OK response then error
@@ -692,7 +692,7 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
client_nonce = os.urandom(32)
try:
- client_nonce_hex = binascii.b2a_hex(stem.util.str_tools.to_bytes(client_nonce))
+ client_nonce_hex = binascii.b2a_hex(stem.util.str_tools._to_bytes(client_nonce))
authchallenge_response = _msg(controller, "AUTHCHALLENGE SAFECOOKIE %s" % client_nonce_hex)
if not authchallenge_response.is_ok():
@@ -744,7 +744,7 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
CLIENT_HASH_CONSTANT,
cookie_data + client_nonce + authchallenge_response.server_nonce)
- auth_response = _msg(controller, "AUTHENTICATE %s" % (binascii.b2a_hex(stem.util.str_tools.to_bytes(client_hash))))
+ auth_response = _msg(controller, "AUTHENTICATE %s" % (binascii.b2a_hex(stem.util.str_tools._to_bytes(client_hash))))
except stem.ControllerError, exc:
try:
controller.connect()
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 59d66a4..4f0a596 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -307,7 +307,7 @@ class Descriptor(object):
if stem.prereq.is_python_3():
return self._raw_contents
else:
- return str(stem.util.str_tools.to_bytes(self._raw_contents))
+ return str(stem.util.str_tools._to_bytes(self._raw_contents))
class _UnicodeReader(object):
@@ -333,10 +333,10 @@ class _UnicodeReader(object):
return self.wrapped_file.next()
def read(self, n = -1):
- return stem.util.str_tools.to_unicode(self.wrapped_file.read(n))
+ return stem.util.str_tools._to_unicode(self.wrapped_file.read(n))
def readline(self):
- return stem.util.str_tools.to_unicode(self.wrapped_file.readline())
+ return stem.util.str_tools._to_unicode(self.wrapped_file.readline())
def readlines(self, sizehint = None):
# being careful to do in-place conversion so we don't accidently double our
@@ -348,7 +348,7 @@ class _UnicodeReader(object):
results = self.wrapped_file.readlines()
for i in xrange(len(results)):
- results[i] = stem.util.str_tools.to_unicode(results[i])
+ results[i] = stem.util.str_tools._to_unicode(results[i])
return results
diff --git a/stem/descriptor/extrainfo_descriptor.py b/stem/descriptor/extrainfo_descriptor.py
index 3d7bb3c..5f1c423 100644
--- a/stem/descriptor/extrainfo_descriptor.py
+++ b/stem/descriptor/extrainfo_descriptor.py
@@ -825,7 +825,7 @@ class RelayExtraInfoDescriptor(ExtraInfoDescriptor):
# our digest is calculated from everything except our signature
raw_content, ending = str(self), "\nrouter-signature\n"
raw_content = raw_content[:raw_content.find(ending) + len(ending)]
- self._digest = hashlib.sha1(stem.util.str_tools.to_bytes(raw_content)).hexdigest().upper()
+ self._digest = hashlib.sha1(stem.util.str_tools._to_bytes(raw_content)).hexdigest().upper()
return self._digest
diff --git a/stem/descriptor/networkstatus.py b/stem/descriptor/networkstatus.py
index e032f76..de0b945 100644
--- a/stem/descriptor/networkstatus.py
+++ b/stem/descriptor/networkstatus.py
@@ -265,7 +265,7 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
"""
def __init__(self, raw_content, validate = True):
- raw_content = stem.util.str_tools.to_unicode(raw_content)
+ raw_content = stem.util.str_tools._to_unicode(raw_content)
super(NetworkStatusDocumentV2, self).__init__(raw_content)
self.version = None
@@ -464,7 +464,7 @@ class NetworkStatusDocumentV3(NetworkStatusDocument):
:raises: **ValueError** if the document is invalid
"""
- raw_content = stem.util.str_tools.to_unicode(raw_content)
+ raw_content = stem.util.str_tools._to_unicode(raw_content)
super(NetworkStatusDocumentV3, self).__init__(raw_content)
document_file = StringIO.StringIO(raw_content)
diff --git a/stem/descriptor/router_status_entry.py b/stem/descriptor/router_status_entry.py
index ef810ec..68c1b38 100644
--- a/stem/descriptor/router_status_entry.py
+++ b/stem/descriptor/router_status_entry.py
@@ -703,7 +703,7 @@ def _decode_fingerprint(identity, validate):
fingerprint = ""
try:
- identity_decoded = base64.b64decode(stem.util.str_tools.to_bytes(identity))
+ identity_decoded = base64.b64decode(stem.util.str_tools._to_bytes(identity))
except (TypeError, binascii.Error):
if not validate:
return None
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index 298b480..89795c9 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -665,7 +665,7 @@ class RelayDescriptor(ServerDescriptor):
if start >= 0 and sig_start > 0 and end > start:
for_digest = raw_descriptor[start:end]
- digest_hash = hashlib.sha1(stem.util.str_tools.to_bytes(for_digest))
+ digest_hash = hashlib.sha1(stem.util.str_tools._to_bytes(for_digest))
self._digest = digest_hash.hexdigest().upper()
else:
raise ValueError("unable to calculate digest for descriptor")
@@ -686,7 +686,7 @@ class RelayDescriptor(ServerDescriptor):
if self.fingerprint:
# calculate the signing key hash
- key_der_as_hash = hashlib.sha1(stem.util.str_tools.to_bytes(key_as_bytes)).hexdigest()
+ key_der_as_hash = hashlib.sha1(stem.util.str_tools._to_bytes(key_as_bytes)).hexdigest()
if key_der_as_hash != self.fingerprint.lower():
log.warn("Signing key hash: %s != fingerprint: %s" % (key_der_as_hash, self.fingerprint.lower()))
@@ -821,7 +821,7 @@ class RelayDescriptor(ServerDescriptor):
# get the key representation in bytes
- key_bytes = base64.b64decode(stem.util.str_tools.to_bytes(key_as_string))
+ key_bytes = base64.b64decode(stem.util.str_tools._to_bytes(key_as_string))
return key_bytes
diff --git a/stem/response/authchallenge.py b/stem/response/authchallenge.py
index c14369b..93be385 100644
--- a/stem/response/authchallenge.py
+++ b/stem/response/authchallenge.py
@@ -41,7 +41,7 @@ class AuthChallengeResponse(stem.response.ControlMessage):
if not stem.util.tor_tools.is_hex_digits(value, 64):
raise stem.ProtocolError("SERVERHASH has an invalid value: %s" % value)
- self.server_hash = binascii.a2b_hex(stem.util.str_tools.to_bytes(value))
+ self.server_hash = binascii.a2b_hex(stem.util.str_tools._to_bytes(value))
else:
raise stem.ProtocolError("Missing SERVERHASH mapping: %s" % line)
@@ -51,6 +51,6 @@ class AuthChallengeResponse(stem.response.ControlMessage):
if not stem.util.tor_tools.is_hex_digits(value, 64):
raise stem.ProtocolError("SERVERNONCE has an invalid value: %s" % value)
- self.server_nonce = binascii.a2b_hex(stem.util.str_tools.to_bytes(value))
+ self.server_nonce = binascii.a2b_hex(stem.util.str_tools._to_bytes(value))
else:
raise stem.ProtocolError("Missing SERVERNONCE mapping: %s" % line)
diff --git a/stem/response/events.py b/stem/response/events.py
index af8c8e5..a2c43ff 100644
--- a/stem/response/events.py
+++ b/stem/response/events.py
@@ -345,7 +345,7 @@ class CircuitEvent(Event):
if self.created is not None:
try:
- self.created = str_tools.parse_iso_timestamp(self.created)
+ self.created = str_tools._parse_iso_timestamp(self.created)
except ValueError, exc:
raise stem.ProtocolError("Unable to parse create date (%s): %s" % (exc, self))
@@ -401,7 +401,7 @@ class CircMinorEvent(Event):
if self.created is not None:
try:
- self.created = str_tools.parse_iso_timestamp(self.created)
+ self.created = str_tools._parse_iso_timestamp(self.created)
except ValueError, exc:
raise stem.ProtocolError("Unable to parse create date (%s): %s" % (exc, self))
diff --git a/stem/socket.py b/stem/socket.py
index 3b9498c..d459fb7 100644
--- a/stem/socket.py
+++ b/stem/socket.py
@@ -425,7 +425,7 @@ def send_message(control_file, message, raw = False):
message = send_formatting(message)
try:
- control_file.write(stem.util.str_tools.to_bytes(message))
+ control_file.write(stem.util.str_tools._to_bytes(message))
control_file.flush()
log_message = message.replace("\r\n", "\n").rstrip()
@@ -473,7 +473,7 @@ def recv_message(control_file):
line = control_file.readline()
if stem.prereq.is_python_3():
- line = stem.util.str_tools.to_unicode(line)
+ line = stem.util.str_tools._to_unicode(line)
except AttributeError:
# if the control_file has been closed then we will receive:
# AttributeError: 'NoneType' object has no attribute 'recv'
@@ -542,7 +542,7 @@ def recv_message(control_file):
line = control_file.readline()
if stem.prereq.is_python_3():
- line = stem.util.str_tools.to_unicode(line)
+ line = stem.util.str_tools._to_unicode(line)
except socket.error, exc:
prefix = logging_prefix % "SocketClosed"
log.info(prefix + "received an exception while mid-way through a data reply (exception: \"%s\", read content: \"%s\")" % (exc, log.escape(raw_content)))
diff --git a/stem/util/enum.py b/stem/util/enum.py
index bd983ee..504af48 100644
--- a/stem/util/enum.py
+++ b/stem/util/enum.py
@@ -75,7 +75,7 @@ class Enum(object):
for entry in args:
if isinstance(entry, str):
- key, val = entry, stem.util.str_tools.to_camel_case(entry)
+ key, val = entry, stem.util.str_tools._to_camel_case(entry)
elif isinstance(entry, tuple) and len(entry) == 2:
key, val = entry
else:
diff --git a/stem/util/str_tools.py b/stem/util/str_tools.py
index 14198b4..d575cfa 100644
--- a/stem/util/str_tools.py
+++ b/stem/util/str_tools.py
@@ -8,16 +8,11 @@ Toolkit for various string activity.
::
- to_bytes - normalizes string ASCII bytes
- to_unicode - normalizes string to unicode
- to_camel_case - converts a string to camel case
get_size_label - human readable label for a number of bytes
get_time_label - human readable label for a number of seconds
get_time_labels - human readable labels for each time unit
get_short_time_label - condensed time label output
parse_short_time_label - seconds represented by a short time label
-
- parse_iso_timestamp - parses an ISO timestamp as a datetime value
"""
import codecs
@@ -53,32 +48,32 @@ TIME_UNITS = (
)
if stem.prereq.is_python_3():
- def _to_bytes(msg):
+ def _to_bytes_impl(msg):
if isinstance(msg, str):
return codecs.latin_1_encode(msg, "replace")[0]
else:
return msg
- def _to_unicode(msg):
+ def _to_unicode_impl(msg):
if msg is not None and not isinstance(msg, str):
return msg.decode("utf-8", "replace")
else:
return msg
else:
- def _to_bytes(msg):
+ def _to_bytes_impl(msg):
if msg is not None and isinstance(msg, unicode):
return codecs.latin_1_encode(msg, "replace")[0]
else:
return msg
- def _to_unicode(msg):
+ def _to_unicode_impl(msg):
if msg is not None and not isinstance(msg, unicode):
return msg.decode("utf-8", "replace")
else:
return msg
-def to_bytes(msg):
+def _to_bytes(msg):
"""
Provides the ASCII bytes for the given string. This is purely to provide
python 3 compatability, normalizing the unicode/ASCII change in the version
@@ -91,10 +86,10 @@ def to_bytes(msg):
:returns: ASCII bytes for string
"""
- return _to_bytes(msg)
+ return _to_bytes_impl(msg)
-def to_unicode(msg):
+def _to_unicode(msg):
"""
Provides the unicode string for the given ASCII bytes. This is purely to
provide python 3 compatability, normalizing the unicode/ASCII change in the
@@ -105,16 +100,16 @@ def to_unicode(msg):
:returns: unicode conversion
"""
- return _to_unicode(msg)
+ return _to_unicode_impl(msg)
-def to_camel_case(label, divider = "_", joiner = " "):
+def _to_camel_case(label, divider = "_", joiner = " "):
"""
Converts the given string to camel case, ie:
::
- >>> to_camel_case("I_LIKE_PEPPERJACK!")
+ >>> _to_camel_case("I_LIKE_PEPPERJACK!")
'I Like Pepperjack!'
:param str label: input string to be converted
@@ -315,7 +310,7 @@ def parse_short_time_label(label):
raise ValueError("Non-numeric value in time entry: %s" % label)
-def parse_iso_timestamp(entry):
+def _parse_iso_timestamp(entry):
"""
Parses the ISO 8601 standard that provides for timestamps like...
diff --git a/stem/util/system.py b/stem/util/system.py
index 688475f..0a94b57 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -814,7 +814,7 @@ def _set_prctl_name(process_name):
libc = ctypes.CDLL(ctypes.util.find_library("c"))
name_buffer = ctypes.create_string_buffer(len(process_name) + 1)
- name_buffer.value = stem.util.str_tools.to_bytes(process_name)
+ name_buffer.value = stem.util.str_tools._to_bytes(process_name)
libc.prctl(PR_SET_NAME, ctypes.byref(name_buffer), 0, 0, 0)
diff --git a/stem/util/term.py b/stem/util/term.py
index 5f54b5d..05efcfe 100644
--- a/stem/util/term.py
+++ b/stem/util/term.py
@@ -87,7 +87,7 @@ def format(msg, *attr):
encodings = []
for text_attr in attr:
- text_attr, encoding = stem.util.str_tools.to_camel_case(text_attr), None
+ text_attr, encoding = stem.util.str_tools._to_camel_case(text_attr), None
encoding = FG_ENCODING.get(text_attr, encoding)
encoding = BG_ENCODING.get(text_attr, encoding)
encoding = ATTR_ENCODING.get(text_attr, encoding)
diff --git a/test/settings.cfg b/test/settings.cfg
index c184eec..8e96214 100644
--- a/test/settings.cfg
+++ b/test/settings.cfg
@@ -158,8 +158,8 @@ pyflakes.ignore stem/prereq.py => 'RSA' imported but unused
pyflakes.ignore stem/prereq.py => 'asn1' imported but unused
pyflakes.ignore stem/prereq.py => 'long_to_bytes' imported but unused
pyflakes.ignore stem/descriptor/__init__.py => redefinition of unused 'OrderedDict' from line 60
-pyflakes.ignore stem/util/str_tools.py => redefinition of function '_to_bytes' from line 56
-pyflakes.ignore stem/util/str_tools.py => redefinition of function '_to_unicode' from line 62
+pyflakes.ignore stem/util/str_tools.py => redefinition of function '_to_bytes_impl' from line 51
+pyflakes.ignore stem/util/str_tools.py => redefinition of function '_to_unicode_impl' from line 57
pyflakes.ignore test/mocking.py => undefined name 'builtins'
pyflakes.ignore test/unit/response/events.py => 'from stem import *' used; unable to detect undefined names
diff --git a/test/unit/descriptor/server_descriptor.py b/test/unit/descriptor/server_descriptor.py
index 07fb50c..3da01b5 100644
--- a/test/unit/descriptor/server_descriptor.py
+++ b/test/unit/descriptor/server_descriptor.py
@@ -210,7 +210,7 @@ class TestServerDescriptor(unittest.TestCase):
desc_text += "\ntrailing text that should be ignored, ho hum"
# running _parse_file should provide an iterator with a single descriptor
- desc_iter = stem.descriptor.server_descriptor._parse_file(StringIO.StringIO(stem.util.str_tools.to_unicode(desc_text)))
+ desc_iter = stem.descriptor.server_descriptor._parse_file(StringIO.StringIO(stem.util.str_tools._to_unicode(desc_text)))
desc_entries = list(desc_iter)
self.assertEquals(1, len(desc_entries))
desc = desc_entries[0]
diff --git a/test/unit/util/str_tools.py b/test/unit/util/str_tools.py
index 4b35278..550edeb 100644
--- a/test/unit/util/str_tools.py
+++ b/test/unit/util/str_tools.py
@@ -11,19 +11,19 @@ from stem.util import str_tools
class TestStrTools(unittest.TestCase):
def test_to_camel_case(self):
"""
- Checks the to_camel_case() function.
+ Checks the _to_camel_case() function.
"""
# test the pydoc example
- self.assertEquals("I Like Pepperjack!", str_tools.to_camel_case("I_LIKE_PEPPERJACK!"))
+ self.assertEquals("I Like Pepperjack!", str_tools._to_camel_case("I_LIKE_PEPPERJACK!"))
# check a few edge cases
- self.assertEquals("", str_tools.to_camel_case(""))
- self.assertEquals("Hello", str_tools.to_camel_case("hello"))
- self.assertEquals("Hello", str_tools.to_camel_case("HELLO"))
- self.assertEquals("Hello World", str_tools.to_camel_case("hello__world"))
- self.assertEquals("Hello\tworld", str_tools.to_camel_case("hello\tWORLD"))
- self.assertEquals("Hello\t\tWorld", str_tools.to_camel_case("hello__world", "_", "\t"))
+ self.assertEquals("", str_tools._to_camel_case(""))
+ self.assertEquals("Hello", str_tools._to_camel_case("hello"))
+ self.assertEquals("Hello", str_tools._to_camel_case("HELLO"))
+ self.assertEquals("Hello World", str_tools._to_camel_case("hello__world"))
+ self.assertEquals("Hello\tworld", str_tools._to_camel_case("hello\tWORLD"))
+ self.assertEquals("Hello\t\tWorld", str_tools._to_camel_case("hello__world", "_", "\t"))
def test_get_size_label(self):
"""
@@ -125,7 +125,7 @@ class TestStrTools(unittest.TestCase):
def test_parse_iso_timestamp(self):
"""
- Checks the parse_iso_timestamp() function.
+ Checks the _parse_iso_timestamp() function.
"""
test_inputs = {
@@ -138,7 +138,7 @@ class TestStrTools(unittest.TestCase):
}
for arg, expected in test_inputs.items():
- self.assertEqual(expected, str_tools.parse_iso_timestamp(arg))
+ self.assertEqual(expected, str_tools._parse_iso_timestamp(arg))
invalid_input = [
None,
@@ -150,4 +150,4 @@ class TestStrTools(unittest.TestCase):
]
for arg in invalid_input:
- self.assertRaises(ValueError, str_tools.parse_iso_timestamp, arg)
+ self.assertRaises(ValueError, str_tools._parse_iso_timestamp, arg)
1
0

10 Mar '13
commit 860e89bed7a4d6769d9d4376a770e9af19de684b
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Mar 9 23:13:25 2013 -0800
Dropping 'last updated' timestamp from site
While I'd kinda like to have this on our site, it's stupidly broken. This is
probably due to sphinx caching (it only makes static files for things that have
changed). Presently it says that our site was last updated on December 31st
which is... very wrong. No date is better than the wrong date so dropping it.
https://trac.torproject.org/7780
---
docs/index.rst | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/docs/index.rst b/docs/index.rst
index 0da7d57..d95a35f 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -52,5 +52,3 @@ Subsections
contents
-*Last updated:* |today|
-
1
0