This repository was archived by the owner on Sep 20, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathcli.js
More file actions
executable file
·69 lines (57 loc) · 1.88 KB
/
cli.js
File metadata and controls
executable file
·69 lines (57 loc) · 1.88 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
#!/usr/bin/env node
var _ = require('lodash');
var request = require('request');
var async = require('async');
var config = require('./config.json');
var services = {};
var reqOptions = {};
services = {
'listaccts': config.api + 'json-api/listaccts?api.version=1',
'listpopssingle': config.api + 'json-api/cpanel?cpanel_jsonapi_apiversion=3&cpanel_jsonapi_user=<%= user %>&cpanel_jsonapi_module=Email&cpanel_jsonapi_func=list_pops'
};
reqOptions = {
json: true,
headers: {
'Authorization': 'WHM root:' + config.credentials.hash
},
rejectUnauthorized: false
};
function onAccountsResponse(error, response, body) {
var data;
if (error) {
console.error(error);
} else {
if (response.statusCode == 200) {
data = body.data;
if (data.acct.length) {
async.eachLimit(data.acct, 3, function(account, cb) {
var url = _.template(services['listpopssingle'], account);
request.get(_.merge({url: url}, reqOptions), onEmailsResponse.bind(null, account, cb));
});
}
} else {
console.error('Error %s on listaccts.', response.statusCode);
}
}
}
function onEmailsResponse(account, cb, error, response, body) {
var data;
var line;
if (error) {
console.error('Error ' + error);
} else {
if (response.statusCode == 200) {
data = body.result.data;
if (data.length) {
data.forEach(function(email) {
line = account.owner + ',' + account.user + ',' + email.email;
console.log(line);
});
}
} else {
console.error('Error %s on listpopssingle.', response.statusCode);
}
}
cb();
}
request.get(_.merge({url: services['listaccts']}, reqOptions), onAccountsResponse);