ssl-checker-kzh
Version:
88 lines (87 loc) • 3.37 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);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
exports.__esModule = true;
var https = __importStar(require("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);
}
});
};
exports["default"] = sslChecker;
module.exports = sslChecker;