fluxmail 0.4.0 → 0.5.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 (108) hide show
  1. package/README.md +7 -5
  2. package/dist/accounts/defaultGoogleOAuth.d.ts +4 -0
  3. package/dist/accounts/defaultGoogleOAuth.d.ts.map +1 -0
  4. package/dist/accounts/defaultGoogleOAuth.js +7 -0
  5. package/dist/accounts/defaultGoogleOAuth.js.map +1 -0
  6. package/dist/accounts/gmailConnection.js +2 -2
  7. package/dist/accounts/gmailConnection.js.map +1 -1
  8. package/dist/accounts/googleAuth.d.ts +10 -7
  9. package/dist/accounts/googleAuth.d.ts.map +1 -1
  10. package/dist/accounts/googleAuth.js +48 -17
  11. package/dist/accounts/googleAuth.js.map +1 -1
  12. package/dist/accounts/microsoftAuth.js +1 -1
  13. package/dist/accounts/microsoftAuth.js.map +1 -1
  14. package/dist/accounts/registry.d.ts +9 -8
  15. package/dist/accounts/registry.d.ts.map +1 -1
  16. package/dist/accounts/registry.js +166 -96
  17. package/dist/accounts/registry.js.map +1 -1
  18. package/dist/auth.d.ts +106 -0
  19. package/dist/auth.d.ts.map +1 -0
  20. package/dist/auth.js +452 -0
  21. package/dist/auth.js.map +1 -0
  22. package/dist/authorization.d.ts +9 -0
  23. package/dist/authorization.d.ts.map +1 -0
  24. package/dist/authorization.js +23 -0
  25. package/dist/authorization.js.map +1 -0
  26. package/dist/cli.d.ts +7 -1
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +734 -358
  29. package/dist/cli.js.map +1 -1
  30. package/dist/cliInstances.d.ts +37 -0
  31. package/dist/cliInstances.d.ts.map +1 -0
  32. package/dist/cliInstances.js +170 -0
  33. package/dist/cliInstances.js.map +1 -0
  34. package/dist/config.d.ts +16 -10
  35. package/dist/config.d.ts.map +1 -1
  36. package/dist/config.js +125 -35
  37. package/dist/config.js.map +1 -1
  38. package/dist/context.d.ts.map +1 -1
  39. package/dist/context.js +8 -4
  40. package/dist/context.js.map +1 -1
  41. package/dist/http/admin.d.ts +57 -3
  42. package/dist/http/admin.d.ts.map +1 -1
  43. package/dist/http/admin.js +188 -67
  44. package/dist/http/admin.js.map +1 -1
  45. package/dist/http/app.d.ts.map +1 -1
  46. package/dist/http/app.js +78 -54
  47. package/dist/http/app.js.map +1 -1
  48. package/dist/http/identity.d.ts +114 -0
  49. package/dist/http/identity.d.ts.map +1 -0
  50. package/dist/http/identity.js +931 -0
  51. package/dist/http/identity.js.map +1 -0
  52. package/dist/http/operationRoutes.d.ts +8 -0
  53. package/dist/http/operationRoutes.d.ts.map +1 -0
  54. package/dist/http/operationRoutes.js +13 -0
  55. package/dist/http/operationRoutes.js.map +1 -0
  56. package/dist/http/rest.d.ts +11 -3
  57. package/dist/http/rest.d.ts.map +1 -1
  58. package/dist/http/rest.js +138 -66
  59. package/dist/http/rest.js.map +1 -1
  60. package/dist/index.d.ts +4 -3
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +4 -3
  63. package/dist/index.js.map +1 -1
  64. package/dist/mcp/buildServer.d.ts +1 -1
  65. package/dist/mcp/buildServer.d.ts.map +1 -1
  66. package/dist/mcp/buildServer.js +14 -19
  67. package/dist/mcp/buildServer.js.map +1 -1
  68. package/dist/permissions.d.ts +1 -1
  69. package/dist/permissions.d.ts.map +1 -1
  70. package/dist/permissions.js +7 -1
  71. package/dist/permissions.js.map +1 -1
  72. package/dist/scheduler/sendScheduler.d.ts +1 -2
  73. package/dist/scheduler/sendScheduler.d.ts.map +1 -1
  74. package/dist/scheduler/sendScheduler.js +1 -2
  75. package/dist/scheduler/sendScheduler.js.map +1 -1
  76. package/dist/service/emailService.d.ts +8 -16
  77. package/dist/service/emailService.d.ts.map +1 -1
  78. package/dist/service/emailService.js +25 -38
  79. package/dist/service/emailService.js.map +1 -1
  80. package/dist/storage/adminAudit.d.ts +15 -2
  81. package/dist/storage/adminAudit.d.ts.map +1 -1
  82. package/dist/storage/adminAudit.js +22 -27
  83. package/dist/storage/adminAudit.js.map +1 -1
  84. package/dist/storage/apiKeys.d.ts +8 -8
  85. package/dist/storage/apiKeys.d.ts.map +1 -1
  86. package/dist/storage/apiKeys.js +16 -11
  87. package/dist/storage/apiKeys.js.map +1 -1
  88. package/dist/storage/db.d.ts +593 -31
  89. package/dist/storage/db.d.ts.map +1 -1
  90. package/dist/storage/db.js +330 -45
  91. package/dist/storage/db.js.map +1 -1
  92. package/dist/storage/fileLock.d.ts +7 -0
  93. package/dist/storage/fileLock.d.ts.map +1 -0
  94. package/dist/storage/fileLock.js +183 -0
  95. package/dist/storage/fileLock.js.map +1 -0
  96. package/dist/storage/gmailConnectionGrants.d.ts +3 -4
  97. package/dist/storage/gmailConnectionGrants.d.ts.map +1 -1
  98. package/dist/storage/gmailConnectionGrants.js +6 -6
  99. package/dist/storage/gmailConnectionGrants.js.map +1 -1
  100. package/dist/storage/members.d.ts +11 -0
  101. package/dist/storage/members.d.ts.map +1 -1
  102. package/dist/storage/members.js +70 -6
  103. package/dist/storage/members.js.map +1 -1
  104. package/dist/telemetry.d.ts +14 -0
  105. package/dist/telemetry.d.ts.map +1 -1
  106. package/dist/telemetry.js +22 -0
  107. package/dist/telemetry.js.map +1 -1
  108. package/package.json +9 -8
