Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport feature detailed results 5 to 2x #449

Open
wants to merge 12 commits into
base: 2.x
Choose a base branch
from
Open
59 changes: 57 additions & 2 deletions chrome/content/dkim.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ DKIM_Verifier.Display = (function() {
var expandedFromBox;
var collapsed1LfromBox; // for CompactHeader addon
var collapsed2LfromBox; // for CompactHeader addon
var verifierBox;
var policyAddUserExceptionButton;
var markKeyAsSecureButton;
var updateKeyButton;
Expand All @@ -67,11 +68,35 @@ DKIM_Verifier.Display = (function() {
* Sets the result value for headerTooltips and statusbar panel.
*
* @param {String} value
* @param {String|undefined} [details]
* @return {void}
*/
function setValue(value) {
function setValue(value, details) {
headerTooltips.value = value;
statusbarPanel.value = value;

let emailBox = expandedFromBox ? expandedFromBox.emailAddresses.boxObject.firstChild : undefined;
let emailBoxCH1 = collapsed1LfromBox ? collapsed1LfromBox.emailAddresses.boxObject.firstChild : undefined; // for CompactHeader addon
let emailBoxCH2 = collapsed2LfromBox ? collapsed2LfromBox.emailAddresses.boxObject.firstChild : undefined; // for CompactHeader addon

let showFromToolTip =
(emailBox && emailBox.tooltip === "dkim-verifier-header-tooltip-from")
|| (emailBoxCH1 && emailBoxCH1.tooltip === "dkim-verifier-header-tooltip-from")
|| (emailBoxCH1 && emailBoxCH2.tooltip === "dkim-verifier-header-tooltip-from");

if (details) {
if (showFromToolTip && emailBox) { emailBox.tooltipText = details; }
if (showFromToolTip && emailBoxCH1) { emailBoxCH1.tooltipText = details; }
if (showFromToolTip && emailBoxCH2) { emailBoxCH2.tooltipText = details; }
verifierBox.tooltipText = details;
statusbarPanel.tooltipText = details;
} else {
if (emailBox) { emailBox.tooltipText = ""; }
if (emailBoxCH1) { emailBoxCH1.tooltipText = ""; }
if (emailBoxCH2) { emailBoxCH2.tooltipText = ""; }
verifierBox.tooltipText = "";
statusbarPanel.tooltipText = "";
}
}

/**
Expand Down Expand Up @@ -216,7 +241,36 @@ DKIM_Verifier.Display = (function() {
statusbarPanel.dkimStatus = result.dkim[0].result;
that.setCollapsed(result.dkim[0].res_num);
header.value = result.dkim[0].result_str;
setValue(result.dkim[0].result_str);

let sigCount = 0;
let detailsHint;
if (prefs.getBoolPref("advancedInfo.show")) {
detailsHint = "";
if (prefs.getBoolPref("advancedInfo.allSignatures")) {
result.dkim.forEach(dkim => {
if (dkim.details_str) {
detailsHint += "\n----\n" + dkim.details_str;
sigCount += 1;
}
});
if (sigCount === 0) {
// the check resulted in an error, because the signature wasn't well formed
// or there was no signature
detailsHint = undefined;
}
} else {
detailsHint = result.dkim[0].details_str;
}
if (detailsHint) {
// there is extended information to display
let caption = "";
if (prefs.getBoolPref("advancedInfo.allSignatures")) {
caption = dkimStrings.getFormattedString("DKIM_RESULT_DETAILS_SIG_COUNT", [sigCount]);
}
detailsHint = caption + detailsHint;
}
}
setValue(result.dkim[0].result_str, detailsHint);

switch(result.dkim[0].res_num) {
case DKIM_Verifier.AuthVerifier.DKIM_RES.SUCCESS: {
Expand Down Expand Up @@ -405,6 +459,7 @@ var that = {
expandedFromBox = document.getElementById("expandedfromBox");
collapsed1LfromBox = document.getElementById("CompactHeader_collapsed1LfromBox");
collapsed2LfromBox = document.getElementById("CompactHeader_collapsed2LfromBox");
verifierBox = document.getElementById("expandeddkim-verifierBox");
policyAddUserExceptionButton = document.
getElementById("dkim_verifier.policyAddUserException");
markKeyAsSecureButton = document.getElementById("dkim_verifier.markKeyAsSecure");
Expand Down
27 changes: 27 additions & 0 deletions chrome/content/options_display.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// @ts-nocheck
/* eslint-env browser */
/* eslint strict: ["warn", "function"] */
/* exported toggleDetailsOptionsEnabled */

let checkBox = {
showAdvancedInfo : null,
allSignatures : null,
includeHeaders : null
};

function init() {
"use strict";
checkBox.showAdvancedInfo = document.getElementById("display.advancedInfo.show");
checkBox.allSignatures = document.getElementById("display.advancedInfo.allSignatures");
checkBox.includeHeaders = document.getElementById("display.advancedInfo.includeHeaders");
toggleDetailsOptionsEnabled();
}

function toggleDetailsOptionsEnabled() {
"use strict";
let disabled = !checkBox.showAdvancedInfo.checked;
checkBox.allSignatures.disabled = disabled;
checkBox.includeHeaders.disabled = disabled;
}

window.addEventListener("load", init, false);
41 changes: 34 additions & 7 deletions chrome/content/options_display.xul
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<prefpane id="paneDisplay" onpaneload="onLoad('paneDisplay');">
<script type="application/javascript" src="chrome://dkim_verifier/content/options_display.js"/>
<preferences>
<preference id="pref_colorFrom"
name="extensions.dkim_verifier.colorFrom"
Expand All @@ -16,28 +17,28 @@
<preference id="pref_color.success.background"
name="extensions.dkim_verifier.color.success.background"
type="string"/>

<preference id="pref_color.warning.text"
name="extensions.dkim_verifier.color.warning.text"
type="string"/>
<preference id="pref_color.warning.background"
name="extensions.dkim_verifier.color.warning.background"
type="string"/>

<preference id="pref_color.permfail.text"
name="extensions.dkim_verifier.color.permfail.text"
type="string"/>
<preference id="pref_color.permfail.background"
name="extensions.dkim_verifier.color.permfail.background"
type="string"/>

<preference id="pref_color.tempfail.text"
name="extensions.dkim_verifier.color.tempfail.text"
type="string"/>
<preference id="pref_color.tempfail.background"
name="extensions.dkim_verifier.color.tempfail.background"
type="string"/>

<preference id="pref_color.nosig.text"
name="extensions.dkim_verifier.color.nosig.text"
type="string"/>
Expand All @@ -61,8 +62,21 @@
<preference id="pref_display.favicon.show"
name="extensions.dkim_verifier.display.favicon.show"
type="bool"/>

<preference id="pref_display.advancedInfo.show"
name="extensions.dkim_verifier.advancedInfo.show"
type="bool"/>
<preference id="pref_display.advancedInfo.allSignatures"
name="extensions.dkim_verifier.advancedInfo.allSignatures"
type="bool"/>
<preference id="pref_display.advancedInfo.includeHeaders"
name="extensions.dkim_verifier.advancedInfo.includeHeaders"
type="bool"/>
<preference id="pref_display.advancedInfo.includeDNSSEC"
name="extensions.dkim_verifier.advancedInfo.includeDNSSEC"
type="bool"/>
</preferences>

<groupbox>
<caption label="&color.label;"/>
<checkbox preference="pref_colorFrom" label="&colorFrom.label;"/>
Expand Down Expand Up @@ -179,9 +193,22 @@
<spacer/>
</hbox>
</groupbox>

<groupbox>
<checkbox preference="pref_display.advancedInfo.show"
label="&display.advancedInfo.show.label;"
oncommand="toggleDetailsOptionsEnabled();"
id="display.advancedInfo.show" />
<vbox class="indent">
<checkbox preference="pref_display.advancedInfo.allSignatures"
label="&display.advancedInfo.allSignatures.label;"
id="display.advancedInfo.allSignatures" />
<checkbox preference="pref_display.advancedInfo.includeHeaders"
label="&display.advancedInfo.includeHeaders.label;"
id="display.advancedInfo.includeHeaders" />
</vbox>
</groupbox>
<checkbox preference="pref_display.favicon.show"
label="&display.favicon.show.label;"/>
label="&display.favicon.show.label;"/>
</prefpane>

</overlay>
11 changes: 11 additions & 0 deletions chrome/locale/de/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = Absender passt nicht zur Benutzeridentität

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Kopfzeile '%S' ist nicht signiert

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Anzahl der Signaturen: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signiert durch %S für %S
DKIM_RESULT_DETAILS_NO_TIME = Kein Signaturzeitpunkt in der Signatur enthalten
DKIM_RESULT_DETAILS_TIME_EXPIRY = Sigiert um %S, läuft ab um %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signiert um %S, läuft nie ab
DKIM_RESULT_DETAILS_ALGORITHM = Algorithmus: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithmus: %S (%S Bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signierte Kopfzeilen: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnungen:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/de/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Tolerant">
<!ENTITY policy.unsigned_header.mode.value.1.label "Empfohlen">
<!ENTITY policy.unsigned_header.mode.value.2.label "Streng">

<!ENTITY display.advancedInfo.show.label "Erweiterte Signatur-Informationen in Tooltips anzeigen">
<!ENTITY display.advancedInfo.allSignatures.label "Alle Signaturen anzeigen">
<!ENTITY display.advancedInfo.includeHeaders.label "Information über signierte Kopfzeilen anzeigen">
11 changes: 11 additions & 0 deletions chrome/locale/en-US/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = From does not match the user identifier

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/en-US/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
11 changes: 11 additions & 0 deletions chrome/locale/fr/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = L'expéditeur ne correspond pas avec l'identi

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/fr/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
11 changes: 11 additions & 0 deletions chrome/locale/hu/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = A feladó nem egyezik a felhasználói azonos

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/hu/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
11 changes: 11 additions & 0 deletions chrome/locale/it/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = Il mittente non corrisponde all’identificat

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/it/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
11 changes: 11 additions & 0 deletions chrome/locale/ja-JP/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_AUID = 差出人がユーザ識別子とマッチし

# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/ja-JP/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
11 changes: 11 additions & 0 deletions chrome/locale/zh-CN/dkim.properties
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,14 @@ DKIM_SIGWARNING_FROM_NOT_IN_SDID=From 不在签名域中
DKIM_SIGWARNING_FROM_NOT_IN_AUID=From 不匹配用户标识符
# DKIM_SIGWARNING - POLICY
DKIM_SIGWARNING_UNSIGNED_HEADER = Header '%S' is not signed

# DKIM Result Details
DKIM_RESULT_DETAILS_SIG_COUNT = Signature count: %S
DKIM_RESULT_DETAILS_SIGNED_BY_FOR = Signed by %S for %S
DKIM_RESULT_DETAILS_NO_TIME = No signing time included in signature
DKIM_RESULT_DETAILS_TIME_EXPIRY = Signed at %S, expires at %S
DKIM_RESULT_DETAILS_TIME_NO_EXPIRY = Signed at %S, expires never
DKIM_RESULT_DETAILS_ALGORITHM = Algorithm: %S / %S
DKIM_RESULT_DETAILS_ALGORITHM_WITH_LENGTH = Algorithm: %S (%S bit) / %S
DKIM_RESULT_DETAILS_HEADERS = Signed headers: %S
DKIM_RESULT_DETAILS_WARNINGS = Warnings:\n- %S
4 changes: 4 additions & 0 deletions chrome/locale/zh-CN/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,7 @@
<!ENTITY policy.unsigned_header.mode.value.0.label "Relaxed">
<!ENTITY policy.unsigned_header.mode.value.1.label "Recommended">
<!ENTITY policy.unsigned_header.mode.value.2.label "Strict">

<!ENTITY display.advancedInfo.show.label "Show extended signature information in tooltips">
<!ENTITY display.advancedInfo.allSignatures.label "Show all signatures">
<!ENTITY display.advancedInfo.includeHeaders.label "Show signed headers">
5 changes: 4 additions & 1 deletion defaults/preferences/prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ pref("extensions.dkim_verifier.policy.DMARC.shouldBeSigned.neededPolicy", "none"

pref("extensions.dkim_verifier.display.favicon.show", true);

/*
/*
* Mode to handle headers, which should be signed, but are not
* 10 relaxed
* 20 recommended
Expand Down Expand Up @@ -122,6 +122,9 @@ pref("extensions.dkim_verifier.color.tempfail.background", "unset");
pref("extensions.dkim_verifier.color.nosig.text", "unset");
pref("extensions.dkim_verifier.color.nosig.background", "unset");

pref("extensions.dkim_verifier.advancedInfo.show", false);
pref("extensions.dkim_verifier.advancedInfo.allSignatures", false);
pref("extensions.dkim_verifier.advancedInfo.includeHeaders", false);

////////////////////////////////////////////////////////////////////////////////
// advanced preferences
Expand Down
1 change: 1 addition & 0 deletions modules/AuthVerifier.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ declare module IAuthVerifier {
// 35: PERMFAIL treat as no sig
// 40: no sig
result_str: string; // localized result string
details_str?: string; // localized details block
error_str?: string; // localized error string
warnings_str?: string[]; // localized warnings
favicon?: string; // url to the favicon of the sdid
Expand Down
Loading
Loading