m0603va 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Laba6/file1.js +23 -0
- package/Laba6/file2.js +23 -0
- package/Laba6/index.html +63 -0
- package/Laba6/m0603.js +29 -0
- package/Laba6/node_modules/.package-lock.json +83 -0
- package/Laba6/node_modules/httpntlm/.jshintrc +4 -0
- package/Laba6/node_modules/httpntlm/LICENSE +20 -0
- package/Laba6/node_modules/httpntlm/README.md +148 -0
- package/Laba6/node_modules/httpntlm/httpntlm.js +104 -0
- package/Laba6/node_modules/httpntlm/ntlm.js +390 -0
- package/Laba6/node_modules/httpntlm/package.json +33 -0
- package/Laba6/node_modules/httpreq/LICENSE +19 -0
- package/Laba6/node_modules/httpreq/README.md +383 -0
- package/Laba6/node_modules/httpreq/contributors.md +26 -0
- package/Laba6/node_modules/httpreq/lib/httpreq.js +681 -0
- package/Laba6/node_modules/httpreq/package.json +102 -0
- package/Laba6/node_modules/m0603sol/m0603.js +29 -0
- package/Laba6/node_modules/m0603sol/package.json +12 -0
- package/Laba6/node_modules/nodemailer/.gitattributes +6 -0
- package/Laba6/node_modules/nodemailer/.prettierrc.js +8 -0
- package/Laba6/node_modules/nodemailer/CHANGELOG.md +725 -0
- package/Laba6/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
- package/Laba6/node_modules/nodemailer/CONTRIBUTING.md +67 -0
- package/Laba6/node_modules/nodemailer/LICENSE +16 -0
- package/Laba6/node_modules/nodemailer/README.md +97 -0
- package/Laba6/node_modules/nodemailer/SECURITY.txt +22 -0
- package/Laba6/node_modules/nodemailer/lib/addressparser/index.js +313 -0
- package/Laba6/node_modules/nodemailer/lib/base64/index.js +142 -0
- package/Laba6/node_modules/nodemailer/lib/dkim/index.js +251 -0
- package/Laba6/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
- package/Laba6/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
- package/Laba6/node_modules/nodemailer/lib/dkim/sign.js +117 -0
- package/Laba6/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
- package/Laba6/node_modules/nodemailer/lib/fetch/index.js +274 -0
- package/Laba6/node_modules/nodemailer/lib/json-transport/index.js +82 -0
- package/Laba6/node_modules/nodemailer/lib/mail-composer/index.js +558 -0
- package/Laba6/node_modules/nodemailer/lib/mailer/index.js +427 -0
- package/Laba6/node_modules/nodemailer/lib/mailer/mail-message.js +315 -0
- package/Laba6/node_modules/nodemailer/lib/mime-funcs/index.js +625 -0
- package/Laba6/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2102 -0
- package/Laba6/node_modules/nodemailer/lib/mime-node/index.js +1290 -0
- package/Laba6/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
- package/Laba6/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
- package/Laba6/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
- package/Laba6/node_modules/nodemailer/lib/nodemailer.js +143 -0
- package/Laba6/node_modules/nodemailer/lib/qp/index.js +219 -0
- package/Laba6/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
- package/Laba6/node_modules/nodemailer/lib/ses-transport/index.js +349 -0
- package/Laba6/node_modules/nodemailer/lib/shared/index.js +638 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-connection/index.js +1796 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-pool/index.js +648 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +253 -0
- package/Laba6/node_modules/nodemailer/lib/smtp-transport/index.js +416 -0
- package/Laba6/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
- package/Laba6/node_modules/nodemailer/lib/well-known/index.js +47 -0
- package/Laba6/node_modules/nodemailer/lib/well-known/services.json +286 -0
- package/Laba6/node_modules/nodemailer/lib/xoauth2/index.js +376 -0
- package/Laba6/node_modules/nodemailer/package.json +46 -0
- package/Laba6/node_modules/nodemailer/postinstall.js +101 -0
- package/Laba6/node_modules/nodemailer-fetch/.eslintrc.js +56 -0
- package/Laba6/node_modules/nodemailer-fetch/.travis.yml +19 -0
- package/Laba6/node_modules/nodemailer-fetch/CHANGELOG.md +30 -0
- package/Laba6/node_modules/nodemailer-fetch/Gruntfile.js +27 -0
- package/Laba6/node_modules/nodemailer-fetch/LICENSE +16 -0
- package/Laba6/node_modules/nodemailer-fetch/README.md +55 -0
- package/Laba6/node_modules/nodemailer-fetch/lib/cookies.js +275 -0
- package/Laba6/node_modules/nodemailer-fetch/lib/fetch.js +224 -0
- package/Laba6/node_modules/nodemailer-fetch/package.json +30 -0
- package/Laba6/node_modules/nodemailer-fetch/test/cookies-test.js +391 -0
- package/Laba6/node_modules/nodemailer-fetch/test/fetch-test.js +486 -0
- package/Laba6/node_modules/nodemailer-shared/.eslintrc.js +59 -0
- package/Laba6/node_modules/nodemailer-shared/.travis.yml +18 -0
- package/Laba6/node_modules/nodemailer-shared/Gruntfile.js +27 -0
- package/Laba6/node_modules/nodemailer-shared/LICENSE +16 -0
- package/Laba6/node_modules/nodemailer-shared/README.md +14 -0
- package/Laba6/node_modules/nodemailer-shared/lib/shared.js +282 -0
- package/Laba6/node_modules/nodemailer-shared/package.json +36 -0
- package/Laba6/node_modules/nodemailer-shared/test/fixtures/message.html +1 -0
- package/Laba6/node_modules/nodemailer-shared/test/shared-test.js +291 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/.eslintrc.js +59 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/Gruntfile.js +27 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/LICENSE +19 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/README.md +7 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/lib/smtp-transport.js +281 -0
- package/Laba6/node_modules/nodemailer-smtp-transport/package.json +37 -0
- package/Laba6/node_modules/nodemailer-wellknown/.travis.yml +17 -0
- package/Laba6/node_modules/nodemailer-wellknown/LICENSE +19 -0
- package/Laba6/node_modules/nodemailer-wellknown/README.md +80 -0
- package/Laba6/node_modules/nodemailer-wellknown/index.js +47 -0
- package/Laba6/node_modules/nodemailer-wellknown/package.json +26 -0
- package/Laba6/node_modules/nodemailer-wellknown/services.json +255 -0
- package/Laba6/node_modules/nodemailer-wellknown/test.js +23 -0
- package/Laba6/node_modules/smtp-connection/.eslintrc.js +56 -0
- package/Laba6/node_modules/smtp-connection/CHANGELOG.md +164 -0
- package/Laba6/node_modules/smtp-connection/Gruntfile.js +27 -0
- package/Laba6/node_modules/smtp-connection/LICENSE +19 -0
- package/Laba6/node_modules/smtp-connection/README.md +200 -0
- package/Laba6/node_modules/smtp-connection/lib/data-stream.js +111 -0
- package/Laba6/node_modules/smtp-connection/lib/smtp-connection.js +1443 -0
- package/Laba6/node_modules/smtp-connection/package.json +41 -0
- package/Laba6/node_modules/underscore/LICENSE +23 -0
- package/Laba6/node_modules/underscore/README.md +22 -0
- package/Laba6/node_modules/underscore/package.json +41 -0
- package/Laba6/node_modules/underscore/underscore-min.js +6 -0
- package/Laba6/node_modules/underscore/underscore.js +1415 -0
- package/Laba6/package-lock.json +94 -0
- package/Laba6/package.json +17 -0
- package/Laba6.txt +31 -0
- package/file1.js +23 -0
- package/file2.js +23 -0
- package/index.html +63 -0
- package/m0603.js +29 -0
- package/m0603Sol/m0603.js +29 -0
- package/m0603Sol/package.json +12 -0
- package/package.json +17 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const stream = require('stream');
|
4
|
+
const Transform = stream.Transform;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Escapes dots in the beginning of lines. Ends the stream with <CR><LF>.<CR><LF>
|
8
|
+
* Also makes sure that only <CR><LF> sequences are used for linebreaks
|
9
|
+
*
|
10
|
+
* @param {Object} options Stream options
|
11
|
+
*/
|
12
|
+
class DataStream extends Transform {
|
13
|
+
constructor(options) {
|
14
|
+
super(options);
|
15
|
+
// init Transform
|
16
|
+
this.options = options || {};
|
17
|
+
this._curLine = '';
|
18
|
+
|
19
|
+
this.inByteCount = 0;
|
20
|
+
this.outByteCount = 0;
|
21
|
+
this.lastByte = false;
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Escapes dots
|
26
|
+
*/
|
27
|
+
_transform(chunk, encoding, done) {
|
28
|
+
let chunks = [];
|
29
|
+
let chunklen = 0;
|
30
|
+
let i,
|
31
|
+
len,
|
32
|
+
lastPos = 0;
|
33
|
+
let buf;
|
34
|
+
|
35
|
+
if (!chunk || !chunk.length) {
|
36
|
+
return done();
|
37
|
+
}
|
38
|
+
|
39
|
+
if (typeof chunk === 'string') {
|
40
|
+
chunk = Buffer.from(chunk);
|
41
|
+
}
|
42
|
+
|
43
|
+
this.inByteCount += chunk.length;
|
44
|
+
|
45
|
+
for (i = 0, len = chunk.length; i < len; i++) {
|
46
|
+
if (chunk[i] === 0x2e) {
|
47
|
+
// .
|
48
|
+
if ((i && chunk[i - 1] === 0x0a) || (!i && (!this.lastByte || this.lastByte === 0x0a))) {
|
49
|
+
buf = chunk.slice(lastPos, i + 1);
|
50
|
+
chunks.push(buf);
|
51
|
+
chunks.push(Buffer.from('.'));
|
52
|
+
chunklen += buf.length + 1;
|
53
|
+
lastPos = i + 1;
|
54
|
+
}
|
55
|
+
} else if (chunk[i] === 0x0a) {
|
56
|
+
// .
|
57
|
+
if ((i && chunk[i - 1] !== 0x0d) || (!i && this.lastByte !== 0x0d)) {
|
58
|
+
if (i > lastPos) {
|
59
|
+
buf = chunk.slice(lastPos, i);
|
60
|
+
chunks.push(buf);
|
61
|
+
chunklen += buf.length + 2;
|
62
|
+
} else {
|
63
|
+
chunklen += 2;
|
64
|
+
}
|
65
|
+
chunks.push(Buffer.from('\r\n'));
|
66
|
+
lastPos = i + 1;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
if (chunklen) {
|
72
|
+
// add last piece
|
73
|
+
if (lastPos < chunk.length) {
|
74
|
+
buf = chunk.slice(lastPos);
|
75
|
+
chunks.push(buf);
|
76
|
+
chunklen += buf.length;
|
77
|
+
}
|
78
|
+
|
79
|
+
this.outByteCount += chunklen;
|
80
|
+
this.push(Buffer.concat(chunks, chunklen));
|
81
|
+
} else {
|
82
|
+
this.outByteCount += chunk.length;
|
83
|
+
this.push(chunk);
|
84
|
+
}
|
85
|
+
|
86
|
+
this.lastByte = chunk[chunk.length - 1];
|
87
|
+
done();
|
88
|
+
}
|
89
|
+
|
90
|
+
/**
|
91
|
+
* Finalizes the stream with a dot on a single line
|
92
|
+
*/
|
93
|
+
_flush(done) {
|
94
|
+
let buf;
|
95
|
+
if (this.lastByte === 0x0a) {
|
96
|
+
buf = Buffer.from('.\r\n');
|
97
|
+
} else if (this.lastByte === 0x0d) {
|
98
|
+
buf = Buffer.from('\n.\r\n');
|
99
|
+
} else {
|
100
|
+
buf = Buffer.from('\r\n.\r\n');
|
101
|
+
}
|
102
|
+
this.outByteCount += buf.length;
|
103
|
+
this.push(buf);
|
104
|
+
done();
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
module.exports = DataStream;
|
@@ -0,0 +1,143 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Minimal HTTP/S proxy client
|
5
|
+
*/
|
6
|
+
|
7
|
+
const net = require('net');
|
8
|
+
const tls = require('tls');
|
9
|
+
const urllib = require('url');
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Establishes proxied connection to destinationPort
|
13
|
+
*
|
14
|
+
* httpProxyClient("http://localhost:3128/", 80, "google.com", function(err, socket){
|
15
|
+
* socket.write("GET / HTTP/1.0\r\n\r\n");
|
16
|
+
* });
|
17
|
+
*
|
18
|
+
* @param {String} proxyUrl proxy configuration, etg "http://proxy.host:3128/"
|
19
|
+
* @param {Number} destinationPort Port to open in destination host
|
20
|
+
* @param {String} destinationHost Destination hostname
|
21
|
+
* @param {Function} callback Callback to run with the rocket object once connection is established
|
22
|
+
*/
|
23
|
+
function httpProxyClient(proxyUrl, destinationPort, destinationHost, callback) {
|
24
|
+
let proxy = urllib.parse(proxyUrl);
|
25
|
+
|
26
|
+
// create a socket connection to the proxy server
|
27
|
+
let options;
|
28
|
+
let connect;
|
29
|
+
let socket;
|
30
|
+
|
31
|
+
options = {
|
32
|
+
host: proxy.hostname,
|
33
|
+
port: Number(proxy.port) ? Number(proxy.port) : proxy.protocol === 'https:' ? 443 : 80
|
34
|
+
};
|
35
|
+
|
36
|
+
if (proxy.protocol === 'https:') {
|
37
|
+
// we can use untrusted proxies as long as we verify actual SMTP certificates
|
38
|
+
options.rejectUnauthorized = false;
|
39
|
+
connect = tls.connect.bind(tls);
|
40
|
+
} else {
|
41
|
+
connect = net.connect.bind(net);
|
42
|
+
}
|
43
|
+
|
44
|
+
// Error harness for initial connection. Once connection is established, the responsibility
|
45
|
+
// to handle errors is passed to whoever uses this socket
|
46
|
+
let finished = false;
|
47
|
+
let tempSocketErr = err => {
|
48
|
+
if (finished) {
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
finished = true;
|
52
|
+
try {
|
53
|
+
socket.destroy();
|
54
|
+
} catch (E) {
|
55
|
+
// ignore
|
56
|
+
}
|
57
|
+
callback(err);
|
58
|
+
};
|
59
|
+
|
60
|
+
let timeoutErr = () => {
|
61
|
+
let err = new Error('Proxy socket timed out');
|
62
|
+
err.code = 'ETIMEDOUT';
|
63
|
+
tempSocketErr(err);
|
64
|
+
};
|
65
|
+
|
66
|
+
socket = connect(options, () => {
|
67
|
+
if (finished) {
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
|
71
|
+
let reqHeaders = {
|
72
|
+
Host: destinationHost + ':' + destinationPort,
|
73
|
+
Connection: 'close'
|
74
|
+
};
|
75
|
+
if (proxy.auth) {
|
76
|
+
reqHeaders['Proxy-Authorization'] = 'Basic ' + Buffer.from(proxy.auth).toString('base64');
|
77
|
+
}
|
78
|
+
|
79
|
+
socket.write(
|
80
|
+
// HTTP method
|
81
|
+
'CONNECT ' +
|
82
|
+
destinationHost +
|
83
|
+
':' +
|
84
|
+
destinationPort +
|
85
|
+
' HTTP/1.1\r\n' +
|
86
|
+
// HTTP request headers
|
87
|
+
Object.keys(reqHeaders)
|
88
|
+
.map(key => key + ': ' + reqHeaders[key])
|
89
|
+
.join('\r\n') +
|
90
|
+
// End request
|
91
|
+
'\r\n\r\n'
|
92
|
+
);
|
93
|
+
|
94
|
+
let headers = '';
|
95
|
+
let onSocketData = chunk => {
|
96
|
+
let match;
|
97
|
+
let remainder;
|
98
|
+
|
99
|
+
if (finished) {
|
100
|
+
return;
|
101
|
+
}
|
102
|
+
|
103
|
+
headers += chunk.toString('binary');
|
104
|
+
if ((match = headers.match(/\r\n\r\n/))) {
|
105
|
+
socket.removeListener('data', onSocketData);
|
106
|
+
|
107
|
+
remainder = headers.substr(match.index + match[0].length);
|
108
|
+
headers = headers.substr(0, match.index);
|
109
|
+
if (remainder) {
|
110
|
+
socket.unshift(Buffer.from(remainder, 'binary'));
|
111
|
+
}
|
112
|
+
|
113
|
+
// proxy connection is now established
|
114
|
+
finished = true;
|
115
|
+
|
116
|
+
// check response code
|
117
|
+
match = headers.match(/^HTTP\/\d+\.\d+ (\d+)/i);
|
118
|
+
if (!match || (match[1] || '').charAt(0) !== '2') {
|
119
|
+
try {
|
120
|
+
socket.destroy();
|
121
|
+
} catch (E) {
|
122
|
+
// ignore
|
123
|
+
}
|
124
|
+
return callback(new Error('Invalid response from proxy' + ((match && ': ' + match[1]) || '')));
|
125
|
+
}
|
126
|
+
|
127
|
+
socket.removeListener('error', tempSocketErr);
|
128
|
+
socket.removeListener('timeout', timeoutErr);
|
129
|
+
socket.setTimeout(0);
|
130
|
+
|
131
|
+
return callback(null, socket);
|
132
|
+
}
|
133
|
+
};
|
134
|
+
socket.on('data', onSocketData);
|
135
|
+
});
|
136
|
+
|
137
|
+
socket.setTimeout(httpProxyClient.timeout || 30 * 1000);
|
138
|
+
socket.on('timeout', timeoutErr);
|
139
|
+
|
140
|
+
socket.once('error', tempSocketErr);
|
141
|
+
}
|
142
|
+
|
143
|
+
module.exports = httpProxyClient;
|