mxroute-cli 0.1.3 → 0.3.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/fix.d.ts +1 -0
- package/dist/commands/fix.js +226 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/forwarders.js +8 -57
- package/dist/commands/forwarders.js.map +1 -1
- package/dist/commands/header-analyze.d.ts +2 -0
- package/dist/commands/header-analyze.js +177 -0
- package/dist/commands/header-analyze.js.map +1 -0
- 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/migrate.d.ts +1 -0
- package/dist/commands/migrate.js +161 -0
- package/dist/commands/migrate.js.map +1 -0
- 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/notify.d.ts +10 -0
- package/dist/commands/notify.js +153 -0
- package/dist/commands/notify.js.map +1 -0
- package/dist/commands/onboard.d.ts +1 -0
- package/dist/commands/onboard.js +220 -0
- package/dist/commands/onboard.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/report.d.ts +1 -0
- package/dist/commands/report.js +206 -0
- package/dist/commands/report.js.map +1 -0
- 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 +228 -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,206 @@
|
|
|
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.reportCommand = reportCommand;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const ora_1 = __importDefault(require("ora"));
|
|
42
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
43
|
+
const theme_1 = require("../utils/theme");
|
|
44
|
+
const config_1 = require("../utils/config");
|
|
45
|
+
const shared_1 = require("../utils/shared");
|
|
46
|
+
const directadmin_1 = require("../utils/directadmin");
|
|
47
|
+
const dns_1 = require("../utils/dns");
|
|
48
|
+
const blacklist_1 = require("../utils/blacklist");
|
|
49
|
+
async function reportCommand() {
|
|
50
|
+
const config = (0, config_1.getConfig)();
|
|
51
|
+
const creds = (0, shared_1.getCreds)();
|
|
52
|
+
console.log(theme_1.theme.heading('Infrastructure Report'));
|
|
53
|
+
const spinner = (0, ora_1.default)({ text: 'Generating report...', spinner: 'dots12', color: 'cyan' }).start();
|
|
54
|
+
try {
|
|
55
|
+
// Gather all data
|
|
56
|
+
const domains = await (0, directadmin_1.listDomains)(creds);
|
|
57
|
+
const [usage, userConfig] = await Promise.all([(0, directadmin_1.getQuotaUsage)(creds), (0, directadmin_1.getUserConfig)(creds)]);
|
|
58
|
+
const domainData = [];
|
|
59
|
+
for (const domain of domains) {
|
|
60
|
+
const [accounts, forwarders, autoresponders, catchAll, spamConfig, dnsResults] = await Promise.all([
|
|
61
|
+
(0, directadmin_1.listEmailAccounts)(creds, domain).catch(() => []),
|
|
62
|
+
(0, directadmin_1.listForwarders)(creds, domain).catch(() => []),
|
|
63
|
+
(0, directadmin_1.listAutoresponders)(creds, domain).catch(() => []),
|
|
64
|
+
(0, directadmin_1.getCatchAll)(creds, domain).catch(() => ''),
|
|
65
|
+
(0, directadmin_1.getSpamConfig)(creds, domain).catch(() => ({})),
|
|
66
|
+
(0, dns_1.runFullDnsCheck)(domain, config.server).catch(() => []),
|
|
67
|
+
]);
|
|
68
|
+
domainData.push({ domain, accounts, forwarders, autoresponders, catchAll, spamConfig, dnsResults });
|
|
69
|
+
}
|
|
70
|
+
// Blacklist check
|
|
71
|
+
let blacklistResults = [];
|
|
72
|
+
try {
|
|
73
|
+
const ip = await (0, blacklist_1.resolveServerIp)(`${config.server}.mxrouting.net`);
|
|
74
|
+
blacklistResults = await (0, blacklist_1.checkAllBlacklists)(ip);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
/* skip */
|
|
78
|
+
}
|
|
79
|
+
spinner.succeed('Data collected');
|
|
80
|
+
// Generate HTML
|
|
81
|
+
const html = generateReportHtml({
|
|
82
|
+
server: config.server,
|
|
83
|
+
daUsername: config.daUsername,
|
|
84
|
+
domains: domainData,
|
|
85
|
+
usage,
|
|
86
|
+
userConfig,
|
|
87
|
+
blacklistResults,
|
|
88
|
+
generatedAt: new Date().toISOString(),
|
|
89
|
+
});
|
|
90
|
+
const filename = `mxroute-report-${new Date().toISOString().split('T')[0]}.html`;
|
|
91
|
+
const { outputFile } = await inquirer_1.default.prompt([
|
|
92
|
+
{
|
|
93
|
+
type: 'input',
|
|
94
|
+
name: 'outputFile',
|
|
95
|
+
message: theme_1.theme.secondary('Output file:'),
|
|
96
|
+
default: filename,
|
|
97
|
+
},
|
|
98
|
+
]);
|
|
99
|
+
fs.writeFileSync(outputFile, html);
|
|
100
|
+
console.log(theme_1.theme.success(`\n ${theme_1.theme.statusIcon('pass')} Report saved to ${outputFile}`));
|
|
101
|
+
console.log(theme_1.theme.muted(` Open in a browser to view.\n`));
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
spinner.fail('Report generation failed');
|
|
105
|
+
console.log(theme_1.theme.error(` ${err.message}\n`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function generateReportHtml(data) {
|
|
109
|
+
const { server, domains, usage, blacklistResults, generatedAt } = data;
|
|
110
|
+
const totalAccounts = domains.reduce((s, d) => s + d.accounts.length, 0);
|
|
111
|
+
const totalForwarders = domains.reduce((s, d) => s + d.forwarders.length, 0);
|
|
112
|
+
const blacklisted = blacklistResults.filter((r) => r.listed).length;
|
|
113
|
+
let domainSections = '';
|
|
114
|
+
for (const d of domains) {
|
|
115
|
+
const dnsChecks = d.dnsResults || [];
|
|
116
|
+
const dnsPassed = dnsChecks.filter((r) => r.status === 'pass').length;
|
|
117
|
+
const dnsTotal = dnsChecks.length;
|
|
118
|
+
const dnsColor = dnsPassed === dnsTotal ? '#00E676' : dnsPassed >= dnsTotal - 2 ? '#FFD600' : '#FF5252';
|
|
119
|
+
const catchAllLabel = d.catchAll === ':fail:' ? 'Reject' : d.catchAll === ':blackhole:' ? 'Disabled' : d.catchAll || 'Not set';
|
|
120
|
+
domainSections += `
|
|
121
|
+
<div class="card">
|
|
122
|
+
<h3>${d.domain} <span class="dns-score" style="color:${dnsColor}">${dnsPassed}/${dnsTotal} DNS</span></h3>
|
|
123
|
+
<div class="grid">
|
|
124
|
+
<div class="stat"><span class="num">${d.accounts.length}</span><span class="label">Accounts</span></div>
|
|
125
|
+
<div class="stat"><span class="num">${d.forwarders.length}</span><span class="label">Forwarders</span></div>
|
|
126
|
+
<div class="stat"><span class="num">${d.autoresponders.length}</span><span class="label">Autoresponders</span></div>
|
|
127
|
+
</div>
|
|
128
|
+
<div class="detail"><strong>Catch-all:</strong> ${catchAllLabel}</div>
|
|
129
|
+
${d.accounts.length > 0 ? `<div class="detail"><strong>Accounts:</strong> ${d.accounts.map((a) => `${a}@${d.domain}`).join(', ')}</div>` : ''}
|
|
130
|
+
<div class="dns-list">
|
|
131
|
+
${dnsChecks.map((r) => `<span class="dns-item ${r.status}">${r.type}: ${r.status}</span>`).join(' ')}
|
|
132
|
+
</div>
|
|
133
|
+
</div>`;
|
|
134
|
+
}
|
|
135
|
+
return `<!DOCTYPE html>
|
|
136
|
+
<html lang="en">
|
|
137
|
+
<head>
|
|
138
|
+
<meta charset="UTF-8">
|
|
139
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
140
|
+
<title>MXroute Infrastructure Report</title>
|
|
141
|
+
<style>
|
|
142
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
143
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; background: #0a0a1a; color: #e0e0e0; padding: 2rem; }
|
|
144
|
+
.container { max-width: 900px; margin: 0 auto; }
|
|
145
|
+
h1 { color: #00D9FF; font-size: 2rem; margin-bottom: 0.25rem; }
|
|
146
|
+
h2 { color: #6C63FF; font-size: 1.3rem; margin: 2rem 0 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid #1a1a2e; }
|
|
147
|
+
h3 { color: #fff; font-size: 1.1rem; margin-bottom: 0.75rem; display: flex; justify-content: space-between; align-items: center; }
|
|
148
|
+
.subtitle { color: #7C8DB0; margin-bottom: 2rem; }
|
|
149
|
+
.overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
|
|
150
|
+
.overview-card { background: #1a1a2e; border: 1px solid #222; border-radius: 8px; padding: 1.25rem; text-align: center; }
|
|
151
|
+
.overview-card .num { font-size: 2rem; font-weight: bold; color: #00D9FF; display: block; }
|
|
152
|
+
.overview-card .label { color: #7C8DB0; font-size: 0.85rem; }
|
|
153
|
+
.card { background: #1a1a2e; border: 1px solid #222; border-radius: 8px; padding: 1.25rem; margin-bottom: 1rem; }
|
|
154
|
+
.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 0.75rem 0; }
|
|
155
|
+
.stat { text-align: center; }
|
|
156
|
+
.stat .num { font-size: 1.5rem; font-weight: bold; color: #00D9FF; display: block; }
|
|
157
|
+
.stat .label { color: #7C8DB0; font-size: 0.8rem; }
|
|
158
|
+
.detail { color: #aaa; font-size: 0.9rem; margin: 0.4rem 0; }
|
|
159
|
+
.dns-score { font-size: 0.85rem; font-weight: normal; }
|
|
160
|
+
.dns-list { margin-top: 0.75rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
|
|
161
|
+
.dns-item { font-size: 0.75rem; padding: 2px 8px; border-radius: 4px; }
|
|
162
|
+
.dns-item.pass { background: #00E67622; color: #00E676; }
|
|
163
|
+
.dns-item.fail { background: #FF525222; color: #FF5252; }
|
|
164
|
+
.dns-item.warn { background: #FFD60022; color: #FFD600; }
|
|
165
|
+
.dns-item.info { background: #448AFF22; color: #448AFF; }
|
|
166
|
+
.bl-clean { color: #00E676; }
|
|
167
|
+
.bl-listed { color: #FF5252; }
|
|
168
|
+
.footer { color: #555; font-size: 0.8rem; margin-top: 3rem; padding-top: 1rem; border-top: 1px solid #1a1a2e; }
|
|
169
|
+
@media (prefers-color-scheme: light) {
|
|
170
|
+
body { background: #f5f5f5; color: #333; }
|
|
171
|
+
.card, .overview-card { background: #fff; border-color: #ddd; }
|
|
172
|
+
.detail { color: #666; }
|
|
173
|
+
}
|
|
174
|
+
</style>
|
|
175
|
+
</head>
|
|
176
|
+
<body>
|
|
177
|
+
<div class="container">
|
|
178
|
+
<h1>MXroute Infrastructure Report</h1>
|
|
179
|
+
<p class="subtitle">Server: ${server}.mxrouting.net — Generated: ${new Date(generatedAt).toLocaleString()}</p>
|
|
180
|
+
|
|
181
|
+
<div class="overview">
|
|
182
|
+
<div class="overview-card"><span class="num">${domains.length}</span><span class="label">Domains</span></div>
|
|
183
|
+
<div class="overview-card"><span class="num">${totalAccounts}</span><span class="label">Email Accounts</span></div>
|
|
184
|
+
<div class="overview-card"><span class="num">${totalForwarders}</span><span class="label">Forwarders</span></div>
|
|
185
|
+
<div class="overview-card"><span class="num">${usage.quota || usage.disk || '?'} MB</span><span class="label">Disk Used</span></div>
|
|
186
|
+
<div class="overview-card"><span class="num ${blacklisted > 0 ? 'bl-listed' : 'bl-clean'}">${blacklisted > 0 ? blacklisted + ' listed' : 'Clean'}</span><span class="label">Blacklists (${blacklistResults.length})</span></div>
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
<h2>Domains</h2>
|
|
190
|
+
${domainSections}
|
|
191
|
+
|
|
192
|
+
${blacklistResults.length > 0
|
|
193
|
+
? `
|
|
194
|
+
<h2>IP Reputation</h2>
|
|
195
|
+
<div class="card">
|
|
196
|
+
${blacklistResults.map((r) => `<span class="dns-item ${r.listed ? 'fail' : 'pass'}">${r.list}: ${r.listed ? 'LISTED' : 'Clean'}</span>`).join(' ')}
|
|
197
|
+
</div>
|
|
198
|
+
`
|
|
199
|
+
: ''}
|
|
200
|
+
|
|
201
|
+
<p class="footer">Generated by mxroute-cli — https://github.com/t-rhex/mxroute-cli</p>
|
|
202
|
+
</div>
|
|
203
|
+
</body>
|
|
204
|
+
</html>`;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,sCAmEC;AAtFD,uCAAyB;AACzB,8CAAsB;AACtB,wDAAgC;AAChC,0CAAuC;AACvC,4CAA4C;AAC5C,4CAA2C;AAC3C,sDAS8B;AAC9B,sCAA+C;AAC/C,kDAAyE;AAElE,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhG,IAAI,CAAC;QACH,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,IAAA,2BAAa,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5F,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjG,IAAA,+BAAiB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAChD,IAAA,4BAAc,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC7C,IAAA,gCAAkB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBACjD,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC1C,IAAA,2BAAa,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAA,qBAAe,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;YAEH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,kBAAkB;QAClB,IAAI,gBAAgB,GAAU,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,IAAA,2BAAe,EAAC,GAAG,MAAM,CAAC,MAAM,gBAAgB,CAAC,CAAC;YACnE,gBAAgB,GAAG,MAAM,IAAA,8BAAkB,EAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,UAAU;QACZ,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAElC,gBAAgB;QAChB,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,UAAU;YACnB,KAAK;YACL,UAAU;YACV,gBAAgB;YAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAEjF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAC3C;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,aAAK,CAAC,SAAS,CAAC,cAAc,CAAC;gBACxC,OAAO,EAAE,QAAQ;aAClB;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,OAAO,CAAC,OAAO,aAAK,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,aAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAS;IACnC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEvE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAEzE,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC3E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;QAClC,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAExG,MAAM,aAAa,GACjB,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;QAE3G,cAAc,IAAI;;YAEV,CAAC,CAAC,MAAM,yCAAyC,QAAQ,KAAK,SAAS,IAAI,QAAQ;;8CAEjD,CAAC,CAAC,QAAQ,CAAC,MAAM;8CACjB,CAAC,CAAC,UAAU,CAAC,MAAM;8CACnB,CAAC,CAAC,cAAc,CAAC,MAAM;;wDAEb,aAAa;QAC7D,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;UAEjJ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;WAEtG,CAAC;IACV,CAAC;IAED,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4CuB,MAAM,+BAA+B,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE;;;mDAGxD,OAAO,CAAC,MAAM;mDACd,aAAa;mDACb,eAAe;mDACf,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG;kDACjC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,0CAA0C,gBAAgB,CAAC,MAAM;;;;IAIjN,cAAc;;IAGd,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC;;;MAGF,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;GAExJ;QACG,CAAC,CAAC,EACN;;;;;QAKM,CAAC;AACT,CAAC"}
|
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
|
{
|