emailengine-app 2.61.0 → 2.61.2

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.
Files changed (137) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/data/google-crawlers.json +1 -1
  3. package/lib/account/account-state.js +248 -0
  4. package/lib/account.js +17 -178
  5. package/lib/api-routes/account-routes.js +1006 -0
  6. package/lib/api-routes/message-routes.js +1377 -0
  7. package/lib/consts.js +12 -2
  8. package/lib/email-client/base-client.js +282 -771
  9. package/lib/email-client/gmail/gmail-api.js +243 -0
  10. package/lib/email-client/gmail-client.js +145 -53
  11. package/lib/email-client/imap/mailbox.js +24 -698
  12. package/lib/email-client/imap/sync-operations.js +812 -0
  13. package/lib/email-client/imap-client.js +3 -1
  14. package/lib/email-client/message-builder.js +566 -0
  15. package/lib/email-client/notification-handler.js +314 -0
  16. package/lib/email-client/outlook/graph-api.js +326 -0
  17. package/lib/email-client/outlook-client.js +159 -113
  18. package/lib/email-client/smtp-pool-manager.js +196 -0
  19. package/lib/imapproxy/imap-server.js +3 -12
  20. package/lib/oauth/gmail.js +4 -4
  21. package/lib/oauth/mail-ru.js +30 -5
  22. package/lib/oauth/outlook.js +57 -3
  23. package/lib/oauth/pubsub/google.js +30 -11
  24. package/lib/oauth/scope-checker.js +202 -0
  25. package/lib/oauth2-apps.js +8 -4
  26. package/lib/redis-operations.js +484 -0
  27. package/lib/routes-ui.js +283 -2582
  28. package/lib/tools.js +5 -196
  29. package/lib/ui-routes/account-routes.js +1931 -0
  30. package/lib/ui-routes/admin-config-routes.js +1233 -0
  31. package/lib/ui-routes/admin-entities-routes.js +2367 -0
  32. package/lib/ui-routes/oauth-routes.js +992 -0
  33. package/lib/utils/network.js +237 -0
  34. package/package.json +12 -12
  35. package/sbom.json +1 -1
  36. package/static/js/app.js +5 -5
  37. package/static/licenses.html +91 -21
  38. package/translations/de.mo +0 -0
  39. package/translations/de.po +85 -82
  40. package/translations/en.mo +0 -0
  41. package/translations/en.po +63 -71
  42. package/translations/et.mo +0 -0
  43. package/translations/et.po +84 -82
  44. package/translations/fr.mo +0 -0
  45. package/translations/fr.po +85 -82
  46. package/translations/ja.mo +0 -0
  47. package/translations/ja.po +84 -82
  48. package/translations/messages.pot +67 -80
  49. package/translations/nl.mo +0 -0
  50. package/translations/nl.po +86 -82
  51. package/translations/pl.mo +0 -0
  52. package/translations/pl.po +84 -82
  53. package/views/account/security.hbs +4 -4
  54. package/views/accounts/account.hbs +13 -13
  55. package/views/accounts/register/imap-server.hbs +12 -12
  56. package/views/config/document-store/pre-processing/index.hbs +4 -2
  57. package/views/config/oauth/app.hbs +6 -7
  58. package/views/config/oauth/index.hbs +2 -2
  59. package/views/config/service.hbs +3 -4
  60. package/views/dashboard.hbs +5 -7
  61. package/views/error.hbs +22 -7
  62. package/views/gateways/gateway.hbs +2 -2
  63. package/views/partials/add_account_modal.hbs +7 -10
  64. package/views/partials/document_store_header.hbs +1 -1
  65. package/views/partials/editor_scope_info.hbs +0 -1
  66. package/views/partials/oauth_config_header.hbs +1 -1
  67. package/views/partials/side_menu.hbs +3 -3
  68. package/views/partials/webhook_form.hbs +2 -2
  69. package/views/templates/index.hbs +1 -1
  70. package/views/templates/template.hbs +8 -8
  71. package/views/tokens/index.hbs +6 -6
  72. package/views/tokens/new.hbs +1 -1
  73. package/views/webhooks/index.hbs +4 -4
  74. package/views/webhooks/webhook.hbs +7 -7
  75. package/workers/api.js +148 -2436
  76. package/workers/smtp.js +2 -1
  77. package/workers/webhooks.js +6 -0
  78. package/lib/imapproxy/imap-core/test/client.js +0 -46
  79. package/lib/imapproxy/imap-core/test/fixtures/append.eml +0 -1196
  80. package/lib/imapproxy/imap-core/test/fixtures/chunks.js +0 -44
  81. package/lib/imapproxy/imap-core/test/fixtures/fix1.eml +0 -6
  82. package/lib/imapproxy/imap-core/test/fixtures/fix2.eml +0 -599
  83. package/lib/imapproxy/imap-core/test/fixtures/fix3.eml +0 -32
  84. package/lib/imapproxy/imap-core/test/fixtures/fix4.eml +0 -6
  85. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.eml +0 -599
  86. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.js +0 -2740
  87. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.json +0 -1411
  88. package/lib/imapproxy/imap-core/test/fixtures/mimetree.js +0 -85
  89. package/lib/imapproxy/imap-core/test/fixtures/nodemailer.eml +0 -582
  90. package/lib/imapproxy/imap-core/test/fixtures/ryan_finnie_mime_torture.eml +0 -599
  91. package/lib/imapproxy/imap-core/test/fixtures/simple.eml +0 -42
  92. package/lib/imapproxy/imap-core/test/fixtures/simple.json +0 -164
  93. package/lib/imapproxy/imap-core/test/imap-compile-stream-test.js +0 -671
  94. package/lib/imapproxy/imap-core/test/imap-compiler-test.js +0 -272
  95. package/lib/imapproxy/imap-core/test/imap-indexer-test.js +0 -236
  96. package/lib/imapproxy/imap-core/test/imap-parser-test.js +0 -922
  97. package/lib/imapproxy/imap-core/test/memory-notifier.js +0 -129
  98. package/lib/imapproxy/imap-core/test/prepare.sh +0 -74
  99. package/lib/imapproxy/imap-core/test/protocol-test.js +0 -1756
  100. package/lib/imapproxy/imap-core/test/search-test.js +0 -1356
  101. package/lib/imapproxy/imap-core/test/test-client.js +0 -152
  102. package/lib/imapproxy/imap-core/test/test-server.js +0 -623
  103. package/lib/imapproxy/imap-core/test/tools-test.js +0 -22
  104. package/test/api-test.js +0 -899
  105. package/test/autoreply-test.js +0 -327
  106. package/test/bounce-test.js +0 -151
  107. package/test/complaint-test.js +0 -256
  108. package/test/fixtures/autoreply/LICENSE +0 -27
  109. package/test/fixtures/autoreply/rfc3834-01.eml +0 -23
  110. package/test/fixtures/autoreply/rfc3834-02.eml +0 -24
  111. package/test/fixtures/autoreply/rfc3834-03.eml +0 -26
  112. package/test/fixtures/autoreply/rfc3834-04.eml +0 -48
  113. package/test/fixtures/autoreply/rfc3834-05.eml +0 -19
  114. package/test/fixtures/autoreply/rfc3834-06.eml +0 -59
  115. package/test/fixtures/bounces/163.eml +0 -2521
  116. package/test/fixtures/bounces/fastmail.eml +0 -242
  117. package/test/fixtures/bounces/gmail.eml +0 -252
  118. package/test/fixtures/bounces/hotmail.eml +0 -655
  119. package/test/fixtures/bounces/mailru.eml +0 -121
  120. package/test/fixtures/bounces/outlook.eml +0 -1107
  121. package/test/fixtures/bounces/postfix.eml +0 -101
  122. package/test/fixtures/bounces/rambler.eml +0 -116
  123. package/test/fixtures/bounces/workmail.eml +0 -142
  124. package/test/fixtures/bounces/yahoo.eml +0 -139
  125. package/test/fixtures/bounces/zoho.eml +0 -83
  126. package/test/fixtures/bounces/zonemta.eml +0 -100
  127. package/test/fixtures/complaints/LICENSE +0 -27
  128. package/test/fixtures/complaints/amazonses.eml +0 -72
  129. package/test/fixtures/complaints/dmarc.eml +0 -59
  130. package/test/fixtures/complaints/hotmail.eml +0 -49
  131. package/test/fixtures/complaints/optout.eml +0 -40
  132. package/test/fixtures/complaints/standard-arf.eml +0 -68
  133. package/test/fixtures/complaints/yahoo.eml +0 -68
  134. package/test/oauth2-apps-test.js +0 -301
  135. package/test/sendonly-test.js +0 -160
  136. package/test/test-config.js +0 -34
  137. package/test/webhooks-server.js +0 -39
