[Pkg-mozext-commits] [perspectives-extension] 06/72: Expose timeout duration and number of query retries as a user preference. Fixes #72. Fixes #73.
David Prévot
taffit at moszumanska.debian.org
Thu Dec 11 02:12:45 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository perspectives-extension.
commit 5ac11adcd93b3d8a6635e7a4639e7463e767f192
Author: Gerold Meisinger <gerold.meisinger at gmail.com>
Date: Sun Jun 15 18:59:11 2014 +0100
Expose timeout duration and number of query retries as a user preference.
Fixes #72. Fixes #73.
---
plugin/chrome/content/notaries.js | 12 +--
plugin/chrome/content/preferences_dialog.xul | 108 ++++++++++++++++-----------
plugin/chrome/locale/de/dialogs.dtd | 17 +++--
plugin/chrome/locale/en-US/dialogs.dtd | 4 +-
plugin/chrome/locale/es-MX/dialogs.dtd | 6 +-
plugin/chrome/locale/fi/dialogs.dtd | 6 +-
plugin/chrome/locale/fr/dialogs.dtd | 6 +-
plugin/chrome/locale/nl/dialogs.dtd | 6 +-
plugin/chrome/locale/pl/dialogs.dtd | 6 +-
plugin/chrome/locale/zh-CN/dialogs.dtd | 6 +-
10 files changed, 108 insertions(+), 69 deletions(-)
diff --git a/plugin/chrome/content/notaries.js b/plugin/chrome/content/notaries.js
index eaa9ccb..ed618ec 100644
--- a/plugin/chrome/content/notaries.js
+++ b/plugin/chrome/content/notaries.js
@@ -18,8 +18,6 @@
var Perspectives = {
MY_ID: "perspectives at cmu.edu",
- TIMEOUT_SEC: 5, // this is timeout for each query to the server
- NUM_TRIES_PER_SERVER: 2, // number of times we query a server before giving up
strbundle : null, // this isn't loaded when things are intialized
@@ -267,8 +265,7 @@ var Perspectives = {
ti.timeout_id = window.setTimeout(function() {
Perspectives.notaryQueryTimeout(ti,0);
- }, Perspectives.TIMEOUT_SEC * 1000 );
-
+ }, Perspectives.root_prefs.getIntPref("perspectives.query_timeout_ms") );
},
querySingleNotary: function(notary_server, ti) {
@@ -316,7 +313,7 @@ var Perspectives = {
}
}
- var is_final_timeout = (num_timeouts == Perspectives.NUM_TRIES_PER_SERVER);
+ var is_final_timeout = (num_timeouts == Perspectives.root_prefs.getIntPref("perspectives.query_retries"));
if(is_final_timeout) {
// time is up, so just add empty results for missing
// notaries and begin processing results
@@ -337,7 +334,7 @@ var Perspectives = {
ti.timeout_id = window.setTimeout(function() {
Perspectives.notaryQueryTimeout(ti, num_timeouts + 1);
- }, Perspectives.TIMEOUT_SEC * 1000 );
+ }, Perspectives.root_prefs.getIntPref("perspectives.query_timeout_ms") );
}
} catch (e) {
@@ -794,12 +791,9 @@ var Perspectives = {
// Pers_notify.do_notify(ti, Pers_notify.TYPE_FAILED); // warn on error?
}
-
if(ti.query_results.identityText){
Perspectives.setFaviconText(ti.query_results.identityText);
}
-
-
} catch (err) {
Pers_util.pers_alert("process_notary_results error: " + err);
}
diff --git a/plugin/chrome/content/preferences_dialog.xul b/plugin/chrome/content/preferences_dialog.xul
index c7eabf2..13b1e77 100644
--- a/plugin/chrome/content/preferences_dialog.xul
+++ b/plugin/chrome/content/preferences_dialog.xul
@@ -2,40 +2,48 @@
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<!DOCTYPE prefwindow SYSTEM "chrome://perspectives/locale/dialogs.dtd">
-<prefwindow id = "perspectives-properties"
+<prefwindow id = "perspectives-properties"
title = "Perspectives &Preferences;"
xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
buttons = ","
- onload = "Pers_pref.load_preferences()"
+ onload = "Pers_pref.load_preferences()"
ondialogaccept = "return Pers_pref.save_button_clicked();"
>
-<prefpane id="perspective-main-prefpane">
-<preferences>
- <preference
- id="quorum-thresh"
- name="perspectives.quorum_thresh"
+<prefpane id="perspective-main-prefpane">
+<preferences>
+ <preference
+ id="quorum-thresh"
+ name="perspectives.quorum_thresh"
type="int"/>
- <preference
- id="quorum-duration"
+ <preference
+ id="quorum-duration"
name="perspectives.required_duration"
type="int"/>
- <preference
+ <preference
+ id="query-retries"
+ name="perspectives.query_retries"
+ type="int"/>
+ <preference
+ id="query-timeout"
+ name="perspectives.query_timeout_ms"
+ type="int"/>
+ <preference
id="security-settings"
name="perspectives.security_settings"
type="int"/>
- <preference
+ <preference
id="exception-perm"
name="perspectives.exceptions.permanent"
type="bool"/>
- <preference
+ <preference
id="exception-enabled"
name="perspectives.exceptions.enabled"
type="bool"/>
- <preference
+ <preference
id="check-good"
name="perspectives.check_good_certificates"
type="bool"/>
- <preference
+ <preference
id="require-user-permission"
name="perspectives.require_user_permission"
type="bool"/>
@@ -43,19 +51,19 @@
id="show-permission-reminder"
name="extensions.perspectives.show_permission_reminder"
type="bool"/>
- <preference
+ <preference
id="whitelist"
name="perspectives.whitelist"
type="string"/>
- <preference
+ <preference
id="additional_notary_list"
name="perspectives.additional_notary_list"
type="string"/>
- <preference
+ <preference
id="use-default-notary-list"
name="perspectives.use_default_notary_list"
type="bool"/>
- <preference
+ <preference
id="enable-default-list-auto-update"
name="perspectives.enable_default_list_auto_update"
type="bool"/>
@@ -65,43 +73,53 @@
<stringbundle id="notary_strings" src="chrome://perspectives/locale/notaries.properties" />
</stringbundleset>
-<tabbox id="tablist">
- <tabs>
+<tabbox id="tablist">
+ <tabs>
<tab label="&CertificateValidation;"/>
<tab label="&Servers;"/>
</tabs>
- <tabpanels>
- <tabpanel id="securitytab">
+ <tabpanels>
+ <tabpanel id="securitytab">
<vbox>
- <groupbox >
+ <groupbox >
<caption label="&SecuritySettings;" style="font-weight: bold"/>
- <menulist id="secset"
+ <menulist id="secset"
preference = "security-settings"
- oncommand = "Pers_pref.security_class_change()">
+ oncommand = "Pers_pref.security_class_change()">
<menupopup>
- <menuitem label="&HighSecurity;" value="2"/>
+ <menuitem label="&HighSecurity;" value="2"/>
<menuitem label="&MediumSecurity;" value="1"/>
<menuitem label="&HighAvailability;" value="0"/>
<menuitem label="&ManualConfiguration;" value="-1"/>
- </menupopup>
+ </menupopup>
</menulist>
<hbox align="right">
<label value="&Percentageofnotariesthatmustagree;"/>
<spacer flex="1"/>
- <textbox preference="quorum-thresh" id="quorum-thresh-text" size="4"/>
+ <textbox type="number" preference="quorum-thresh" id="quorum-thresh-text" size="4"/>
</hbox>
<hbox align="right">
<label value="&Lengthoftimequorummustbeachieved;"/>
<spacer flex="1"/>
- <textbox preference="quorum-duration" id="quorum-duration-text" size="4" />
- </hbox>
- </groupbox>
+ <textbox type="number" preference="quorum-duration" id="quorum-duration-text" size="4" />
+ </hbox>
+ <hbox align="right">
+ <label value="&QueryTimeout;"/>
+ <spacer flex="1"/>
+ <textbox type="number" preference="query-timeout" id="query-timeout-text" size="4" />
+ </hbox>
+ <hbox align="right">
+ <label value="&QueryRetries;"/>
+ <spacer flex="1"/>
+ <textbox type="number" preference="query-retries" id="query-retries-text" size="4" />
+ </hbox>
+ </groupbox>
<groupbox>
<caption label="&OverridingFirefoxSecurityErrors;" style="font-weight: bold"/>
- <checkbox label="&AllowPerspectivestoautomaticallyoverridesecurityerrors;"
+ <checkbox label="&AllowPerspectivestoautomaticallyoverridesecurityerrors;"
preference="exception-enabled"/>
- <checkbox label="&PermanentlytrustcertificatesvalidatedbyPerspectives;"
+ <checkbox label="&PermanentlytrustcertificatesvalidatedbyPerspectives;"
preference="exception-perm"/>
<label value="&AutoTrust;:" />
<textbox preference="whitelist" id="whitelist" size="40" />
@@ -111,7 +129,7 @@
<spacer flex="1"/>
</tabpanel>
-<tabpanel id="notarytab">
+<tabpanel id="notarytab">
<vbox flex="1">
<groupbox>
@@ -134,26 +152,26 @@
</hbox>
</groupbox>
- <groupbox>
+ <groupbox>
<caption label="&DefaultNotaryServers;" style="font-weight: bold"/>
<!-- make textboxes wide enough to hold default key formatting -->
<textbox id="default_notary_list" multiline="true"
style="width: 85ex; height: 25ex; color: grey;" readonly="true" flex="1"/>
<checkbox label="&UseDefaultNotaries;" preference="use-default-notary-list"/>
-<!-- <checkbox label="Enabled auto-update for default list." oncommand="Pers_pref.auto_update_changed()"
+<!-- <checkbox label="Enabled auto-update for default list." oncommand="Pers_pref.auto_update_changed()"
id="enable_default_list_auto_update" preference="enable-default-list-auto-update"/>
-->
- </groupbox>
- <groupbox>
+ </groupbox>
+ <groupbox>
<caption label="&AdditionalNotaryServers;" style="font-weight: bold"/>
<textbox id="additional_notary_list" multiline="true" style="width: 85ex; height: 25ex;" preference="additional_notary_list" flex="1" />
- </groupbox>
-</vbox>
+ </groupbox>
+</vbox>
-</tabpanel>
-</tabpanels>
-</tabbox>
-<hbox>
+</tabpanel>
+</tabpanels>
+</tabbox>
+<hbox>
<!-- For consistency, always put Cancel to the right of the action button -->
<button label = "&OK;" onclick="acceptDialog()"/>
<button label = "&Cancel;" onclick="window.close();"/>
@@ -165,4 +183,4 @@
<script type = "application/x-javascript" src="common.js" ></script>
<script type="application/x-javascript" src="base64.js" />
-</prefwindow>
+</prefwindow>
diff --git a/plugin/chrome/locale/de/dialogs.dtd b/plugin/chrome/locale/de/dialogs.dtd
index 50d78a4..80422e0 100644
--- a/plugin/chrome/locale/de/dialogs.dtd
+++ b/plugin/chrome/locale/de/dialogs.dtd
@@ -10,17 +10,19 @@
<!ENTITY MediumSecurity "Durchschnittliche Sicherheit">
<!ENTITY HighAvailability "Hohe Verfügbarkeit">
<!ENTITY ManualConfiguration "Manuelle Konfiguration">
-<!ENTITY Percentageofnotariesthatmustagree "Prozentsatz der Notare die zustimmen müssen (Quorum Prozentsatz):">
-<!ENTITY Lengthoftimequorummustbeachieved "Nötige Anzahl Tage mit kontinuierlicher Übereinstimmung (Quorum Dauer):">
+<!ENTITY Percentageofnotariesthatmustagree "Prozentsatz der Notare die zustimmen müssen (Quorum-Prozentsatz):" >
+<!ENTITY Lengthoftimequorummustbeachieved "Nötige Anzahl Tage mit kontinuierlicher Übereinstimmung (Quorum-Dauer):">
+<!ENTITY QueryTimeout "Maximale Antwortzeit für die Nachfrage bei Notaren (in Millisekunden): ">
+<!ENTITY QueryRetries "Anzahl der Neuversuche wenn die Antwortzeit überschritten wurde: " >
<!ENTITY OverridingFirefoxSecurityErrors "Firefox Sicherheitsfehler umgehen">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Perspectives erlauben, Sicherheitsfehler automatisch zu umgehen">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Von Perspectives überprüften Zertifikaten dauerhaft vertrauen">
<!ENTITY WhentoContactNotaries "Bedingung für das Nachfragen bei Notaren">
<!ENTITY ContactNotariesforallHTTPSsites "Für alle HTTPS-Webseiten bei Notaren nachfragen">
<!ENTITY ContactNotariesonlywhenawebsitescertificatecausesasecurityerror "Nur nachfragen, wenn das Zertifikat einer Webseite einen Sicherheitsfehler verursacht">
-<!ENTITY AlwaysasktheuserbeforecontactingNotaries "Immer nachfragen, bevor Notaren kontaktiert werden.">
+<!ENTITY AlwaysasktheuserbeforecontactingNotaries "Immer nachfragen, bevor Notare kontaktiert werden.">
<!ENTITY Certificates "Zertifikate">
-<!ENTITY Servers "Notarenserver">
+<!ENTITY Servers "Notarserver">
<!ENTITY Help "Hilfe">
<!ENTITY OK "OK">
<!ENTITY Close "Schließen">
@@ -40,13 +42,12 @@
<!ENTITY DetailedInformation "Detaillierte Informationen">
<!ENTITY CertificateValidation "Zertifikatsüberprüfung">
<!ENTITY AutoTrust "Zertifikaten von folgenden Webseiten automatisch vertrauen">
-<!ENTITY DefaultNotaryServers "Standard Notarenserver">
-<!ENTITY UseDefaultNotaries "Liste der Standard Notarenserver benutzen">
-<!ENTITY AdditionalNotaryServers "Zusätzliche Notarenserver">
+<!ENTITY DefaultNotaryServers "Standard-Notarserver">
+<!ENTITY UseDefaultNotaries "Liste der Standard-Notarserver benutzen">
+<!ENTITY AdditionalNotaryServers "Zusätzliche Notarserver">
<!ENTITY ForceNotaryCheck "Nachfrage bei Notaren erzwingen">
<!ENTITY ReportAttack "Angriff melden">
<!ENTITY ViewCertificateStore "Zertifikate anzeigen">
-<!-- TODO: Please translate! -->
<!ENTITY About "Über Perspectives">
<!ENTITY AboutMainCredit "Perspectives Client - Erweiterung für Firefox von Dan Wendlandt">
<!ENTITY ContributorTitle "Mitwirkende">
diff --git a/plugin/chrome/locale/en-US/dialogs.dtd b/plugin/chrome/locale/en-US/dialogs.dtd
index 16a0efd..c31ec60 100644
--- a/plugin/chrome/locale/en-US/dialogs.dtd
+++ b/plugin/chrome/locale/en-US/dialogs.dtd
@@ -11,7 +11,9 @@
<!ENTITY HighAvailability "High Availability">
<!ENTITY ManualConfiguration "Manual Configuration">
<!ENTITY Percentageofnotariesthatmustagree "Percentage of notaries that must agree (quorum percentage): ">
-<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): ">
+<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): " >
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): " >
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
<!ENTITY OverridingFirefoxSecurityErrors "Overriding Firefox Security Errors">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Allow Perspectives to automatically override security errors">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Permanently trust certificates validated by Perspectives">
diff --git a/plugin/chrome/locale/es-MX/dialogs.dtd b/plugin/chrome/locale/es-MX/dialogs.dtd
index aaeb64f..90cc18c 100644
--- a/plugin/chrome/locale/es-MX/dialogs.dtd
+++ b/plugin/chrome/locale/es-MX/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "Alta Disponibilidad">
<!ENTITY ManualConfiguration "Configuración Manual">
<!ENTITY Percentageofnotariesthatmustagree "Porcentage de notarías que deben estar de acuerdo (porcentage de quórum): ">
-<!ENTITY Lengthoftimequorummustbeachieved "Días requeridos de acuerdo contínuo (duración de quórum): ">
+<!ENTITY Lengthoftimequorummustbeachieved "Días requeridos de acuerdo contínuo (duración de quórum): " >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): " >
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "Reemplazando los errores de seguridad de Firefox">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Permitir que Perspectives reemplaze automáticamente los errores de seguridad">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Aceptar permanentemente los certificados validados por Perspectives">
diff --git a/plugin/chrome/locale/fi/dialogs.dtd b/plugin/chrome/locale/fi/dialogs.dtd
index b6a5ca8..df1c296 100644
--- a/plugin/chrome/locale/fi/dialogs.dtd
+++ b/plugin/chrome/locale/fi/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "Suuri Saatavuus">
<!ENTITY ManualConfiguration "Manuaalinen asetus">
<!ENTITY Percentageofnotariesthatmustagree "Percentage of notaries that must agree (quorum percentage): ">
-<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): ">
+<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): " >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): ">
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "Overriding Firefox Security Errors">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Allow Perspectives to automatically override security errors">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Permanently trust certificates validated by Perspectives">
diff --git a/plugin/chrome/locale/fr/dialogs.dtd b/plugin/chrome/locale/fr/dialogs.dtd
index 4c7ddb8..ff00ec8 100644
--- a/plugin/chrome/locale/fr/dialogs.dtd
+++ b/plugin/chrome/locale/fr/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "Disponibilité élevée">
<!ENTITY ManualConfiguration "Configuration manuelle">
<!ENTITY Percentageofnotariesthatmustagree "Pourcentage de notaires dont les avis doivent être convergents :">
-<!ENTITY Lengthoftimequorummustbeachieved "Nombre de jours pendant lesquels l'accord est nécessaire :">
+<!ENTITY Lengthoftimequorummustbeachieved "Nombre de jours pendant lesquels l'accord est nécessaire :" >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): ">
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "Remplacement des erreurs de sécurité de Firefox">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Autoriser Perspectives à remplacer automatiquement les erreurs de sécurité">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Faire confiance en permanence aux certificats validés par Perspectives">
diff --git a/plugin/chrome/locale/nl/dialogs.dtd b/plugin/chrome/locale/nl/dialogs.dtd
index d8a7c92..1e13380 100644
--- a/plugin/chrome/locale/nl/dialogs.dtd
+++ b/plugin/chrome/locale/nl/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "High Availability">
<!ENTITY ManualConfiguration "Manual Configuration">
<!ENTITY Percentageofnotariesthatmustagree "Percentage of notaries that must agree (quorum percentage): ">
-<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): ">
+<!ENTITY Lengthoftimequorummustbeachieved "Days of continuous agreement required (quorum duration): " >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): ">
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "Overriding Firefox Security Errors">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Allow Perspectives to automatically override security errors">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Permanently trust certificates validated by Perspectives">
diff --git a/plugin/chrome/locale/pl/dialogs.dtd b/plugin/chrome/locale/pl/dialogs.dtd
index e9e5e49..92289a7 100644
--- a/plugin/chrome/locale/pl/dialogs.dtd
+++ b/plugin/chrome/locale/pl/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "Wysoka dostępność">
<!ENTITY ManualConfiguration "Konfiguracja ręczna">
<!ENTITY Percentageofnotariesthatmustagree "Odsetek notariuszy, którzy muszą się zgadzać (kworum w procentach): ">
-<!ENTITY Lengthoftimequorummustbeachieved "Okres czasu zgodnego kworum (okres kworum): ">
+<!ENTITY Lengthoftimequorummustbeachieved "Okres czasu zgodnego kworum (okres kworum): " >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): ">
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "Pomijanie błędów bezpieczeństwa Firefoxa">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "Pozwól, by Perspectives automatycznie pomijało błędy bezpieczeństwa">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "Zaufaj certyfikatom zweryfikowanym przez Perspectives na stałe">
diff --git a/plugin/chrome/locale/zh-CN/dialogs.dtd b/plugin/chrome/locale/zh-CN/dialogs.dtd
index ea5f61b..0e549f3 100644
--- a/plugin/chrome/locale/zh-CN/dialogs.dtd
+++ b/plugin/chrome/locale/zh-CN/dialogs.dtd
@@ -11,7 +11,11 @@
<!ENTITY HighAvailability "低级(高度可用)">
<!ENTITY ManualConfiguration "手动设置">
<!ENTITY Percentageofnotariesthatmustagree "认证服务器信任的最低百分比(最小百分比):">
-<!ENTITY Lengthoftimequorummustbeachieved "信任所需的最低持续时间(最短持续时间):">
+<!ENTITY Lengthoftimequorummustbeachieved "信任所需的最低持续时间(最短持续时间):" >
+<!-- TODO translate -->
+<!ENTITY QueryTimeout "Timeout for querying notaries (in milliseconds): " >
+<!ENTITY QueryRetries "Number of retries if a timeout has exceeded: " >
+<!-- -->
<!ENTITY OverridingFirefoxSecurityErrors "跳过 Firefox 安全错误">
<!ENTITY AllowPerspectivestoautomaticallyoverridesecurityerrors "允许 Perspectives 自动跳过安全错误">
<!ENTITY PermanentlytrustcertificatesvalidatedbyPerspectives "永久信任 Perspectives 验证的证书">
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/perspectives-extension.git
More information about the Pkg-mozext-commits
mailing list