@dbx-tools/tunnel 0.6.82 → 0.6.86
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/index.ts +2 -4
- package/lib/index.d.ts +2 -4
- package/lib/index.js +2 -4
- package/lib/src/_config.d.ts +4 -0
- package/lib/src/_config.js +3 -0
- package/lib/src/gate.d.ts +49 -2
- package/lib/src/gate.js +63 -33
- package/lib/src/plugin.js +18 -14
- package/lib/src/portr.js +7 -7
- package/lib/src/signing-key.js +11 -8
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/_config.ts +2 -0
- package/src/gate.ts +84 -39
- package/src/plugin.ts +25 -24
- package/src/portr.ts +6 -6
- package/src/signing-key.ts +16 -9
- package/lib/src/env.d.ts +0 -57
- package/lib/src/env.js +0 -60
- package/src/env.ts +0 -72
package/lib/src/env.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment-variable names the tunnel reads.
|
|
3
|
-
*
|
|
4
|
-
* Every setting is `TUNNEL_`-prefixed, matching the repo convention of naming a
|
|
5
|
-
* variable after the package that owns it (`MASTRA_*`, `TEAMS_*`,
|
|
6
|
-
* `WEB_SEARCH_*`). The prefix matters most for a package that runs as a WRAPPER:
|
|
7
|
-
* the tunnel and the app it wraps share one environment, so an unprefixed name
|
|
8
|
-
* (`AUTH_SUBJECT`, `PUBLIC_DOMAIN`, ...) is one the wrapped app may already use for
|
|
9
|
-
* something else, and a bare `PUBLIC_DOMAIN` reads like an app-wide setting rather
|
|
10
|
-
* than a portr detail. A name in ANOTHER package's namespace is worse than generic:
|
|
11
|
-
* `EMAIL_AUTH_ALLOW` sits in `@dbx-tools/email`'s `EMAIL_*` namespace while
|
|
12
|
-
* configuring the gate, not email.
|
|
13
|
-
*
|
|
14
|
-
* Each entry is an {@link EnvKey} list, EARLIEST-WINS, whose first element is the
|
|
15
|
-
* current name and whose remaining elements are deprecated aliases, so a deployment
|
|
16
|
-
* configured against an unprefixed name keeps working and nothing needs a
|
|
17
|
-
* coordinated rename. Read them through `env.string` / `env.positiveInt` /
|
|
18
|
-
* `env.list`, which accept the list directly.
|
|
19
|
-
*
|
|
20
|
-
* Not renamed:
|
|
21
|
-
*
|
|
22
|
-
* - `DATABRICKS_APP_PORT` - the Databricks Apps runtime contract. The platform
|
|
23
|
-
* sets it; the gate honours it.
|
|
24
|
-
* - `PORTR_TOKEN` / `PORTR_SERVER` / `PORTR_AUTO_ADD_PATH` - upstream
|
|
25
|
-
* [portr](https://github.com/amalshaji/portr)'s own namespace, and
|
|
26
|
-
* `PORTR_AUTO_ADD_PATH` is passed straight to that binary. Renaming these
|
|
27
|
-
* would rename someone else's contract.
|
|
28
|
-
*
|
|
29
|
-
* @module
|
|
30
|
-
*/
|
|
31
|
-
import type { EnvKey } from "@dbx-tools/shared-core";
|
|
32
|
-
/** Access allow-list patterns (domain / glob / `/regex/`). */
|
|
33
|
-
export declare const ALLOW_ENV: EnvKey;
|
|
34
|
-
/** Subject line for the code email. */
|
|
35
|
-
export declare const SUBJECT_ENV: EnvKey;
|
|
36
|
-
/** Display name used in the code email copy. */
|
|
37
|
-
export declare const BRAND_NAME_ENV: EnvKey;
|
|
38
|
-
/** Line shown immediately above the code in the email. */
|
|
39
|
-
export declare const MESSAGE_ENV: EnvKey;
|
|
40
|
-
/** Session lifetime, in seconds. */
|
|
41
|
-
export declare const SESSION_TTL_ENV: EnvKey;
|
|
42
|
-
/** One-time-code lifetime, in seconds. */
|
|
43
|
-
export declare const CODE_TTL_ENV: EnvKey;
|
|
44
|
-
/** HS256 signing secret for the session JWT. */
|
|
45
|
-
export declare const JWT_SECRET_ENV: EnvKey;
|
|
46
|
-
/**
|
|
47
|
-
* Force-clear cutoff: every session issued BEFORE it stops verifying. Anything
|
|
48
|
-
* `object.toDate` accepts - a date, an ISO instant, epoch seconds/millis, or a
|
|
49
|
-
* relative duration (`-30d`, `7 days ago`).
|
|
50
|
-
*/
|
|
51
|
-
export declare const SESSION_CUTOFF_ENV: EnvKey;
|
|
52
|
-
/** The public `<subdomain>.<server>` portr should serve on. */
|
|
53
|
-
export declare const PUBLIC_DOMAIN_ENV: EnvKey;
|
|
54
|
-
/** Run the tunnel OPEN, with no gate. Ignored unless truthy. */
|
|
55
|
-
export declare const INSECURE_ENV: EnvKey;
|
|
56
|
-
/** Extra `x-` request headers tunnel traffic may forward. */
|
|
57
|
-
export declare const FORWARD_HEADERS_ENV: EnvKey;
|
package/lib/src/env.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment-variable names the tunnel reads.
|
|
3
|
-
*
|
|
4
|
-
* Every setting is `TUNNEL_`-prefixed, matching the repo convention of naming a
|
|
5
|
-
* variable after the package that owns it (`MASTRA_*`, `TEAMS_*`,
|
|
6
|
-
* `WEB_SEARCH_*`). The prefix matters most for a package that runs as a WRAPPER:
|
|
7
|
-
* the tunnel and the app it wraps share one environment, so an unprefixed name
|
|
8
|
-
* (`AUTH_SUBJECT`, `PUBLIC_DOMAIN`, ...) is one the wrapped app may already use for
|
|
9
|
-
* something else, and a bare `PUBLIC_DOMAIN` reads like an app-wide setting rather
|
|
10
|
-
* than a portr detail. A name in ANOTHER package's namespace is worse than generic:
|
|
11
|
-
* `EMAIL_AUTH_ALLOW` sits in `@dbx-tools/email`'s `EMAIL_*` namespace while
|
|
12
|
-
* configuring the gate, not email.
|
|
13
|
-
*
|
|
14
|
-
* Each entry is an {@link EnvKey} list, EARLIEST-WINS, whose first element is the
|
|
15
|
-
* current name and whose remaining elements are deprecated aliases, so a deployment
|
|
16
|
-
* configured against an unprefixed name keeps working and nothing needs a
|
|
17
|
-
* coordinated rename. Read them through `env.string` / `env.positiveInt` /
|
|
18
|
-
* `env.list`, which accept the list directly.
|
|
19
|
-
*
|
|
20
|
-
* Not renamed:
|
|
21
|
-
*
|
|
22
|
-
* - `DATABRICKS_APP_PORT` - the Databricks Apps runtime contract. The platform
|
|
23
|
-
* sets it; the gate honours it.
|
|
24
|
-
* - `PORTR_TOKEN` / `PORTR_SERVER` / `PORTR_AUTO_ADD_PATH` - upstream
|
|
25
|
-
* [portr](https://github.com/amalshaji/portr)'s own namespace, and
|
|
26
|
-
* `PORTR_AUTO_ADD_PATH` is passed straight to that binary. Renaming these
|
|
27
|
-
* would rename someone else's contract.
|
|
28
|
-
*
|
|
29
|
-
* @module
|
|
30
|
-
*/
|
|
31
|
-
/** Access allow-list patterns (domain / glob / `/regex/`). */
|
|
32
|
-
export const ALLOW_ENV = ["TUNNEL_AUTH_ALLOW", "EMAIL_AUTH_ALLOW"];
|
|
33
|
-
/** Subject line for the code email. */
|
|
34
|
-
export const SUBJECT_ENV = ["TUNNEL_AUTH_SUBJECT", "AUTH_SUBJECT"];
|
|
35
|
-
/** Display name used in the code email copy. */
|
|
36
|
-
export const BRAND_NAME_ENV = ["TUNNEL_AUTH_BRAND_NAME", "AUTH_BRAND_NAME"];
|
|
37
|
-
/** Line shown immediately above the code in the email. */
|
|
38
|
-
export const MESSAGE_ENV = ["TUNNEL_AUTH_MESSAGE", "AUTH_MESSAGE"];
|
|
39
|
-
/** Session lifetime, in seconds. */
|
|
40
|
-
export const SESSION_TTL_ENV = ["TUNNEL_AUTH_SESSION_TTL", "AUTH_SESSION_TTL"];
|
|
41
|
-
/** One-time-code lifetime, in seconds. */
|
|
42
|
-
export const CODE_TTL_ENV = ["TUNNEL_AUTH_CODE_TTL", "AUTH_CODE_TTL"];
|
|
43
|
-
/** HS256 signing secret for the session JWT. */
|
|
44
|
-
export const JWT_SECRET_ENV = ["TUNNEL_AUTH_JWT_SECRET", "AUTH_JWT_SECRET"];
|
|
45
|
-
/**
|
|
46
|
-
* Force-clear cutoff: every session issued BEFORE it stops verifying. Anything
|
|
47
|
-
* `object.toDate` accepts - a date, an ISO instant, epoch seconds/millis, or a
|
|
48
|
-
* relative duration (`-30d`, `7 days ago`).
|
|
49
|
-
*/
|
|
50
|
-
export const SESSION_CUTOFF_ENV = [
|
|
51
|
-
"TUNNEL_AUTH_SESSION_CUTOFF",
|
|
52
|
-
"TUNNEL_AUTH_SESSION_EPOCH",
|
|
53
|
-
];
|
|
54
|
-
/** The public `<subdomain>.<server>` portr should serve on. */
|
|
55
|
-
export const PUBLIC_DOMAIN_ENV = ["TUNNEL_PUBLIC_DOMAIN", "PUBLIC_DOMAIN"];
|
|
56
|
-
/** Run the tunnel OPEN, with no gate. Ignored unless truthy. */
|
|
57
|
-
export const INSECURE_ENV = "TUNNEL_INSECURE";
|
|
58
|
-
/** Extra `x-` request headers tunnel traffic may forward. */
|
|
59
|
-
export const FORWARD_HEADERS_ENV = "TUNNEL_FORWARD_HEADERS";
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFJSCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFXLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUUzRSx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFXLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFM0UsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBVyxDQUFDLHdCQUF3QixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFFcEYsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBVyxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBRTNFLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVcsQ0FBQyx5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZGLDBDQUEwQztBQUMxQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUU5RSxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFXLENBQUMsd0JBQXdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUVwRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQVc7SUFDeEMsNEJBQTRCO0lBQzVCLDJCQUEyQjtDQUM1QixDQUFDO0FBRUYsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFXLENBQUMsc0JBQXNCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFbkYsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBVyxpQkFBaUIsQ0FBQztBQUV0RCw2REFBNkQ7QUFDN0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVcsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVudmlyb25tZW50LXZhcmlhYmxlIG5hbWVzIHRoZSB0dW5uZWwgcmVhZHMuXG4gKlxuICogRXZlcnkgc2V0dGluZyBpcyBgVFVOTkVMX2AtcHJlZml4ZWQsIG1hdGNoaW5nIHRoZSByZXBvIGNvbnZlbnRpb24gb2YgbmFtaW5nIGFcbiAqIHZhcmlhYmxlIGFmdGVyIHRoZSBwYWNrYWdlIHRoYXQgb3ducyBpdCAoYE1BU1RSQV8qYCwgYFRFQU1TXypgLFxuICogYFdFQl9TRUFSQ0hfKmApLiBUaGUgcHJlZml4IG1hdHRlcnMgbW9zdCBmb3IgYSBwYWNrYWdlIHRoYXQgcnVucyBhcyBhIFdSQVBQRVI6XG4gKiB0aGUgdHVubmVsIGFuZCB0aGUgYXBwIGl0IHdyYXBzIHNoYXJlIG9uZSBlbnZpcm9ubWVudCwgc28gYW4gdW5wcmVmaXhlZCBuYW1lXG4gKiAoYEFVVEhfU1VCSkVDVGAsIGBQVUJMSUNfRE9NQUlOYCwgLi4uKSBpcyBvbmUgdGhlIHdyYXBwZWQgYXBwIG1heSBhbHJlYWR5IHVzZSBmb3JcbiAqIHNvbWV0aGluZyBlbHNlLCBhbmQgYSBiYXJlIGBQVUJMSUNfRE9NQUlOYCByZWFkcyBsaWtlIGFuIGFwcC13aWRlIHNldHRpbmcgcmF0aGVyXG4gKiB0aGFuIGEgcG9ydHIgZGV0YWlsLiBBIG5hbWUgaW4gQU5PVEhFUiBwYWNrYWdlJ3MgbmFtZXNwYWNlIGlzIHdvcnNlIHRoYW4gZ2VuZXJpYzpcbiAqIGBFTUFJTF9BVVRIX0FMTE9XYCBzaXRzIGluIGBAZGJ4LXRvb2xzL2VtYWlsYCdzIGBFTUFJTF8qYCBuYW1lc3BhY2Ugd2hpbGVcbiAqIGNvbmZpZ3VyaW5nIHRoZSBnYXRlLCBub3QgZW1haWwuXG4gKlxuICogRWFjaCBlbnRyeSBpcyBhbiB7QGxpbmsgRW52S2V5fSBsaXN0LCBFQVJMSUVTVC1XSU5TLCB3aG9zZSBmaXJzdCBlbGVtZW50IGlzIHRoZVxuICogY3VycmVudCBuYW1lIGFuZCB3aG9zZSByZW1haW5pbmcgZWxlbWVudHMgYXJlIGRlcHJlY2F0ZWQgYWxpYXNlcywgc28gYSBkZXBsb3ltZW50XG4gKiBjb25maWd1cmVkIGFnYWluc3QgYW4gdW5wcmVmaXhlZCBuYW1lIGtlZXBzIHdvcmtpbmcgYW5kIG5vdGhpbmcgbmVlZHMgYVxuICogY29vcmRpbmF0ZWQgcmVuYW1lLiBSZWFkIHRoZW0gdGhyb3VnaCBgZW52LnN0cmluZ2AgLyBgZW52LnBvc2l0aXZlSW50YCAvXG4gKiBgZW52Lmxpc3RgLCB3aGljaCBhY2NlcHQgdGhlIGxpc3QgZGlyZWN0bHkuXG4gKlxuICogTm90IHJlbmFtZWQ6XG4gKlxuICogICAtIGBEQVRBQlJJQ0tTX0FQUF9QT1JUYCAtIHRoZSBEYXRhYnJpY2tzIEFwcHMgcnVudGltZSBjb250cmFjdC4gVGhlIHBsYXRmb3JtXG4gKiAgICAgc2V0cyBpdDsgdGhlIGdhdGUgaG9ub3VycyBpdC5cbiAqICAgLSBgUE9SVFJfVE9LRU5gIC8gYFBPUlRSX1NFUlZFUmAgLyBgUE9SVFJfQVVUT19BRERfUEFUSGAgLSB1cHN0cmVhbVxuICogICAgIFtwb3J0cl0oaHR0cHM6Ly9naXRodWIuY29tL2FtYWxzaGFqaS9wb3J0cikncyBvd24gbmFtZXNwYWNlLCBhbmRcbiAqICAgICBgUE9SVFJfQVVUT19BRERfUEFUSGAgaXMgcGFzc2VkIHN0cmFpZ2h0IHRvIHRoYXQgYmluYXJ5LiBSZW5hbWluZyB0aGVzZVxuICogICAgIHdvdWxkIHJlbmFtZSBzb21lb25lIGVsc2UncyBjb250cmFjdC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBFbnZLZXkgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG4vKiogQWNjZXNzIGFsbG93LWxpc3QgcGF0dGVybnMgKGRvbWFpbiAvIGdsb2IgLyBgL3JlZ2V4L2ApLiAqL1xuZXhwb3J0IGNvbnN0IEFMTE9XX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX0FVVEhfQUxMT1dcIiwgXCJFTUFJTF9BVVRIX0FMTE9XXCJdO1xuXG4vKiogU3ViamVjdCBsaW5lIGZvciB0aGUgY29kZSBlbWFpbC4gKi9cbmV4cG9ydCBjb25zdCBTVUJKRUNUX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX0FVVEhfU1VCSkVDVFwiLCBcIkFVVEhfU1VCSkVDVFwiXTtcblxuLyoqIERpc3BsYXkgbmFtZSB1c2VkIGluIHRoZSBjb2RlIGVtYWlsIGNvcHkuICovXG5leHBvcnQgY29uc3QgQlJBTkRfTkFNRV9FTlY6IEVudktleSA9IFtcIlRVTk5FTF9BVVRIX0JSQU5EX05BTUVcIiwgXCJBVVRIX0JSQU5EX05BTUVcIl07XG5cbi8qKiBMaW5lIHNob3duIGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBjb2RlIGluIHRoZSBlbWFpbC4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX0FVVEhfTUVTU0FHRVwiLCBcIkFVVEhfTUVTU0FHRVwiXTtcblxuLyoqIFNlc3Npb24gbGlmZXRpbWUsIGluIHNlY29uZHMuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9UVExfRU5WOiBFbnZLZXkgPSBbXCJUVU5ORUxfQVVUSF9TRVNTSU9OX1RUTFwiLCBcIkFVVEhfU0VTU0lPTl9UVExcIl07XG5cbi8qKiBPbmUtdGltZS1jb2RlIGxpZmV0aW1lLCBpbiBzZWNvbmRzLiAqL1xuZXhwb3J0IGNvbnN0IENPREVfVFRMX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX0FVVEhfQ09ERV9UVExcIiwgXCJBVVRIX0NPREVfVFRMXCJdO1xuXG4vKiogSFMyNTYgc2lnbmluZyBzZWNyZXQgZm9yIHRoZSBzZXNzaW9uIEpXVC4gKi9cbmV4cG9ydCBjb25zdCBKV1RfU0VDUkVUX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX0FVVEhfSldUX1NFQ1JFVFwiLCBcIkFVVEhfSldUX1NFQ1JFVFwiXTtcblxuLyoqXG4gKiBGb3JjZS1jbGVhciBjdXRvZmY6IGV2ZXJ5IHNlc3Npb24gaXNzdWVkIEJFRk9SRSBpdCBzdG9wcyB2ZXJpZnlpbmcuIEFueXRoaW5nXG4gKiBgb2JqZWN0LnRvRGF0ZWAgYWNjZXB0cyAtIGEgZGF0ZSwgYW4gSVNPIGluc3RhbnQsIGVwb2NoIHNlY29uZHMvbWlsbGlzLCBvciBhXG4gKiByZWxhdGl2ZSBkdXJhdGlvbiAoYC0zMGRgLCBgNyBkYXlzIGFnb2ApLlxuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9DVVRPRkZfRU5WOiBFbnZLZXkgPSBbXG4gIFwiVFVOTkVMX0FVVEhfU0VTU0lPTl9DVVRPRkZcIixcbiAgXCJUVU5ORUxfQVVUSF9TRVNTSU9OX0VQT0NIXCIsXG5dO1xuXG4vKiogVGhlIHB1YmxpYyBgPHN1YmRvbWFpbj4uPHNlcnZlcj5gIHBvcnRyIHNob3VsZCBzZXJ2ZSBvbi4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSUNfRE9NQUlOX0VOVjogRW52S2V5ID0gW1wiVFVOTkVMX1BVQkxJQ19ET01BSU5cIiwgXCJQVUJMSUNfRE9NQUlOXCJdO1xuXG4vKiogUnVuIHRoZSB0dW5uZWwgT1BFTiwgd2l0aCBubyBnYXRlLiBJZ25vcmVkIHVubGVzcyB0cnV0aHkuICovXG5leHBvcnQgY29uc3QgSU5TRUNVUkVfRU5WOiBFbnZLZXkgPSBcIlRVTk5FTF9JTlNFQ1VSRVwiO1xuXG4vKiogRXh0cmEgYHgtYCByZXF1ZXN0IGhlYWRlcnMgdHVubmVsIHRyYWZmaWMgbWF5IGZvcndhcmQuICovXG5leHBvcnQgY29uc3QgRk9SV0FSRF9IRUFERVJTX0VOVjogRW52S2V5ID0gXCJUVU5ORUxfRk9SV0FSRF9IRUFERVJTXCI7XG4iXX0=
|
package/src/env.ts
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment-variable names the tunnel reads.
|
|
3
|
-
*
|
|
4
|
-
* Every setting is `TUNNEL_`-prefixed, matching the repo convention of naming a
|
|
5
|
-
* variable after the package that owns it (`MASTRA_*`, `TEAMS_*`,
|
|
6
|
-
* `WEB_SEARCH_*`). The prefix matters most for a package that runs as a WRAPPER:
|
|
7
|
-
* the tunnel and the app it wraps share one environment, so an unprefixed name
|
|
8
|
-
* (`AUTH_SUBJECT`, `PUBLIC_DOMAIN`, ...) is one the wrapped app may already use for
|
|
9
|
-
* something else, and a bare `PUBLIC_DOMAIN` reads like an app-wide setting rather
|
|
10
|
-
* than a portr detail. A name in ANOTHER package's namespace is worse than generic:
|
|
11
|
-
* `EMAIL_AUTH_ALLOW` sits in `@dbx-tools/email`'s `EMAIL_*` namespace while
|
|
12
|
-
* configuring the gate, not email.
|
|
13
|
-
*
|
|
14
|
-
* Each entry is an {@link EnvKey} list, EARLIEST-WINS, whose first element is the
|
|
15
|
-
* current name and whose remaining elements are deprecated aliases, so a deployment
|
|
16
|
-
* configured against an unprefixed name keeps working and nothing needs a
|
|
17
|
-
* coordinated rename. Read them through `env.string` / `env.positiveInt` /
|
|
18
|
-
* `env.list`, which accept the list directly.
|
|
19
|
-
*
|
|
20
|
-
* Not renamed:
|
|
21
|
-
*
|
|
22
|
-
* - `DATABRICKS_APP_PORT` - the Databricks Apps runtime contract. The platform
|
|
23
|
-
* sets it; the gate honours it.
|
|
24
|
-
* - `PORTR_TOKEN` / `PORTR_SERVER` / `PORTR_AUTO_ADD_PATH` - upstream
|
|
25
|
-
* [portr](https://github.com/amalshaji/portr)'s own namespace, and
|
|
26
|
-
* `PORTR_AUTO_ADD_PATH` is passed straight to that binary. Renaming these
|
|
27
|
-
* would rename someone else's contract.
|
|
28
|
-
*
|
|
29
|
-
* @module
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
import type { EnvKey } from "@dbx-tools/shared-core";
|
|
33
|
-
|
|
34
|
-
/** Access allow-list patterns (domain / glob / `/regex/`). */
|
|
35
|
-
export const ALLOW_ENV: EnvKey = ["TUNNEL_AUTH_ALLOW", "EMAIL_AUTH_ALLOW"];
|
|
36
|
-
|
|
37
|
-
/** Subject line for the code email. */
|
|
38
|
-
export const SUBJECT_ENV: EnvKey = ["TUNNEL_AUTH_SUBJECT", "AUTH_SUBJECT"];
|
|
39
|
-
|
|
40
|
-
/** Display name used in the code email copy. */
|
|
41
|
-
export const BRAND_NAME_ENV: EnvKey = ["TUNNEL_AUTH_BRAND_NAME", "AUTH_BRAND_NAME"];
|
|
42
|
-
|
|
43
|
-
/** Line shown immediately above the code in the email. */
|
|
44
|
-
export const MESSAGE_ENV: EnvKey = ["TUNNEL_AUTH_MESSAGE", "AUTH_MESSAGE"];
|
|
45
|
-
|
|
46
|
-
/** Session lifetime, in seconds. */
|
|
47
|
-
export const SESSION_TTL_ENV: EnvKey = ["TUNNEL_AUTH_SESSION_TTL", "AUTH_SESSION_TTL"];
|
|
48
|
-
|
|
49
|
-
/** One-time-code lifetime, in seconds. */
|
|
50
|
-
export const CODE_TTL_ENV: EnvKey = ["TUNNEL_AUTH_CODE_TTL", "AUTH_CODE_TTL"];
|
|
51
|
-
|
|
52
|
-
/** HS256 signing secret for the session JWT. */
|
|
53
|
-
export const JWT_SECRET_ENV: EnvKey = ["TUNNEL_AUTH_JWT_SECRET", "AUTH_JWT_SECRET"];
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Force-clear cutoff: every session issued BEFORE it stops verifying. Anything
|
|
57
|
-
* `object.toDate` accepts - a date, an ISO instant, epoch seconds/millis, or a
|
|
58
|
-
* relative duration (`-30d`, `7 days ago`).
|
|
59
|
-
*/
|
|
60
|
-
export const SESSION_CUTOFF_ENV: EnvKey = [
|
|
61
|
-
"TUNNEL_AUTH_SESSION_CUTOFF",
|
|
62
|
-
"TUNNEL_AUTH_SESSION_EPOCH",
|
|
63
|
-
];
|
|
64
|
-
|
|
65
|
-
/** The public `<subdomain>.<server>` portr should serve on. */
|
|
66
|
-
export const PUBLIC_DOMAIN_ENV: EnvKey = ["TUNNEL_PUBLIC_DOMAIN", "PUBLIC_DOMAIN"];
|
|
67
|
-
|
|
68
|
-
/** Run the tunnel OPEN, with no gate. Ignored unless truthy. */
|
|
69
|
-
export const INSECURE_ENV: EnvKey = "TUNNEL_INSECURE";
|
|
70
|
-
|
|
71
|
-
/** Extra `x-` request headers tunnel traffic may forward. */
|
|
72
|
-
export const FORWARD_HEADERS_ENV: EnvKey = "TUNNEL_FORWARD_HEADERS";
|