frely-cli 0.23.8 → 0.23.10
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 +50 -20
- package/README.zh-CN.md +47 -19
- package/dist/agent/local/approvals.d.ts +24 -0
- package/dist/agent/local/approvals.js +79 -0
- package/dist/agent/local/approvals.js.map +1 -0
- package/dist/agent/local/command.d.ts +10 -0
- package/dist/agent/local/command.js +292 -0
- package/dist/agent/local/command.js.map +1 -0
- package/dist/agent/local/confine.d.ts +20 -0
- package/dist/agent/local/confine.js +52 -0
- package/dist/agent/local/confine.js.map +1 -0
- package/dist/agent/local/manifest.d.ts +17 -0
- package/dist/agent/local/manifest.js +55 -0
- package/dist/agent/local/manifest.js.map +1 -0
- package/dist/agent/local/model-proxy.d.ts +18 -0
- package/dist/agent/local/model-proxy.js +111 -0
- package/dist/agent/local/model-proxy.js.map +1 -0
- package/dist/agent/local/source.d.ts +28 -0
- package/dist/agent/local/source.js +64 -0
- package/dist/agent/local/source.js.map +1 -0
- package/dist/agent/local/store.d.ts +45 -0
- package/dist/agent/local/store.js +78 -0
- package/dist/agent/local/store.js.map +1 -0
- package/dist/agent/local/supervisor.d.ts +9 -0
- package/dist/agent/local/supervisor.js +62 -0
- package/dist/agent/local/supervisor.js.map +1 -0
- package/dist/agent-help.d.ts +294 -18
- package/dist/agent-help.js +56 -7
- package/dist/agent-help.js.map +1 -1
- package/dist/auth.d.ts +5 -0
- package/dist/auth.js +36 -0
- package/dist/auth.js.map +1 -1
- package/dist/cloud.d.ts +2 -0
- package/dist/cloud.js +38 -0
- package/dist/cloud.js.map +1 -1
- package/dist/controller/args.d.ts +25 -0
- package/dist/controller/args.js +61 -0
- package/dist/controller/args.js.map +1 -0
- package/dist/controller/client.d.ts +52 -0
- package/dist/controller/client.js +124 -0
- package/dist/controller/client.js.map +1 -0
- package/dist/controller/commands.d.ts +16 -0
- package/dist/controller/commands.js +411 -0
- package/dist/controller/commands.js.map +1 -0
- package/dist/controller/dpop.d.ts +24 -0
- package/dist/controller/dpop.js +26 -0
- package/dist/controller/dpop.js.map +1 -0
- package/dist/controller/session.d.ts +53 -0
- package/dist/controller/session.js +211 -0
- package/dist/controller/session.js.map +1 -0
- package/dist/device/protocol.d.ts +1 -1
- package/dist/device/protocol.js +1 -1
- package/dist/device/protocol.js.map +1 -1
- package/dist/device/relay-client.d.ts +14 -0
- package/dist/device/relay-client.js +34 -14
- package/dist/device/relay-client.js.map +1 -1
- package/dist/index.js +79 -8
- package/dist/index.js.map +1 -1
- package/dist/provider/control.d.ts +10 -0
- package/dist/provider/control.js +19 -0
- package/dist/provider/control.js.map +1 -1
- package/dist/provider/share.js +4 -1
- package/dist/provider/share.js.map +1 -1
- package/dist/runtime/sandbox.d.ts +20 -0
- package/dist/runtime/sandbox.js +39 -1
- package/dist/runtime/sandbox.js.map +1 -1
- package/dist/share/allowance.d.ts +8 -0
- package/dist/share/allowance.js +22 -0
- package/dist/share/allowance.js.map +1 -0
- package/dist/share/control.d.ts +18 -0
- package/dist/share/control.js +53 -0
- package/dist/share/control.js.map +1 -0
- package/dist/share/frpc-config.d.ts +24 -0
- package/dist/share/frpc-config.js +63 -0
- package/dist/share/frpc-config.js.map +1 -0
- package/dist/share/frpc.d.ts +30 -0
- package/dist/share/frpc.js +108 -0
- package/dist/share/frpc.js.map +1 -0
- package/dist/share/gateway.d.ts +26 -0
- package/dist/share/gateway.js +100 -0
- package/dist/share/gateway.js.map +1 -0
- package/dist/share/run.d.ts +43 -0
- package/dist/share/run.js +163 -0
- package/dist/share/run.js.map +1 -0
- package/dist/share/service-config.d.ts +39 -0
- package/dist/share/service-config.js +85 -0
- package/dist/share/service-config.js.map +1 -0
- package/dist/share/service-control.d.ts +15 -0
- package/dist/share/service-control.js +31 -0
- package/dist/share/service-control.js.map +1 -0
- package/dist/share/service-run.d.ts +55 -0
- package/dist/share/service-run.js +285 -0
- package/dist/share/service-run.js.map +1 -0
- package/dist/share/service-state.d.ts +16 -0
- package/dist/share/service-state.js +66 -0
- package/dist/share/service-state.js.map +1 -0
- package/dist/skill/access.d.ts +2 -2
- package/dist/skill/access.js +4 -2
- package/dist/skill/access.js.map +1 -1
- package/dist/skill/cloud-item.d.ts +2 -2
- package/dist/skill/cloud-item.js.map +1 -1
- package/dist/skill/entry.d.ts +1 -1
- package/dist/skill/entry.js +1 -1
- package/dist/skill/remote-mcp.d.ts +3 -0
- package/dist/skill/remote-mcp.js +7 -1
- package/dist/skill/remote-mcp.js.map +1 -1
- package/dist/skill/router.d.ts +6 -2
- package/dist/skill/router.js +4 -4
- package/dist/skill/router.js.map +1 -1
- package/dist/skill/sealed-run.js +5 -3
- package/dist/skill/sealed-run.js.map +1 -1
- package/dist/uninstall.d.ts +4 -0
- package/dist/uninstall.js +14 -0
- package/dist/uninstall.js.map +1 -1
- package/package.json +3 -2
- package/skills/frely-cli/SKILL.md +8 -0
package/dist/provider/share.js
CHANGED
|
@@ -2,7 +2,8 @@ import { requireLogin } from "../auth.js";
|
|
|
2
2
|
import { ensureDevice } from "../device/control.js";
|
|
3
3
|
import { createLocalProviderToken, loadOrCreateDeviceIdentity } from "../device/identity.js";
|
|
4
4
|
import { installDeviceRelayService } from "../service.js";
|
|
5
|
-
import {
|
|
5
|
+
import { relayAllowanceLines } from "../share/allowance.js";
|
|
6
|
+
import { fetchRelayUsage, finalizeLocalProvider, listPersonalProviderSlots, prepareLocalProvider, waitForLocalProviderRelay } from "./control.js";
|
|
6
7
|
import { discoverLocalModels } from "./local.js";
|
|
7
8
|
import { isSupportedLocalModelName, listLocalProviders, normalizeLoopbackOpenAiBaseUrl, saveLocalProvider } from "./state.js";
|
|
8
9
|
let inflight = Promise.resolve();
|
|
@@ -65,6 +66,8 @@ async function activateLocalProvider(auth, deviceId, provider, log, installServi
|
|
|
65
66
|
log(`Models: ${provider.models.join(", ")}\n`);
|
|
66
67
|
log(`Device Relay: ${service ? (service.active ? "running" : "installed") : "running"}\n`);
|
|
67
68
|
log("The Provider is ready for Access Point creation in Frely.\n");
|
|
69
|
+
for (const line of await relayAllowanceLines(async () => (await fetchRelayUsage()).remainingBytes))
|
|
70
|
+
log(`${line}\n`);
|
|
68
71
|
return ready;
|
|
69
72
|
}
|
|
70
73
|
//# sourceMappingURL=share.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/provider/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/provider/share.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,7 +86,20 @@ export declare const SSH_PROXY_PREFIX: string;
|
|
|
86
86
|
* relay that reads them from the environment. Other platforms keep srt's own setting (Linux uses socat with proxyauth).
|
|
87
87
|
*/
|
|
88
88
|
export declare function sshProxyPrefix(platform?: string, helper?: readonly string[]): string;
|
|
89
|
+
/**
|
|
90
|
+
* A narrower network than the open default, for a process that only ever runs one confined program (`frely agent local`).
|
|
91
|
+
* `mitmProxy` sends plain-HTTP requests for its domains to a Unix socket the CLI itself serves, so the program never holds the credential behind it.
|
|
92
|
+
*/
|
|
93
|
+
export interface SandboxNetworkPolicy {
|
|
94
|
+
allowedDomains: readonly string[];
|
|
95
|
+
mitmProxy?: {
|
|
96
|
+
socketPath: string;
|
|
97
|
+
domains: readonly string[];
|
|
98
|
+
};
|
|
99
|
+
}
|
|
89
100
|
export interface SandboxConfigOptions {
|
|
101
|
+
/** Replaces the default open network. Takes effect only before the sandbox starts, see `restrictSandboxNetwork`. */
|
|
102
|
+
network?: SandboxNetworkPolicy;
|
|
90
103
|
/** run_command only: the command may write the workspace `.git/config`; the caller then runs the guard in git-config-guard.ts. */
|
|
91
104
|
allowGitConfig?: boolean;
|
|
92
105
|
/** The user's own proxy that srt forwards to. Read once when the sandbox starts. */
|
|
@@ -95,6 +108,11 @@ export interface SandboxConfigOptions {
|
|
|
95
108
|
export declare function buildSandboxConfig(workspaceRoot: string, allowedGroups?: readonly string[], options?: SandboxConfigOptions): SandboxRuntimeConfig;
|
|
96
109
|
/** Plain-words refusal shown to the caller when the sandbox cannot run on this device. */
|
|
97
110
|
export declare function sandboxUnavailableMessage(reason: string): string;
|
|
111
|
+
/**
|
|
112
|
+
* Narrows the network of every sandboxed command in this process. srt reads the network settings once when it starts, so this must be
|
|
113
|
+
* called before the first command; the MCP runtime never calls it and keeps the open default.
|
|
114
|
+
*/
|
|
115
|
+
export declare function restrictSandboxNetwork(policy: SandboxNetworkPolicy): void;
|
|
98
116
|
/** What the sandbox needs to wrap one command: the parts of srt that `wrapSerialized` uses, so tests can stand in for it. */
|
|
99
117
|
export interface WrapManager {
|
|
100
118
|
updateConfig(config: SandboxRuntimeConfig): void;
|
|
@@ -159,6 +177,8 @@ export interface DenialContext {
|
|
|
159
177
|
export declare function sandboxDenialHint(stderr: string, command?: string, exitCode?: number | null, sshConfigReadable?: boolean, context?: DenialContext): string | undefined;
|
|
160
178
|
/** Whether ~/.ssh/config can be read by the CLI process itself (outside the sandbox). */
|
|
161
179
|
export declare function sshConfigReadable(): boolean;
|
|
180
|
+
/** Stops srt's proxies and bridges. A process that confined its own work (`frely agent local`) calls this when done, or it never exits. */
|
|
181
|
+
export declare function shutdownSandbox(): Promise<void>;
|
|
162
182
|
/** Exposed for tests: resets the module-level init state and the underlying manager. */
|
|
163
183
|
export declare function resetSandboxForTests(): Promise<void>;
|
|
164
184
|
export {};
|
package/dist/runtime/sandbox.js
CHANGED
|
@@ -242,6 +242,24 @@ function gitWriteDenials(workspaceRoot, allowGitConfig) {
|
|
|
242
242
|
}
|
|
243
243
|
export function buildSandboxConfig(workspaceRoot, allowedGroups = [], options = {}) {
|
|
244
244
|
const allowGitConfig = options.allowGitConfig === true;
|
|
245
|
+
if (options.network) {
|
|
246
|
+
return {
|
|
247
|
+
network: {
|
|
248
|
+
allowedDomains: [...options.network.allowedDomains],
|
|
249
|
+
deniedDomains: [],
|
|
250
|
+
// A restricted program gets no loopback of its own: on macOS this switch also lets it reach every other port on this computer.
|
|
251
|
+
allowLocalBinding: false,
|
|
252
|
+
...(options.network.mitmProxy ? { mitmProxy: { socketPath: options.network.mitmProxy.socketPath, domains: [...options.network.mitmProxy.domains] } } : {}),
|
|
253
|
+
...(options.parentProxy ? { parentProxy: options.parentProxy } : {}),
|
|
254
|
+
},
|
|
255
|
+
filesystem: {
|
|
256
|
+
denyRead: sensitiveReadPaths(allowedGroups),
|
|
257
|
+
allowWrite: [workspaceRoot, tmpdir(), ...writablePaths(allowedGroups)],
|
|
258
|
+
denyWrite: [...protectedWriteDenials(allowedGroups), ...gitWriteDenials(workspaceRoot, allowGitConfig)],
|
|
259
|
+
...(allowGitConfig ? { allowGitConfig: true } : {}),
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
245
263
|
return {
|
|
246
264
|
network: {
|
|
247
265
|
// Left open by default: an empty allowlist would break ordinary
|
|
@@ -278,6 +296,17 @@ export function sandboxUnavailableMessage(reason) {
|
|
|
278
296
|
+ "or set FRELY_SANDBOX=off on the device.";
|
|
279
297
|
}
|
|
280
298
|
let initialized;
|
|
299
|
+
/** Set by `restrictSandboxNetwork`; every command of this process then runs under it. */
|
|
300
|
+
let networkPolicy;
|
|
301
|
+
/**
|
|
302
|
+
* Narrows the network of every sandboxed command in this process. srt reads the network settings once when it starts, so this must be
|
|
303
|
+
* called before the first command; the MCP runtime never calls it and keeps the open default.
|
|
304
|
+
*/
|
|
305
|
+
export function restrictSandboxNetwork(policy) {
|
|
306
|
+
if (initialized)
|
|
307
|
+
throw new Error("The sandbox network can only be restricted before the first command runs.");
|
|
308
|
+
networkPolicy = policy;
|
|
309
|
+
}
|
|
281
310
|
/** The configuration srt was initialized with: what every command runs under, and what is put back after a git-config wrap. */
|
|
282
311
|
let baseConfig;
|
|
283
312
|
async function ensureInitialized(workspaceRoot) {
|
|
@@ -297,7 +326,7 @@ async function ensureInitialized(workspaceRoot) {
|
|
|
297
326
|
warnOnce(warning);
|
|
298
327
|
try {
|
|
299
328
|
// The proxy servers keep the upstream proxy they start with, so a changed proxy needs a restart of the service.
|
|
300
|
-
baseConfig = buildSandboxConfig(workspaceRoot, [], { parentProxy: resolveUpstreamProxy() });
|
|
329
|
+
baseConfig = buildSandboxConfig(workspaceRoot, [], { parentProxy: resolveUpstreamProxy(), ...(networkPolicy ? { network: networkPolicy } : {}) });
|
|
301
330
|
await SandboxManager.initialize(structuredClone(baseConfig));
|
|
302
331
|
return { ready: true };
|
|
303
332
|
}
|
|
@@ -516,10 +545,19 @@ export function sshConfigReadable() {
|
|
|
516
545
|
return false;
|
|
517
546
|
}
|
|
518
547
|
}
|
|
548
|
+
/** Stops srt's proxies and bridges. A process that confined its own work (`frely agent local`) calls this when done, or it never exits. */
|
|
549
|
+
export async function shutdownSandbox() {
|
|
550
|
+
if (!initialized)
|
|
551
|
+
return;
|
|
552
|
+
initialized = undefined;
|
|
553
|
+
baseConfig = undefined;
|
|
554
|
+
await SandboxManager.reset().catch(() => undefined);
|
|
555
|
+
}
|
|
519
556
|
/** Exposed for tests: resets the module-level init state and the underlying manager. */
|
|
520
557
|
export async function resetSandboxForTests() {
|
|
521
558
|
initialized = undefined;
|
|
522
559
|
baseConfig = undefined;
|
|
560
|
+
networkPolicy = undefined;
|
|
523
561
|
wrapQueue = Promise.resolve();
|
|
524
562
|
warned = false;
|
|
525
563
|
await SandboxManager.reset().catch(() => undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/runtime/sandbox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/runtime/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Said wherever traffic is relayed through Frely: shares, services and local models all count against one weekly allowance. */
|
|
2
|
+
export declare const ALLOWANCE_NOTE = "Relayed traffic counts against your weekly relay allowance.";
|
|
3
|
+
export declare function remainingAllowanceLine(remainingBytes: number): string;
|
|
4
|
+
/**
|
|
5
|
+
* The two lines `frely service share` and `frely provider share` print: what is left of this week's relay allowance, then the note.
|
|
6
|
+
* When the amount cannot be fetched only the note is printed; the share itself never fails because of it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function relayAllowanceLines(fetchRemainingBytes: () => Promise<number>): Promise<string[]>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const MIB = 1024 * 1024;
|
|
2
|
+
/** Said wherever traffic is relayed through Frely: shares, services and local models all count against one weekly allowance. */
|
|
3
|
+
export const ALLOWANCE_NOTE = "Relayed traffic counts against your weekly relay allowance.";
|
|
4
|
+
export function remainingAllowanceLine(remainingBytes) {
|
|
5
|
+
return `${Math.floor(Math.max(0, remainingBytes) / MIB)} MiB of relay allowance left this week (UTC).`;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The two lines `frely service share` and `frely provider share` print: what is left of this week's relay allowance, then the note.
|
|
9
|
+
* When the amount cannot be fetched only the note is printed; the share itself never fails because of it.
|
|
10
|
+
*/
|
|
11
|
+
export async function relayAllowanceLines(fetchRemainingBytes) {
|
|
12
|
+
try {
|
|
13
|
+
const remaining = await fetchRemainingBytes();
|
|
14
|
+
if (Number.isFinite(remaining))
|
|
15
|
+
return [remainingAllowanceLine(remaining), ALLOWANCE_NOTE];
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Fall through to the note alone.
|
|
19
|
+
}
|
|
20
|
+
return [ALLOWANCE_NOTE];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=allowance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowance.js","sourceRoot":"","sources":["../../src/share/allowance.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAExB,gIAAgI;AAChI,MAAM,CAAC,MAAM,cAAc,GAAG,6DAA6D,CAAC;AAE5F,MAAM,UAAU,sBAAsB,CAAC,cAAsB;IAC3D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC,+CAA+C,CAAC;AACzG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,mBAA0C;IAClF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IACD,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ShareGrant } from "./frpc-config.js";
|
|
2
|
+
export interface ShareHeartbeat {
|
|
3
|
+
readonly active: boolean;
|
|
4
|
+
readonly reason?: string;
|
|
5
|
+
readonly remainingBytes: number;
|
|
6
|
+
readonly expiresAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ShareControl {
|
|
9
|
+
create(input: {
|
|
10
|
+
ttlSeconds?: number;
|
|
11
|
+
}): Promise<ShareGrant>;
|
|
12
|
+
heartbeat(sessionId: string): Promise<ShareHeartbeat>;
|
|
13
|
+
revoke(sessionId: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
/** Calls Frely's share route as the signed-in user; the device is this computer's enrolled device. */
|
|
16
|
+
export declare function accountShareControl(): Promise<ShareControl>;
|
|
17
|
+
/** A POST helper for one of Frely's device-relay routes, signed in as the user. */
|
|
18
|
+
export declare function accountRelayCaller(path: string): Promise<(body: Record<string, unknown>) => Promise<unknown>>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { requireLogin } from "../auth.js";
|
|
2
|
+
import { ensureDevice } from "../device/control.js";
|
|
3
|
+
import { parseShareGrant } from "./frpc-config.js";
|
|
4
|
+
const TIMEOUT_MS = 20_000;
|
|
5
|
+
const SHARES_PATH = "/api/user/device-relay/shares";
|
|
6
|
+
/** Calls Frely's share route as the signed-in user; the device is this computer's enrolled device. */
|
|
7
|
+
export async function accountShareControl() {
|
|
8
|
+
const device = await ensureDevice();
|
|
9
|
+
const call = await accountRelayCaller(SHARES_PATH);
|
|
10
|
+
return {
|
|
11
|
+
async create(input) { return parseShareGrant(await call({ action: "create", deviceId: device.deviceId, ...(input.ttlSeconds !== undefined ? { ttlSeconds: input.ttlSeconds } : {}) })); },
|
|
12
|
+
async heartbeat(sessionId) {
|
|
13
|
+
const value = await call({ action: "heartbeat", sessionId });
|
|
14
|
+
if (!value || typeof value !== "object" || typeof value.active !== "boolean")
|
|
15
|
+
throw new Error("Frely returned an invalid share status.");
|
|
16
|
+
return value;
|
|
17
|
+
},
|
|
18
|
+
async revoke(sessionId) { await call({ action: "revoke", sessionId }); },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** A POST helper for one of Frely's device-relay routes, signed in as the user. */
|
|
22
|
+
export async function accountRelayCaller(path) {
|
|
23
|
+
const auth = await requireLogin();
|
|
24
|
+
return async (body) => {
|
|
25
|
+
const response = await relayFetch(auth.config.relayUrl, auth.credential, path, { method: "POST", body: JSON.stringify(body) });
|
|
26
|
+
const payload = await response.json().catch(() => null);
|
|
27
|
+
if (!response.ok)
|
|
28
|
+
throw new Error(publicError(payload, response.status));
|
|
29
|
+
return payload;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async function relayFetch(relayUrl, credential, path, init) {
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
35
|
+
timer.unref?.();
|
|
36
|
+
try {
|
|
37
|
+
return await fetch(`${relayUrl}${path}`, { ...init, signal: controller.signal, redirect: "error", headers: { accept: "application/json", origin: relayUrl, "content-type": "application/json", ...(credential.scheme === "bearer" ? { authorization: `Bearer ${credential.value}` } : { cookie: credential.value }) } });
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (controller.signal.aborted)
|
|
41
|
+
throw new Error("Frely share request timed out.");
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function publicError(payload, status) {
|
|
49
|
+
const root = payload && typeof payload === "object" && !Array.isArray(payload) ? payload : {};
|
|
50
|
+
const error = root.error && typeof root.error === "object" && !Array.isArray(root.error) ? root.error : root;
|
|
51
|
+
return typeof error.message === "string" ? error.message : `Frely share request failed with HTTP ${status}.`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/share/control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AAEpE,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAUpD,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACnD,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzL,KAAK,CAAC,SAAS,CAAC,SAAS;YACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAQ,KAA8B,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACnK,OAAO,KAAuB,CAAC;QACjC,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/H,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,UAA0B,EAAE,IAAY,EAAE,IAAiB;IACrG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChF,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3T,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACjF,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB,EAAE,MAAc;IACnD,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxI,OAAO,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,MAAM,GAAG,CAAC;AAC/G,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** What the relay returns for a share session (`POST /api/user/device-relay/shares`, action create). */
|
|
2
|
+
export interface ShareGrant {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly url: string;
|
|
5
|
+
readonly expiresAt: string;
|
|
6
|
+
readonly node: string;
|
|
7
|
+
readonly bandwidthBytesPerSecond: number;
|
|
8
|
+
readonly remainingBytes: number;
|
|
9
|
+
readonly frpc: {
|
|
10
|
+
readonly serverAddr: string;
|
|
11
|
+
readonly serverPort: number;
|
|
12
|
+
readonly user: string;
|
|
13
|
+
readonly token: string;
|
|
14
|
+
readonly proxyName: string;
|
|
15
|
+
readonly subdomain: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Checks the grant's shape before anything of it reaches a process or a file; throws on anything unexpected. */
|
|
19
|
+
export declare function parseShareGrant(value: unknown): ShareGrant;
|
|
20
|
+
/**
|
|
21
|
+
* The frpc config for a share: one http proxy that points at the local gateway on loopback. No client plugin, no admin port and no
|
|
22
|
+
* other proxy type are ever written, and `localIP` is fixed here, never taken from the relay.
|
|
23
|
+
*/
|
|
24
|
+
export declare function frpcConfigToml(grant: ShareGrant, gatewayPort: number): string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const HOST = /^(?:[A-Za-z0-9](?:[A-Za-z0-9.-]{0,251}[A-Za-z0-9])?|\[[0-9A-Fa-f:]{2,45}\])$/u;
|
|
2
|
+
/** Checks the grant's shape before anything of it reaches a process or a file; throws on anything unexpected. */
|
|
3
|
+
export function parseShareGrant(value) {
|
|
4
|
+
const fail = () => { throw new Error("Frely returned an invalid share session."); };
|
|
5
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
6
|
+
return fail();
|
|
7
|
+
const grant = value, frpc = grant.frpc;
|
|
8
|
+
if (typeof grant.id !== "string" || !/^frps_[0-9a-f]{24}$/u.test(grant.id))
|
|
9
|
+
return fail();
|
|
10
|
+
if (typeof grant.url !== "string" || typeof grant.expiresAt !== "string" || typeof grant.node !== "string")
|
|
11
|
+
return fail();
|
|
12
|
+
if (typeof grant.bandwidthBytesPerSecond !== "number" || typeof grant.remainingBytes !== "number")
|
|
13
|
+
return fail();
|
|
14
|
+
if (!frpc || typeof frpc !== "object")
|
|
15
|
+
return fail();
|
|
16
|
+
const { serverAddr, serverPort, user, token, proxyName, subdomain } = frpc;
|
|
17
|
+
if (typeof serverAddr !== "string" || !HOST.test(serverAddr))
|
|
18
|
+
return fail();
|
|
19
|
+
if (typeof serverPort !== "number" || !Number.isInteger(serverPort) || serverPort < 1 || serverPort > 65535)
|
|
20
|
+
return fail();
|
|
21
|
+
if (user !== grant.id || typeof token !== "string" || !/^frs_[A-Za-z0-9_-]{20,64}$/u.test(token))
|
|
22
|
+
return fail();
|
|
23
|
+
if (proxyName !== "share" || typeof subdomain !== "string" || !/^s[0-9a-f]{14}$/u.test(subdomain))
|
|
24
|
+
return fail();
|
|
25
|
+
let link;
|
|
26
|
+
try {
|
|
27
|
+
link = new URL(grant.url);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return fail();
|
|
31
|
+
}
|
|
32
|
+
if (link.protocol !== "https:" || !link.hostname.startsWith(`${subdomain}.`))
|
|
33
|
+
return fail();
|
|
34
|
+
return { id: grant.id, url: grant.url, expiresAt: grant.expiresAt, node: grant.node, bandwidthBytesPerSecond: grant.bandwidthBytesPerSecond, remainingBytes: grant.remainingBytes, frpc: { serverAddr, serverPort, user, token, proxyName, subdomain } };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The frpc config for a share: one http proxy that points at the local gateway on loopback. No client plugin, no admin port and no
|
|
38
|
+
* other proxy type are ever written, and `localIP` is fixed here, never taken from the relay.
|
|
39
|
+
*/
|
|
40
|
+
export function frpcConfigToml(grant, gatewayPort) {
|
|
41
|
+
if (!Number.isInteger(gatewayPort) || gatewayPort < 1 || gatewayPort > 65535)
|
|
42
|
+
throw new Error("Invalid gateway port.");
|
|
43
|
+
const q = (text) => JSON.stringify(text);
|
|
44
|
+
return [
|
|
45
|
+
`serverAddr = ${q(grant.frpc.serverAddr.replace(/^\[|\]$/gu, ""))}`,
|
|
46
|
+
`serverPort = ${grant.frpc.serverPort}`,
|
|
47
|
+
`user = ${q(grant.frpc.user)}`,
|
|
48
|
+
`loginFailExit = true`,
|
|
49
|
+
`metadatas.token = ${q(grant.frpc.token)}`,
|
|
50
|
+
`transport.tls.enable = true`,
|
|
51
|
+
`log.to = "console"`,
|
|
52
|
+
`log.level = "warn"`,
|
|
53
|
+
``,
|
|
54
|
+
`[[proxies]]`,
|
|
55
|
+
`name = ${q(grant.frpc.proxyName)}`,
|
|
56
|
+
`type = "http"`,
|
|
57
|
+
`localIP = "127.0.0.1"`,
|
|
58
|
+
`localPort = ${gatewayPort}`,
|
|
59
|
+
`subdomain = ${q(grant.frpc.subdomain)}`,
|
|
60
|
+
``,
|
|
61
|
+
].join("\n");
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=frpc-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frpc-config.js","sourceRoot":"","sources":["../../src/share/frpc-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* frpc, the client of Frely's frps relay, is downloaded on first use to the user's data directory and run by `frely share`. The version is
|
|
3
|
+
* pinned and every platform's archive has its SHA-256 here (from the release's frp_sha256_checksums.txt), so a changed download is refused.
|
|
4
|
+
*/
|
|
5
|
+
export declare const FRPC_VERSION = "0.71.1";
|
|
6
|
+
export interface FrpcAsset {
|
|
7
|
+
readonly file: string;
|
|
8
|
+
readonly sha256: string;
|
|
9
|
+
readonly binary: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function frpcAsset(platform?: string, arch?: string): FrpcAsset;
|
|
12
|
+
/** `~/.local/share/frely/bin` (`XDG_DATA_HOME` first; `%LOCALAPPDATA%` on Windows). */
|
|
13
|
+
export declare function frpcDirectory(env?: NodeJS.ProcessEnv, platform?: string, home?: string): string;
|
|
14
|
+
export declare function frpcPath(directory: string, asset: FrpcAsset): string;
|
|
15
|
+
export declare function sha256Hex(bytes: Uint8Array): string;
|
|
16
|
+
export interface FrpcDeps {
|
|
17
|
+
readonly platform?: string;
|
|
18
|
+
readonly arch?: string;
|
|
19
|
+
/** Replaces the pinned table entry (tests only). */
|
|
20
|
+
readonly asset?: FrpcAsset;
|
|
21
|
+
readonly directory?: string;
|
|
22
|
+
/** Base URL that serves the release files by name; `FRELY_FRPC_BASE_URL` points it at a mirror (the checksum still applies). */
|
|
23
|
+
readonly baseUrl?: string;
|
|
24
|
+
readonly download?: (url: string) => Promise<Uint8Array>;
|
|
25
|
+
/** Unpacks a .tar.gz or .zip archive into a directory. */
|
|
26
|
+
readonly extract?: (archive: string, into: string) => Promise<void>;
|
|
27
|
+
readonly log?: (text: string) => void;
|
|
28
|
+
}
|
|
29
|
+
/** The path of the pinned frpc, downloaded and verified first when it is not there yet. */
|
|
30
|
+
export declare function ensureFrpc(deps?: FrpcDeps): Promise<string>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { chmod, copyFile, mkdir, mkdtemp, readdir, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { homedir, tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { execFile } from "node:child_process";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
/**
|
|
8
|
+
* frpc, the client of Frely's frps relay, is downloaded on first use to the user's data directory and run by `frely share`. The version is
|
|
9
|
+
* pinned and every platform's archive has its SHA-256 here (from the release's frp_sha256_checksums.txt), so a changed download is refused.
|
|
10
|
+
*/
|
|
11
|
+
export const FRPC_VERSION = "0.71.1";
|
|
12
|
+
const ASSETS = Object.freeze({
|
|
13
|
+
"darwin-arm64": { file: `frp_${FRPC_VERSION}_darwin_arm64.tar.gz`, sha256: "d15d0324b99e14619c9aa46e37f6db588c06a09be4bc6f7948890b6b61077842", binary: "frpc" },
|
|
14
|
+
"darwin-x64": { file: `frp_${FRPC_VERSION}_darwin_amd64.tar.gz`, sha256: "8acb59b6fb998cc8d209d1373d90bf70fa5ec3efeb4dfbc7bda6ce3abd78cb45", binary: "frpc" },
|
|
15
|
+
"linux-x64": { file: `frp_${FRPC_VERSION}_linux_amd64.tar.gz`, sha256: "1d9875210972a5d1a62b2dc4c48df45ab0af05d3ca1b5e494a014428259df803", binary: "frpc" },
|
|
16
|
+
"linux-arm64": { file: `frp_${FRPC_VERSION}_linux_arm64.tar.gz`, sha256: "8edf590b0c396fa42f9c147121a76af83cfc2002b08f5aef0ea1008c43482019", binary: "frpc" },
|
|
17
|
+
"win32-x64": { file: `frp_${FRPC_VERSION}_windows_amd64.zip`, sha256: "b90074b2b6a1d792a7a40f085ac6d276bcab2d1bc60201f8a86ca53ce65ce821", binary: "frpc.exe" },
|
|
18
|
+
"win32-arm64": { file: `frp_${FRPC_VERSION}_windows_arm64.zip`, sha256: "6c25afb4058f7708937db7064836fec593e941de0e6c2c255982335a9b16d370", binary: "frpc.exe" },
|
|
19
|
+
});
|
|
20
|
+
const RELEASE_BASE = `https://github.com/fatedier/frp/releases/download/v${FRPC_VERSION}`;
|
|
21
|
+
const DOWNLOAD_TIMEOUT_MS = 120_000;
|
|
22
|
+
const MAX_ARCHIVE_BYTES = 64 * 1024 * 1024;
|
|
23
|
+
const execute = promisify(execFile);
|
|
24
|
+
export function frpcAsset(platform = process.platform, arch = process.arch) {
|
|
25
|
+
const asset = ASSETS[`${platform}-${arch}`];
|
|
26
|
+
if (!asset)
|
|
27
|
+
throw new Error(`frely share has no frpc build for ${platform}-${arch}.`);
|
|
28
|
+
return asset;
|
|
29
|
+
}
|
|
30
|
+
/** `~/.local/share/frely/bin` (`XDG_DATA_HOME` first; `%LOCALAPPDATA%` on Windows). */
|
|
31
|
+
export function frpcDirectory(env = process.env, platform = process.platform, home = homedir()) {
|
|
32
|
+
const root = env.XDG_DATA_HOME || (platform === "win32" ? env.LOCALAPPDATA : undefined) || join(home, ".local", "share");
|
|
33
|
+
return join(root, "frely", "bin");
|
|
34
|
+
}
|
|
35
|
+
export function frpcPath(directory, asset) {
|
|
36
|
+
return join(directory, `frpc-${FRPC_VERSION}${asset.binary.endsWith(".exe") ? ".exe" : ""}`);
|
|
37
|
+
}
|
|
38
|
+
export function sha256Hex(bytes) {
|
|
39
|
+
return createHash("sha256").update(bytes).digest("hex");
|
|
40
|
+
}
|
|
41
|
+
async function fetchBytes(url) {
|
|
42
|
+
const response = await fetch(url, { redirect: "follow", signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS) });
|
|
43
|
+
if (!response.ok)
|
|
44
|
+
throw new Error(`Downloading frpc failed: HTTP ${response.status}.`);
|
|
45
|
+
const length = Number(response.headers.get("content-length") ?? 0);
|
|
46
|
+
if (length > MAX_ARCHIVE_BYTES)
|
|
47
|
+
throw new Error("The frpc download is larger than expected.");
|
|
48
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
49
|
+
if (bytes.length > MAX_ARCHIVE_BYTES)
|
|
50
|
+
throw new Error("The frpc download is larger than expected.");
|
|
51
|
+
return bytes;
|
|
52
|
+
}
|
|
53
|
+
/** bsdtar (macOS, Windows 10+) and GNU tar (zip aside) read both formats; the archive is verified before it is unpacked. */
|
|
54
|
+
async function extractWithTar(archive, into) {
|
|
55
|
+
await execute("tar", ["-xf", archive, "-C", into], { timeout: 60_000 });
|
|
56
|
+
}
|
|
57
|
+
async function findFile(directory, name) {
|
|
58
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
59
|
+
const path = join(directory, entry.name);
|
|
60
|
+
if (entry.isDirectory()) {
|
|
61
|
+
const found = await findFile(path, name);
|
|
62
|
+
if (found)
|
|
63
|
+
return found;
|
|
64
|
+
}
|
|
65
|
+
else if (entry.name === name)
|
|
66
|
+
return path;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
/** The path of the pinned frpc, downloaded and verified first when it is not there yet. */
|
|
71
|
+
export async function ensureFrpc(deps = {}) {
|
|
72
|
+
const asset = deps.asset ?? frpcAsset(deps.platform, deps.arch);
|
|
73
|
+
const directory = deps.directory ?? frpcDirectory();
|
|
74
|
+
const target = frpcPath(directory, asset);
|
|
75
|
+
try {
|
|
76
|
+
const { access } = await import("node:fs/promises");
|
|
77
|
+
await access(target);
|
|
78
|
+
return target;
|
|
79
|
+
}
|
|
80
|
+
catch { /* not downloaded yet */ }
|
|
81
|
+
const log = deps.log ?? (() => undefined);
|
|
82
|
+
const base = (deps.baseUrl ?? process.env.FRELY_FRPC_BASE_URL ?? RELEASE_BASE).replace(/\/+$/u, "");
|
|
83
|
+
log(`Downloading frpc ${FRPC_VERSION} (${asset.file}) once...\n`);
|
|
84
|
+
const bytes = await (deps.download ?? fetchBytes)(`${base}/${asset.file}`);
|
|
85
|
+
if (sha256Hex(bytes) !== asset.sha256)
|
|
86
|
+
throw new Error("The downloaded frpc does not match its pinned checksum; it was discarded.");
|
|
87
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
88
|
+
const work = await mkdtemp(join(tmpdir(), "frely-frpc-"));
|
|
89
|
+
try {
|
|
90
|
+
const archive = join(work, asset.file);
|
|
91
|
+
await writeFile(archive, bytes, { mode: 0o600 });
|
|
92
|
+
const unpacked = join(work, "out");
|
|
93
|
+
await mkdir(unpacked);
|
|
94
|
+
await (deps.extract ?? extractWithTar)(archive, unpacked);
|
|
95
|
+
const binary = await findFile(unpacked, asset.binary);
|
|
96
|
+
if (!binary)
|
|
97
|
+
throw new Error("The frpc archive has no frpc binary.");
|
|
98
|
+
const staged = `${target}.${process.pid}.tmp`;
|
|
99
|
+
await copyFile(binary, staged);
|
|
100
|
+
await chmod(staged, 0o755);
|
|
101
|
+
await rename(staged, target);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
await rm(work, { recursive: true, force: true }).catch(() => undefined);
|
|
105
|
+
}
|
|
106
|
+
return target;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=frpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frpc.js","sourceRoot":"","sources":["../../src/share/frpc.ts"],"names":[],"mappings":"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"}
|