@push.rocks/smartvpn 2.7.1 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_rust/smartvpn_daemon_linux_amd64_musl +0 -0
- package/dist_rust/smartvpn_daemon_linux_amd64_musl.tsrust-build.json +4 -4
- package/dist_rust/smartvpn_daemon_linux_arm64_musl +0 -0
- package/dist_rust/smartvpn_daemon_linux_arm64_musl.tsrust-build.json +4 -4
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +2 -1
- package/dist_ts/smartvpn.managedbounds.d.ts +19 -0
- package/dist_ts/smartvpn.managedbounds.js +20 -0
- package/package.json +1 -1
- package/readme.md +16 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +1 -0
- package/ts/smartvpn.managedbounds.ts +20 -0
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "tsrust.build-provenance.v2",
|
|
3
|
-
"binarySha256": "
|
|
3
|
+
"binarySha256": "6f189c85064794e0625daa15dafee56108b2b354d063074b01faf490d082924d",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartvpn",
|
|
6
|
-
"projectVersion": "2.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "2.9.0",
|
|
7
|
+
"gitCommit": "f5a88206348a42607b8f5a6dbebcc671b72c0955",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-10-
|
|
9
|
+
"builtAt": "2026-10-30T16:45:58.106Z",
|
|
10
10
|
"tsrustVersion": "1.1.1",
|
|
11
11
|
"binary": "smartvpn_daemon",
|
|
12
12
|
"target": "linux_amd64_musl"
|
|
Binary file
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "tsrust.build-provenance.v2",
|
|
3
|
-
"binarySha256": "
|
|
3
|
+
"binarySha256": "c435ade4e374e11885ca40d2c1eb16a0f09238f7de0e299e6941ea5f633399bf",
|
|
4
4
|
"buildInfo": {
|
|
5
5
|
"projectName": "@push.rocks/smartvpn",
|
|
6
|
-
"projectVersion": "2.
|
|
7
|
-
"gitCommit": "
|
|
6
|
+
"projectVersion": "2.9.0",
|
|
7
|
+
"gitCommit": "f5a88206348a42607b8f5a6dbebcc671b72c0955",
|
|
8
8
|
"gitDirty": false,
|
|
9
|
-
"builtAt": "2026-10-
|
|
9
|
+
"builtAt": "2026-10-30T16:48:03.847Z",
|
|
10
10
|
"tsrustVersion": "1.1.1",
|
|
11
11
|
"binary": "smartvpn_daemon",
|
|
12
12
|
"target": "linux_arm64_musl"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartvpn',
|
|
6
|
-
version: '2.
|
|
6
|
+
version: '2.9.0',
|
|
7
7
|
description: 'A VPN solution with TypeScript control plane and Rust data plane daemon'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHlFQUF5RTtDQUN2RixDQUFBIn0=
|
package/dist_ts/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './smartvpn.interfaces.js';
|
|
2
|
+
export { managedInspectionBoundMs, managedPreparationBoundMs } from './smartvpn.managedbounds.js';
|
|
2
3
|
export { VpnBridge } from './smartvpn.classes.vpnbridge.js';
|
|
3
4
|
export { VpnClient } from './smartvpn.classes.vpnclient.js';
|
|
4
5
|
export { VpnServer } from './smartvpn.classes.vpnserver.js';
|
package/dist_ts/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './smartvpn.interfaces.js';
|
|
2
|
+
export { managedInspectionBoundMs, managedPreparationBoundMs } from './smartvpn.managedbounds.js';
|
|
2
3
|
export { VpnBridge } from './smartvpn.classes.vpnbridge.js';
|
|
3
4
|
export { VpnClient } from './smartvpn.classes.vpnclient.js';
|
|
4
5
|
export { VpnServer } from './smartvpn.classes.vpnserver.js';
|
|
5
6
|
export { VpnConfig } from './smartvpn.classes.vpnconfig.js';
|
|
6
7
|
export { VpnInstaller } from './smartvpn.classes.vpninstaller.js';
|
|
7
8
|
export { WgConfigGenerator } from './smartvpn.classes.wgconfig.js';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUMifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The longest a `prepareManagedTunnel` takes to answer in its timed steps, in milliseconds: adding
|
|
3
|
+
* the split routes and auditing the device that holds them, then, for a hub assignment update that
|
|
4
|
+
* landed during them, moving the routes and auditing again. Each step takes at most 3 seconds and
|
|
5
|
+
* ends by its own bound. A prepare applies the assignment in force once, however many updates
|
|
6
|
+
* landed, then answers; an update that lands after that is applied after the answer, before the
|
|
7
|
+
* next command. Creating and configuring the device runs before these steps in blocking ioctls with
|
|
8
|
+
* no bound of its own, so a caller's window is the only limit on that part. A caller arming its own
|
|
9
|
+
* window around the prepare keeps that window longer than this, so SmartVPN's bound fires first.
|
|
10
|
+
*/
|
|
11
|
+
export declare const managedPreparationBoundMs = 12000;
|
|
12
|
+
/**
|
|
13
|
+
* The longest an `inspectManagedSession` of a device waits for its audit, in milliseconds. A caller
|
|
14
|
+
* that inspects inside its own window adds this to what the window holds. It does not cover an
|
|
15
|
+
* update still unapplied when the inspection arrives, whose reassignment and audit run first: the
|
|
16
|
+
* sum of a prepare's bound and this one holds one reassignment, and each further update adds its
|
|
17
|
+
* own reassignment and audit.
|
|
18
|
+
*/
|
|
19
|
+
export declare const managedInspectionBoundMs = 4000;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The longest a `prepareManagedTunnel` takes to answer in its timed steps, in milliseconds: adding
|
|
3
|
+
* the split routes and auditing the device that holds them, then, for a hub assignment update that
|
|
4
|
+
* landed during them, moving the routes and auditing again. Each step takes at most 3 seconds and
|
|
5
|
+
* ends by its own bound. A prepare applies the assignment in force once, however many updates
|
|
6
|
+
* landed, then answers; an update that lands after that is applied after the answer, before the
|
|
7
|
+
* next command. Creating and configuring the device runs before these steps in blocking ioctls with
|
|
8
|
+
* no bound of its own, so a caller's window is the only limit on that part. A caller arming its own
|
|
9
|
+
* window around the prepare keeps that window longer than this, so SmartVPN's bound fires first.
|
|
10
|
+
*/
|
|
11
|
+
export const managedPreparationBoundMs = 12000;
|
|
12
|
+
/**
|
|
13
|
+
* The longest an `inspectManagedSession` of a device waits for its audit, in milliseconds. A caller
|
|
14
|
+
* that inspects inside its own window adds this to what the window holds. It does not cover an
|
|
15
|
+
* update still unapplied when the inspection arrives, whose reassignment and audit run first: the
|
|
16
|
+
* sum of a prepare's bound and this one holds one reassignment, and each further update adds its
|
|
17
|
+
* own reassignment and audit.
|
|
18
|
+
*/
|
|
19
|
+
export const managedInspectionBoundMs = 4000;
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR2cG4ubWFuYWdlZGJvdW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dnBuLm1hbmFnZWRib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDO0FBRS9DOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyJ9
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -214,7 +214,21 @@ starting. Keep the live client owner and use the returned generation for each st
|
|
|
214
214
|
`prepareManagedTunnel(generation)` then creates that fresh nonpersistent TUN
|
|
215
215
|
with `IFF_TUN_EXCL`, the assigned IPv4 /32 and exact split routes. The interface
|
|
216
216
|
is UP; packet forwarding remains disabled. An existing same-named interface
|
|
217
|
-
causes failure and is never adopted or deleted.
|
|
217
|
+
causes failure and is never adopted or deleted. Creating and configuring the device runs first, in blocking ioctls with no bound of its own, so a caller's window is the only limit on that part. The timed steps after it take at most
|
|
218
|
+
`managedPreparationBoundMs` (12 seconds), 3 seconds each, one after the other:
|
|
219
|
+
adding the routes, auditing the device and, for a hub assignment update that landed
|
|
220
|
+
during those two, moving the routes and auditing again. A prepare applies the
|
|
221
|
+
assignment in force once, however many updates landed, then answers; an update that
|
|
222
|
+
lands after that is applied after the answer and before the next command, which
|
|
223
|
+
waits for its reassignment and audit. A step of the first two that overruns fails
|
|
224
|
+
the prepare by name (`Managed route creation timed out`, `Managed kernel inventory
|
|
225
|
+
timed out`) with the device and its routes gone. One of the last two retires the
|
|
226
|
+
runtime and the session with it: the prepare is rejected with `Managed session owner
|
|
227
|
+
closed before replying`, and the step's name is in the `retired` event's reason. A
|
|
228
|
+
caller that arms its own window around the prepare keeps it longer than that bound,
|
|
229
|
+
and adds `managedInspectionBoundMs` (4 seconds) for each inspection it runs in that
|
|
230
|
+
window. That sum holds one reassignment: each further update adds its own
|
|
231
|
+
reassignment and audit.
|
|
218
232
|
3. Install and verify caller-owned policy against the fresh returned `runtime`.
|
|
219
233
|
`enableManagedForwarding(generation)` reinspects the native inventory, discards
|
|
220
234
|
already-ready incoming encrypted frames and TUN packets, then starts forwarding.
|
|
@@ -1185,6 +1199,7 @@ smartvpn/
|
|
|
1185
1199
|
│ ├── smartvpn.interfaces.ts # Interfaces, types, IPC command maps
|
|
1186
1200
|
│ ├── smartvpn.plugins.ts # Dependency imports
|
|
1187
1201
|
│ ├── smartvpn.paths.ts # Binary path resolution
|
|
1202
|
+
│ ├── smartvpn.managedbounds.ts # Managed preparation and inspection bounds
|
|
1188
1203
|
│ ├── smartvpn.classes.vpnserver.ts
|
|
1189
1204
|
│ ├── smartvpn.classes.vpnclient.ts
|
|
1190
1205
|
│ ├── smartvpn.classes.vpnbridge.ts
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './smartvpn.interfaces.js';
|
|
2
|
+
export { managedInspectionBoundMs, managedPreparationBoundMs } from './smartvpn.managedbounds.js';
|
|
2
3
|
export { VpnBridge } from './smartvpn.classes.vpnbridge.js';
|
|
3
4
|
export { VpnClient } from './smartvpn.classes.vpnclient.js';
|
|
4
5
|
export { VpnServer } from './smartvpn.classes.vpnserver.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The longest a `prepareManagedTunnel` takes to answer in its timed steps, in milliseconds: adding
|
|
3
|
+
* the split routes and auditing the device that holds them, then, for a hub assignment update that
|
|
4
|
+
* landed during them, moving the routes and auditing again. Each step takes at most 3 seconds and
|
|
5
|
+
* ends by its own bound. A prepare applies the assignment in force once, however many updates
|
|
6
|
+
* landed, then answers; an update that lands after that is applied after the answer, before the
|
|
7
|
+
* next command. Creating and configuring the device runs before these steps in blocking ioctls with
|
|
8
|
+
* no bound of its own, so a caller's window is the only limit on that part. A caller arming its own
|
|
9
|
+
* window around the prepare keeps that window longer than this, so SmartVPN's bound fires first.
|
|
10
|
+
*/
|
|
11
|
+
export const managedPreparationBoundMs = 12000;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The longest an `inspectManagedSession` of a device waits for its audit, in milliseconds. A caller
|
|
15
|
+
* that inspects inside its own window adds this to what the window holds. It does not cover an
|
|
16
|
+
* update still unapplied when the inspection arrives, whose reassignment and audit run first: the
|
|
17
|
+
* sum of a prepare's bound and this one holds one reassignment, and each further update adds its
|
|
18
|
+
* own reassignment and audit.
|
|
19
|
+
*/
|
|
20
|
+
export const managedInspectionBoundMs = 4000;
|