ssl-checker-kzh
Version:
67 lines (66 loc) • 2.43 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import * as https from "https";
var checkPort = function (port) {
return !isNaN(parseFloat(port)) && Math.sign(port) === 1;
};
var getDaysBetween = function (validFrom, validTo) {
return Math.round(Math.abs(+validFrom - +validTo) / 8.64e7);
};
var getDaysRemaining = function (validFrom, validTo) {
var daysRemaining = getDaysBetween(validFrom, validTo);
if (new Date(validTo).getTime() < new Date().getTime()) {
return -daysRemaining;
}
return daysRemaining;
};
var sslChecker = function (host, options) {
if (options === void 0) { options = {
agent: false,
method: "HEAD",
port: 443,
rejectUnauthorized: false
}; }
return new Promise(function (resolve, reject) {
if (!checkPort(options.port)) {
reject(Error("Invalid port"));
}
try {
var req_1 = https.request(__assign({ host: host }, options), function (res) {
var _a = res.connection.getPeerCertificate(), valid_from = _a.valid_from, valid_to = _a.valid_to, subjectaltname = _a.subjectaltname;
var validTo = new Date(valid_to);
var validFor = subjectaltname
.replace(/DNS:|IP Address:/g, "")
.split(", ");
resolve({
daysRemaining: getDaysRemaining(new Date(), validTo),
valid: res.socket
.authorized || false,
validFrom: new Date(valid_from).toISOString(),
validTo: validTo.toISOString(),
validFor: validFor
});
});
req_1.on("error", reject);
req_1.on("timeout", function () {
req_1.abort();
reject(new Error('Timed Out'));
});
req_1.end();
}
catch (e) {
reject(e);
}
});
};
export default sslChecker;
module.exports = sslChecker;