mxroute-cli 0.1.2 → 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.
Files changed (105) hide show
  1. package/README.md +524 -241
  2. package/dist/commands/accounts.js +19 -59
  3. package/dist/commands/accounts.js.map +1 -1
  4. package/dist/commands/aliases.js +8 -57
  5. package/dist/commands/aliases.js.map +1 -1
  6. package/dist/commands/audit.d.ts +1 -0
  7. package/dist/commands/audit.js +278 -0
  8. package/dist/commands/audit.js.map +1 -0
  9. package/dist/commands/auth.d.ts +0 -1
  10. package/dist/commands/auth.js +0 -69
  11. package/dist/commands/auth.js.map +1 -1
  12. package/dist/commands/autoresponder.js +10 -59
  13. package/dist/commands/autoresponder.js.map +1 -1
  14. package/dist/commands/benchmark.d.ts +1 -0
  15. package/dist/commands/benchmark.js +134 -0
  16. package/dist/commands/benchmark.js.map +1 -0
  17. package/dist/commands/bulk.d.ts +2 -0
  18. package/dist/commands/bulk.js +201 -0
  19. package/dist/commands/bulk.js.map +1 -0
  20. package/dist/commands/catchall.js +5 -38
  21. package/dist/commands/catchall.js.map +1 -1
  22. package/dist/commands/completions.d.ts +1 -0
  23. package/dist/commands/completions.js +138 -0
  24. package/dist/commands/completions.js.map +1 -0
  25. package/dist/commands/config.d.ts +1 -0
  26. package/dist/commands/config.js +42 -0
  27. package/dist/commands/config.js.map +1 -1
  28. package/dist/commands/cron.d.ts +2 -0
  29. package/dist/commands/cron.js +114 -0
  30. package/dist/commands/cron.js.map +1 -0
  31. package/dist/commands/diff.d.ts +1 -0
  32. package/dist/commands/diff.js +125 -0
  33. package/dist/commands/diff.js.map +1 -0
  34. package/dist/commands/dns-setup.d.ts +1 -0
  35. package/dist/commands/dns-setup.js +256 -0
  36. package/dist/commands/dns-setup.js.map +1 -0
  37. package/dist/commands/dns-watch.d.ts +1 -0
  38. package/dist/commands/dns-watch.js +67 -0
  39. package/dist/commands/dns-watch.js.map +1 -0
  40. package/dist/commands/dns.js +28 -6
  41. package/dist/commands/dns.js.map +1 -1
  42. package/dist/commands/dnsapi.js +10 -59
  43. package/dist/commands/dnsapi.js.map +1 -1
  44. package/dist/commands/doctor.d.ts +1 -0
  45. package/dist/commands/doctor.js +143 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/domains.js +4 -27
  48. package/dist/commands/domains.js.map +1 -1
  49. package/dist/commands/export-import.d.ts +2 -0
  50. package/dist/commands/export-import.js +189 -0
  51. package/dist/commands/export-import.js.map +1 -0
  52. package/dist/commands/filters.js +8 -57
  53. package/dist/commands/filters.js.map +1 -1
  54. package/dist/commands/forwarders.js +8 -57
  55. package/dist/commands/forwarders.js.map +1 -1
  56. package/dist/commands/ip.d.ts +1 -0
  57. package/dist/commands/ip.js +70 -0
  58. package/dist/commands/ip.js.map +1 -0
  59. package/dist/commands/lists.js +15 -80
  60. package/dist/commands/lists.js.map +1 -1
  61. package/dist/commands/monitor.d.ts +4 -0
  62. package/dist/commands/monitor.js +189 -0
  63. package/dist/commands/monitor.js.map +1 -0
  64. package/dist/commands/open.d.ts +1 -0
  65. package/dist/commands/open.js +53 -0
  66. package/dist/commands/open.js.map +1 -0
  67. package/dist/commands/quota.js +11 -48
  68. package/dist/commands/quota.js.map +1 -1
  69. package/dist/commands/send.d.ts +1 -0
  70. package/dist/commands/send.js +43 -1
  71. package/dist/commands/send.js.map +1 -1
  72. package/dist/commands/share.d.ts +1 -0
  73. package/dist/commands/share.js +217 -0
  74. package/dist/commands/share.js.map +1 -0
  75. package/dist/commands/spam.js +9 -42
  76. package/dist/commands/spam.js.map +1 -1
  77. package/dist/commands/status.js +62 -30
  78. package/dist/commands/status.js.map +1 -1
  79. package/dist/commands/troubleshoot.js.map +1 -1
  80. package/dist/commands/webhook.d.ts +3 -0
  81. package/dist/commands/webhook.js +124 -0
  82. package/dist/commands/webhook.js.map +1 -0
  83. package/dist/commands/whoami.d.ts +1 -0
  84. package/dist/commands/whoami.js +40 -0
  85. package/dist/commands/whoami.js.map +1 -0
  86. package/dist/index.js +171 -6
  87. package/dist/index.js.map +1 -1
  88. package/dist/mcp.js.map +1 -1
  89. package/dist/utils/blacklist.d.ts +17 -0
  90. package/dist/utils/blacklist.js +65 -0
  91. package/dist/utils/blacklist.js.map +1 -0
  92. package/dist/utils/directadmin.js +1 -1
  93. package/dist/utils/directadmin.js.map +1 -1
  94. package/dist/utils/dns.d.ts +1 -1
  95. package/dist/utils/dns.js +3 -3
  96. package/dist/utils/dns.js.map +1 -1
  97. package/dist/utils/registrars.d.ts +35 -0
  98. package/dist/utils/registrars.js +324 -0
  99. package/dist/utils/registrars.js.map +1 -0
  100. package/dist/utils/shared.d.ts +20 -0
  101. package/dist/utils/shared.js +64 -0
  102. package/dist/utils/shared.js.map +1 -0
  103. package/dist/utils/theme.js +0 -1
  104. package/dist/utils/theme.js.map +1 -1
  105. 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"}
@@ -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
- function getCreds() {
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
- // Pick domain
90
- if (!domain) {
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, domain);
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}@${domain}`, value: 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}@${domain} to ${quotaLabel}?`,
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, domain, user, quotaNum);
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}@${domain}`));
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}@${domain}`, 0), theme_1.theme.keyValue('Quota', quotaLabel, 0)].join('\n'), 'Quota Updated'));
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":"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"}
1
+ {"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/commands/quota.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ interface SendOptions {
4
4
  body?: string;
5
5
  html?: boolean;
6
6
  from?: string;
7
+ file?: string;
7
8
  }
8
9
  export declare function sendCommand(options: SendOptions): Promise<void>;
9
10
  export {};
@@ -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 setup')} first.\n`));
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":"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"}
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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"}
@@ -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
- function getCreds() {
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
  {