@calltelemetry/cli 0.15.1 → 1.0.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 +33 -0
- package/dist/commands/sftp.d.ts +3 -0
- package/dist/commands/sftp.d.ts.map +1 -0
- package/dist/commands/sftp.js +1586 -0
- package/dist/commands/sftp.js.map +1 -0
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/appliance-api.d.ts +149 -0
- package/dist/lib/appliance-api.d.ts.map +1 -0
- package/dist/lib/appliance-api.js +492 -0
- package/dist/lib/appliance-api.js.map +1 -0
- package/dist/lib/openapi.d.ts +129 -0
- package/dist/lib/openapi.d.ts.map +1 -0
- package/dist/lib/openapi.js +325 -0
- package/dist/lib/openapi.js.map +1 -0
- package/dist/lib/sftp.d.ts +231 -0
- package/dist/lib/sftp.d.ts.map +1 -0
- package/dist/lib/sftp.js +439 -0
- package/dist/lib/sftp.js.map +1 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/lib/version.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/utils/prompt.d.ts +14 -0
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +28 -0
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/table.d.ts +18 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/utils/table.js +97 -0
- package/dist/utils/table.js.map +1 -0
- package/package.json +1 -1
package/dist/lib/sftp.js
ADDED
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SFTP Action Account domain helpers.
|
|
3
|
+
*
|
|
4
|
+
* Paths and response envelopes here match the appliance OpenAPI contract
|
|
5
|
+
* (`sftp_action_accounts`, `sftp_monitoring`, `sftp_storage`, ...). Every
|
|
6
|
+
* command checks the live spec first so a missing route on an older release
|
|
7
|
+
* produces an actionable message instead of a raw 404.
|
|
8
|
+
*/
|
|
9
|
+
import { randomBytes } from 'node:crypto';
|
|
10
|
+
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { ApplianceApiError, parsePositiveInt, readJsonOption } from './appliance-api.js';
|
|
12
|
+
import { getOperation, hasOperation, listOperations, } from './openapi.js';
|
|
13
|
+
function asRecord(value) {
|
|
14
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
15
|
+
? value
|
|
16
|
+
: {};
|
|
17
|
+
}
|
|
18
|
+
function unwrapList(data, ...keys) {
|
|
19
|
+
if (Array.isArray(data))
|
|
20
|
+
return data;
|
|
21
|
+
const record = asRecord(data);
|
|
22
|
+
for (const key of keys) {
|
|
23
|
+
if (Array.isArray(record[key]))
|
|
24
|
+
return record[key];
|
|
25
|
+
}
|
|
26
|
+
const nested = asRecord(record.data);
|
|
27
|
+
for (const key of keys) {
|
|
28
|
+
if (Array.isArray(nested[key]))
|
|
29
|
+
return nested[key];
|
|
30
|
+
}
|
|
31
|
+
if (Array.isArray(record.data))
|
|
32
|
+
return record.data;
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
function unwrapRecord(data, key) {
|
|
36
|
+
const record = asRecord(data);
|
|
37
|
+
if (record[key] !== undefined && record[key] !== null)
|
|
38
|
+
return record[key];
|
|
39
|
+
const nested = asRecord(record.data);
|
|
40
|
+
if (nested[key] !== undefined && nested[key] !== null)
|
|
41
|
+
return nested[key];
|
|
42
|
+
return (record[key] ?? record.data ?? data);
|
|
43
|
+
}
|
|
44
|
+
/** Assert the installed release exposes an operation, with a release-aware error. */
|
|
45
|
+
export function requireOperation(spec, ref) {
|
|
46
|
+
try {
|
|
47
|
+
return getOperation(spec, ref);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new ApplianceApiError(`This appliance release does not expose the SFTP operation "${ref}". ` +
|
|
51
|
+
`Run "ct sftp api --list" to see the operations this release supports.`, { code: 'UNSUPPORTED_OPERATION', body: err.message });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function supportsOperation(spec, ref) {
|
|
55
|
+
return hasOperation(spec, ref);
|
|
56
|
+
}
|
|
57
|
+
// ── Accounts ─────────────────────────────────────────────────────────────
|
|
58
|
+
export const ACCOUNT_USERNAME_PATTERN = /^[A-Za-z0-9_.@-]{3,50}$/;
|
|
59
|
+
export function validateUsername(username) {
|
|
60
|
+
if (!ACCOUNT_USERNAME_PATTERN.test(username)) {
|
|
61
|
+
throw new ApplianceApiError('Username must be 3–50 characters and contain only letters, numbers, dots, underscores, hyphens, or @.');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function generateSftpPassword(length = 24) {
|
|
65
|
+
return randomBytes(Math.max(18, Math.ceil(length * 0.75)))
|
|
66
|
+
.toString('base64url')
|
|
67
|
+
.slice(0, length);
|
|
68
|
+
}
|
|
69
|
+
export function parseQuotaGb(value) {
|
|
70
|
+
if (value === undefined)
|
|
71
|
+
return undefined;
|
|
72
|
+
const trimmed = value.trim().toLowerCase();
|
|
73
|
+
if (trimmed === 'none' || trimmed === 'default' || trimmed === 'unlimited')
|
|
74
|
+
return null;
|
|
75
|
+
const parsed = Number(trimmed);
|
|
76
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
77
|
+
throw new ApplianceApiError('Quota must be a positive number of GB, or "none" to use the organization default.');
|
|
78
|
+
}
|
|
79
|
+
if (parsed > 10_000) {
|
|
80
|
+
throw new ApplianceApiError('Quota must be 10,000 GB (10 TB) or less.');
|
|
81
|
+
}
|
|
82
|
+
return parsed;
|
|
83
|
+
}
|
|
84
|
+
function validateAction(action, label) {
|
|
85
|
+
const record = asRecord(action);
|
|
86
|
+
const type = record.type;
|
|
87
|
+
if (typeof type !== 'string' || !/^[a-z0-9_]+$/.test(type)) {
|
|
88
|
+
throw new ApplianceApiError(`${label} must include a valid "type" (lowercase letters, numbers, underscores).`);
|
|
89
|
+
}
|
|
90
|
+
const params = record.params;
|
|
91
|
+
if (params !== undefined && params !== null && (typeof params !== 'object' || Array.isArray(params))) {
|
|
92
|
+
throw new ApplianceApiError(`${label} "params" must be a JSON object.`);
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
type,
|
|
96
|
+
target: typeof record.target === 'string' ? record.target : null,
|
|
97
|
+
params: params ?? null,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse repeated `--on-success` / `--on-failure` values.
|
|
102
|
+
* Accepts a bare action type, an inline JSON object, or `@file` containing a
|
|
103
|
+
* JSON object or array of objects.
|
|
104
|
+
*/
|
|
105
|
+
export function parseActionOptions(values) {
|
|
106
|
+
if (!values || values.length === 0)
|
|
107
|
+
return undefined;
|
|
108
|
+
const actions = [];
|
|
109
|
+
for (const raw of values) {
|
|
110
|
+
const value = raw.trim();
|
|
111
|
+
if (!value)
|
|
112
|
+
continue;
|
|
113
|
+
if (value.startsWith('@') || value.startsWith('{') || value.startsWith('[')) {
|
|
114
|
+
const parsed = readJsonOption(value, 'actions');
|
|
115
|
+
const list = Array.isArray(parsed) ? parsed : [parsed];
|
|
116
|
+
for (const item of list) {
|
|
117
|
+
actions.push(validateAction(item, 'Action'));
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
actions.push(validateAction({ type: value }, 'Action'));
|
|
122
|
+
}
|
|
123
|
+
return actions;
|
|
124
|
+
}
|
|
125
|
+
export function buildCreateAccountPayload(input) {
|
|
126
|
+
validateUsername(input.username);
|
|
127
|
+
const payload = {
|
|
128
|
+
username: input.username,
|
|
129
|
+
};
|
|
130
|
+
let generatedPassword;
|
|
131
|
+
let password = input.password;
|
|
132
|
+
if (!password && input.generatePassword !== false) {
|
|
133
|
+
generatedPassword = generateSftpPassword();
|
|
134
|
+
password = generatedPassword;
|
|
135
|
+
}
|
|
136
|
+
if (!password) {
|
|
137
|
+
throw new ApplianceApiError('A password is required. Pass --password, --password-stdin, or use --generate.');
|
|
138
|
+
}
|
|
139
|
+
if (password.length < 8 || password.length > 128) {
|
|
140
|
+
throw new ApplianceApiError('Password must be between 8 and 128 characters.');
|
|
141
|
+
}
|
|
142
|
+
payload.password = password;
|
|
143
|
+
if (input.description !== undefined)
|
|
144
|
+
payload.description = input.description;
|
|
145
|
+
if (input.enabled !== undefined)
|
|
146
|
+
payload.enabled = input.enabled;
|
|
147
|
+
const quota = parseQuotaGb(input.quotaGb);
|
|
148
|
+
if (quota !== undefined)
|
|
149
|
+
payload.quota_limit_gb = quota;
|
|
150
|
+
const callmanagerId = parsePositiveInt(input.callmanagerId, '--callmanager-id');
|
|
151
|
+
if (callmanagerId !== undefined)
|
|
152
|
+
payload.callmanager_id = callmanagerId;
|
|
153
|
+
const onSuccess = parseActionOptions(input.onSuccess);
|
|
154
|
+
if (onSuccess)
|
|
155
|
+
payload.on_success_actions = onSuccess;
|
|
156
|
+
const onFailure = parseActionOptions(input.onFailure);
|
|
157
|
+
if (onFailure)
|
|
158
|
+
payload.on_failure_actions = onFailure;
|
|
159
|
+
return { account: payload, generatedPassword };
|
|
160
|
+
}
|
|
161
|
+
export function buildUpdateAccountPayload(input) {
|
|
162
|
+
if (input.enable && input.disable) {
|
|
163
|
+
throw new ApplianceApiError('Use either --enable or --disable, not both.');
|
|
164
|
+
}
|
|
165
|
+
if (input.password && input.generatePassword) {
|
|
166
|
+
throw new ApplianceApiError('Use either --password/--password-stdin or --generate, not both.');
|
|
167
|
+
}
|
|
168
|
+
if (input.clearSuccess && input.onSuccess.length > 0) {
|
|
169
|
+
throw new ApplianceApiError('Use either --on-success or --clear-success-actions, not both.');
|
|
170
|
+
}
|
|
171
|
+
if (input.clearFailure && input.onFailure.length > 0) {
|
|
172
|
+
throw new ApplianceApiError('Use either --on-failure or --clear-failure-actions, not both.');
|
|
173
|
+
}
|
|
174
|
+
const payload = {};
|
|
175
|
+
let generatedPassword;
|
|
176
|
+
if (input.description !== undefined)
|
|
177
|
+
payload.description = input.description;
|
|
178
|
+
const quota = parseQuotaGb(input.quotaGb);
|
|
179
|
+
if (quota !== undefined)
|
|
180
|
+
payload.quota_limit_gb = quota;
|
|
181
|
+
const callmanagerId = parsePositiveInt(input.callmanagerId, '--callmanager-id');
|
|
182
|
+
if (callmanagerId !== undefined)
|
|
183
|
+
payload.callmanager_id = callmanagerId;
|
|
184
|
+
if (input.enable)
|
|
185
|
+
payload.enabled = true;
|
|
186
|
+
if (input.disable)
|
|
187
|
+
payload.enabled = false;
|
|
188
|
+
if (input.password !== undefined && input.password !== '') {
|
|
189
|
+
if (input.password.length < 8 || input.password.length > 128) {
|
|
190
|
+
throw new ApplianceApiError('Password must be between 8 and 128 characters.');
|
|
191
|
+
}
|
|
192
|
+
payload.password = input.password;
|
|
193
|
+
}
|
|
194
|
+
else if (input.generatePassword) {
|
|
195
|
+
generatedPassword = generateSftpPassword();
|
|
196
|
+
payload.password = generatedPassword;
|
|
197
|
+
}
|
|
198
|
+
const onSuccess = parseActionOptions(input.onSuccess);
|
|
199
|
+
if (input.clearSuccess)
|
|
200
|
+
payload.on_success_actions = [];
|
|
201
|
+
else if (onSuccess)
|
|
202
|
+
payload.on_success_actions = onSuccess;
|
|
203
|
+
const onFailure = parseActionOptions(input.onFailure);
|
|
204
|
+
if (input.clearFailure)
|
|
205
|
+
payload.on_failure_actions = [];
|
|
206
|
+
else if (onFailure)
|
|
207
|
+
payload.on_failure_actions = onFailure;
|
|
208
|
+
if (Object.keys(payload).length === 0) {
|
|
209
|
+
throw new ApplianceApiError('Nothing to update. Pass --description, --quota-gb, --enable/--disable, ' +
|
|
210
|
+
'--password/--generate, or an action option.');
|
|
211
|
+
}
|
|
212
|
+
return { account: payload, generatedPassword };
|
|
213
|
+
}
|
|
214
|
+
export async function listAccounts(api) {
|
|
215
|
+
const response = await api.get('sftp_action_accounts');
|
|
216
|
+
return unwrapList(response.data, 'accounts', 'data');
|
|
217
|
+
}
|
|
218
|
+
export async function resolveAccount(api, ref) {
|
|
219
|
+
const trimmed = ref.trim();
|
|
220
|
+
if (!trimmed)
|
|
221
|
+
throw new ApplianceApiError('Account ID or username is required');
|
|
222
|
+
if (/^\d+$/.test(trimmed)) {
|
|
223
|
+
const response = await api.get(`sftp_action_accounts/${trimmed}`);
|
|
224
|
+
return unwrapRecord(response.data, 'account');
|
|
225
|
+
}
|
|
226
|
+
const accounts = await listAccounts(api);
|
|
227
|
+
const exact = accounts.find(account => account.username === trimmed);
|
|
228
|
+
if (exact)
|
|
229
|
+
return exact;
|
|
230
|
+
const caseInsensitive = accounts.find(account => account.username.toLowerCase() === trimmed.toLowerCase());
|
|
231
|
+
if (caseInsensitive)
|
|
232
|
+
return caseInsensitive;
|
|
233
|
+
const suggestions = accounts
|
|
234
|
+
.filter(account => account.username.toLowerCase().includes(trimmed.toLowerCase()))
|
|
235
|
+
.slice(0, 5)
|
|
236
|
+
.map(account => account.username);
|
|
237
|
+
throw new ApplianceApiError(`SFTP account "${trimmed}" was not found.` +
|
|
238
|
+
(suggestions.length > 0 ? ` Similar accounts: ${suggestions.join(', ')}.` : ''));
|
|
239
|
+
}
|
|
240
|
+
export async function getAccountQuota(api, account) {
|
|
241
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/quota`);
|
|
242
|
+
return unwrapRecord(response.data, 'quota');
|
|
243
|
+
}
|
|
244
|
+
export async function getAccountRuns(api, account, limit = 50, offset = 0) {
|
|
245
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/runs`, {
|
|
246
|
+
query: { limit, offset },
|
|
247
|
+
});
|
|
248
|
+
return unwrapList(response.data, 'runs', 'data');
|
|
249
|
+
}
|
|
250
|
+
export async function getAccountActivity(api, account, limit = 100, offset = 0) {
|
|
251
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/activity`, {
|
|
252
|
+
query: { limit, offset },
|
|
253
|
+
});
|
|
254
|
+
return unwrapList(response.data, 'activity', 'data');
|
|
255
|
+
}
|
|
256
|
+
export async function getAccountFiles(api, account, path, limit = 200) {
|
|
257
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/files`, {
|
|
258
|
+
query: { path, limit },
|
|
259
|
+
});
|
|
260
|
+
const record = asRecord(response.data);
|
|
261
|
+
return {
|
|
262
|
+
path: typeof record.path === 'string' ? record.path : path,
|
|
263
|
+
total: typeof record.total === 'number' ? record.total : undefined,
|
|
264
|
+
entries: unwrapList(response.data, 'entries', 'data'),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export async function getAccountContacts(api, account) {
|
|
268
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/contacts`);
|
|
269
|
+
return unwrapList(response.data, 'contacts', 'data');
|
|
270
|
+
}
|
|
271
|
+
export async function addAccountContacts(api, account, contactIds) {
|
|
272
|
+
const response = await api.post(`sftp_action_accounts/${account.id}/contacts`, {
|
|
273
|
+
contact_ids: contactIds,
|
|
274
|
+
});
|
|
275
|
+
return response.data;
|
|
276
|
+
}
|
|
277
|
+
export async function removeAccountContact(api, account, contactId) {
|
|
278
|
+
const response = await api.delete(`sftp_action_accounts/${account.id}/contacts/${contactId}`);
|
|
279
|
+
return response.data;
|
|
280
|
+
}
|
|
281
|
+
function optionalInt(value, label, min, max) {
|
|
282
|
+
if (value === undefined || value === '')
|
|
283
|
+
return undefined;
|
|
284
|
+
const parsed = Number(value);
|
|
285
|
+
if (!Number.isInteger(parsed) || parsed < min || parsed > max) {
|
|
286
|
+
throw new ApplianceApiError(`${label} must be an integer between ${min} and ${max}.`);
|
|
287
|
+
}
|
|
288
|
+
return parsed;
|
|
289
|
+
}
|
|
290
|
+
export function buildMonitoringPayload(input, requireSchedule) {
|
|
291
|
+
const payload = {};
|
|
292
|
+
if (requireSchedule && !input.schedule) {
|
|
293
|
+
throw new ApplianceApiError('--schedule is required (hourly, daily, weekly, or monthly).');
|
|
294
|
+
}
|
|
295
|
+
if (input.schedule !== undefined) {
|
|
296
|
+
const schedule = input.schedule.toLowerCase();
|
|
297
|
+
if (!['hourly', 'daily', 'weekly', 'monthly'].includes(schedule)) {
|
|
298
|
+
throw new ApplianceApiError('--schedule must be one of: hourly, daily, weekly, monthly.');
|
|
299
|
+
}
|
|
300
|
+
payload.expected_schedule = schedule;
|
|
301
|
+
}
|
|
302
|
+
const hour = optionalInt(input.hour, '--hour', 0, 23);
|
|
303
|
+
if (hour !== undefined)
|
|
304
|
+
payload.expected_hour = hour;
|
|
305
|
+
const minute = optionalInt(input.minute, '--minute', 0, 59);
|
|
306
|
+
if (minute !== undefined)
|
|
307
|
+
payload.expected_minute = minute;
|
|
308
|
+
const dayOfWeek = optionalInt(input.dayOfWeek, '--day-of-week', 1, 7);
|
|
309
|
+
if (dayOfWeek !== undefined)
|
|
310
|
+
payload.expected_day_of_week = dayOfWeek;
|
|
311
|
+
const dayOfMonth = optionalInt(input.dayOfMonth, '--day-of-month', 1, 28);
|
|
312
|
+
if (dayOfMonth !== undefined)
|
|
313
|
+
payload.expected_day_of_month = dayOfMonth;
|
|
314
|
+
const tolerance = optionalInt(input.tolerance, '--tolerance', 1, 10080);
|
|
315
|
+
if (tolerance !== undefined)
|
|
316
|
+
payload.tolerance_minutes = tolerance;
|
|
317
|
+
const threshold = optionalInt(input.threshold, '--threshold', 1, 99);
|
|
318
|
+
if (threshold !== undefined)
|
|
319
|
+
payload.alert_threshold = threshold;
|
|
320
|
+
if (input.weekdaysOnly !== undefined)
|
|
321
|
+
payload.weekdays_only = input.weekdaysOnly;
|
|
322
|
+
if (input.alertOnMissed !== undefined)
|
|
323
|
+
payload.alert_on_missed_uploads = input.alertOnMissed;
|
|
324
|
+
if (input.alertConfig !== undefined) {
|
|
325
|
+
const parsed = readJsonOption(input.alertConfig, '--alert-config');
|
|
326
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
327
|
+
throw new ApplianceApiError('--alert-config must be a JSON object.');
|
|
328
|
+
}
|
|
329
|
+
payload.alert_config = parsed;
|
|
330
|
+
}
|
|
331
|
+
if (payload.expected_schedule === 'weekly' && payload.expected_day_of_week === undefined) {
|
|
332
|
+
throw new ApplianceApiError('--day-of-week is required for a weekly schedule.');
|
|
333
|
+
}
|
|
334
|
+
if (payload.expected_schedule === 'monthly' && payload.expected_day_of_month === undefined) {
|
|
335
|
+
throw new ApplianceApiError('--day-of-month is required for a monthly schedule.');
|
|
336
|
+
}
|
|
337
|
+
return payload;
|
|
338
|
+
}
|
|
339
|
+
export async function listMonitoredAccounts(api) {
|
|
340
|
+
const response = await api.get('sftp_monitoring');
|
|
341
|
+
return unwrapList(response.data, 'data', 'accounts');
|
|
342
|
+
}
|
|
343
|
+
export async function getAccountMonitoring(api, account) {
|
|
344
|
+
const response = await api.get(`sftp_action_accounts/${account.id}/monitoring`);
|
|
345
|
+
return unwrapRecord(response.data, 'monitoring');
|
|
346
|
+
}
|
|
347
|
+
export function buildDiscoverPayload(input) {
|
|
348
|
+
const payload = {};
|
|
349
|
+
if (input.scheduleName !== undefined)
|
|
350
|
+
payload.schedule_name = input.scheduleName;
|
|
351
|
+
if (input.host !== undefined)
|
|
352
|
+
payload.host = input.host;
|
|
353
|
+
if (input.username !== undefined)
|
|
354
|
+
payload.username = input.username;
|
|
355
|
+
if (input.password !== undefined)
|
|
356
|
+
payload.password = input.password;
|
|
357
|
+
const callmanagerId = optionalInt(input.callmanagerId, '--callmanager-id', 1, Number.MAX_SAFE_INTEGER);
|
|
358
|
+
if (callmanagerId !== undefined)
|
|
359
|
+
payload.callmanager_id = callmanagerId;
|
|
360
|
+
const tolerance = optionalInt(input.tolerance, '--tolerance', 1, 10080);
|
|
361
|
+
if (tolerance !== undefined)
|
|
362
|
+
payload.tolerance_minutes = tolerance;
|
|
363
|
+
if ((payload.host || payload.username) && !payload.password && payload.callmanager_id === undefined) {
|
|
364
|
+
throw new ApplianceApiError('CUCM discovery needs --password/--password-stdin, or use --callmanager-id with stored credentials.');
|
|
365
|
+
}
|
|
366
|
+
if (Object.keys(payload).length === 0) {
|
|
367
|
+
throw new ApplianceApiError('Pass discovery credentials (--host, --username, --password) or --callmanager-id.');
|
|
368
|
+
}
|
|
369
|
+
return payload;
|
|
370
|
+
}
|
|
371
|
+
export async function collectSftpStatus(api, spec) {
|
|
372
|
+
const accountsPromise = supportsOperation(spec, 'GET sftp_action_accounts')
|
|
373
|
+
? listAccounts(api)
|
|
374
|
+
: Promise.resolve([]);
|
|
375
|
+
const storagePromise = supportsOperation(spec, 'GET sftp_storage/status')
|
|
376
|
+
? api
|
|
377
|
+
.get('sftp_storage/status')
|
|
378
|
+
.then(response => unwrapRecord(response.data, 'storage'))
|
|
379
|
+
.catch(() => null)
|
|
380
|
+
: Promise.resolve(null);
|
|
381
|
+
const monitoringPromise = supportsOperation(spec, 'GET sftp_monitoring')
|
|
382
|
+
? listMonitoredAccounts(api).catch(() => [])
|
|
383
|
+
: Promise.resolve([]);
|
|
384
|
+
const missingPromise = supportsOperation(spec, 'GET sftp_monitoring/missing')
|
|
385
|
+
? api
|
|
386
|
+
.get('sftp_monitoring/missing')
|
|
387
|
+
.then(response => unwrapList(response.data, 'accounts', 'data').length)
|
|
388
|
+
.catch(() => null)
|
|
389
|
+
: Promise.resolve(null);
|
|
390
|
+
const [accounts, storage, monitored, missingUploads] = await Promise.all([
|
|
391
|
+
accountsPromise,
|
|
392
|
+
storagePromise,
|
|
393
|
+
monitoringPromise,
|
|
394
|
+
missingPromise,
|
|
395
|
+
]);
|
|
396
|
+
const enabled = accounts.filter(account => account.enabled).length;
|
|
397
|
+
const sftpOperations = listOperations(spec, { contains: 'sftp' }).length;
|
|
398
|
+
return {
|
|
399
|
+
accounts: {
|
|
400
|
+
total: accounts.length,
|
|
401
|
+
enabled,
|
|
402
|
+
disabled: accounts.length - enabled,
|
|
403
|
+
},
|
|
404
|
+
storage,
|
|
405
|
+
monitoring: {
|
|
406
|
+
available: supportsOperation(spec, 'GET sftp_monitoring'),
|
|
407
|
+
monitoredCount: monitored.filter(account => account.monitoring?.enabled).length,
|
|
408
|
+
missingUploads,
|
|
409
|
+
},
|
|
410
|
+
operations: {
|
|
411
|
+
total: sftpOperations,
|
|
412
|
+
specOpenApi: spec.openapi ?? null,
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
/** Read a CSV or JSON file for import. */
|
|
417
|
+
export function readImportFile(path) {
|
|
418
|
+
const data = readFileSync(path);
|
|
419
|
+
const filename = path.split(/[\\/]/).pop() ?? 'import.csv';
|
|
420
|
+
const contentType = filename.toLowerCase().endsWith('.json') ? 'application/json' : 'text/csv';
|
|
421
|
+
return { filename, data, contentType };
|
|
422
|
+
}
|
|
423
|
+
export function parseContactIds(values) {
|
|
424
|
+
if (!values || values.length === 0) {
|
|
425
|
+
throw new ApplianceApiError('At least one --contact <id> is required.');
|
|
426
|
+
}
|
|
427
|
+
return values.flatMap(value => value
|
|
428
|
+
.split(',')
|
|
429
|
+
.map(part => part.trim())
|
|
430
|
+
.filter(Boolean)
|
|
431
|
+
.map(part => {
|
|
432
|
+
const id = Number(part);
|
|
433
|
+
if (!Number.isInteger(id) || id <= 0) {
|
|
434
|
+
throw new ApplianceApiError(`Invalid contact ID: ${part}`);
|
|
435
|
+
}
|
|
436
|
+
return id;
|
|
437
|
+
}));
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=sftp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../src/lib/sftp.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/lib/version.js
CHANGED
package/dist/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAqFvE"}
|
package/dist/program.js
CHANGED
|
@@ -18,6 +18,7 @@ import { registerDockerCommand } from './commands/docker.js';
|
|
|
18
18
|
import { registerOfflineCommand } from './commands/offline.js';
|
|
19
19
|
import { registerDiagCommand } from './commands/diag.js';
|
|
20
20
|
import { registerJtapiCommand } from './commands/jtapi.js';
|
|
21
|
+
import { registerSftpCommand } from './commands/sftp.js';
|
|
21
22
|
import { registerCubeCommand } from './commands/cube.js';
|
|
22
23
|
import { registerStorageCommand } from './commands/storage.js';
|
|
23
24
|
import { registerOtelCommand } from './commands/otel.js';
|
|
@@ -61,6 +62,7 @@ export function buildProgram(options = {}) {
|
|
|
61
62
|
registerOfflineCommand(program);
|
|
62
63
|
registerDiagCommand(program);
|
|
63
64
|
registerJtapiCommand(program);
|
|
65
|
+
registerSftpCommand(program);
|
|
64
66
|
registerCubeCommand(program);
|
|
65
67
|
registerStorageCommand(program);
|
|
66
68
|
registerOtelCommand(program);
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/prompt.d.ts
CHANGED
|
@@ -3,4 +3,18 @@ export declare function select<T extends string>(message: string, choices: {
|
|
|
3
3
|
title: string;
|
|
4
4
|
value: T;
|
|
5
5
|
}[]): Promise<T | null>;
|
|
6
|
+
/**
|
|
7
|
+
* Prompt for a non-secret text value. Returns null when stdin is not a TTY.
|
|
8
|
+
* `output` lets callers send prompts to stderr so `--json` stdout stays clean.
|
|
9
|
+
*/
|
|
10
|
+
export declare function text(message: string, options?: {
|
|
11
|
+
output?: NodeJS.WriteStream;
|
|
12
|
+
initial?: string;
|
|
13
|
+
}): Promise<string | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Prompt for a password without echoing it. Returns null when stdin is not a TTY.
|
|
16
|
+
*/
|
|
17
|
+
export declare function password(message: string, options?: {
|
|
18
|
+
output?: NodeJS.WriteStream;
|
|
19
|
+
}): Promise<string | null>;
|
|
6
20
|
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAEA,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,GACrC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWnB"}
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAEA,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,MAAM,CAAC,CAAC,SAAS,MAAM,EAC3C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,GACrC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAWnB;AAED;;;GAGG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAAO,GAC5C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB"}
|
package/dist/utils/prompt.js
CHANGED
|
@@ -22,4 +22,32 @@ export async function select(message, choices) {
|
|
|
22
22
|
});
|
|
23
23
|
return value ?? null;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Prompt for a non-secret text value. Returns null when stdin is not a TTY.
|
|
27
|
+
* `output` lets callers send prompts to stderr so `--json` stdout stays clean.
|
|
28
|
+
*/
|
|
29
|
+
export async function text(message, options = {}) {
|
|
30
|
+
if (!process.stdin.isTTY)
|
|
31
|
+
return null;
|
|
32
|
+
const { value } = await prompts({
|
|
33
|
+
type: 'text',
|
|
34
|
+
name: 'value',
|
|
35
|
+
message,
|
|
36
|
+
initial: options.initial,
|
|
37
|
+
}, { stdout: options.output ?? process.stdout });
|
|
38
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Prompt for a password without echoing it. Returns null when stdin is not a TTY.
|
|
42
|
+
*/
|
|
43
|
+
export async function password(message, options = {}) {
|
|
44
|
+
if (!process.stdin.isTTY)
|
|
45
|
+
return null;
|
|
46
|
+
const { value } = await prompts({
|
|
47
|
+
type: 'password',
|
|
48
|
+
name: 'value',
|
|
49
|
+
message,
|
|
50
|
+
}, { stdout: options.output ?? process.stdout });
|
|
51
|
+
return typeof value === 'string' && value.length > 0 ? value : null;
|
|
52
|
+
}
|
|
25
53
|
//# sourceMappingURL=prompt.js.map
|
package/dist/utils/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,YAAY,GAAG,KAAK;IACjE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,OAAO;QACP,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,KAAK,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAe,EACf,OAAsC;IAEtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,YAAY,GAAG,KAAK;IACjE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,OAAO;QACP,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,KAAK,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAe,EACf,OAAsC;IAEtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAe,EACf,UAA6D,EAAE;IAE/D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7B;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,EACD,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAA8C,CACzF,CAAC;IAEF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAe,EACf,UAA2C,EAAE;IAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7B;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;QACb,OAAO;KACR,EACD,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAA8C,CACzF,CAAC;IAEF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Plain-text table and value formatting helpers for CLI output. */
|
|
2
|
+
export type Alignment = 'left' | 'right';
|
|
3
|
+
export declare function truncate(value: string, width: number): string;
|
|
4
|
+
export interface TableOptions {
|
|
5
|
+
align?: Alignment[];
|
|
6
|
+
/** Optional per-column maximum width. */
|
|
7
|
+
maxWidth?: number[];
|
|
8
|
+
/** Prefix each row with two spaces (matches other ct command output). */
|
|
9
|
+
indent?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function renderTable(headers: string[], rows: string[][], options?: TableOptions): string;
|
|
12
|
+
export declare function formatBytes(bytes: number | null | undefined): string;
|
|
13
|
+
export declare function formatGb(value: number | string | null | undefined): string;
|
|
14
|
+
export declare function formatQuota(usedBytes: number | null | undefined, limitGb: number | string | null | undefined): string;
|
|
15
|
+
export declare function formatPercent(value: number | null | undefined): string;
|
|
16
|
+
export declare function formatDateTime(value: string | null | undefined): string;
|
|
17
|
+
export declare function formatAge(value: string | null | undefined): string;
|
|
18
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/utils/table.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAQzC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7D;AAOD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CA8BnG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CASpE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAK1E;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,CAER;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGtE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKvE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAalE"}
|