tunli 0.3.0 → 0.4.1
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/CHANGELOG.md +38 -0
- package/README.md +29 -29
- package/dist/cli-app/Dashboard.d.ts +4 -1
- package/dist/cli-app/Dashboard.d.ts.map +1 -1
- package/dist/cli-app/Dashboard.js +39 -6
- package/dist/cli-app/Dashboard.js.map +1 -1
- package/dist/cli-app/TunnelPicker.d.ts +3 -0
- package/dist/cli-app/TunnelPicker.d.ts.map +1 -0
- package/dist/cli-app/TunnelPicker.js +28 -0
- package/dist/cli-app/TunnelPicker.js.map +1 -0
- package/dist/cli-app/versionCheck.d.ts.map +1 -1
- package/dist/cli-app/versionCheck.js +11 -1
- package/dist/cli-app/versionCheck.js.map +1 -1
- package/dist/client.js +10 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/CommandDaemon/CommandDaemon.d.ts.map +1 -1
- package/dist/commands/CommandDaemon/CommandDaemon.js +38 -23
- package/dist/commands/CommandDaemon/CommandDaemon.js.map +1 -1
- package/dist/commands/CommandDashboard/CommandDashboard.d.ts.map +1 -1
- package/dist/commands/CommandDashboard/CommandDashboard.js +58 -18
- package/dist/commands/CommandDashboard/CommandDashboard.js.map +1 -1
- package/dist/commands/CommandDown/CommandDown.d.ts +4 -0
- package/dist/commands/CommandDown/CommandDown.d.ts.map +1 -0
- package/dist/commands/CommandDown/CommandDown.js +35 -0
- package/dist/commands/CommandDown/CommandDown.js.map +1 -0
- package/dist/commands/CommandHTTP/CommandHttp.d.ts.map +1 -1
- package/dist/commands/CommandHTTP/CommandHttp.js +8 -5
- package/dist/commands/CommandHTTP/CommandHttp.js.map +1 -1
- package/dist/commands/CommandLogs/CommandLogs.js +1 -1
- package/dist/commands/CommandLogs/CommandLogs.js.map +1 -1
- package/dist/commands/CommandStop/CommandStop.d.ts.map +1 -1
- package/dist/commands/CommandStop/CommandStop.js +15 -13
- package/dist/commands/CommandStop/CommandStop.js.map +1 -1
- package/dist/commands/CommandUp/CommandUp.d.ts +4 -0
- package/dist/commands/CommandUp/CommandUp.d.ts.map +1 -0
- package/dist/commands/CommandUp/CommandUp.js +53 -0
- package/dist/commands/CommandUp/CommandUp.js.map +1 -0
- package/dist/commands/CommandUseProfile/CommandUseProfile.d.ts.map +1 -1
- package/dist/commands/CommandUseProfile/CommandUseProfile.js +3 -1
- package/dist/commands/CommandUseProfile/CommandUseProfile.js.map +1 -1
- package/dist/commands/utils.d.ts.map +1 -1
- package/dist/commands/utils.js +1 -0
- package/dist/commands/utils.js.map +1 -1
- package/dist/config/TempProfileConfig.d.ts.map +1 -1
- package/dist/config/TempProfileConfig.js +22 -1
- package/dist/config/TempProfileConfig.js.map +1 -1
- package/dist/daemon/DaemonClient.d.ts +8 -5
- package/dist/daemon/DaemonClient.d.ts.map +1 -1
- package/dist/daemon/DaemonClient.js +5 -1
- package/dist/daemon/DaemonClient.js.map +1 -1
- package/dist/daemon/DaemonServer.js +1 -1
- package/dist/daemon/DaemonServer.js.map +1 -1
- package/dist/daemon/protocol.d.ts +1 -0
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/sea-main.js +6 -0
- package/dist/sea-main.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.1] - 2026-03-26
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
- DEP0169 (`url.parse`) deprecation warning no longer printed by `tunli share` / `tunli connect` — `process.removeAllListeners('warning')` is now called before the selective filter, since Node.js emits warnings via its own internal listener
|
|
7
|
+
- Version check now uses proper semver comparison instead of strict equality — a remote version equal to the local version no longer triggers an update prompt
|
|
8
|
+
|
|
9
|
+
## [0.4.0] - 2026-03-26
|
|
10
|
+
|
|
11
|
+
### New commands
|
|
12
|
+
- `tunli up` — start all profiles defined in the local `.tunli/config.json`; skips profiles that are already running
|
|
13
|
+
- `tunli down` — stop all tunnels belonging to local config profiles, without touching the daemon
|
|
14
|
+
|
|
15
|
+
### Dashboard
|
|
16
|
+
- Pre-start tunnel picker: if multiple tunnels are active and no profile argument is given, an interactive list is shown before opening the dashboard (↑↓ + Enter)
|
|
17
|
+
- Ctrl+T opens a tunnel switcher modal inside the dashboard to switch between active tunnels without restarting
|
|
18
|
+
- Header shows "(Ctrl+T switch · Ctrl+C quit)" hint when multiple tunnels are available
|
|
19
|
+
|
|
20
|
+
### `tunli daemon`
|
|
21
|
+
- `restart` now preserves active tunnels (dumps state, restarts daemon, restores tunnels — previously the behaviour of `reload`)
|
|
22
|
+
- `reload` is kept as an alias for `restart`
|
|
23
|
+
- `stop` now requires `--force` / `-f` if tunnels are active, with an explanatory message pointing to `daemon reload`
|
|
24
|
+
- `status` now includes the number of active tunnels
|
|
25
|
+
|
|
26
|
+
### `tunli stop`
|
|
27
|
+
- Accepts multiple profile names: `tunli stop api frontend worker`
|
|
28
|
+
|
|
29
|
+
### `tunli http`
|
|
30
|
+
- `--foreground` alias: `--fg`
|
|
31
|
+
- `--dashboard` alias: `--db`
|
|
32
|
+
|
|
33
|
+
### Output improvements
|
|
34
|
+
- `tunli http` / `tunli start`: structured output on connect — `✓ Connected`, `✓ Public URL`, `✓ Target URL`
|
|
35
|
+
- Re-running a tunnel that is already active shows the same structured output with "Already running" instead of an error
|
|
36
|
+
|
|
37
|
+
### Profile naming
|
|
38
|
+
- Ad-hoc tunnels (no `--save`) are now named `adjective-port` (e.g. `swift-3000`) instead of `http://localhost:3000`
|
|
39
|
+
- Adjective is derived from a hash of `host:port`, so different hosts on the same port get distinct names
|
|
40
|
+
|
|
3
41
|
## [0.3.0] - 2026-03-24
|
|
4
42
|
|
|
5
43
|
### Share / Connect (private peer-to-peer tunnels)
|
package/README.md
CHANGED
|
@@ -24,8 +24,6 @@ npm install -g tunli
|
|
|
24
24
|
|
|
25
25
|
Requires Node.js >= 22.
|
|
26
26
|
|
|
27
|
-
> **Note:** The CLI command interface is not yet final. Some commands and flags may be renamed or restructured in v0.2.0 for consistency. See the [Roadmap](ROADMAP.md) for planned changes.
|
|
28
|
-
|
|
29
27
|
## Features
|
|
30
28
|
|
|
31
29
|
- Stable public URLs per profile
|
|
@@ -65,23 +63,33 @@ tunli http 3000 127.0.0.1
|
|
|
65
63
|
tunli http 3000 --save myapp # save as a named profile for later reuse
|
|
66
64
|
```
|
|
67
65
|
|
|
68
|
-
|
|
66
|
+
`tunli 3000` also works — `http` is the default command.
|
|
67
|
+
|
|
68
|
+
Use `--save <name>` to persist the configuration as a profile. Start it again with `tunli start <profile>`.
|
|
69
69
|
|
|
70
70
|
**Foreground mode** — run the tunnel directly in the CLI process without a background daemon:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
tunli http 3000 --foreground #
|
|
74
|
-
tunli http 3000 --dashboard # with live TUI dashboard
|
|
73
|
+
tunli http 3000 --foreground # alias: --fg
|
|
74
|
+
tunli http 3000 --dashboard # with live TUI dashboard (alias: --db)
|
|
75
75
|
tunli http 3000 --logs # with live log output to stdout
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
### `tunli
|
|
78
|
+
### `tunli start <profile>`
|
|
79
79
|
|
|
80
|
-
Start a tunnel using a saved profile.
|
|
80
|
+
Start a tunnel using a saved profile.
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
|
-
tunli
|
|
84
|
-
|
|
83
|
+
tunli start myapp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `tunli up` / `tunli down`
|
|
87
|
+
|
|
88
|
+
Start or stop all profiles defined in the local `.tunli/config.json`. Useful for projects with multiple services.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
tunli up # start all local profiles (skips already running)
|
|
92
|
+
tunli down # stop all tunnels belonging to local profiles
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
### `tunli list`
|
|
@@ -94,7 +102,7 @@ tunli list
|
|
|
94
102
|
|
|
95
103
|
### `tunli dashboard [profile]`
|
|
96
104
|
|
|
97
|
-
Attach to a running tunnel and show the live TUI dashboard.
|
|
105
|
+
Attach to a running tunnel and show the live TUI dashboard. If multiple tunnels are active and no profile is given, a picker is shown. Press Ctrl+T inside the dashboard to switch between tunnels.
|
|
98
106
|
|
|
99
107
|
```bash
|
|
100
108
|
tunli dashboard
|
|
@@ -103,34 +111,36 @@ tunli dashboard myapp
|
|
|
103
111
|
|
|
104
112
|
### `tunli logs [profile]`
|
|
105
113
|
|
|
106
|
-
Attach to a running tunnel and stream live log output to stdout.
|
|
114
|
+
Attach to a running tunnel and stream live log output to stdout.
|
|
107
115
|
|
|
108
116
|
```bash
|
|
109
117
|
tunli logs
|
|
110
118
|
tunli logs myapp
|
|
111
119
|
```
|
|
112
120
|
|
|
113
|
-
### `tunli stop [profile]`
|
|
121
|
+
### `tunli stop [profile...]`
|
|
114
122
|
|
|
115
|
-
Stop
|
|
123
|
+
Stop one or more running tunnels without stopping the daemon.
|
|
116
124
|
|
|
117
125
|
```bash
|
|
118
126
|
tunli stop myapp
|
|
119
|
-
tunli stop
|
|
127
|
+
tunli stop api frontend worker
|
|
120
128
|
```
|
|
121
129
|
|
|
122
130
|
### `tunli daemon`
|
|
123
131
|
|
|
124
|
-
Manage the background daemon process.
|
|
132
|
+
Manage the background daemon process.
|
|
125
133
|
|
|
126
134
|
```bash
|
|
127
135
|
tunli daemon start
|
|
128
|
-
tunli daemon stop
|
|
129
|
-
tunli daemon
|
|
130
|
-
tunli daemon
|
|
136
|
+
tunli daemon stop # requires --force if tunnels are active
|
|
137
|
+
tunli daemon stop --force # stop immediately, tunnels are closed
|
|
138
|
+
tunli daemon restart # dump tunnels, restart, restore them
|
|
131
139
|
tunli daemon status
|
|
132
140
|
```
|
|
133
141
|
|
|
142
|
+
`restart` preserves active tunnels — it dumps state, restarts the daemon, and restores all tunnels. Use `stop` + `start` for a clean restart.
|
|
143
|
+
|
|
134
144
|
### `tunli register`
|
|
135
145
|
|
|
136
146
|
Register a new account and store the auth token.
|
|
@@ -138,7 +148,7 @@ Register a new account and store the auth token.
|
|
|
138
148
|
```bash
|
|
139
149
|
tunli register
|
|
140
150
|
tunli register --force # renew existing token
|
|
141
|
-
tunli register --
|
|
151
|
+
tunli register --relay https://api.myserver.com --name self # self-hosted server
|
|
142
152
|
```
|
|
143
153
|
|
|
144
154
|
### `tunli auth <token>`
|
|
@@ -168,7 +178,6 @@ tunli config get host # read a single value
|
|
|
168
178
|
tunli config set host 127.0.0.2 # set a value
|
|
169
179
|
tunli config set port 3001 -p staging # set in a named profile
|
|
170
180
|
tunli config delete # remove the active config file
|
|
171
|
-
tunli config delete -p staging # remove a specific profile
|
|
172
181
|
tunli config dump # dump global + local config
|
|
173
182
|
tunli config relays # list registered relay servers
|
|
174
183
|
```
|
|
@@ -242,15 +251,6 @@ tunli relay use myserver # switch the active relay server
|
|
|
242
251
|
|
|
243
252
|
For a deeper look at the two-binary model, daemon protocol, update flow and build system see [docs/architecture.md](docs/architecture.md).
|
|
244
253
|
|
|
245
|
-
## Architecture
|
|
246
|
-
|
|
247
|
-
Tunli runs a background daemon (`~/.tunli/daemon.sock`) that manages all active tunnels. The CLI communicates with it via a Unix socket using newline-delimited JSON.
|
|
248
|
-
|
|
249
|
-
- `tunli http` / `tunli use` — validate config, hand off to daemon, exit
|
|
250
|
-
- `tunli daemon` — explicit daemon lifecycle management
|
|
251
|
-
- `tunli list` — query active tunnels from the daemon
|
|
252
|
-
- `tunli dashboard` / `tunli logs` — attach to the daemon event stream
|
|
253
|
-
|
|
254
254
|
## Configuration
|
|
255
255
|
|
|
256
256
|
Tunli stores its config in JSON files:
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { ProfileConfig } from '#types/types';
|
|
2
|
+
import type { TunnelInfo } from '#daemon/protocol';
|
|
2
3
|
import type { AppEventEmitter } from '#cli-app/AppEventEmitter';
|
|
3
|
-
export declare const initDashboard: (config: ProfileConfig, appEventEmitter: AppEventEmitter) => void
|
|
4
|
+
export declare const initDashboard: (config: ProfileConfig, appEventEmitter: AppEventEmitter, allTunnels: TunnelInfo[], onSwitchTunnel: (tunnel: TunnelInfo) => void) => {
|
|
5
|
+
rerender: (config: ProfileConfig, emitter: AppEventEmitter, tunnels: TunnelInfo[]) => void;
|
|
6
|
+
};
|
|
4
7
|
//# sourceMappingURL=Dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAW,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAC,eAAe,EAAW,MAAM,0BAA0B,CAAA;AAyZvE,eAAO,MAAM,aAAa,GACxB,QAAQ,aAAa,EACrB,iBAAiB,eAAe,EAChC,YAAY,UAAU,EAAE,EACxB,gBAAgB,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,KAC3C;IAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAA;CAqB9F,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef
|
|
2
|
+
import { useState, useEffect, useRef } from 'react';
|
|
3
3
|
import { Box, render, Text, useApp, useInput, useStdout } from 'ink';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import QRCode from 'qrcode';
|
|
@@ -28,6 +28,27 @@ const QRModal = ({ text, onClose }) => {
|
|
|
28
28
|
});
|
|
29
29
|
return (_jsx(Box, { width: "100%", height: stdout.rows, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1, children: [_jsx(Text, { dimColor: true, children: "Press q or Escape to close" }), _jsx(Text, { children: text })] }) }));
|
|
30
30
|
};
|
|
31
|
+
const TunnelSwitcherModal = ({ tunnels, current, onSelect, onClose }) => {
|
|
32
|
+
const { stdout } = useStdout();
|
|
33
|
+
const [index, setIndex] = useState(() => Math.max(0, tunnels.findIndex(t => t.profileName === current)));
|
|
34
|
+
useInput((input, key) => {
|
|
35
|
+
if (key.escape || input === 'q') {
|
|
36
|
+
onClose();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (key.upArrow)
|
|
40
|
+
setIndex(i => Math.max(0, i - 1));
|
|
41
|
+
if (key.downArrow)
|
|
42
|
+
setIndex(i => Math.min(tunnels.length - 1, i + 1));
|
|
43
|
+
if (key.return) {
|
|
44
|
+
const t = tunnels[index];
|
|
45
|
+
if (t && t.profileName !== current)
|
|
46
|
+
onSelect(t);
|
|
47
|
+
onClose();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return (_jsx(Box, { width: "100%", height: stdout.rows, flexDirection: "column", alignItems: "center", justifyContent: "center", children: _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, minWidth: 50, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { bold: true, children: "Switch Tunnel" }), _jsx(Text, { dimColor: true, children: "q / Esc to close" })] }), _jsx(Text, { children: " " }), tunnels.map((t, i) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "cyan", children: i === index ? '›' : ' ' }) }), _jsx(Box, { minWidth: 24, children: _jsx(Text, { bold: i === index, children: t.profileName }) }), _jsx(Text, { dimColor: true, children: t.proxyURL })] }, t.profileName))), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate \u00B7 Enter select" })] }) }));
|
|
51
|
+
};
|
|
31
52
|
const DetailModal = ({ entry, onClose }) => {
|
|
32
53
|
const { stdout } = useStdout();
|
|
33
54
|
useInput((input, key) => {
|
|
@@ -42,7 +63,7 @@ const DetailModal = ({ entry, onClose }) => {
|
|
|
42
63
|
? _jsx(Text, { dimColor: true, children: "\u2014" })
|
|
43
64
|
: resHeaders.map(([k, v]) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 30, children: _jsx(Text, { color: "cyan", children: k }) }), _jsx(Text, { children: String(v) })] }, k)))] }) }));
|
|
44
65
|
};
|
|
45
|
-
const DashboardApp = ({ config, appEventEmitter }) => {
|
|
66
|
+
const DashboardApp = ({ config, appEventEmitter, allTunnels, onSwitchTunnel }) => {
|
|
46
67
|
const { exit } = useApp();
|
|
47
68
|
const { stdout } = useStdout();
|
|
48
69
|
const packageJson = readPackageJson();
|
|
@@ -60,6 +81,7 @@ const DashboardApp = ({ config, appEventEmitter }) => {
|
|
|
60
81
|
const [paused, setPaused] = useState(false);
|
|
61
82
|
const [cursorIndex, setCursorIndex] = useState(null);
|
|
62
83
|
const [detailEntry, setDetailEntry] = useState(null);
|
|
84
|
+
const [switcherOpen, setSwitcherOpen] = useState(false);
|
|
63
85
|
const runtimeStack = useRef(new Map());
|
|
64
86
|
const pendingLog = useRef([]);
|
|
65
87
|
const accessLogRef = useRef([]);
|
|
@@ -143,6 +165,9 @@ const DashboardApp = ({ config, appEventEmitter }) => {
|
|
|
143
165
|
});
|
|
144
166
|
// Main key handler — inactive when any modal is open
|
|
145
167
|
useInput((input, key) => {
|
|
168
|
+
if (key.ctrl && input === 't' && allTunnels.length > 1) {
|
|
169
|
+
setSwitcherOpen(true);
|
|
170
|
+
}
|
|
146
171
|
if (key.ctrl && input === 'r') {
|
|
147
172
|
setAvailableUpdate(chalk.yellow('Restarting...'));
|
|
148
173
|
process.send?.('restart');
|
|
@@ -209,7 +234,7 @@ const DashboardApp = ({ config, appEventEmitter }) => {
|
|
|
209
234
|
if (entry)
|
|
210
235
|
setDetailEntry(entry);
|
|
211
236
|
}
|
|
212
|
-
}, { isActive: qrText === null && detailEntry === null });
|
|
237
|
+
}, { isActive: qrText === null && detailEntry === null && !switcherOpen });
|
|
213
238
|
const allowedCidr = config.allowedCidr.length ? config.allowedCidr : null;
|
|
214
239
|
const deniedCidr = config.deniedCidr.length ? config.deniedCidr : null;
|
|
215
240
|
if (qrText !== null) {
|
|
@@ -218,17 +243,20 @@ const DashboardApp = ({ config, appEventEmitter }) => {
|
|
|
218
243
|
if (detailEntry !== null) {
|
|
219
244
|
return _jsx(DetailModal, { entry: detailEntry, onClose: () => setDetailEntry(null) });
|
|
220
245
|
}
|
|
246
|
+
if (switcherOpen) {
|
|
247
|
+
return _jsx(TunnelSwitcherModal, { tunnels: allTunnels, current: config.profileName, onSelect: onSwitchTunnel, onClose: () => setSwitcherOpen(false) });
|
|
248
|
+
}
|
|
221
249
|
const displayedLog = [...accessLog].reverse();
|
|
222
250
|
const pathColWidth = Math.max(40, ...accessLog.map(e => e.path.length + 3));
|
|
223
251
|
const statusColWidth = Math.max(20, ...accessLog.map(e => stripAnsi(e.status).length + 3));
|
|
224
|
-
return (_jsxs(Box, { flexDirection: "column", height: stdout.rows, children: [_jsxs(Box, { width: "100%", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { children: "tunli " }), _jsx(Spinner, { spinning: spinning })] }), _jsx(Text, { children:
|
|
252
|
+
return (_jsxs(Box, { flexDirection: "column", height: stdout.rows, children: [_jsxs(Box, { width: "100%", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { children: "tunli " }), _jsx(Spinner, { spinning: spinning })] }), _jsx(Text, { children: allTunnels.length > 1 ? '(Ctrl+T switch · Ctrl+C quit)' : '(Ctrl+C to quit)' })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(InfoRow, { label: "Tunnel", value: connectionStatus }), packageJson ? _jsx(InfoRow, { label: "Version", value: packageJson.version }) : null, availableUpdate ? _jsx(InfoRow, { label: chalk.yellow('Update'), value: availableUpdate }) : null, _jsx(InfoRow, { label: "Profile", value: config.profileName }), _jsx(InfoRow, { label: "Config", value: config.filepath }), _jsx(InfoRow, { label: "QR-Code", value: "Ctrl-Q" }), (allowedCidr ?? deniedCidr) ? _jsx(Text, { children: " " }) : null, allowedCidr ? _jsx(InfoRow, { label: "Allowed", value: allowedCidr.join(', ') }) : null, deniedCidr ? _jsx(InfoRow, { label: "Denied", value: deniedCidr.join(', ') }) : null, (allowedCidr ?? deniedCidr) ? (_jsx(InfoRow, { label: "Blocked", value: `${blockedCount}${lastBlockedIp ? ` (${lastBlockedIp})` : ''}` })) : null, _jsx(Text, { children: " " }), _jsx(InfoRow, { label: "Latency", value: latency !== null ? `${latency}ms` : '—' }), _jsx(InfoRow, { label: "Forwarding", value: forwardingUrl }), _jsx(InfoRow, { label: "Connections", value: String(requestCount) })] }), _jsx(Text, { children: " " }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { children: ["HTTP Requests", cursorIndex !== null ? chalk.dim(' ↑↓ navigate · Enter detail · Esc exit') : chalk.dim(' ↑↓ navigate · Ctrl+P pause')] }), paused ? _jsxs(Text, { children: [chalk.yellow('PAUSED'), " ", pendingLog.current.length > 0 ? chalk.dim(`+${pendingLog.current.length}`) : ''] }) : null] }), _jsx(Text, { children: '─'.repeat(stdout.columns) }), _jsx(Box, { flexDirection: "column", children: displayedLog.map((entry, i) => {
|
|
225
253
|
const selected = cursorIndex === i;
|
|
226
254
|
const dim = cursorIndex !== null && !selected;
|
|
227
255
|
const prefix = selected ? '›' : ' ';
|
|
228
256
|
return (_jsxs(Box, { children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "cyan", children: prefix }) }), _jsx(Box, { minWidth: 8, children: _jsx(Text, { dimColor: dim, children: entry.method }) }), _jsx(Box, { minWidth: pathColWidth, children: _jsx(Text, { dimColor: dim, children: entry.path }) }), _jsx(Box, { minWidth: statusColWidth, children: _jsx(Text, { dimColor: dim, children: entry.status }) }), entry.runtime ? _jsx(Text, { dimColor: dim, children: entry.runtime }) : null] }, entry.id));
|
|
229
257
|
}) })] }));
|
|
230
258
|
};
|
|
231
|
-
export const initDashboard = (config, appEventEmitter) => {
|
|
259
|
+
export const initDashboard = (config, appEventEmitter, allTunnels, onSwitchTunnel) => {
|
|
232
260
|
process.stdout.write('\x1b[?1049h'); // enter alternate screen buffer
|
|
233
261
|
setCursorVisibility(false);
|
|
234
262
|
const restoreScreen = () => {
|
|
@@ -236,6 +264,11 @@ export const initDashboard = (config, appEventEmitter) => {
|
|
|
236
264
|
setCursorVisibility(true);
|
|
237
265
|
};
|
|
238
266
|
process.once('exit', restoreScreen);
|
|
239
|
-
render(_jsx(DashboardApp, { config: config, appEventEmitter: appEventEmitter }), { exitOnCtrlC: false });
|
|
267
|
+
const { rerender } = render(_jsx(DashboardApp, { config: config, appEventEmitter: appEventEmitter, allTunnels: allTunnels, onSwitchTunnel: onSwitchTunnel }, config.profileName), { exitOnCtrlC: false });
|
|
268
|
+
return {
|
|
269
|
+
rerender: (newConfig, newEmitter, newTunnels) => {
|
|
270
|
+
rerender(_jsx(DashboardApp, { config: newConfig, appEventEmitter: newEmitter, allTunnels: newTunnels, onSwitchTunnel: onSwitchTunnel }, newConfig.profileName));
|
|
271
|
+
},
|
|
272
|
+
};
|
|
240
273
|
};
|
|
241
274
|
//# sourceMappingURL=Dashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/cli-app/Dashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelPicker.d.ts","sourceRoot":"","sources":["../../src/cli-app/TunnelPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAkChD,eAAO,MAAM,UAAU,GAAI,SAAS,UAAU,EAAE,KAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAOxE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, render, Text, useApp, useInput } from 'ink';
|
|
4
|
+
const TunnelPickerApp = ({ tunnels, onSelect }) => {
|
|
5
|
+
const { exit } = useApp();
|
|
6
|
+
const [index, setIndex] = useState(0);
|
|
7
|
+
useInput((_, key) => {
|
|
8
|
+
if (key.upArrow)
|
|
9
|
+
setIndex(i => Math.max(0, i - 1));
|
|
10
|
+
if (key.downArrow)
|
|
11
|
+
setIndex(i => Math.min(tunnels.length - 1, i + 1));
|
|
12
|
+
if (key.return) {
|
|
13
|
+
const selected = tunnels[index];
|
|
14
|
+
if (selected)
|
|
15
|
+
onSelect(selected);
|
|
16
|
+
exit();
|
|
17
|
+
}
|
|
18
|
+
if (key.escape)
|
|
19
|
+
exit();
|
|
20
|
+
});
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, children: "Select tunnel" }), _jsx(Text, { children: " " }), tunnels.map((t, i) => (_jsxs(Box, { children: [_jsx(Box, { minWidth: 2, children: _jsx(Text, { color: "cyan", children: i === index ? '›' : ' ' }) }), _jsx(Box, { minWidth: 24, children: _jsx(Text, { bold: i === index, children: t.profileName }) }), _jsx(Text, { dimColor: true, children: t.proxyURL })] }, t.profileName))), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate \u00B7 Enter select \u00B7 Esc cancel" })] }));
|
|
22
|
+
};
|
|
23
|
+
export const pickTunnel = (tunnels) => new Promise(resolve => {
|
|
24
|
+
let selected = null;
|
|
25
|
+
const { waitUntilExit } = render(_jsx(TunnelPickerApp, { tunnels: tunnels, onSelect: t => { selected = t; } }));
|
|
26
|
+
void waitUntilExit().then(() => resolve(selected)).catch(() => resolve(null));
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=TunnelPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TunnelPicker.js","sourceRoot":"","sources":["../../src/cli-app/TunnelPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,KAAK,CAAA;AAGvD,MAAM,eAAe,GAAG,CAAC,EAAC,OAAO,EAAE,QAAQ,EAA6D,EAAE,EAAE;IAC1G,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,EAAE,CAAA;IACvB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAErC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,OAAO;YAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAClD,IAAI,GAAG,CAAC,SAAS;YAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACrE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;YAC/B,IAAI,QAAQ;gBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAChC,IAAI,EAAE,CAAA;QACR,CAAC;QACD,IAAI,GAAG,CAAC,MAAM;YAAE,IAAI,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,KAAC,IAAI,IAAC,IAAI,oCAAqB,EAC/B,KAAC,IAAI,oBAAS,EACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,GAAG,eACF,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAAM,EAC3E,KAAC,GAAG,IAAC,QAAQ,EAAE,EAAE,YAAE,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,KAAK,KAAK,YAAG,CAAC,CAAC,WAAW,GAAQ,GAAM,EACxE,KAAC,IAAI,IAAC,QAAQ,kBAAE,CAAC,CAAC,QAAQ,GAAQ,KAH1B,CAAC,CAAC,WAAW,CAIjB,CACP,CAAC,EACF,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,QAAQ,kFAA+C,IACzD,CACP,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAqB,EAA8B,EAAE,CAC9E,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACpB,IAAI,QAAQ,GAAsB,IAAI,CAAA;IACtC,MAAM,EAAC,aAAa,EAAC,GAAG,MAAM,CAC5B,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAA,CAAC,CAAC,GAAG,CACtE,CAAA;IACD,KAAK,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/E,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionCheck.d.ts","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"versionCheck.d.ts","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAW7C,eAAO,MAAM,kBAAkB,GAAU,gBAAgB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAItF,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,aAAa,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,KAAG,OAAO,CAAC,IAAI,CAgCjH,CAAA"}
|
|
@@ -3,9 +3,19 @@ import { checkGlobalInstallation, checkLocalInstallation } from '#utils/npmFunct
|
|
|
3
3
|
import { downloadBinaryUpdate } from '#lib/Flow/downloadBinaryUpdate';
|
|
4
4
|
import { exec } from 'node:child_process';
|
|
5
5
|
import { isSea } from 'node:sea';
|
|
6
|
+
const isNewer = (remote, local) => {
|
|
7
|
+
const parse = (v) => v.replace(/^v/, '').split('.').map(Number);
|
|
8
|
+
const [rMaj = 0, rMin = 0, rPat = 0] = parse(remote);
|
|
9
|
+
const [lMaj = 0, lMin = 0, lPat = 0] = parse(local);
|
|
10
|
+
if (rMaj !== lMaj)
|
|
11
|
+
return rMaj > lMaj;
|
|
12
|
+
if (rMin !== lMin)
|
|
13
|
+
return rMin > lMin;
|
|
14
|
+
return rPat > lPat;
|
|
15
|
+
};
|
|
6
16
|
export const getAvailableUpdate = async (currentVersion) => {
|
|
7
17
|
const version = await getLatestVersion().catch(() => null);
|
|
8
|
-
if (!version || version
|
|
18
|
+
if (!version || !isNewer(version, currentVersion))
|
|
9
19
|
return null;
|
|
10
20
|
return version;
|
|
11
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionCheck.js","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAC,uBAAuB,EAAE,sBAAsB,EAAC,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAC,oBAAoB,EAAC,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAG9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,cAAsB,EAA0B,EAAE;IACzF,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,CAAC,OAAO,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"versionCheck.js","sourceRoot":"","sources":["../../src/cli-app/versionCheck.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
// Suppress DEP0169 (url.parse) — emitted by socket.io-client / engine.io-client internals,
|
|
2
|
+
// not actionable from userland. removeAllListeners is required because Node's default warning
|
|
3
|
+
// output is itself a listener on 'warning'; adding our own handler alone does not suppress it.
|
|
4
|
+
process.removeAllListeners('warning');
|
|
5
|
+
process.on('warning', (w) => { if (w.code !== 'DEP0169')
|
|
6
|
+
process.stderr.write(`Warning: ${w.message}\n`); });
|
|
1
7
|
import { readJsonFile } from "#core/FS/utils";
|
|
2
8
|
import { Option, program } from '#commander/index';
|
|
3
9
|
import { FOUND_LOCAL_CONFIG_FILEPATH, GLOBAL_CONFIG_FILEPATH, LOCAL_CONFIG_FILEPATH } from "#lib/defs";
|
|
@@ -22,6 +28,8 @@ import { createCommandUpdate } from "#commands/CommandUpdate/CommandUpdate";
|
|
|
22
28
|
import { createCommandIdentity } from "#commands/CommandIdentity/CommandIdentity";
|
|
23
29
|
import { createCommandShare } from "#commands/CommandShare/CommandShare";
|
|
24
30
|
import { createCommandConnect } from "#commands/CommandConnect/CommandConnect";
|
|
31
|
+
import { createCommandUp } from "#commands/CommandUp/CommandUp";
|
|
32
|
+
import { createCommandDown } from "#commands/CommandDown/CommandDown";
|
|
25
33
|
import { ApiClient } from "#api-client/ApiClient";
|
|
26
34
|
import { readPackageJson } from "#package-json/packageJson";
|
|
27
35
|
const globalConf = new ParsedGlobalConfig(readJsonFile(GLOBAL_CONFIG_FILEPATH), GLOBAL_CONFIG_FILEPATH);
|
|
@@ -67,6 +75,8 @@ program.addCommand(createCommandUpdate(ctx, program));
|
|
|
67
75
|
program.addCommand(createCommandIdentity(ctx, program));
|
|
68
76
|
program.addCommand(createCommandShare(ctx, program));
|
|
69
77
|
program.addCommand(createCommandConnect(ctx, program));
|
|
78
|
+
program.addCommand(createCommandUp(ctx, program));
|
|
79
|
+
program.addCommand(createCommandDown(ctx, program));
|
|
70
80
|
program.action(({ options }) => {
|
|
71
81
|
if (options.version) {
|
|
72
82
|
ctx.logger.info(`tunli: ${packageJson?.version}`);
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandDaemon.d.ts","sourceRoot":"","sources":["../../../src/commands/CommandDaemon/CommandDaemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"CommandDaemon.d.ts","sourceRoot":"","sources":["../../../src/commands/CommandDaemon/CommandDaemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAS,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAU1C,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,EAAE,UAAU,OAAO,YA+ElE,CAAA"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { Command } from "#commander/index";
|
|
1
|
+
import { Command, Option } from "#commander/index";
|
|
2
2
|
import { DaemonClient } from "#daemon/DaemonClient";
|
|
3
3
|
import { dumpAndStopDaemon } from "#lib/Flow/applyUpdate";
|
|
4
|
+
import { confirm } from "#commands/utils";
|
|
5
|
+
const getTunnelCount = async () => {
|
|
6
|
+
const result = await new DaemonClient().send({ type: 'list' });
|
|
7
|
+
return result.type === 'list' ? result.tunnels.length : 0;
|
|
8
|
+
};
|
|
4
9
|
export const createCommandDaemon = (ctx, _program) => {
|
|
5
10
|
const cmd = new Command('daemon')
|
|
6
11
|
.description('Manage the tunli background daemon');
|
|
@@ -15,42 +20,52 @@ export const createCommandDaemon = (ctx, _program) => {
|
|
|
15
20
|
ctx.logger.info('Daemon started.');
|
|
16
21
|
}));
|
|
17
22
|
cmd.addCommand(new Command('stop')
|
|
18
|
-
.description('Stop the running daemon')
|
|
19
|
-
.
|
|
23
|
+
.description('Stop the running daemon and close all tunnels')
|
|
24
|
+
.addOption(new Option('force', 'Stop without confirmation even if tunnels are active').short('f'))
|
|
25
|
+
.action(async ({ options }) => {
|
|
20
26
|
if (!await DaemonClient.isRunning()) {
|
|
21
27
|
ctx.logger.info('Daemon is not running.');
|
|
22
28
|
return;
|
|
23
29
|
}
|
|
24
|
-
await
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.action(async () => {
|
|
30
|
-
if (await DaemonClient.isRunning()) {
|
|
31
|
-
await DaemonClient.stop();
|
|
32
|
-
ctx.logger.info('Daemon stopped.');
|
|
30
|
+
const count = await getTunnelCount();
|
|
31
|
+
if (count > 0 && !options.force) {
|
|
32
|
+
const yes = await confirm(`${count} tunnel(s) are active and will be closed. Stop anyway? [y/N] `);
|
|
33
|
+
if (!yes)
|
|
34
|
+
return;
|
|
33
35
|
}
|
|
34
|
-
await DaemonClient.
|
|
35
|
-
ctx.logger.info('Daemon
|
|
36
|
+
await DaemonClient.stop();
|
|
37
|
+
ctx.logger.info(count > 0 ? `Daemon stopped. ${count} tunnel(s) closed.` : 'Daemon stopped.');
|
|
36
38
|
}));
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.action(async () => {
|
|
39
|
+
// restart = dump + stop + start (tunnels are preserved)
|
|
40
|
+
const restartAction = async () => {
|
|
40
41
|
if (!await DaemonClient.isRunning()) {
|
|
41
|
-
ctx.logger.info('Daemon is not running.');
|
|
42
|
+
ctx.logger.info('Daemon is not running. Starting...');
|
|
43
|
+
await DaemonClient.start();
|
|
44
|
+
ctx.logger.info('Daemon started.');
|
|
42
45
|
return;
|
|
43
46
|
}
|
|
47
|
+
const count = await getTunnelCount();
|
|
44
48
|
await dumpAndStopDaemon();
|
|
45
|
-
ctx.logger.info('Daemon stopped.');
|
|
46
49
|
await DaemonClient.start();
|
|
47
|
-
ctx.logger.info(
|
|
48
|
-
}
|
|
50
|
+
ctx.logger.info(count > 0 ? `Daemon restarted. ${count} tunnel(s) restored.` : 'Daemon restarted.');
|
|
51
|
+
};
|
|
52
|
+
cmd.addCommand(new Command('restart')
|
|
53
|
+
.description('Restart the daemon and restore all active tunnels')
|
|
54
|
+
.action(restartAction));
|
|
55
|
+
cmd.addCommand(new Command('reload')
|
|
56
|
+
.description('Alias for restart')
|
|
57
|
+
.action(restartAction));
|
|
49
58
|
cmd.addCommand(new Command('status')
|
|
50
59
|
.description('Show daemon status')
|
|
51
60
|
.action(async () => {
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
if (!await DaemonClient.isRunning()) {
|
|
62
|
+
ctx.logger.info('Daemon is not running.');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const count = await getTunnelCount();
|
|
66
|
+
ctx.logger.info(count > 0
|
|
67
|
+
? `Daemon is running. ${count} active tunnel(s).`
|
|
68
|
+
: 'Daemon is running. No active tunnels.');
|
|
54
69
|
}));
|
|
55
70
|
return cmd;
|
|
56
71
|
};
|