fluxmail 0.16.0 → 0.17.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 (79) hide show
  1. package/dist/auth.d.ts +22 -1
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +29 -3
  4. package/dist/auth.js.map +1 -1
  5. package/dist/authorization.d.ts +2 -0
  6. package/dist/authorization.d.ts.map +1 -1
  7. package/dist/authorization.js +9 -4
  8. package/dist/authorization.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +93 -5
  11. package/dist/cli.js.map +1 -1
  12. package/dist/cliMail.d.ts.map +1 -1
  13. package/dist/cliMail.js +21 -1
  14. package/dist/cliMail.js.map +1 -1
  15. package/dist/deploymentConfig.d.ts +1 -1
  16. package/dist/deploymentConfig.d.ts.map +1 -1
  17. package/dist/deploymentConfig.js +1 -1
  18. package/dist/deploymentConfig.js.map +1 -1
  19. package/dist/http/app.d.ts +3 -0
  20. package/dist/http/app.d.ts.map +1 -1
  21. package/dist/http/app.js +37 -22
  22. package/dist/http/app.js.map +1 -1
  23. package/dist/http/identity.d.ts +20 -0
  24. package/dist/http/identity.d.ts.map +1 -1
  25. package/dist/http/identity.js +146 -0
  26. package/dist/http/identity.js.map +1 -1
  27. package/dist/http/oauth.d.ts +28 -0
  28. package/dist/http/oauth.d.ts.map +1 -0
  29. package/dist/http/oauth.js +552 -0
  30. package/dist/http/oauth.js.map +1 -0
  31. package/dist/http/oauthPages.d.ts +36 -0
  32. package/dist/http/oauthPages.d.ts.map +1 -0
  33. package/dist/http/oauthPages.js +213 -0
  34. package/dist/http/oauthPages.js.map +1 -0
  35. package/dist/http/rest.d.ts.map +1 -1
  36. package/dist/http/rest.js +13 -7
  37. package/dist/http/rest.js.map +1 -1
  38. package/dist/mcp/attachmentContent.d.ts +1 -1
  39. package/dist/mcp/attachmentContent.d.ts.map +1 -1
  40. package/dist/mcp/buildServer.d.ts +1 -1
  41. package/dist/mcp/buildServer.d.ts.map +1 -1
  42. package/dist/mcp/buildServer.js +77 -46
  43. package/dist/mcp/buildServer.js.map +1 -1
  44. package/dist/mcp/clientTelemetry.d.ts +19 -0
  45. package/dist/mcp/clientTelemetry.d.ts.map +1 -0
  46. package/dist/mcp/clientTelemetry.js +152 -0
  47. package/dist/mcp/clientTelemetry.js.map +1 -0
  48. package/dist/mcp/outputSchemas.d.ts +6 -6
  49. package/dist/oauth/clientMetadata.d.ts +39 -0
  50. package/dist/oauth/clientMetadata.d.ts.map +1 -0
  51. package/dist/oauth/clientMetadata.js +234 -0
  52. package/dist/oauth/clientMetadata.js.map +1 -0
  53. package/dist/oauth/redirectUris.d.ts +13 -0
  54. package/dist/oauth/redirectUris.d.ts.map +1 -0
  55. package/dist/oauth/redirectUris.js +78 -0
  56. package/dist/oauth/redirectUris.js.map +1 -0
  57. package/dist/permissions.d.ts +4 -0
  58. package/dist/permissions.d.ts.map +1 -1
  59. package/dist/permissions.js +10 -0
  60. package/dist/permissions.js.map +1 -1
  61. package/dist/service/emailService.d.ts.map +1 -1
  62. package/dist/service/emailService.js +4 -1
  63. package/dist/service/emailService.js.map +1 -1
  64. package/dist/service/publicErrors.d.ts +4 -0
  65. package/dist/service/publicErrors.d.ts.map +1 -1
  66. package/dist/service/publicErrors.js +16 -1
  67. package/dist/service/publicErrors.js.map +1 -1
  68. package/dist/storage/db.d.ts +824 -2
  69. package/dist/storage/db.d.ts.map +1 -1
  70. package/dist/storage/db.js +142 -1
  71. package/dist/storage/db.js.map +1 -1
  72. package/dist/storage/members.d.ts.map +1 -1
  73. package/dist/storage/members.js +2 -0
  74. package/dist/storage/members.js.map +1 -1
  75. package/dist/storage/oauth.d.ts +178 -0
  76. package/dist/storage/oauth.d.ts.map +1 -0
  77. package/dist/storage/oauth.js +556 -0
  78. package/dist/storage/oauth.js.map +1 -0
  79. package/package.json +9 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientTelemetry.js","sourceRoot":"","sources":["../../src/mcp/clientTelemetry.ts"],"names":[],"mappings":"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"}