@@ -1,152 +0,0 @@
1
- /*eslint no-console: 0 */
2
-
3
- 'use strict';
4
-
5
- let net = require('net');
6
- let tls = require('tls');
7
-
8
- module.exports = runClientMockup;
9
-
10
- function runClientMockup(options, callback) {
11
- options = options || {};
12
-
13
- let host = options.host || 'localhost';
14
- let port = options.port || 25;
15
- let commands = [].concat(options.commands || []);
16
- let debug = options.debug;
17
-
18
- let ignore_data = false;
19
- let responses = [];
20
- let command = '';
21
- let callbackSent = false;
22
- let delay;
23
-
24
- let socket = (options.secure ? tls : net).connect(
25
- {
26
- rejectUnauthorized: false,
27
- port,
28
- host
29
- },
30
- () => {
31
- socket.on('close', () => {
32
- if (callbackSent) {
33
- return;
34
- }
35
- callbackSent = true;
36
- if (typeof callback === 'function') {
37
- return callback(Buffer.concat(responses));
38
- }
39
- });
40
-
41
- let onData = function(chunk) {
42
- if (ignore_data) {
43
- return;
44
- }
45
-
46
- responses.push(chunk);
47
- if (debug) {
48
- console.log('S: ' + chunk.toString('binary').trim());
49
- }
50
-
51
- if (!commands.length) {
52
- return;
53
- }
54
-
55
- if (typeof command === 'string' && command.match(/^[a-z0-9]+ STARTTLS$/i)) {
56
- // wait until server sends response to the STARTTLS command
57
- if (!/STARTTLS completed/.test(Buffer.concat(responses).toString())) {
58
- return;
59
- }
60
-
61
- ignore_data = true;
62
- if (debug) {
63
- console.log('Initiated TLS connection');
64
- }
65
-
66
- socket.removeAllListeners('data');
67
- let secureSocket = tls.connect(
68
- {
69
- rejectUnauthorized: false,
70
- socket,
71
- host
72
- },
73
- () => {
74
- ignore_data = false;
75
-
76
- socket = secureSocket;
77
-
78
- if (debug) {
79
- console.log('TLS connection secured');
80
- }
81
-
82
- secureSocket.on('data', onData);
83
-
84
- secureSocket.on('close', () => {
85
- if (callbackSent) {
86
- return;
87
- }
88
- callbackSent = true;
89
- if (typeof callback === 'function') {
90
- return callback(Buffer.concat(responses));
91
- }
92
- });
93
-
94
- command = commands.shift();
95
- if (debug) {
96
- console.log('(Secure) C: ' + command);
97
- }
98
- secureSocket.write(command + '\r\n');
99
- }
100
- );
101
-
102
- secureSocket.on('error', err => {
103
- console.log('SECURE ERR');
104
- console.log(err.stack);
105
- });
106
- } else {
107
- if (!/\r?\n$/.test(chunk.toString('binary'))) {
108
- return;
109
- }
110
- // only go forward with the next command if the last data ends with a newline
111
- // and there is no activity in the socket for 10ms
112
- let processCommand = () => {
113
- clearTimeout(delay);
114
- delay = setTimeout(() => {
115
- command = commands.shift();
116
- if (command === 'SLEEP') {
117
- return setTimeout(processCommand, 5000);
118
- }
119
-
120
- if (Array.isArray(command)) {
121
- let i = 0;
122
- let send = function() {
123
- if (i >= command.length) {
124
- return;
125
- }
126
-
127
- let part = command[i++];
128
-
129
- socket.write(Buffer.from(part + (i >= command.length ? '\r\n' : ''), 'binary'));
130
- if (debug) {
131
- console.log('C: ' + part);
132
- }
133
- setTimeout(send, 10);
134
- };
135
-
136
- send();
137
- } else {
138
- socket.write(Buffer.from(command + '\r\n', 'binary'));
139
- if (debug) {
140
- console.log('C: ' + command);
141
- }
142
- }
143
- }, 100);
144
- };
145
- processCommand();
146
- }
147
- };
148
-
149
- socket.on('data', onData);
150
- }
151
- );
152
- }