package/dist/config.js CHANGED
@@ -1,11 +1,15 @@
1
1
  import { randomBytes } from 'node:crypto';
2
- import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { chmodSync, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync, } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import path from 'node:path';
5
+ import { DEFAULT_GOOGLE_CLIENT_ID, DEFAULT_GOOGLE_CLIENT_SECRET } from './accounts/defaultGoogleOAuth.js';
5
6
  import { DEFAULT_LICENSE_SERVER_URL } from './licensing/client.js';
7
+ import { withFileLock } from './storage/fileLock.js';
6
8
  export const DEFAULT_MAX_ATTACHMENT_BYTES = 10 * 1024 * 1024;
7
9
  export const HARD_MAX_ATTACHMENT_BYTES = 25 * 1024 * 1024;
8
10
  const BYTES_PER_MEGABYTE = 1024 * 1024;
11
+ const CONFIG_LOCK_TIMEOUT_MS = 5_000;
12
+ const CONFIG_LOCK_STALE_MS = 30_000;
9
13
  /**
10
14
  * User-settable environment variables understood by the server. The public
11
15
  * documentation generator reads this registry, and config loading uses its
@@ -13,12 +17,12 @@ const BYTES_PER_MEGABYTE = 1024 * 1024;
13
17
  */
14
18
  export const CONFIG_REFERENCE = {
15
19
  GOOGLE_CLIENT_ID: {
16
- defaultValue: 'required for Gmail',
17
- description: 'Google OAuth client ID.',
20
+ defaultValue: 'Fluxmail Desktop OAuth app',
21
+ description: 'Override the built-in Google OAuth client ID.',
18
22
  },
19
23
  GOOGLE_CLIENT_SECRET: {
20
- defaultValue: 'required for Gmail',
21
- description: 'Google OAuth client secret.',
24
+ defaultValue: 'Fluxmail Desktop OAuth app',
25
+ description: 'Override the built-in Google OAuth client secret. Required with GOOGLE_CLIENT_ID.',
22
26
  secret: true,
23
27
  },
24
28
  MICROSOFT_CLIENT_ID: {
@@ -55,9 +59,9 @@ export const CONFIG_REFERENCE = {
55
59
  defaultValue: 'http://localhost:<FLUXMAIL_PORT>',
56
60
  description: 'Public base URL used for HTTP APIs and hosted OAuth callbacks.',
57
61
  },
58
- FLUXMAIL_AUTH: {
59
- defaultValue: 'apikey',
60
- description: 'HTTP authentication mode. Use none only behind a trusted network boundary.',
62
+ FLUXMAIL_TRUST_PROXY: {
63
+ defaultValue: '0',
64
+ description: 'Trust Forwarded, X-Forwarded-Proto, and X-Forwarded-For headers from a reverse proxy.',
61
65
  },
62
66
  FLUXMAIL_OAUTH_PORT: {
63
67
  defaultValue: '8976',
@@ -201,17 +205,21 @@ export function setStoredConfig(dataDir, key, value) {
201
205
  if (key === 'FLUXMAIL_DATA_DIR') {
202
206
  throw new Error('FLUXMAIL_DATA_DIR cannot be stored in the data dir itself; set it in your shell or a .env file');
203
207
  }
204
- const stored = readStoredConfig(dataDir);
205
- stored[key] = value;
206
- writeStoredConfig(dataDir, stored);
208
+ withConfigLock(dataDir, () => {
209
+ const stored = readStoredConfig(dataDir);
210
+ stored[key] = value;
211
+ writeStoredConfig(dataDir, stored);
212
+ });
207
213
  }
208
214
  export function unsetStoredConfig(dataDir, key) {
209
- const stored = readStoredConfig(dataDir);
210
- if (!(key in stored))
211
- return false;
212
- delete stored[key];
213
- writeStoredConfig(dataDir, stored);
214
- return true;
215
+ return withConfigLock(dataDir, () => {
216
+ const stored = readStoredConfig(dataDir);
217
+ if (!(key in stored))
218
+ return false;
219
+ delete stored[key];
220
+ writeStoredConfig(dataDir, stored);
221
+ return true;
222
+ });
215
223
  }
216
224
  export function maskStoredConfigValue(key, value) {
217
225
  if (!/SECRET|KEY|TOKEN|PASSWORD/i.test(key))
@@ -220,9 +228,45 @@ export function maskStoredConfigValue(key, value) {
220
228
  }
221
229
  function writeStoredConfig(dataDir, values) {
222
230
  const file = configFilePath(dataDir);
231
+ const temporary = path.join(dataDir, `.config.env.${process.pid}.${randomBytes(6).toString('hex')}.tmp`);
223
232
  const lines = Object.entries(values).map(([k, v]) => `${k}=${JSON.stringify(v)}`);
224
- writeFileSync(file, lines.join('\n') + (lines.length ? '\n' : ''), { mode: 0o600 });
225
- tryRestrictPermissions(file);
233
+ let descriptor;
234
+ try {
235
+ descriptor = openSync(temporary, 'wx', 0o600);
236
+ writeFileSync(descriptor, lines.join('\n') + (lines.length ? '\n' : ''), 'utf8');
237
+ fsyncSync(descriptor);
238
+ closeSync(descriptor);
239
+ descriptor = undefined;
240
+ renameSync(temporary, file);
241
+ tryRestrictPermissions(file);
242
+ trySyncDirectory(dataDir);
243
+ }
244
+ finally {
245
+ if (descriptor !== undefined)
246
+ closeSync(descriptor);
247
+ rmSync(temporary, { force: true });
248
+ }
249
+ }
250
+ function trySyncDirectory(directory) {
251
+ let descriptor;
252
+ try {
253
+ descriptor = openSync(directory, 'r');
254
+ fsyncSync(descriptor);
255
+ }
256
+ catch {
257
+ // Some filesystems do not support fsync on directories.
258
+ }
259
+ finally {
260
+ if (descriptor !== undefined)
261
+ closeSync(descriptor);
262
+ }
263
+ }
264
+ function withConfigLock(dataDir, callback) {
265
+ return withFileLock(path.join(dataDir, '.config.lock'), {
266
+ timeoutMs: CONFIG_LOCK_TIMEOUT_MS,
267
+ staleMs: CONFIG_LOCK_STALE_MS,
268
+ description: `the stored configuration at ${configFilePath(dataDir)}`,
269
+ }, callback);
226
270
  }
227
271
  function decodeEncryptionKey(value, errorMessage) {
228
272
  if (!/^[0-9a-fA-F]{64}$/.test(value))
@@ -250,6 +294,17 @@ function readMaxAttachmentBytes() {
250
294
  }
251
295
  return value * BYTES_PER_MEGABYTE;
252
296
  }
297
+ function readTrustProxy() {
298
+ const raw = readEnvironment('FLUXMAIL_TRUST_PROXY');
299
+ if (raw === undefined)
300
+ return false;
301
+ const normalized = raw.trim().toLowerCase();
302
+ if (normalized === '1' || normalized === 'true')
303
+ return true;
304
+ if (normalized === '0' || normalized === 'false')
305
+ return false;
306
+ throw new Error(`FLUXMAIL_TRUST_PROXY must be 0, 1, false, or true, got "${raw}"`);
307
+ }
253
308
  function readPublicUrl(port) {
254
309
  const value = (readEnvironment('FLUXMAIL_PUBLIC_URL') ?? `http://localhost:${port}`).replace(/\/+$/, '');
255
310
  let parsed;
@@ -282,34 +337,62 @@ function loadEncryptionKey(dataDir) {
282
337
  const key = decodeEncryptionKey(readFileSync(keyPath, 'utf8').trim(), `Corrupt encryption key at ${keyPath}`);
283
338
  return key;
284
339
  }
285
- const key = randomBytes(32);
286
- writeFileSync(keyPath, key.toString('hex') + '\n', { mode: 0o600 });
287
- return key;
340
+ return withFileLock(path.join(dataDir, '.encryption-key.lock'), {
341
+ timeoutMs: CONFIG_LOCK_TIMEOUT_MS,
342
+ staleMs: CONFIG_LOCK_STALE_MS,
343
+ description: `the encryption key at ${keyPath}`,
344
+ }, () => {
345
+ if (existsSync(keyPath)) {
346
+ tryRestrictPermissions(keyPath);
347
+ return decodeEncryptionKey(readFileSync(keyPath, 'utf8').trim(), `Corrupt encryption key at ${keyPath}`);
348
+ }
349
+ const key = randomBytes(32);
350
+ const temporary = path.join(dataDir, `.encryption.key.${process.pid}.${randomBytes(6).toString('hex')}.tmp`);
351
+ let descriptor;
352
+ try {
353
+ descriptor = openSync(temporary, 'wx', 0o600);
354
+ writeFileSync(descriptor, key.toString('hex') + '\n', 'utf8');
355
+ fsyncSync(descriptor);
356
+ closeSync(descriptor);
357
+ descriptor = undefined;
358
+ renameSync(temporary, keyPath);
359
+ trySyncDirectory(dataDir);
360
+ return key;
361
+ }
362
+ finally {
363
+ if (descriptor !== undefined)
364
+ closeSync(descriptor);
365
+ rmSync(temporary, { force: true });
366
+ }
367
+ });
288
368
  }
289
- export function loadConfig() {
290
- // Precedence: shell env > cwd .env.local > cwd .env > data-dir config.env.
369
+ export function resolveStoreLocation() {
291
370
  const dataDir = resolveDataDir();
371
+ const databasePath = readEnvironment('FLUXMAIL_DB_PATH') ?? readStoredConfig(dataDir).FLUXMAIL_DB_PATH;
372
+ return {
373
+ dataDir,
374
+ dbPath: databasePath ? expandHome(databasePath) : path.join(dataDir, 'fluxmail.db'),
375
+ };
376
+ }
377
+ export function loadConfig(storeLocation = resolveStoreLocation()) {
378
+ // Precedence: shell env > cwd .env.local > cwd .env > data-dir config.env.
379
+ const { dataDir, dbPath } = storeLocation;
292
380
  const licenseKeyFromEnvironment = readEnvironment('FLUXMAIL_LICENSE_KEY') !== undefined;
293
381
  applyStoredConfig(dataDir);
294
382
  const port = readPort('FLUXMAIL_PORT', 8977);
295
383
  const oauthPort = readPort('FLUXMAIL_OAUTH_PORT', 8976);
296
384
  const publicUrlConfigured = readEnvironment('FLUXMAIL_PUBLIC_URL') !== undefined;
297
385
  const publicUrl = readPublicUrl(port);
298
- const databasePath = readEnvironment('FLUXMAIL_DB_PATH');
299
- const authModeEnv = readEnvironment('FLUXMAIL_AUTH') ?? 'apikey';
300
- if (authModeEnv !== 'apikey' && authModeEnv !== 'none') {
301
- throw new Error(`FLUXMAIL_AUTH must be "apikey" or "none", got "${authModeEnv}"`);
302
- }
303
386
  const config = {
304
387
  dataDir,
305
- dbPath: databasePath ? expandHome(databasePath) : path.join(dataDir, 'fluxmail.db'),
388
+ dbPath,
306
389
  encryptionKey: loadEncryptionKey(dataDir),
307
390
  port,
308
391
  publicUrl,
309
392
  publicUrlConfigured,
393
+ trustProxy: readTrustProxy(),
310
394
  oauthPort,
311
395
  oauthHost: readEnvironment('FLUXMAIL_OAUTH_HOST') ?? '127.0.0.1',
312
- authMode: authModeEnv,
313
396
  maxAttachmentBytes: readMaxAttachmentBytes(),
314
397
  licenseServerUrl: (readEnvironment('FLUXMAIL_LICENSE_SERVER_URL') ?? DEFAULT_LICENSE_SERVER_URL).replace(/\/+$/, ''),
315
398
  };
@@ -318,11 +401,18 @@ export function loadConfig() {
318
401
  config.licenseKey = licenseKey;
319
402
  config.licenseKeyFromEnvironment = licenseKeyFromEnvironment;
320
403
  }
321
- const clientId = readEnvironment('GOOGLE_CLIENT_ID');
322
- const clientSecret = readEnvironment('GOOGLE_CLIENT_SECRET');
323
- if (clientId && clientSecret) {
324
- config.google = { clientId, clientSecret };
404
+ const clientId = readEnvironment('GOOGLE_CLIENT_ID')?.trim();
405
+ const clientSecret = readEnvironment('GOOGLE_CLIENT_SECRET')?.trim();
406
+ if (!clientId && clientSecret) {
407
+ throw new Error('GOOGLE_CLIENT_SECRET requires GOOGLE_CLIENT_ID.');
408
+ }
409
+ if (clientId && !clientSecret) {
410
+ throw new Error('GOOGLE_CLIENT_ID requires GOOGLE_CLIENT_SECRET.');
325
411
  }
412
+ config.google =
413
+ clientId && clientSecret
414
+ ? { clientId, clientSecret }
415
+ : { clientId: DEFAULT_GOOGLE_CLIENT_ID, clientSecret: DEFAULT_GOOGLE_CLIENT_SECRET };
326
416
  const microsoftClientId = readEnvironment('MICROSOFT_CLIENT_ID')?.trim();
327
417
  if (microsoftClientId) {
328
418
  const microsoftClientSecret = readEnvironment('MICROSOFT_CLIENT_SECRET')?.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,8EAA8E;IAC9E,SAAS,EAAE,aAAa,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,wBAAgB,aAAa,IAAI,UAAU,CAc1C"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAA6D,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,8EAA8E;IAC9E,SAAS,EAAE,aAAa,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,wBAAgB,aAAa,IAAI,UAAU,CAiB1C"}
package/dist/context.js CHANGED
@@ -1,13 +1,17 @@
1
- import { loadConfig } from './config.js';
2
- import { openDb } from './storage/db.js';
1
+ import { loadConfig, resolveStoreLocation } from './config.js';
2
+ import { IncompatibleStoreError, inspectStoreCompatibility, openDb } from './storage/db.js';
3
3
  import { AccountRegistry } from './accounts/registry.js';
4
4
  import { EmailService } from './service/emailService.js';
5
5
  import { SendScheduler } from './scheduler/sendScheduler.js';
6
6
  import { getTelemetry } from './telemetry.js';
7
7
  import { LicenseController } from './licensing/refresher.js';
8
8
  export function createContext() {
9
- const config = loadConfig();
10
- const db = openDb(config.dbPath);
9
+ const storeLocation = resolveStoreLocation();
10
+ const compatibility = inspectStoreCompatibility(storeLocation.dbPath, storeLocation.dataDir);
11
+ if (!compatibility.compatible)
12
+ throw new IncompatibleStoreError(compatibility);
13
+ const config = loadConfig(storeLocation);
14
+ const db = openDb(config.dbPath, { dataDir: config.dataDir });
11
15
  const registry = new AccountRegistry(db, config);
12
16
  const service = new EmailService(registry, db);
13
17
  const scheduler = new SendScheduler(db, service);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa7D,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,EAAE;QACF,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;KACpC,CAAC,CAAC;IACH,OAAO,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa7D,MAAM,UAAU,aAAa;IAC3B,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,yBAAyB,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7F,IAAI,CAAC,aAAa,CAAC,UAAU;QAAE,MAAM,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;QAC9C,EAAE;QACF,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;KACpC,CAAC,CAAC;IACH,OAAO,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;AACpF,CAAC"}
@@ -1,15 +1,69 @@
1
1
  import { type OpenAPIHono } from '@hono/zod-openapi';
2
2
  import type { AccountRegistry } from '../accounts/registry.js';
3
- import type { FluxmailConfig } from '../config.js';
4
- import type { LicenseController } from '../licensing/refresher.js';
3
+ import { type FluxmailConfig } from '../config.js';
4
+ import { type LicenseController } from '../licensing/refresher.js';
5
5
  import type { FluxmailDb } from '../storage/db.js';
6
6
  export declare const ADMIN_BODY_LIMIT: number;
7
7
  export declare const ADMIN_CONNECTION_TIMEOUT_MS = 30000;
8
+ export declare const adminOperationRoutes: {
9
+ readonly createConnection: {
10
+ readonly method: "post";
11
+ readonly path: "/api/v1/admin/connections";
12
+ readonly operationId: "createAdministrativeConnection";
13
+ };
14
+ readonly testImapConnection: {
15
+ readonly method: "post";
16
+ readonly path: "/api/v1/admin/imap/tests";
17
+ readonly operationId: "testAdministrativeImapConnection";
18
+ };
19
+ readonly updateImapFolders: {
20
+ readonly method: "patch";
21
+ readonly path: "/api/v1/admin/accounts/{accountId}/imap/folders";
22
+ readonly operationId: "updateAdministrativeImapFolders";
23
+ };
24
+ readonly listApiKeys: {
25
+ readonly method: "get";
26
+ readonly path: "/api/v1/admin/api-keys";
27
+ readonly operationId: "listAdministrativeApiKeys";
28
+ };
29
+ readonly createApiKey: {
30
+ readonly method: "post";
31
+ readonly path: "/api/v1/admin/api-keys";
32
+ readonly operationId: "createAdministrativeApiKey";
33
+ };
34
+ readonly updateApiKey: {
35
+ readonly method: "patch";
36
+ readonly path: "/api/v1/admin/api-keys/{keyId}";
37
+ readonly operationId: "updateAdministrativeApiKey";
38
+ };
39
+ readonly revokeApiKey: {
40
+ readonly method: "delete";
41
+ readonly path: "/api/v1/admin/api-keys/{keyId}";
42
+ readonly operationId: "revokeAdministrativeApiKey";
43
+ };
44
+ readonly getLicense: {
45
+ readonly method: "get";
46
+ readonly path: "/api/v1/admin/license";
47
+ readonly operationId: "getAdministrativeLicense";
48
+ };
49
+ readonly activateLicense: {
50
+ readonly method: "post";
51
+ readonly path: "/api/v1/admin/license/activate";
52
+ readonly operationId: "activateAdministrativeLicense";
53
+ };
54
+ readonly deactivateLicense: {
55
+ readonly method: "delete";
56
+ readonly path: "/api/v1/admin/license";
57
+ readonly operationId: "deactivateAdministrativeLicense";
58
+ };
59
+ };
60
+ export declare function adminOperationId(method: string, path: string): string | undefined;
8
61
  export interface AdminConnectionSecurity {
9
62
  remoteAddress?: string;
10
63
  encrypted?: boolean;
11
64
  }
12
- export declare function administrationUsesHttps(request: Request, connection?: AdminConnectionSecurity): boolean;
65
+ export declare function administrationUsesHttps(request: Request, connection?: AdminConnectionSecurity, trustProxy?: boolean): boolean;
66
+ export declare function requestClientAddress(request: Request, connection?: AdminConnectionSecurity, trustProxy?: boolean): string;
13
67
  export declare function requestBodyExceedsLimit(request: Request, limit?: number): Promise<boolean>;
14
68
  export interface AdminApiDeps {
15
69
  config: FluxmailConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/http/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAK,MAAM,mBAAmB,CAAC;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAmBnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAC1C,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAcD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,uBAAuB,GAAG,OAAO,CASvG;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,SAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB1G;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AA2QD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAqXnF"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/http/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAK,MAAM,mBAAmB,CAAC;AAIrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAItE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAWnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAC1C,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDvB,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAgDD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,uBAAuB,EACpC,UAAU,UAAQ,GACjB,OAAO,CAWT;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,uBAAuB,EACpC,UAAU,UAAQ,GACjB,MAAM,CAMR;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,SAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB1G;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAuRD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAuYnF"}