@@ -1551,14 +1551,14 @@ export declare const outputSchemas: {
1551
1551
  nextOffset: z.ZodOptional<z.ZodNumber>;
1552
1552
  }, "strip", z.ZodTypeAny, {
1553
1553
  text: string;
1554
- format: string;
1555
1554
  offset: number;
1555
+ format: string;
1556
1556
  totalChars: number;
1557
1557
  nextOffset?: number | undefined;
1558
1558
  }, {
1559
1559
  text: string;
1560
- format: string;
1561
1560
  offset: number;
1561
+ format: string;
1562
1562
  totalChars: number;
1563
1563
  nextOffset?: number | undefined;
1564
1564
  }>;
@@ -2549,13 +2549,13 @@ export declare const outputSchemas: {
2549
2549
  mimeType: z.ZodString;
2550
2550
  sizeBytes: z.ZodNumber;
2551
2551
  }, "strip", z.ZodTypeAny, {
2552
+ sizeBytes: number;
2552
2553
  filename: string;
2553
2554
  mimeType: string;
2554
- sizeBytes: number;
2555
2555
  }, {
2556
+ sizeBytes: number;
2556
2557
  filename: string;
2557
2558
  mimeType: string;
2558
- sizeBytes: number;
2559
2559
  }>, "many">;
2560
2560
  bodyTextChars: z.ZodNumber;
2561
2561
  bodyHtmlChars: z.ZodNumber;
@@ -2576,9 +2576,9 @@ export declare const outputSchemas: {
2576
2576
  name: z.ZodOptional<z.ZodString>;
2577
2577
  }, z.ZodTypeAny, "passthrough">[];
2578
2578
  attachments: {
2579
+ sizeBytes: number;
2579
2580
  filename: string;
2580
2581
  mimeType: string;
2581
- sizeBytes: number;
2582
2582
  }[];
2583
2583
  bodyTextChars: number;
2584
2584
  bodyHtmlChars: number;
@@ -2599,9 +2599,9 @@ export declare const outputSchemas: {
2599
2599
  name: z.ZodOptional<z.ZodString>;
2600
2600
  }, z.ZodTypeAny, "passthrough">[];
2601
2601
  attachments: {
2602
+ sizeBytes: number;
2602
2603
  filename: string;
2603
2604
  mimeType: string;
2604
- sizeBytes: number;
2605
2605
  }[];
2606
2606
  bodyTextChars: number;
2607
2607
  bodyHtmlChars: number;
