mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-08-04 21:39:04 +00:00
fix https proxy server for ip host
This commit is contained in:
@@ -1,17 +1,67 @@
|
||||
const tls = require('tls');
|
||||
const httpsServerMgr = require('../../lib/httpsServerMgr');
|
||||
|
||||
describe('httpsServerMgr', () => {
|
||||
it('get https server', async () => {
|
||||
const serverMgr = new httpsServerMgr({
|
||||
let serverMgrInstance;
|
||||
|
||||
beforeAll(async () => {
|
||||
serverMgrInstance = new httpsServerMgr({
|
||||
hostname: '127.0.0.1',
|
||||
handler: () => {
|
||||
console.log('this is handler');
|
||||
},
|
||||
wsHandler: () => {
|
||||
console.log('this is handler');
|
||||
handler: (req, res) => {
|
||||
res.end('hello world');
|
||||
},
|
||||
wsHandler: () => { },
|
||||
});
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await serverMgrInstance.close();
|
||||
});
|
||||
|
||||
it('SNI server should work properly', async () => {
|
||||
const sniServerA = await serverMgrInstance.getSharedHttpsServer('a.anyproxy.io');
|
||||
const sniServerB = await serverMgrInstance.getSharedHttpsServer('b.anyproxy.io');
|
||||
|
||||
expect(sniServerA).toEqual(sniServerB); // SNI - common server
|
||||
|
||||
const connectHostname = 'some_new_host.anyproxy.io';
|
||||
const connectOpt = {
|
||||
servername: connectHostname, // servername is required for sni server
|
||||
rejectUnauthorized: false,
|
||||
}
|
||||
await new Promise((resolve, reject) => {
|
||||
const socketToSNIServer = tls.connect(sniServerA.port, '127.0.0.1', connectOpt, (tlsSocket) => {
|
||||
// console.log('client to SNI server connected, ', socketToSNIServer.authorized ? 'authorized' : 'unauthorized');
|
||||
const certSubject = socketToSNIServer.getPeerCertificate().subject;
|
||||
expect(certSubject.CN).toEqual(connectHostname);
|
||||
socketToSNIServer.end();
|
||||
resolve();
|
||||
});
|
||||
|
||||
socketToSNIServer.on('keylog', line => {
|
||||
console.log(line);
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
it('IP server should work properly', async () => {
|
||||
const ipServerHost = '1.2.3.4';
|
||||
const anotherSNIServer = await serverMgrInstance.getSharedHttpsServer('c.anyproxy.io');
|
||||
const ipServerA = await serverMgrInstance.getSharedHttpsServer(ipServerHost);
|
||||
const ipServerB = await serverMgrInstance.getSharedHttpsServer('5.6.7.8');
|
||||
expect(ipServerA).not.toEqual(ipServerB);
|
||||
expect(anotherSNIServer).not.toEqual(ipServerA);
|
||||
|
||||
const connectOpt = {
|
||||
rejectUnauthorized: false,
|
||||
}
|
||||
await new Promise((resolve, reject) => {
|
||||
const socketToIpServer = tls.connect(ipServerA.port, '127.0.0.1', connectOpt, () => {
|
||||
const certSubject = socketToIpServer.getPeerCertificate().subject;
|
||||
expect(certSubject.CN).toEqual(ipServerHost);
|
||||
socketToIpServer.end();
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
await serverMgr.getSharedHttpsServer();
|
||||
serverMgr.close();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user