forked from tjanczuk/httpsys
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
126 lines (107 loc) · 3.54 KB
/
index.js
File metadata and controls
126 lines (107 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
var version = require('./package.json').version
, httpsys = require('./lib/httpsys_native')
, HttpServer = require('./lib/HttpServer')
, HttpsServer = require('./lib/HttpsServer')
, Server = require('./lib/Server')
, ServerRequest = require('./lib/ServerRequest')
, ServerResponse = require('./lib/ServerResponse')
, util = require('util');
httpsys.httpsys_init({
initialBufferSize: (+process.env.HTTPSYS_BUFFER_SIZE) || 16384,
requestQueueLength: (+process.env.HTTPSYS_REQUEST_QUEUE_LENGTH) || 5000,
pendingReadCount: (+process.env.HTTPSYS_PENDING_READ_COUNT) || 1,
cacheDuration: isNaN(process.env.HTTPSYS_CACHE_DURATION) ? -1 : (+process.env.HTTPSYS_CACHE_DURATION),
callback: Server._dispatch
});
function addClientStack(target, source) {
[ 'STATUS_CODES',
'IncomingMessage',
'OutgoingMessage',
'Agent',
'globalAgent',
'ClientRequest',
'request',
'get',
'Client',
'createClient'
].forEach(function (api) {
if (source[api])
target[api] = source[api];
});
}
var http;
var https;
exports.http = function () {
if (!http) {
http = {
Server: HttpServer,
ServerRequest: ServerRequest,
ServerResponse: ServerResponse,
createServer: function (requestListener) {
var server = new HttpServer();
if (requestListener) {
server.on('request', requestListener)
}
return server;
},
httpsys_version: version
};
addClientStack(http, require('http'));
}
return http;
};
exports.https = function () {
if (!https) {
https = {
Server: HttpsServer,
createServer: function (options, requestListener) {
// `options` are ignored for API compatibility
// Keys and certificates in HTTP.SYS
// are configured with `netsh http add sslcert`.
var server = new HttpsServer();
if (requestListener) {
server.on('request', requestListener)
}
return server;
},
httpsys_version: version
};
addClientStack(https, require('https'));
}
return https;
}
exports.http.slipstream = function () {
// Make sure original HTTP module is loaded into native module cache
module = require('http');
module.createServer = function (requestListener) {
var server = new HttpServer();
if (requestListener) {
server.on('request', requestListener)
}
return server;
}
module.Server = HttpServer;
module.ServerRequest = ServerRequest;
module.ServerResponse = ServerResponse;
module.httpsys_version = version;
};
exports.https.slipstream = function() {
// Make sure original HTTPS module is loaded into native module cache
module = require('https');
module.Server = HttpsServer;
module.createServer = function (options, requestListener) {
// `options` are ignored for API compatibility
// Keys and certificates in HTTP.SYS
// are configured with `netsh http add sslcert`.
var server = new HttpsServer();
if (requestListener) {
server.on('request', requestListener)
}
return server;
};
module.httpsys_version = version;
};
exports.slipstream = function () {
exports.http.slipstream();
exports.https.slipstream();
};