@@ -0,0 +1,39 @@
1
+ import type { FluxmailDb } from '../storage/db.js';
2
+ import { type OAuthClient } from '../storage/oauth.js';
3
+ export interface MetadataResponse {
4
+ status: number;
5
+ cacheControl: string | null;
6
+ body: string;
7
+ }
8
+ /** Fetch a metadata document. Implementations must refuse redirects and private addresses. */
9
+ export type MetadataFetcher = (url: URL) => Promise<MetadataResponse>;
10
+ export type MetadataClientResolution = {
11
+ status: 'ok';
12
+ client: OAuthClient;
13
+ source: 'cached' | 'fetched' | 'stale';
14
+ } | {
15
+ status: 'invalid';
16
+ reason: string;
17
+ } | {
18
+ status: 'unavailable';
19
+ reason: string;
20
+ };
21
+ /** Thrown for a transient fetch problem, when a stored client may still be used. */
22
+ export declare class MetadataFetchUnavailable extends Error {
23
+ }
24
+ export declare function isPublicAddress(address: string): boolean;
25
+ /** A client id URL must already be in canonical form, with a path and without a query or fragment. */
26
+ export declare function canonicalClientMetadataUrl(id: string): URL | null;
27
+ export declare function isClientMetadataUrl(id: string): boolean;
28
+ /**
29
+ * Fetch over HTTPS with one DNS resolution. Every resolved address must be
30
+ * public, and the connection uses the address that was checked.
31
+ */
32
+ export declare const fetchClientMetadata: MetadataFetcher;
33
+ /**
34
+ * Resolve a client whose id is the URL of its metadata document. A fresh
35
+ * stored copy is used without fetching. If a refetch fails for a transient
36
+ * reason, the stored copy keeps existing connections working.
37
+ */
38
+ export declare function resolveMetadataClient(db: FluxmailDb, id: string, fetcher: MetadataFetcher, now?: number): Promise<MetadataClientResolution>;
39
+ //# sourceMappingURL=clientMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientMetadata.d.ts","sourceRoot":"","sources":["../../src/oauth/clientMetadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAQL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEtE,MAAM,MAAM,wBAAwB,GAChC;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,oFAAoF;AACpF,qBAAa,wBAAyB,SAAQ,KAAK;CAAG;AAqCtD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASxD;AAED,sGAAsG;AACtG,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAWjE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eA0DjC,CAAC;AAiDF;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,eAAe,EACxB,GAAG,SAAa,GACf,OAAO,CAAC,wBAAwB,CAAC,CAuDnC"}
@@ -0,0 +1,234 @@
1
+ import { lookup as dnsLookup } from 'node:dns/promises';
2
+ import { request as httpsRequest } from 'node:https';
3
+ import { BlockList, isIP } from 'node:net';
4
+ import { countOAuthClients, getOAuthClient, OAUTH_MAX_CLIENTS, OAUTH_MAX_CLIENTS_PER_HOST, pruneOAuthState, reserveOAuthRateLimit, storeMetadataOAuthClient, } from '../storage/oauth.js';
5
+ import { validateRedirectUri } from './redirectUris.js';
6
+ const MAX_DOCUMENT_BYTES = 5 * 1024;
7
+ const FETCH_TIMEOUT_MS = 5_000;
8
+ const MAX_CACHE_MS = 60 * 60 * 1000;
9
+ const FETCHES_PER_MINUTE = 120;
10
+ const FETCHES_PER_ORIGIN_PER_MINUTE = 30;
11
+ /** Thrown for a transient fetch problem, when a stored client may still be used. */
12
+ export class MetadataFetchUnavailable extends Error {
13
+ }
14
+ const blockedAddresses = new BlockList();
15
+ for (const [network, prefix] of [
16
+ ['0.0.0.0', 8],
17
+ ['10.0.0.0', 8],
18
+ ['100.64.0.0', 10],
19
+ ['127.0.0.0', 8],
20
+ ['169.254.0.0', 16],
21
+ ['172.16.0.0', 12],
22
+ ['192.0.0.0', 24],
23
+ ['192.0.2.0', 24],
24
+ ['192.88.99.0', 24],
25
+ ['192.168.0.0', 16],
26
+ ['198.18.0.0', 15],
27
+ ['198.51.100.0', 24],
28
+ ['203.0.113.0', 24],
29
+ ['224.0.0.0', 4],
30
+ ['240.0.0.0', 4],
31
+ ]) {
32
+ blockedAddresses.addSubnet(network, prefix, 'ipv4');
33
+ }
34
+ for (const [network, prefix] of [
35
+ ['::', 127],
36
+ ['64:ff9b::', 96],
37
+ ['64:ff9b:1::', 48],
38
+ ['100::', 64],
39
+ ['2001::', 23],
40
+ ['2001:db8::', 32],
41
+ ['2002::', 16],
42
+ ['fc00::', 7],
43
+ ['fe80::', 10],
44
+ ['ff00::', 8],
45
+ ]) {
46
+ blockedAddresses.addSubnet(network, prefix, 'ipv6');
47
+ }
48
+ export function isPublicAddress(address) {
49
+ const family = isIP(address);
50
+ if (!family)
51
+ return false;
52
+ if (family === 6 && /^::ffff:/i.test(address)) {
53
+ // Check an IPv4-mapped address as the IPv4 address it carries.
54
+ const mapped = address.slice('::ffff:'.length);
55
+ return isIP(mapped) === 4 && isPublicAddress(mapped);
56
+ }
57
+ return !blockedAddresses.check(address, family === 4 ? 'ipv4' : 'ipv6');
58
+ }
59
+ /** A client id URL must already be in canonical form, with a path and without a query or fragment. */
60
+ export function canonicalClientMetadataUrl(id) {
61
+ if (id.length > 2_000)
62
+ return null;
63
+ let url;
64
+ try {
65
+ url = new URL(id);
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash)
71
+ return null;
72
+ if (url.pathname === '/' || url.href !== id || isIP(url.hostname.replace(/^\[|\]$/g, '')))
73
+ return null;
74
+ return url;
75
+ }
76
+ export function isClientMetadataUrl(id) {
77
+ return id.startsWith('https://');
78
+ }
79
+ /**
80
+ * Fetch over HTTPS with one DNS resolution. Every resolved address must be
81
+ * public, and the connection uses the address that was checked.
82
+ */
83
+ export const fetchClientMetadata = async (url) => {
84
+ let addresses;
85
+ try {
86
+ addresses = await dnsLookup(url.hostname, { all: true, verbatim: true });
87
+ }
88
+ catch {
89
+ throw new MetadataFetchUnavailable('The client metadata host could not be resolved.');
90
+ }
91
+ if (!addresses.length || !addresses.every((entry) => isPublicAddress(entry.address))) {
92
+ throw new Error('The client metadata host resolves to a private or reserved address.');
93
+ }
94
+ const pinned = addresses[0];
95
+ const lookup = (_hostname, options, callback) => {
96
+ if (options.all) {
97
+ callback(null, [
98
+ pinned,
99
+ ]);
100
+ return;
101
+ }
102
+ callback(null, pinned.address, pinned.family);
103
+ };
104
+ return new Promise((resolve, reject) => {
105
+ const request = httpsRequest(url, {
106
+ method: 'GET',
107
+ lookup,
108
+ timeout: FETCH_TIMEOUT_MS,
109
+ headers: { accept: 'application/json', 'user-agent': 'Fluxmail' },
110
+ }, (response) => {
111
+ const chunks = [];
112
+ let size = 0;
113
+ response.on('data', (chunk) => {
114
+ size += chunk.length;
115
+ if (size > MAX_DOCUMENT_BYTES) {
116
+ request.destroy();
117
+ reject(new Error('The client metadata document is larger than 5 KB.'));
118
+ return;
119
+ }
120
+ chunks.push(chunk);
121
+ });
122
+ response.on('end', () => resolve({
123
+ status: response.statusCode ?? 0,
124
+ cacheControl: typeof response.headers['cache-control'] === 'string' ? response.headers['cache-control'] : null,
125
+ body: Buffer.concat(chunks).toString('utf8'),
126
+ }));
127
+ response.on('error', () => reject(new MetadataFetchUnavailable('The client metadata fetch failed.')));
128
+ });
129
+ request.on('timeout', () => request.destroy(new MetadataFetchUnavailable('The client metadata fetch timed out.')));
130
+ request.on('error', (error) => reject(error instanceof MetadataFetchUnavailable ? error : new MetadataFetchUnavailable(error.message)));
131
+ request.end();
132
+ });
133
+ };
134
+ function cacheLifetime(cacheControl) {
135
+ if (!cacheControl)
136
+ return MAX_CACHE_MS;
137
+ const directives = cacheControl.toLowerCase();
138
+ if (/(?:^|,)\s*(?:no-store|no-cache)\b/.test(directives))
139
+ return 0;
140
+ const maxAge = directives.match(/(?:^|,)\s*max-age\s*=\s*"?(\d+)"?/);
141
+ return maxAge ? Math.min(Number(maxAge[1]) * 1000, MAX_CACHE_MS) : MAX_CACHE_MS;
142
+ }
143
+ function parseDocument(id, body) {
144
+ let document;
145
+ try {
146
+ document = JSON.parse(body);
147
+ }
148
+ catch {
149
+ throw new Error('The client metadata document is not valid JSON.');
150
+ }
151
+ if (!document || typeof document !== 'object' || Array.isArray(document)) {
152
+ throw new Error('The client metadata document must be a JSON object.');
153
+ }
154
+ const fields = document;
155
+ if (fields.client_id !== id)
156
+ throw new Error('client_id in the metadata document does not match its URL.');
157
+ if ('client_secret' in fields || 'client_secret_expires_at' in fields) {
158
+ throw new Error('A client metadata document cannot contain a client secret.');
159
+ }
160
+ const name = typeof fields.client_name === 'string' ? fields.client_name.trim() : '';
161
+ if (!name || name.length > 200)
162
+ throw new Error('The client metadata document needs a client_name.');
163
+ const method = fields.token_endpoint_auth_method;
164
+ const supported = fields.token_endpoint_auth_methods_supported;
165
+ const allowsNone = method === undefined || method === 'none' || (Array.isArray(supported) && supported.includes('none'));
166
+ if (!allowsNone)
167
+ throw new Error('Fluxmail only accepts public clients that use token_endpoint_auth_method none.');
168
+ const redirectUris = fields.redirect_uris;
169
+ if (!Array.isArray(redirectUris) ||
170
+ !redirectUris.length ||
171
+ redirectUris.length > 20 ||
172
+ !redirectUris.every((uri) => typeof uri === 'string' && validateRedirectUri(uri) === null)) {
173
+ throw new Error('The client metadata document needs valid redirect_uris.');
174
+ }
175
+ return { name, redirectUris: redirectUris };
176
+ }
177
+ /**
178
+ * Resolve a client whose id is the URL of its metadata document. A fresh
179
+ * stored copy is used without fetching. If a refetch fails for a transient
180
+ * reason, the stored copy keeps existing connections working.
181
+ */
182
+ export async function resolveMetadataClient(db, id, fetcher, now = Date.now()) {
183
+ const url = canonicalClientMetadataUrl(id);
184
+ if (!url)
185
+ return { status: 'invalid', reason: 'client_id must be a canonical HTTPS URL with a path.' };
186
+ const stored = getOAuthClient(db, id);
187
+ if (stored && stored.kind === 'metadata_document' && (stored.metadataExpiresAt ?? 0) > now) {
188
+ return { status: 'ok', client: stored, source: 'cached' };
189
+ }
190
+ const stale = (reason) => stored ? { status: 'ok', client: stored, source: 'stale' } : { status: 'unavailable', reason };
191
+ // Drop abandoned clients first so they don't hold the quota forever.
192
+ if (!stored)
193
+ pruneOAuthState(db, now);
194
+ if (!stored &&
195
+ (countOAuthClients(db) >= OAUTH_MAX_CLIENTS || countOAuthClients(db, url.hostname) >= OAUTH_MAX_CLIENTS_PER_HOST)) {
196
+ return { status: 'unavailable', reason: 'Fluxmail has reached its OAuth client limit.' };
197
+ }
198
+ if (!reserveOAuthRateLimit(db, 'metadata', FETCHES_PER_MINUTE, 60_000, now) ||
199
+ !reserveOAuthRateLimit(db, `metadata:${url.origin}`, FETCHES_PER_ORIGIN_PER_MINUTE, 60_000, now)) {
200
+ return stale('Too many client metadata requests. Try again shortly.');
201
+ }
202
+ let response;
203
+ try {
204
+ response = await fetcher(url);
205
+ }
206
+ catch (error) {
207
+ if (error instanceof MetadataFetchUnavailable)
208
+ return stale('The client metadata document could not be fetched.');
209
+ return { status: 'invalid', reason: error instanceof Error ? error.message : 'Invalid client metadata.' };
210
+ }
211
+ if (response.status >= 500)
212
+ return stale('The client metadata server returned an error.');
213
+ if (response.status !== 200) {
214
+ return { status: 'invalid', reason: `The client metadata document returned HTTP ${response.status}.` };
215
+ }
216
+ let parsed;
217
+ try {
218
+ parsed = parseDocument(id, response.body);
219
+ }
220
+ catch (error) {
221
+ return { status: 'invalid', reason: error.message };
222
+ }
223
+ const result = storeMetadataOAuthClient(db, {
224
+ id,
225
+ host: url.hostname,
226
+ name: parsed.name,
227
+ redirectUris: parsed.redirectUris,
228
+ expiresAt: now + cacheLifetime(response.cacheControl),
229
+ }, now);
230
+ if (result.status === 'limit')
231
+ return { status: 'unavailable', reason: 'Fluxmail has reached its OAuth client limit.' };
232
+ return { status: 'ok', client: result.client, source: 'fetched' };
233
+ }
234
+ //# sourceMappingURL=clientMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientMetadata.js","sourceRoot":"","sources":["../../src/oauth/clientMetadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** True when a redirect can only reach a program on the member's own computer. */
2
+ export declare function isLocalRedirectUri(url: URL): boolean;
3
+ /**
4
+ * Accept HTTPS redirects, plain HTTP only on loopback, and private-use schemes
5
+ * for native apps. Returns an error message, or null when the URI is valid.
6
+ */
7
+ export declare function validateRedirectUri(value: string): string | null;
8
+ /**
9
+ * Exact string match, except that a loopback HTTP redirect may use any port,
10
+ * as RFC 8252 requires for native apps.
11
+ */
12
+ export declare function redirectUriMatches(registered: readonly string[], requested: string): boolean;
13
+ //# sourceMappingURL=redirectUris.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirectUris.d.ts","sourceRoot":"","sources":["../../src/oauth/redirectUris.ts"],"names":[],"mappings":"AAiBA,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAGpD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAehE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAoB5F"}
@@ -0,0 +1,78 @@
1
+ const FORBIDDEN_SCHEMES = new Set([
2
+ 'javascript:',
3
+ 'data:',
4
+ 'file:',
5
+ 'vbscript:',
6
+ 'blob:',
7
+ 'about:',
8
+ 'ftp:',
9
+ 'ws:',
10
+ 'wss:',
11
+ ]);
12
+ const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);
13
+ function isLoopbackHttp(url) {
14
+ return url.protocol === 'http:' && LOOPBACK_HOSTS.has(url.hostname);
15
+ }
16
+ /** True when a redirect can only reach a program on the member's own computer. */
17
+ export function isLocalRedirectUri(url) {
18
+ if (url.protocol !== 'https:' && url.protocol !== 'http:')
19
+ return true;
20
+ return LOOPBACK_HOSTS.has(url.hostname);
21
+ }
22
+ /**
23
+ * Accept HTTPS redirects, plain HTTP only on loopback, and private-use schemes
24
+ * for native apps. Returns an error message, or null when the URI is valid.
25
+ */
26
+ export function validateRedirectUri(value) {
27
+ if (value.length > 2_000)
28
+ return 'Redirect URIs are limited to 2,000 characters.';
29
+ let url;
30
+ try {
31
+ url = new URL(value);
32
+ }
33
+ catch {
34
+ return 'Redirect URIs must be absolute URLs.';
35
+ }
36
+ if (url.hash || value.includes('#'))
37
+ return 'Redirect URIs cannot contain a fragment.';
38
+ if (url.username || url.password)
39
+ return 'Redirect URIs cannot contain credentials.';
40
+ if (url.protocol === 'https:')
41
+ return url.hostname ? null : 'HTTPS redirect URIs need a host.';
42
+ if (url.protocol === 'http:')
43
+ return isLoopbackHttp(url) ? null : 'Plain HTTP redirect URIs must use a loopback host.';
44
+ if (FORBIDDEN_SCHEMES.has(url.protocol))
45
+ return `The ${url.protocol} scheme is not allowed for redirect URIs.`;
46
+ return null;
47
+ }
48
+ /**
49
+ * Exact string match, except that a loopback HTTP redirect may use any port,
50
+ * as RFC 8252 requires for native apps.
51
+ */
52
+ export function redirectUriMatches(registered, requested) {
53
+ if (registered.includes(requested))
54
+ return true;
55
+ let target;
56
+ try {
57
+ target = new URL(requested);
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ if (!isLoopbackHttp(target))
63
+ return false;
64
+ return registered.some((candidate) => {
65
+ let url;
66
+ try {
67
+ url = new URL(candidate);
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ if (!isLoopbackHttp(url))
73
+ return false;
74
+ url.port = target.port;
75
+ return url.href === target.href;
76
+ });
77
+ }
78
+ //# sourceMappingURL=redirectUris.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirectUris.js","sourceRoot":"","sources":["../../src/oauth/redirectUris.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,aAAa;IACb,OAAO;IACP,OAAO;IACP,WAAW;IACX,OAAO;IACP,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpE,SAAS,cAAc,CAAC,GAAQ;IAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;QAAE,OAAO,gDAAgD,CAAC;IAClF,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sCAAsC,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,0CAA0C,CAAC;IACvF,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,2CAA2C,CAAC;IACrF,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC;IAC/F,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QAC1B,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD,CAAC;IAC3F,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,GAAG,CAAC,QAAQ,2CAA2C,CAAC;IAC/G,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA6B,EAAE,SAAiB;IACjF,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QACnC,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -27,6 +27,8 @@ export declare function isCapability(value: string): value is Capability;
27
27
  export declare function normalizeAdminCapabilities(capabilities: readonly string[]): AdminCapability[];
28
28
  export declare function permissionPolicyForProfile(profile: NamedPermissionProfile, supplementalCapabilities?: readonly string[]): PermissionPolicy;
29
29
  export declare function customPermissionPolicy(capabilities: readonly string[]): PermissionPolicy;
30
+ /** The named profile with exactly these mail capabilities, otherwise a custom policy. */
31
+ export declare function permissionPolicyForMailCapabilities(capabilities: readonly McpCapability[]): PermissionPolicy;
30
32
  export declare function normalizePermissionPolicy(policy: PermissionPolicy): PermissionPolicy;
31
33
  export declare function deserializePermissionPolicy(profile: string, customCapabilities: string | null, supplementalCapabilities?: string | null): PermissionPolicy;
32
34
  export declare function serializeCustomCapabilities(policy: PermissionPolicy): string | null;
@@ -43,6 +45,8 @@ export type PermissionSource = {
43
45
  } | {
44
46
  kind: 'api_key';
45
47
  keyId: string;
48
+ } | {
49
+ kind: 'oauth';
46
50
  };
47
51
  /** Instructions for adding the missing capabilities to a connection. */
48
52
  export declare function enableCapabilitiesInstructions(policy: PermissionPolicy, missing: readonly Capability[], source: PermissionSource | undefined): string;
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,12 @@ export function customPermissionPolicy(capabilities) {
85
85
  supplementalCapabilities: [],
86
86
  };
87
87
  }
88
+ /** The named profile with exactly these mail capabilities, otherwise a custom policy. */
89
+ export function permissionPolicyForMailCapabilities(capabilities) {
90
+ const wanted = new Set(capabilities);
91
+ const profile = NAMED_PERMISSION_PROFILES.find((name) => PROFILE_CAPABILITIES[name].length === wanted.size && PROFILE_CAPABILITIES[name].every((c) => wanted.has(c)));
92
+ return profile ? permissionPolicyForProfile(profile) : customPermissionPolicy([...wanted]);
93
+ }
88
94
  export function normalizePermissionPolicy(policy) {
89
95
  if (policy.profile === 'custom')
90
96
  return customPermissionPolicy(policy.capabilities);
@@ -156,6 +162,10 @@ export function permissionOptionsGranting(policy, missing) {
156
162
  export function enableCapabilitiesInstructions(policy, missing, source) {
157
163
  if (!source)
158
164
  return 'To enable it, change the Fluxmail permissions for this connection.';
165
+ if (source.kind === 'oauth') {
166
+ return ('To enable it, disconnect Fluxmail in the MCP client, connect again, and select the permission ' +
167
+ 'on the Fluxmail approval page.');
168
+ }
159
169
  const options = permissionOptionsGranting(policy, missing);
160
170
  return source.kind === 'stdio'
161
171
  ? `To enable it, start "fluxmail stdio ${options}" in the MCP client configuration, ` +
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emailService.d.ts","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emailService.d.ts","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"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"}
@@ -898,7 +898,10 @@ export class EmailService {
898
898
  throw new ClientInputError('invalid_request', 'A message may have at most 20 attachments.');
899
899
  let total = 0;
900
900
  for (const attachment of attachments) {
901
- if (!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(attachment.content)) {
901
+ const content = attachment.content;
902
+ const paddingIndex = content.search(/[^A-Za-z0-9+/]/);
903
+ const padding = paddingIndex === -1 ? '' : content.slice(paddingIndex);
904
+ if (content.length % 4 !== 0 || (padding !== '' && padding !== '=' && padding !== '==')) {
902
905
  throw new ClientInputError('invalid_request', 'Attachment content must be base64.');
903
906
  }
904
907
  total += Buffer.byteLength(attachment.content, 'base64');