UNPKG

2.27 kBJavaScriptView Raw
1var imap = require("imap-simple");
2var pop3 = require("poplib");
3var IMAPtest = function(useTLS, config, callback) {
4 var internalConfig = {};
5 if (!config.user) {
6 throw "NoUser";
7 }
8 internalConfig.user = config.user;
9 internalConfig.password = "";
10 if (config.password) {
11 internalConfig.password = config.password;
12 }
13 internalConfig.tls = false;
14 internalConfig.port = 143;
15 if (useTLS == true) {
16 internalConfig.tls = true;
17 internalConfig.port = 993;
18 }
19 if (config.port) {
20 internalConfig.port = config.port;
21 }
22 internalConfig.host = "localhost";
23 if (config.host) {
24 internalConfig.host = config.host;
25 }
26 internalConfig.authTimeout = 10000;
27 imap.connect(config, function(err, connection) {
28 if (err) {
29 callback(false);
30 } else {
31 callback(true);
32 connection.end();
33 }
34 return;
35 });
36 return;
37};
38var SecureImapWorks = function(config, callback) {
39 IMAPtest(true, config, callback);
40 return;
41};
42var InsecureImapWorks = function(config, callback) {
43 IMAPtest(false, config, callback);
44 return;
45};
46var defaultPopURL = "pop.gmail.com";
47var popTest = function(useSecurity, server, callback) {
48 var port = 110;
49 if (useSecurity == true) {
50 port = 995;
51 }
52 var fired = false;
53 var client = new pop3(port, server, {
54 tlserrs: false,
55 enabletls: useSecurity,
56 debug: false
57 });
58 client.on("connect", function(){
59 if (fired==false) {
60 fired = true;
61 client.quit();
62 callback(true);
63 }
64 });
65 var fail = function(screwUp) {
66 if (fired==false) {
67 fired = true;
68 callback(false);
69 }
70 };
71 client.on("error", fail);
72 client.on("invalid-state", fail);
73 client.on("locked", fail);
74 return;
75};
76var insecurePopTest = function(callback, url) {
77 var internalURL = defaultPopURL;
78 if (url) {
79 internalURL = url;
80 }
81 popTest(false, internalURL, callback);
82 return;
83};
84var securePopTest = function(callback, url) {
85 var internalURL = defaultPopURL;
86 if (url) {
87 internalURL = url;
88 }
89 popTest(true, internalURL, callback);
90 return;
91};
92var output = {};
93output.SecureImapWorks = SecureImapWorks;
94output.InsecureImapWorks = InsecureImapWorks;
95output.insecurePopTest = insecurePopTest;
96output.securePopTest = securePopTest;
97module.exports = exports = output;
\No newline at end of file