javascript - 从数组中为 NodeJS 中的 SSL 加密常量构建按位 OR 字符串
问题描述
我有一个应用程序,它为用户可能想要自己设置的选项使用单独的配置文件。最近我被要求包含定义 TLS 设置的能力。我希望我的配置文件有一个数组变量,允许用户输入所需的加密常量,并让我的应用程序获取该数组变量并为服务器实例构建一个按位 OR 字符串。以下是我正在尝试做的简化版本。实际上,“httpsOpts”将位于单独的文件中,但这与示例无关。我将如何实现预期的结果?
const https = require('https');
const crypto = require('crypto');
const express = require('express');
const sslOpts = ['SSL_OP_NO_TLSv1','SSL_OP_NO_TLSv1_1'];
let httpsOpts = {};
httpsOpts.secureOptions = ''; // build the following: crypto.SSL_OP_NO_TLSv1 | crypto.SSL_OP_NO_TLSv1_1
const app = express();
const webServer = https.createServer(httpsOpts, app);
解决方案
所以这就是我想出来的,以防其他人有同样的问题。我确信有更好的答案,因为这涉及到可怕的“评估”,但这是我现在得到的。
let _opts = '';
sslOpts.forEach((v,i) => {
_opts+='crypto.constants.'+v;
if (i < sslOpts.length-1) _opts+=' | ';
});
httpsOpts.secureOptions = eval(_opts);
推荐阅读
- python-3.x - 在跳过某些对象时获取列表中的不同部分
- typescript - 实现接口或接口扩展的函数参数
- flutter - 如何在 Windows 上以 HTML 格式查看 Flutter/dart 的覆盖率报告
- angular - Angular 7 可重用的 ng 模板
- postgresql - Grails空标识符错误有时会出现而没有解释
- python - 如果我有重叠工作间隔的开始时间/结束时间,如何计算工作场所的空闲时间?
- javascript - Laravel-farhanwazir laravelgooglemaps
- python - 如何向javascript页面发送正确的请求
- spring - Micronaut 声明式 REST 客户端抛出错误 - @Introduction 方法拦截器丢失
- angular - 如何在 RXJS 中迭代管道内的列表