Skip to content

Commit 7b122e3

Browse files
committed
JavaScript DNS library: no longer get the DNS servers from deactivated interfaces under windows
1 parent 358ea79 commit 7b122e3

File tree

3 files changed

+44
-18
lines changed

3 files changed

+44
-18
lines changed

Diff for: CHANGELOG.txt

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
1.4.0pre1 [2015-10-20]
2+
------------------
3+
- JavaScript DNS library: no longer get the DNS servers from deactivated interfaces under windows
4+
15
1.3.6 [2015-09-13]
26
------------------
37
- fixed error in parsing of Authentication-Results header

Diff for: install.rdf

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<Description about="urn:mozilla:install-manifest">
77
<em:id>dkim_verifier@pl</em:id>
88
<em:type>2</em:type> <!-- Extensions -->
9-
<em:version>1.3.6</em:version>
9+
<em:version>1.4.0pre1</em:version>
1010

1111
<em:name>DKIM Verifier</em:name>
1212
<em:description>Verifies the DKIM-Signature of an e-mail.</em:description>

Diff for: modules/JSDNS.jsm

+39-17
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* Based on Joshua Tauberer's DNS LIBRARY IN JAVASCRIPT
55
* from "Sender Verification Extension" version 0.9.0.6
66
*
7-
* Version: 1.0.3 (06 September 2014)
7+
* Version: 1.1.0pre1 (20 October 2015)
88
*
9-
* Copyright (c) 2013-2014 Philippe Lieser
9+
* Copyright (c) 2013-2015 Philippe Lieser
1010
*
1111
* This software is licensed under the terms of the MIT License.
1212
*
@@ -55,6 +55,10 @@
5555
* Changelog:
5656
* ==========
5757
*
58+
* 1.1.0
59+
* -----
60+
* - no longer get the DNS servers from deactivated interfaces under windows
61+
*
5862
* 1.0.3
5963
* -----
6064
* - increased max read length of TXT record
@@ -334,32 +338,50 @@ function DNS_get_OS_DNSServers() {
334338
var registry_class = Components.classes["@mozilla.org/windows-registry-key;1"];
335339
var registry_object = registry_class.createInstance();
336340
var registry = registry_object.QueryInterface(Components.interfaces.nsIWindowsRegKey);
341+
var reg;
337342

338343
registry.open(registry.ROOT_KEY_LOCAL_MACHINE,
339-
"SYSTEM\\CurrentControlSet\\Services\\Tcpip",
344+
"SYSTEM\\CurrentControlSet",
340345
registry.ACCESS_QUERY_VALUE);
341346

342347
// get interfaces in routing order
343-
var registryLinkage = registry.openChild("Linkage", registry.ACCESS_READ);
348+
var registryLinkage = registry.openChild("Services\\Tcpip\\Linkage",
349+
registry.ACCESS_READ);
344350
// nsIWindowsRegKey doesn't support REG_MULTI_SZ type out of the box
345351
// from http://mxr.mozilla.org/comm-central/source/mozilla/browser/components/migration/src/IEProfileMigrator.js#129
346352
// slice(1,-1) to remove the " at the beginning and end
347353
var str = registryLinkage.readStringValue("Route");
348354
var interfaces = [v.slice(1,-1) for (v of str.split("\0")) if (v)];
349-
registryLinkage.close();
355+
356+
// filter out deactivated interfaces
357+
var registryNetworkAdapters = registry.openChild(
358+
"Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}",
359+
registry.ACCESS_QUERY_VALUE);
360+
var registryDevInterfaces = registry.openChild(
361+
"Control\\DeviceClasses\\{cac88484-7515-4c03-82e6-71a87abac361}",
362+
registry.ACCESS_QUERY_VALUE);
363+
interfaces = interfaces.filter(function (element /*, index, array*/) {
364+
reg = registryNetworkAdapters.openChild(element + "\\Connection",
365+
registry.ACCESS_READ);
366+
var interfaceID = reg.readStringValue("PnpInstanceID");
367+
reg.close();
368+
interfaceID = interfaceID.replace(/\\/g, "#");
369+
interfaceID = "##?#" + interfaceID +
370+
"#{cac88484-7515-4c03-82e6-71a87abac361}";
371+
reg = registryDevInterfaces.openChild(interfaceID + "\\#\\Control",
372+
registry.ACCESS_READ);
373+
var linked = reg.readIntValue("Linked");
374+
reg.close();
375+
return linked === 1;
376+
});
350377

351378
// get NameServer and DhcpNameServer of all interfaces
352379
var registryInterfaces = registry.openChild(
353-
"Parameters\\Interfaces",
354-
registry.ACCESS_READ
355-
);
356-
var reg;
380+
"Services\\Tcpip\\Parameters\\Interfaces",
381+
registry.ACCESS_READ);
357382
var ns = "";
358383
for (var i=0; i < interfaces.length; i++) {
359-
reg = registryInterfaces.openChild(
360-
interfaces[i],
361-
registry.ACCESS_READ
362-
);
384+
reg = registryInterfaces.openChild(interfaces[i], registry.ACCESS_READ);
363385
if (reg.hasValue("NameServer")) {
364386
ns += " " + reg.readStringValue("NameServer");
365387
}
@@ -368,9 +390,6 @@ function DNS_get_OS_DNSServers() {
368390
}
369391
reg.close();
370392
}
371-
registryInterfaces.close();
372-
373-
registry.close();
374393

375394
if (ns !== "") {
376395
var servers = ns.split(/ |,/);
@@ -387,10 +406,13 @@ function DNS_get_OS_DNSServers() {
387406
}
388407
} catch (e) {
389408
log.error("Error reading Registry: " + e + "\n" + e.stack);
390-
409+
} finally {
391410
if (registry) {
392411
registry.close();
393412
}
413+
if (registryLinkage) {
414+
registryLinkage.close();
415+
}
394416
if (registryInterfaces) {
395417
registryInterfaces.close();
396418
}

0 commit comments

Comments
 (0)