mxroute-cli 0.1.3 → 0.2.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/README.md +524 -241
- package/dist/commands/accounts.js +19 -59
- package/dist/commands/accounts.js.map +1 -1
- package/dist/commands/aliases.js +8 -57
- package/dist/commands/aliases.js.map +1 -1
- package/dist/commands/audit.d.ts +1 -0
- package/dist/commands/audit.js +278 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +0 -69
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/autoresponder.js +10 -59
- package/dist/commands/autoresponder.js.map +1 -1
- package/dist/commands/benchmark.d.ts +1 -0
- package/dist/commands/benchmark.js +134 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/bulk.d.ts +2 -0
- package/dist/commands/bulk.js +201 -0
- package/dist/commands/bulk.js.map +1 -0
- package/dist/commands/catchall.js +5 -38
- package/dist/commands/catchall.js.map +1 -1
- package/dist/commands/completions.d.ts +1 -0
- package/dist/commands/completions.js +138 -0
- package/dist/commands/completions.js.map +1 -0
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +42 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/cron.d.ts +2 -0
- package/dist/commands/cron.js +114 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/diff.d.ts +1 -0
- package/dist/commands/diff.js +125 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/dns-setup.d.ts +1 -0
- package/dist/commands/dns-setup.js +256 -0
- package/dist/commands/dns-setup.js.map +1 -0
- package/dist/commands/dns-watch.d.ts +1 -0
- package/dist/commands/dns-watch.js +67 -0
- package/dist/commands/dns-watch.js.map +1 -0
- package/dist/commands/dns.js +28 -6
- package/dist/commands/dns.js.map +1 -1
- package/dist/commands/dnsapi.js +10 -59
- package/dist/commands/dnsapi.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +143 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domains.js +4 -27
- package/dist/commands/domains.js.map +1 -1
- package/dist/commands/export-import.d.ts +2 -0
- package/dist/commands/export-import.js +189 -0
- package/dist/commands/export-import.js.map +1 -0
- package/dist/commands/filters.js +8 -57
- package/dist/commands/filters.js.map +1 -1
- package/dist/commands/forwarders.js +8 -57
- package/dist/commands/forwarders.js.map +1 -1
- package/dist/commands/ip.d.ts +1 -0
- package/dist/commands/ip.js +70 -0
- package/dist/commands/ip.js.map +1 -0
- package/dist/commands/lists.js +15 -80
- package/dist/commands/lists.js.map +1 -1
- package/dist/commands/monitor.d.ts +4 -0
- package/dist/commands/monitor.js +189 -0
- package/dist/commands/monitor.js.map +1 -0
- package/dist/commands/open.d.ts +1 -0
- package/dist/commands/open.js +53 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/quota.js +11 -48
- package/dist/commands/quota.js.map +1 -1
- package/dist/commands/send.d.ts +1 -0
- package/dist/commands/send.js +43 -1
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/share.d.ts +1 -0
- package/dist/commands/share.js +217 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/spam.js +9 -42
- package/dist/commands/spam.js.map +1 -1
- package/dist/commands/troubleshoot.js.map +1 -1
- package/dist/commands/webhook.d.ts +3 -0
- package/dist/commands/webhook.js +124 -0
- package/dist/commands/webhook.js.map +1 -0
- package/dist/commands/whoami.d.ts +1 -0
- package/dist/commands/whoami.js +40 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +171 -6
- package/dist/index.js.map +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/utils/blacklist.d.ts +17 -0
- package/dist/utils/blacklist.js +65 -0
- package/dist/utils/blacklist.js.map +1 -0
- package/dist/utils/directadmin.js +1 -1
- package/dist/utils/directadmin.js.map +1 -1
- package/dist/utils/dns.d.ts +1 -1
- package/dist/utils/dns.js +3 -3
- package/dist/utils/dns.js.map +1 -1
- package/dist/utils/registrars.d.ts +35 -0
- package/dist/utils/registrars.js +324 -0
- package/dist/utils/registrars.js.map +1 -0
- package/dist/utils/shared.d.ts +20 -0
- package/dist/utils/shared.js +64 -0
- package/dist/utils/shared.js.map +1 -0
- package/dist/utils/theme.js +0 -1
- package/dist/utils/theme.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.openCommand = openCommand;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const theme_1 = require("../utils/theme");
|
|
10
|
+
const config_1 = require("../utils/config");
|
|
11
|
+
async function openCommand(target) {
|
|
12
|
+
const config = (0, config_1.getConfig)();
|
|
13
|
+
const server = config.server ? `${config.server}.mxrouting.net` : '';
|
|
14
|
+
const urls = {
|
|
15
|
+
panel: { url: 'https://panel.mxroute.com', label: 'Control Panel' },
|
|
16
|
+
management: { url: 'https://management.mxroute.com', label: 'Management Panel' },
|
|
17
|
+
webmail: {
|
|
18
|
+
url: server ? `https://${server}/roundcube` : 'https://panel.mxroute.com',
|
|
19
|
+
label: 'Webmail (Roundcube)',
|
|
20
|
+
},
|
|
21
|
+
crossbox: { url: server ? `https://${server}/crossbox` : 'https://panel.mxroute.com', label: 'Webmail (Crossbox)' },
|
|
22
|
+
whitelist: { url: 'https://whitelistrequest.mxrouting.net', label: 'Whitelist Request' },
|
|
23
|
+
mailtester: { url: 'https://mail-tester.com', label: 'Mail Tester' },
|
|
24
|
+
};
|
|
25
|
+
if (!target) {
|
|
26
|
+
const { selected } = await inquirer_1.default.prompt([
|
|
27
|
+
{
|
|
28
|
+
type: 'list',
|
|
29
|
+
name: 'selected',
|
|
30
|
+
message: 'Open:',
|
|
31
|
+
choices: Object.entries(urls).map(([key, val]) => ({
|
|
32
|
+
name: `${val.label} (${val.url})`,
|
|
33
|
+
value: key,
|
|
34
|
+
})),
|
|
35
|
+
},
|
|
36
|
+
]);
|
|
37
|
+
target = selected;
|
|
38
|
+
}
|
|
39
|
+
const entry = urls[target];
|
|
40
|
+
if (!entry) {
|
|
41
|
+
console.log(theme_1.theme.error(`\n Unknown target. Options: ${Object.keys(urls).join(', ')}\n`));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
|
|
45
|
+
try {
|
|
46
|
+
(0, child_process_1.execSync)(`${cmd} "${entry.url}"`, { stdio: 'ignore' });
|
|
47
|
+
console.log(theme_1.theme.success(`\n ${theme_1.theme.statusIcon('pass')} Opened ${entry.label}\n`));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
console.log(theme_1.theme.muted(`\n Open manually: ${entry.url}\n`));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":";;;;;AAKA,kCA4CC;AAjDD,iDAAyC;AACzC,wDAAgC;AAChC,0CAAuC;AACvC,4CAA4C;AAErC,KAAK,UAAU,WAAW,CAAC,MAAe;IAC/C,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAErE,MAAM,IAAI,GAAmD;QAC3D,KAAK,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,KAAK,EAAE,eAAe,EAAE;QACnE,UAAU,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE,KAAK,EAAE,kBAAkB,EAAE;QAChF,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,YAAY,CAAC,CAAC,CAAC,2BAA2B;YACzE,KAAK,EAAE,qBAAqB;SAC7B;QACD,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,WAAW,CAAC,CAAC,CAAC,2BAA2B,EAAE,KAAK,EAAE,oBAAoB,EAAE;QACnH,SAAS,EAAE,EAAE,GAAG,EAAE,wCAAwC,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACxF,UAAU,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,EAAE;KACrE,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjD,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,GAAG;oBACjC,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IACzG,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,GAAG,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,OAAO,CAAC,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
package/dist/commands/quota.js
CHANGED
|
@@ -9,16 +9,8 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
9
9
|
const ora_1 = __importDefault(require("ora"));
|
|
10
10
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
11
|
const theme_1 = require("../utils/theme");
|
|
12
|
-
const config_1 = require("../utils/config");
|
|
13
12
|
const directadmin_1 = require("../utils/directadmin");
|
|
14
|
-
|
|
15
|
-
const config = (0, config_1.getConfig)();
|
|
16
|
-
if (!config.daUsername || !config.daLoginKey) {
|
|
17
|
-
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} Not authenticated. Run ${theme_1.theme.bold('mxroute auth login')} first.\n`));
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
20
|
-
return { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
|
|
21
|
-
}
|
|
13
|
+
const shared_1 = require("../utils/shared");
|
|
22
14
|
function buildBar(used, total, width = 20) {
|
|
23
15
|
if (total <= 0)
|
|
24
16
|
return chalk_1.default.hex('#7C8DB0')('unlimited');
|
|
@@ -40,7 +32,7 @@ function formatSize(mb) {
|
|
|
40
32
|
return `${mb}MB`;
|
|
41
33
|
}
|
|
42
34
|
async function quotaOverview() {
|
|
43
|
-
const creds = getCreds();
|
|
35
|
+
const creds = (0, shared_1.getCreds)();
|
|
44
36
|
console.log(theme_1.theme.heading('Account Quota Overview'));
|
|
45
37
|
const spinner = (0, ora_1.default)({ text: 'Fetching quota information...', spinner: 'dots12', color: 'cyan' }).start();
|
|
46
38
|
try {
|
|
@@ -85,41 +77,12 @@ async function quotaOverview() {
|
|
|
85
77
|
}
|
|
86
78
|
}
|
|
87
79
|
async function quotaSet(domain) {
|
|
88
|
-
const creds = getCreds();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const config = (0, config_1.getConfig)();
|
|
92
|
-
if (config.domain) {
|
|
93
|
-
domain = config.domain;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
const domSpinner = (0, ora_1.default)({ text: 'Fetching domains...', spinner: 'dots12', color: 'cyan' }).start();
|
|
97
|
-
const domains = await (0, directadmin_1.listDomains)(creds);
|
|
98
|
-
domSpinner.stop();
|
|
99
|
-
if (domains.length === 0) {
|
|
100
|
-
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found on this account.\n`));
|
|
101
|
-
process.exit(1);
|
|
102
|
-
}
|
|
103
|
-
if (domains.length === 1) {
|
|
104
|
-
domain = domains[0];
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
const { selected } = await inquirer_1.default.prompt([
|
|
108
|
-
{
|
|
109
|
-
type: 'list',
|
|
110
|
-
name: 'selected',
|
|
111
|
-
message: 'Select domain:',
|
|
112
|
-
choices: domains,
|
|
113
|
-
},
|
|
114
|
-
]);
|
|
115
|
-
domain = selected;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
console.log(theme_1.theme.heading(`Set Email Quota on ${domain}`));
|
|
80
|
+
const creds = (0, shared_1.getCreds)();
|
|
81
|
+
const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
|
|
82
|
+
console.log(theme_1.theme.heading(`Set Email Quota on ${targetDomain}`));
|
|
120
83
|
const spinner = (0, ora_1.default)({ text: 'Fetching accounts...', spinner: 'dots12', color: 'cyan' }).start();
|
|
121
84
|
try {
|
|
122
|
-
const accounts = await (0, directadmin_1.listEmailAccounts)(creds,
|
|
85
|
+
const accounts = await (0, directadmin_1.listEmailAccounts)(creds, targetDomain);
|
|
123
86
|
spinner.stop();
|
|
124
87
|
if (accounts.length === 0) {
|
|
125
88
|
console.log(theme_1.theme.muted(' No email accounts found.\n'));
|
|
@@ -130,7 +93,7 @@ async function quotaSet(domain) {
|
|
|
130
93
|
type: 'list',
|
|
131
94
|
name: 'user',
|
|
132
95
|
message: 'Select account:',
|
|
133
|
-
choices: accounts.map((a) => ({ name: `${a}@${
|
|
96
|
+
choices: accounts.map((a) => ({ name: `${a}@${targetDomain}`, value: a })),
|
|
134
97
|
},
|
|
135
98
|
]);
|
|
136
99
|
const { quota } = await inquirer_1.default.prompt([
|
|
@@ -155,7 +118,7 @@ async function quotaSet(domain) {
|
|
|
155
118
|
{
|
|
156
119
|
type: 'confirm',
|
|
157
120
|
name: 'confirm',
|
|
158
|
-
message: `Set quota for ${user}@${
|
|
121
|
+
message: `Set quota for ${user}@${targetDomain} to ${quotaLabel}?`,
|
|
159
122
|
default: true,
|
|
160
123
|
},
|
|
161
124
|
]);
|
|
@@ -164,15 +127,15 @@ async function quotaSet(domain) {
|
|
|
164
127
|
return;
|
|
165
128
|
}
|
|
166
129
|
const setSpinner = (0, ora_1.default)({ text: 'Updating quota...', spinner: 'dots12', color: 'cyan' }).start();
|
|
167
|
-
const result = await (0, directadmin_1.changeEmailQuota)(creds,
|
|
130
|
+
const result = await (0, directadmin_1.changeEmailQuota)(creds, targetDomain, user, quotaNum);
|
|
168
131
|
if (result.error && result.error !== '0') {
|
|
169
132
|
setSpinner.fail(chalk_1.default.red('Failed to update quota'));
|
|
170
133
|
console.log(theme_1.theme.error(` ${result.text || JSON.stringify(result)}\n`));
|
|
171
134
|
}
|
|
172
135
|
else {
|
|
173
|
-
setSpinner.succeed(chalk_1.default.green(`Quota updated for ${user}@${
|
|
136
|
+
setSpinner.succeed(chalk_1.default.green(`Quota updated for ${user}@${targetDomain}`));
|
|
174
137
|
console.log('');
|
|
175
|
-
console.log(theme_1.theme.box([theme_1.theme.keyValue('Account', `${user}@${
|
|
138
|
+
console.log(theme_1.theme.box([theme_1.theme.keyValue('Account', `${user}@${targetDomain}`, 0), theme_1.theme.keyValue('Quota', quotaLabel, 0)].join('\n'), 'Quota Updated'));
|
|
176
139
|
console.log('');
|
|
177
140
|
}
|
|
178
141
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/send.d.ts
CHANGED
package/dist/commands/send.js
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.sendCommand = sendCommand;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
7
41
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
42
|
const ora_1 = __importDefault(require("ora"));
|
|
9
43
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
@@ -14,7 +48,7 @@ async function sendCommand(options) {
|
|
|
14
48
|
console.log(theme_1.theme.heading('Send Email'));
|
|
15
49
|
const config = (0, config_1.getConfig)();
|
|
16
50
|
if (!config.server || !config.username || !config.password) {
|
|
17
|
-
console.log(theme_1.theme.error(` ${theme_1.theme.statusIcon('fail')} Not configured. Run ${theme_1.theme.bold('mxroute config
|
|
51
|
+
console.log(theme_1.theme.error(` ${theme_1.theme.statusIcon('fail')} Not configured. Run ${theme_1.theme.bold('mxroute config smtp')} first.\n`));
|
|
18
52
|
process.exit(1);
|
|
19
53
|
}
|
|
20
54
|
const answers = {};
|
|
@@ -40,6 +74,14 @@ async function sendCommand(options) {
|
|
|
40
74
|
]);
|
|
41
75
|
answers.subject = res.subject;
|
|
42
76
|
}
|
|
77
|
+
if (options.file) {
|
|
78
|
+
if (!fs.existsSync(options.file)) {
|
|
79
|
+
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} File not found: ${options.file}\n`));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
options.body = fs.readFileSync(options.file, 'utf-8');
|
|
83
|
+
options.html = options.file.endsWith('.html') || options.html;
|
|
84
|
+
}
|
|
43
85
|
if (!options.body) {
|
|
44
86
|
const res = await inquirer_1.default.prompt([
|
|
45
87
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function shareCommand(email?: string): Promise<void>;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.shareCommand = shareCommand;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
42
|
+
const theme_1 = require("../utils/theme");
|
|
43
|
+
const config_1 = require("../utils/config");
|
|
44
|
+
const shared_1 = require("../utils/shared");
|
|
45
|
+
const directadmin_1 = require("../utils/directadmin");
|
|
46
|
+
async function shareCommand(email) {
|
|
47
|
+
const config = (0, config_1.getConfig)();
|
|
48
|
+
const server = config.server ? `${config.server}.mxrouting.net` : '';
|
|
49
|
+
if (!server) {
|
|
50
|
+
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} Run ${theme_1.theme.bold('mxroute config setup')} first.\n`));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// If no email specified, pick from accounts
|
|
54
|
+
if (!email) {
|
|
55
|
+
if (config.daUsername && config.daLoginKey) {
|
|
56
|
+
const creds = (0, shared_1.getCreds)();
|
|
57
|
+
const domain = await (0, shared_1.pickDomain)(creds);
|
|
58
|
+
const accounts = await (0, directadmin_1.listEmailAccounts)(creds, domain);
|
|
59
|
+
if (accounts.length > 0) {
|
|
60
|
+
const { selected } = await inquirer_1.default.prompt([
|
|
61
|
+
{
|
|
62
|
+
type: 'list',
|
|
63
|
+
name: 'selected',
|
|
64
|
+
message: 'Generate setup instructions for:',
|
|
65
|
+
choices: accounts.map((a) => `${a}@${domain}`),
|
|
66
|
+
},
|
|
67
|
+
]);
|
|
68
|
+
email = selected;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!email) {
|
|
72
|
+
const { manualEmail } = await inquirer_1.default.prompt([
|
|
73
|
+
{
|
|
74
|
+
type: 'input',
|
|
75
|
+
name: 'manualEmail',
|
|
76
|
+
message: theme_1.theme.secondary('Email address:'),
|
|
77
|
+
validate: (input) => (input.includes('@') ? true : 'Enter a valid email'),
|
|
78
|
+
},
|
|
79
|
+
]);
|
|
80
|
+
email = manualEmail;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const { format } = await inquirer_1.default.prompt([
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
name: 'format',
|
|
87
|
+
message: 'Output format:',
|
|
88
|
+
choices: [
|
|
89
|
+
{ name: 'Terminal (print settings)', value: 'terminal' },
|
|
90
|
+
{ name: 'HTML file (shareable page)', value: 'html' },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
]);
|
|
94
|
+
if (format === 'terminal') {
|
|
95
|
+
printTerminalConfig(email, server);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
await generateHtml(email, server);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function printTerminalConfig(email, server) {
|
|
102
|
+
console.log(theme_1.theme.heading(`Email Setup: ${email}`));
|
|
103
|
+
console.log(theme_1.theme.subheading('Incoming Mail (IMAP)'));
|
|
104
|
+
console.log(theme_1.theme.keyValue('Server', server));
|
|
105
|
+
console.log(theme_1.theme.keyValue('Port', '993'));
|
|
106
|
+
console.log(theme_1.theme.keyValue('Encryption', 'SSL/TLS'));
|
|
107
|
+
console.log(theme_1.theme.keyValue('Username', email));
|
|
108
|
+
console.log(theme_1.theme.keyValue('Password', '(your email password)'));
|
|
109
|
+
console.log('');
|
|
110
|
+
console.log(theme_1.theme.subheading('Outgoing Mail (SMTP)'));
|
|
111
|
+
console.log(theme_1.theme.keyValue('Server', server));
|
|
112
|
+
console.log(theme_1.theme.keyValue('Port', '465'));
|
|
113
|
+
console.log(theme_1.theme.keyValue('Encryption', 'SSL/TLS'));
|
|
114
|
+
console.log(theme_1.theme.keyValue('Username', email));
|
|
115
|
+
console.log(theme_1.theme.keyValue('Password', '(your email password)'));
|
|
116
|
+
console.log(theme_1.theme.keyValue('Auth', 'Required'));
|
|
117
|
+
console.log('');
|
|
118
|
+
console.log(theme_1.theme.subheading('Webmail'));
|
|
119
|
+
console.log(theme_1.theme.keyValue('Roundcube', `https://${server}/roundcube`));
|
|
120
|
+
console.log(theme_1.theme.keyValue('Crossbox', `https://${server}/crossbox`));
|
|
121
|
+
console.log('');
|
|
122
|
+
console.log(theme_1.theme.subheading('CalDAV / CardDAV'));
|
|
123
|
+
console.log(theme_1.theme.keyValue('Server', 'https://dav.mxroute.com'));
|
|
124
|
+
console.log(theme_1.theme.keyValue('Username', email));
|
|
125
|
+
console.log('');
|
|
126
|
+
}
|
|
127
|
+
async function generateHtml(email, server) {
|
|
128
|
+
const filename = `email-setup-${email.replace('@', '-at-')}.html`;
|
|
129
|
+
const html = `<!DOCTYPE html>
|
|
130
|
+
<html lang="en">
|
|
131
|
+
<head>
|
|
132
|
+
<meta charset="UTF-8">
|
|
133
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
134
|
+
<title>Email Setup — ${email}</title>
|
|
135
|
+
<style>
|
|
136
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
137
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; background: #0f0f23; color: #e0e0e0; min-height: 100vh; padding: 2rem; }
|
|
138
|
+
.container { max-width: 600px; margin: 0 auto; }
|
|
139
|
+
h1 { color: #00D9FF; font-size: 1.5rem; margin-bottom: 0.5rem; }
|
|
140
|
+
h2 { color: #6C63FF; font-size: 1.1rem; margin: 1.5rem 0 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid #222; }
|
|
141
|
+
.subtitle { color: #7C8DB0; margin-bottom: 2rem; }
|
|
142
|
+
.row { display: flex; padding: 0.4rem 0; }
|
|
143
|
+
.label { color: #7C8DB0; width: 140px; flex-shrink: 0; }
|
|
144
|
+
.value { color: #fff; font-family: 'SF Mono', monospace; word-break: break-all; }
|
|
145
|
+
.value.highlight { color: #00E676; }
|
|
146
|
+
.card { background: #1a1a2e; border: 1px solid #222; border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 1rem; }
|
|
147
|
+
.note { color: #7C8DB0; font-size: 0.85rem; margin-top: 2rem; padding-top: 1rem; border-top: 1px solid #222; }
|
|
148
|
+
.badge { display: inline-block; background: #6C63FF; color: white; padding: 2px 8px; border-radius: 4px; font-size: 0.75rem; margin-left: 8px; }
|
|
149
|
+
@media (prefers-color-scheme: light) {
|
|
150
|
+
body { background: #f5f5f5; color: #333; }
|
|
151
|
+
.card { background: #fff; border-color: #ddd; }
|
|
152
|
+
.label { color: #666; }
|
|
153
|
+
.value { color: #111; }
|
|
154
|
+
h1 { color: #6C63FF; }
|
|
155
|
+
}
|
|
156
|
+
</style>
|
|
157
|
+
</head>
|
|
158
|
+
<body>
|
|
159
|
+
<div class="container">
|
|
160
|
+
<h1>Email Setup</h1>
|
|
161
|
+
<p class="subtitle">${email}</p>
|
|
162
|
+
|
|
163
|
+
<h2>Incoming Mail (IMAP) <span class="badge">Recommended</span></h2>
|
|
164
|
+
<div class="card">
|
|
165
|
+
<div class="row"><span class="label">Server</span><span class="value">${server}</span></div>
|
|
166
|
+
<div class="row"><span class="label">Port</span><span class="value highlight">993</span></div>
|
|
167
|
+
<div class="row"><span class="label">Encryption</span><span class="value">SSL/TLS</span></div>
|
|
168
|
+
<div class="row"><span class="label">Username</span><span class="value">${email}</span></div>
|
|
169
|
+
<div class="row"><span class="label">Password</span><span class="value">Your email password</span></div>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<h2>Outgoing Mail (SMTP)</h2>
|
|
173
|
+
<div class="card">
|
|
174
|
+
<div class="row"><span class="label">Server</span><span class="value">${server}</span></div>
|
|
175
|
+
<div class="row"><span class="label">Port</span><span class="value highlight">465</span></div>
|
|
176
|
+
<div class="row"><span class="label">Encryption</span><span class="value">SSL/TLS</span></div>
|
|
177
|
+
<div class="row"><span class="label">Username</span><span class="value">${email}</span></div>
|
|
178
|
+
<div class="row"><span class="label">Password</span><span class="value">Your email password</span></div>
|
|
179
|
+
<div class="row"><span class="label">Authentication</span><span class="value">Required</span></div>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<h2>Webmail Access</h2>
|
|
183
|
+
<div class="card">
|
|
184
|
+
<div class="row"><span class="label">Roundcube</span><span class="value"><a href="https://${server}/roundcube" style="color: #00D9FF">https://${server}/roundcube</a></span></div>
|
|
185
|
+
<div class="row"><span class="label">Crossbox</span><span class="value"><a href="https://${server}/crossbox" style="color: #00D9FF">https://${server}/crossbox</a></span></div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<h2>Calendar & Contacts (CalDAV/CardDAV)</h2>
|
|
189
|
+
<div class="card">
|
|
190
|
+
<div class="row"><span class="label">Server</span><span class="value">https://dav.mxroute.com</span></div>
|
|
191
|
+
<div class="row"><span class="label">Username</span><span class="value">${email}</span></div>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<h2>Alternative Ports</h2>
|
|
195
|
+
<div class="card">
|
|
196
|
+
<div class="row"><span class="label">IMAP</span><span class="value">143 (STARTTLS)</span></div>
|
|
197
|
+
<div class="row"><span class="label">SMTP</span><span class="value">587 (STARTTLS) or 2525 (if 587 blocked)</span></div>
|
|
198
|
+
<div class="row"><span class="label">POP3</span><span class="value">995 (SSL) or 110 (STARTTLS)</span></div>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
<p class="note">Generated by <strong>mxroute-cli</strong> — ${new Date().toLocaleDateString()}</p>
|
|
202
|
+
</div>
|
|
203
|
+
</body>
|
|
204
|
+
</html>`;
|
|
205
|
+
const { outputFile } = await inquirer_1.default.prompt([
|
|
206
|
+
{
|
|
207
|
+
type: 'input',
|
|
208
|
+
name: 'outputFile',
|
|
209
|
+
message: theme_1.theme.secondary('Output file:'),
|
|
210
|
+
default: filename,
|
|
211
|
+
},
|
|
212
|
+
]);
|
|
213
|
+
fs.writeFileSync(outputFile, html);
|
|
214
|
+
console.log(theme_1.theme.success(`\n ${theme_1.theme.statusIcon('pass')} Saved to ${outputFile}`));
|
|
215
|
+
console.log(theme_1.theme.muted(` Share this file with the user to help them set up their email client.\n`));
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/spam.js
CHANGED
|
@@ -11,44 +11,11 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
11
11
|
const ora_1 = __importDefault(require("ora"));
|
|
12
12
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
13
13
|
const theme_1 = require("../utils/theme");
|
|
14
|
-
const config_1 = require("../utils/config");
|
|
15
14
|
const directadmin_1 = require("../utils/directadmin");
|
|
16
|
-
|
|
17
|
-
const config = (0, config_1.getConfig)();
|
|
18
|
-
if (!config.daUsername || !config.daLoginKey) {
|
|
19
|
-
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} Not authenticated. Run ${theme_1.theme.bold('mxroute auth login')} first.\n`));
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
return { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
|
|
23
|
-
}
|
|
24
|
-
async function pickDomain(creds, domain) {
|
|
25
|
-
if (domain)
|
|
26
|
-
return domain;
|
|
27
|
-
const config = (0, config_1.getConfig)();
|
|
28
|
-
if (config.domain)
|
|
29
|
-
return config.domain;
|
|
30
|
-
const spinner = (0, ora_1.default)({ text: 'Fetching domains...', spinner: 'dots12', color: 'cyan' }).start();
|
|
31
|
-
const domains = await (0, directadmin_1.listDomains)(creds);
|
|
32
|
-
spinner.stop();
|
|
33
|
-
if (domains.length === 0) {
|
|
34
|
-
console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found.\n`));
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
if (domains.length === 1)
|
|
38
|
-
return domains[0];
|
|
39
|
-
const { selected } = await inquirer_1.default.prompt([
|
|
40
|
-
{
|
|
41
|
-
type: 'list',
|
|
42
|
-
name: 'selected',
|
|
43
|
-
message: 'Select domain:',
|
|
44
|
-
choices: domains,
|
|
45
|
-
},
|
|
46
|
-
]);
|
|
47
|
-
return selected;
|
|
48
|
-
}
|
|
15
|
+
const shared_1 = require("../utils/shared");
|
|
49
16
|
async function spamStatus(domain) {
|
|
50
|
-
const creds = getCreds();
|
|
51
|
-
const targetDomain = await pickDomain(creds, domain);
|
|
17
|
+
const creds = (0, shared_1.getCreds)();
|
|
18
|
+
const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
|
|
52
19
|
console.log(theme_1.theme.heading(`SpamAssassin: ${targetDomain}`));
|
|
53
20
|
const spinner = (0, ora_1.default)({ text: 'Fetching spam configuration...', spinner: 'dots12', color: 'cyan' }).start();
|
|
54
21
|
try {
|
|
@@ -75,8 +42,8 @@ async function spamStatus(domain) {
|
|
|
75
42
|
}
|
|
76
43
|
}
|
|
77
44
|
async function spamEnable(domain) {
|
|
78
|
-
const creds = getCreds();
|
|
79
|
-
const targetDomain = await pickDomain(creds, domain);
|
|
45
|
+
const creds = (0, shared_1.getCreds)();
|
|
46
|
+
const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
|
|
80
47
|
console.log(theme_1.theme.heading(`Enable SpamAssassin: ${targetDomain}`));
|
|
81
48
|
const spinner = (0, ora_1.default)({ text: 'Enabling SpamAssassin...', spinner: 'dots12', color: 'cyan' }).start();
|
|
82
49
|
try {
|
|
@@ -102,8 +69,8 @@ async function spamEnable(domain) {
|
|
|
102
69
|
}
|
|
103
70
|
}
|
|
104
71
|
async function spamDisable(domain) {
|
|
105
|
-
const creds = getCreds();
|
|
106
|
-
const targetDomain = await pickDomain(creds, domain);
|
|
72
|
+
const creds = (0, shared_1.getCreds)();
|
|
73
|
+
const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
|
|
107
74
|
console.log(theme_1.theme.heading(`Disable SpamAssassin: ${targetDomain}`));
|
|
108
75
|
const spinner = (0, ora_1.default)({ text: 'Disabling SpamAssassin...', spinner: 'dots12', color: 'cyan' }).start();
|
|
109
76
|
try {
|
|
@@ -126,8 +93,8 @@ async function spamDisable(domain) {
|
|
|
126
93
|
}
|
|
127
94
|
}
|
|
128
95
|
async function spamConfig(domain) {
|
|
129
|
-
const creds = getCreds();
|
|
130
|
-
const targetDomain = await pickDomain(creds, domain);
|
|
96
|
+
const creds = (0, shared_1.getCreds)();
|
|
97
|
+
const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
|
|
131
98
|
console.log(theme_1.theme.heading(`Configure SpamAssassin: ${targetDomain}`));
|
|
132
99
|
const answers = await inquirer_1.default.prompt([
|
|
133
100
|
{
|