From 852d9a28ef7a4a1bc722e1b60584fa265d2f1a94 Mon Sep 17 00:00:00 2001 From: Jannis R Date: Wed, 5 Aug 2020 14:08:40 +0200 Subject: add verifyAlpnId() hook --- client.js | 9 ++++++++- server.js | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/client.js b/client.js index ebb2b66..e4a3427 100644 --- a/client.js +++ b/client.js @@ -16,10 +16,17 @@ const HOUR = 60 * 60 * 1000 const _request = (pathOrUrl, opt, cb) => { debug('_request', pathOrUrl, opt) + const { + verifyAlpnId, + } = { + verifyAlpnId: alpnId => alpnId === ALPN_ID, + ...opt, + } + connect(opt, (err, socket) => { if (err) return cb(err) - if (socket.alpnProtocol !== ALPN_ID) { + if (verifyAlpnId(socket.alpnProtocol) !== true) { socket.destroy() return cb(new Error('invalid or missing ALPN protocol')) } diff --git a/server.js b/server.js index aa7afb7..88d3a2d 100644 --- a/server.js +++ b/server.js @@ -17,15 +17,17 @@ const createGeminiServer = (opt = {}, onRequest) => { const { cert, key, passphrase, tlsOpt, + verifyAlpnId, } = { cert: null, key: null, passphrase: null, tlsOpt: {}, + verifyAlpnId: alpnId => alpnId === ALPN_ID, ...opt, } const onConnection = (socket) => { // todo: clarify if this is desired behavior - if (socket.alpnProtocol !== ALPN_ID) { + if (verifyAlpnId(socket.alpnProtocol) !== true) { socket.destroy() return; } -- cgit v1.3