devportal-tunnel 1.0.0 → 1.0.2
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 +114 -12
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +41 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/list.js +3 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/port.d.ts +2 -0
- package/dist/commands/port.d.ts.map +1 -0
- package/dist/commands/port.js +192 -0
- package/dist/commands/port.js.map +1 -0
- package/dist/commands/start.d.ts +2 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +228 -75
- package/dist/commands/start.js.map +1 -1
- package/dist/index.js +66 -30
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +9 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +77 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +18 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tunnelClient.d.ts +66 -0
- package/dist/utils/tunnelClient.d.ts.map +1 -0
- package/dist/utils/tunnelClient.js +463 -0
- package/dist/utils/tunnelClient.js.map +1 -0
- package/package.json +4 -3
package/dist/commands/start.js
CHANGED
|
@@ -40,108 +40,261 @@ exports.startTunnel = startTunnel;
|
|
|
40
40
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
41
|
const ora_1 = __importDefault(require("ora"));
|
|
42
42
|
const http = __importStar(require("http"));
|
|
43
|
+
const tunnelClient_1 = require("../utils/tunnelClient");
|
|
43
44
|
const tunnels_1 = require("../utils/tunnels");
|
|
44
45
|
const device_1 = require("../utils/device");
|
|
45
|
-
|
|
46
|
-
const qrcode = __importStar(require("qrcode-terminal"));
|
|
46
|
+
const config_1 = require("../utils/config");
|
|
47
47
|
async function startTunnel(port, options) {
|
|
48
|
-
const spinner = (0, ora_1.default)(
|
|
48
|
+
const spinner = (0, ora_1.default)("Connecting to DevPortal...").start();
|
|
49
|
+
// Parse port forwarding if provided
|
|
50
|
+
let localPort = port;
|
|
51
|
+
let remotePort = port;
|
|
52
|
+
if (options.forward) {
|
|
53
|
+
const [remote, local] = options.forward.split(":");
|
|
54
|
+
if (!remote || !local) {
|
|
55
|
+
spinner.fail(chalk_1.default.red("Invalid port forwarding format. Use: --forward <remote>:<local>"));
|
|
56
|
+
console.log(chalk_1.default.gray("Example: --forward 8080:3000 (forwards remote port 8080 to local port 3000)"));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
remotePort = parseInt(remote);
|
|
60
|
+
localPort = parseInt(local);
|
|
61
|
+
if (isNaN(remotePort) || isNaN(localPort)) {
|
|
62
|
+
spinner.fail(chalk_1.default.red("Invalid port numbers in forwarding"));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
spinner.text = `Setting up port forwarding ${remotePort}:${localPort}...`;
|
|
66
|
+
}
|
|
67
|
+
// Check for existing tunnels on the same local port
|
|
68
|
+
const existingTunnels = (0, tunnels_1.getTunnels)().filter((t) => t.status === "live" && t.localPort === localPort);
|
|
69
|
+
if (existingTunnels.length > 0) {
|
|
70
|
+
spinner.fail(chalk_1.default.red(`Port ${localPort} is already being tunneled`));
|
|
71
|
+
console.log();
|
|
72
|
+
console.log(chalk_1.default.yellow("Existing tunnel:"));
|
|
73
|
+
existingTunnels.forEach((tunnel) => {
|
|
74
|
+
console.log(chalk_1.default.gray(` ID: ${tunnel.id}`));
|
|
75
|
+
console.log(chalk_1.default.gray(` Name: ${tunnel.name}`));
|
|
76
|
+
console.log(chalk_1.default.gray(` URL: ${tunnel.url}`));
|
|
77
|
+
console.log(chalk_1.default.gray(` Local Port: ${tunnel.localPort}`));
|
|
78
|
+
});
|
|
79
|
+
console.log();
|
|
80
|
+
console.log(chalk_1.default.gray("Options:"));
|
|
81
|
+
console.log(chalk_1.default.gray(" 1. Stop the existing tunnel: ") +
|
|
82
|
+
chalk_1.default.cyan(`devportal-tunnel stop ${existingTunnels[0].id}`));
|
|
83
|
+
console.log(chalk_1.default.gray(" 2. Use a different local port"));
|
|
84
|
+
console.log(chalk_1.default.gray(" 3. Use port forwarding: ") +
|
|
85
|
+
chalk_1.default.cyan(`--forward ${remotePort}:<different-port>`));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
49
88
|
// Check if local server is running
|
|
50
|
-
const isPortOpen = await checkPort(
|
|
89
|
+
const isPortOpen = await checkPort(localPort);
|
|
51
90
|
if (!isPortOpen) {
|
|
52
|
-
spinner.
|
|
53
|
-
console.log(
|
|
54
|
-
console.log(chalk_1.default.gray(
|
|
91
|
+
spinner.fail(chalk_1.default.red(`No server running on port ${localPort}`));
|
|
92
|
+
console.log();
|
|
93
|
+
console.log(chalk_1.default.gray(" Make sure your local server is running first:"));
|
|
94
|
+
console.log(chalk_1.default.gray(" Example: npm run dev"));
|
|
95
|
+
console.log();
|
|
96
|
+
console.log(chalk_1.default.gray(" Then run:"));
|
|
97
|
+
if (options.forward) {
|
|
98
|
+
console.log(chalk_1.default.cyan(` devportal-tunnel start ${port} --forward ${options.forward}`));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log(chalk_1.default.cyan(` devportal-tunnel start ${port}`));
|
|
102
|
+
}
|
|
55
103
|
console.log();
|
|
104
|
+
process.exit(1);
|
|
56
105
|
}
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
id: tunnelId,
|
|
65
|
-
name,
|
|
66
|
-
url,
|
|
67
|
-
localPort: port,
|
|
68
|
-
status: 'live',
|
|
69
|
-
createdAt: new Date().toISOString(),
|
|
70
|
-
pid: process.pid,
|
|
71
|
-
};
|
|
72
|
-
(0, tunnels_1.addTunnel)(tunnel);
|
|
73
|
-
spinner.succeed(chalk_1.default.green('Tunnel established'));
|
|
74
|
-
console.log();
|
|
75
|
-
// Display tunnel info
|
|
76
|
-
console.log(chalk_1.default.gray(' Local server: '), chalk_1.default.white(`http://localhost:${port}`));
|
|
77
|
-
console.log(chalk_1.default.gray(' Public URL: '), chalk_1.default.cyan.underline(url));
|
|
78
|
-
console.log(chalk_1.default.gray(' Tunnel ID: '), chalk_1.default.white(tunnelId));
|
|
79
|
-
if (options.password) {
|
|
80
|
-
console.log(chalk_1.default.gray(' Password: '), chalk_1.default.yellow('Protected'));
|
|
106
|
+
const config = (0, config_1.getConfig)();
|
|
107
|
+
const deviceId = (0, device_1.getDeviceId)();
|
|
108
|
+
// Use local simulation if no server configured or --local flag
|
|
109
|
+
if (options.local || !config.serverUrl) {
|
|
110
|
+
spinner.text = "Starting local simulation mode...";
|
|
111
|
+
await startSimulatedTunnel(localPort, remotePort, options, spinner);
|
|
112
|
+
return;
|
|
81
113
|
}
|
|
82
|
-
|
|
83
|
-
|
|
114
|
+
// Connect to real server
|
|
115
|
+
try {
|
|
116
|
+
const client = new tunnelClient_1.TunnelClient({
|
|
117
|
+
serverUrl: config.serverUrl,
|
|
118
|
+
wsUrl: config.wsUrl,
|
|
119
|
+
deviceId,
|
|
120
|
+
localPort,
|
|
121
|
+
remotePort: options.forward ? remotePort : undefined,
|
|
122
|
+
subdomain: options.subdomain,
|
|
123
|
+
password: options.password,
|
|
124
|
+
demo: options.demo,
|
|
125
|
+
authHeader: options.authHeader,
|
|
126
|
+
});
|
|
127
|
+
// Handle events
|
|
128
|
+
client.on("request", ({ method, path }) => {
|
|
129
|
+
const methodColor = getMethodColor(method);
|
|
130
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
131
|
+
process.stdout.write(chalk_1.default.gray(timestamp) + " ");
|
|
132
|
+
process.stdout.write(methodColor(method.padEnd(7)));
|
|
133
|
+
process.stdout.write(chalk_1.default.white(path) + " ");
|
|
134
|
+
});
|
|
135
|
+
client.on("response", ({ status }) => {
|
|
136
|
+
const statusColor = status < 300 ? chalk_1.default.green : status < 400 ? chalk_1.default.yellow : chalk_1.default.red;
|
|
137
|
+
console.log(statusColor(status.toString()));
|
|
138
|
+
});
|
|
139
|
+
client.on("error", (error) => {
|
|
140
|
+
console.error(chalk_1.default.red("Error:"), error.message);
|
|
141
|
+
});
|
|
142
|
+
client.on("disconnected", () => {
|
|
143
|
+
console.log(chalk_1.default.yellow("\nConnection lost. Reconnecting..."));
|
|
144
|
+
});
|
|
145
|
+
spinner.text = "Establishing tunnel...";
|
|
146
|
+
const tunnelInfo = await client.connect();
|
|
147
|
+
spinner.succeed(chalk_1.default.green("Tunnel established"));
|
|
148
|
+
console.log();
|
|
149
|
+
// Display tunnel info
|
|
150
|
+
console.log(chalk_1.default.gray(" Local server: "), chalk_1.default.white(`http://localhost:${localPort}`));
|
|
151
|
+
if (options.forward) {
|
|
152
|
+
console.log(chalk_1.default.gray(" Port forward: "), chalk_1.default.white(`Remote ${remotePort} → Local ${localPort}`));
|
|
153
|
+
}
|
|
154
|
+
console.log(chalk_1.default.gray(" Public URL: "), chalk_1.default.cyan.underline(tunnelInfo.url));
|
|
155
|
+
console.log(chalk_1.default.gray(" Tunnel ID: "), chalk_1.default.white(tunnelInfo.id));
|
|
156
|
+
if (options.password) {
|
|
157
|
+
console.log(chalk_1.default.gray(" Password: "), chalk_1.default.yellow("Protected"));
|
|
158
|
+
}
|
|
159
|
+
if (tunnelInfo.expiresAt) {
|
|
160
|
+
const expiresIn = Math.round((new Date(tunnelInfo.expiresAt).getTime() - Date.now()) / 60000);
|
|
161
|
+
console.log(chalk_1.default.gray(" Expires in: "), chalk_1.default.yellow(`${expiresIn} minutes`));
|
|
162
|
+
}
|
|
163
|
+
console.log();
|
|
164
|
+
console.log();
|
|
165
|
+
// Save tunnel info locally
|
|
166
|
+
const storedTunnel = {
|
|
167
|
+
id: tunnelInfo.id,
|
|
168
|
+
name: tunnelInfo.name,
|
|
169
|
+
url: tunnelInfo.url,
|
|
170
|
+
localPort,
|
|
171
|
+
status: "live",
|
|
172
|
+
createdAt: new Date().toISOString(),
|
|
173
|
+
pid: process.pid,
|
|
174
|
+
};
|
|
175
|
+
(0, tunnels_1.addTunnel)(storedTunnel);
|
|
176
|
+
console.log(chalk_1.default.gray(" Forwarding requests... (Press Ctrl+C to stop)"));
|
|
177
|
+
console.log();
|
|
178
|
+
// Handle shutdown
|
|
179
|
+
process.on("SIGINT", async () => {
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(chalk_1.default.yellow("Stopping tunnel..."));
|
|
182
|
+
await client.stop();
|
|
183
|
+
console.log(chalk_1.default.green("Tunnel stopped"));
|
|
184
|
+
process.exit(0);
|
|
185
|
+
});
|
|
186
|
+
// Keep process alive
|
|
187
|
+
await new Promise(() => { });
|
|
84
188
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
console.log();
|
|
88
|
-
// Show QR code if requested
|
|
89
|
-
if (options.qr) {
|
|
90
|
-
console.log(chalk_1.default.gray(' Scan to open on mobile:'));
|
|
189
|
+
catch (error) {
|
|
190
|
+
spinner.fail(chalk_1.default.red("Failed to connect"));
|
|
91
191
|
console.log();
|
|
92
|
-
|
|
192
|
+
console.log(chalk_1.default.red("Error:"), error.message);
|
|
93
193
|
console.log();
|
|
194
|
+
console.log(chalk_1.default.gray("Troubleshooting:"));
|
|
195
|
+
console.log(chalk_1.default.gray(" 1. Check your internet connection"));
|
|
196
|
+
console.log(chalk_1.default.gray(" 2. Verify the server URL in ~/.devportal/config.json"));
|
|
197
|
+
console.log(chalk_1.default.gray(" 3. Try running with --local for simulation mode"));
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function startSimulatedTunnel(localPort, remotePort, options, spinner) {
|
|
202
|
+
// Simulate connection delay
|
|
203
|
+
await sleep(1000);
|
|
204
|
+
const name = options.subdomain || generateTunnelName();
|
|
205
|
+
const tunnelId = `t-${Date.now().toString(36)}`;
|
|
206
|
+
const url = `https://${name}.devportal.local`;
|
|
207
|
+
spinner.succeed(chalk_1.default.green("Tunnel established (simulation mode)"));
|
|
208
|
+
console.log();
|
|
209
|
+
console.log(chalk_1.default.gray(" Local server: "), chalk_1.default.white(`http://localhost:${localPort}`));
|
|
210
|
+
if (options.forward) {
|
|
211
|
+
console.log(chalk_1.default.gray(" Port forward: "), chalk_1.default.white(`Remote ${remotePort} → Local ${localPort}`));
|
|
94
212
|
}
|
|
95
|
-
|
|
96
|
-
console.log(chalk_1.default.gray(
|
|
213
|
+
console.log(chalk_1.default.gray(" Public URL: "), chalk_1.default.cyan.underline(url));
|
|
214
|
+
console.log(chalk_1.default.gray(" Tunnel ID: "), chalk_1.default.white(tunnelId));
|
|
215
|
+
console.log();
|
|
216
|
+
console.log(chalk_1.default.yellow(" ⚠ Running in simulation mode"));
|
|
217
|
+
console.log(chalk_1.default.gray(" Configure server URL to enable real tunneling"));
|
|
218
|
+
console.log();
|
|
219
|
+
console.log(chalk_1.default.gray(" Simulating requests... (Press Ctrl+C to stop)"));
|
|
97
220
|
console.log();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// Handle shutdown
|
|
101
|
-
process.on('SIGINT', () => {
|
|
221
|
+
simulateRequests(localPort);
|
|
222
|
+
process.on("SIGINT", () => {
|
|
102
223
|
console.log();
|
|
103
|
-
console.log(chalk_1.default.yellow(
|
|
224
|
+
console.log(chalk_1.default.yellow("Tunnel stopped"));
|
|
104
225
|
process.exit(0);
|
|
105
226
|
});
|
|
106
|
-
// Keep process alive
|
|
107
227
|
await new Promise(() => { });
|
|
108
228
|
}
|
|
229
|
+
function simulateRequests(port) {
|
|
230
|
+
const methods = ["GET", "POST", "PUT", "DELETE"];
|
|
231
|
+
const paths = ["/api/users", "/api/auth", "/api/data", "/webhook", "/health"];
|
|
232
|
+
const statuses = [200, 200, 200, 201, 400, 401, 404];
|
|
233
|
+
const logRequest = () => {
|
|
234
|
+
const method = methods[Math.floor(Math.random() * methods.length)];
|
|
235
|
+
const path = paths[Math.floor(Math.random() * paths.length)];
|
|
236
|
+
const status = statuses[Math.floor(Math.random() * statuses.length)];
|
|
237
|
+
const duration = Math.floor(Math.random() * 200) + 20;
|
|
238
|
+
const timestamp = new Date().toLocaleTimeString();
|
|
239
|
+
const methodColor = getMethodColor(method);
|
|
240
|
+
const statusColor = status < 300 ? chalk_1.default.green : status < 400 ? chalk_1.default.yellow : chalk_1.default.red;
|
|
241
|
+
console.log(chalk_1.default.gray(timestamp), methodColor(method.padEnd(7)), chalk_1.default.white(path.padEnd(20)), statusColor(status.toString()), chalk_1.default.gray(`${duration}ms`));
|
|
242
|
+
const nextInterval = Math.floor(Math.random() * 6000) + 2000;
|
|
243
|
+
setTimeout(logRequest, nextInterval);
|
|
244
|
+
};
|
|
245
|
+
setTimeout(logRequest, 2000);
|
|
246
|
+
}
|
|
247
|
+
function getMethodColor(method) {
|
|
248
|
+
const colors = {
|
|
249
|
+
GET: chalk_1.default.green,
|
|
250
|
+
POST: chalk_1.default.blue,
|
|
251
|
+
PUT: chalk_1.default.yellow,
|
|
252
|
+
DELETE: chalk_1.default.red,
|
|
253
|
+
PATCH: chalk_1.default.magenta,
|
|
254
|
+
};
|
|
255
|
+
return colors[method] || chalk_1.default.white;
|
|
256
|
+
}
|
|
109
257
|
async function checkPort(port) {
|
|
110
258
|
return new Promise((resolve) => {
|
|
111
|
-
const req = http.request({ host:
|
|
259
|
+
const req = http.request({ host: "localhost", port, timeout: 1000 }, () => {
|
|
112
260
|
resolve(true);
|
|
113
261
|
});
|
|
114
|
-
req.on(
|
|
115
|
-
req.on(
|
|
262
|
+
req.on("error", () => resolve(false));
|
|
263
|
+
req.on("timeout", () => resolve(false));
|
|
116
264
|
req.end();
|
|
117
265
|
});
|
|
118
266
|
}
|
|
119
267
|
function sleep(ms) {
|
|
120
268
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
121
269
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
270
|
+
const adjectives = [
|
|
271
|
+
"purple",
|
|
272
|
+
"cosmic",
|
|
273
|
+
"hidden",
|
|
274
|
+
"crystal",
|
|
275
|
+
"silent",
|
|
276
|
+
"golden",
|
|
277
|
+
"frozen",
|
|
278
|
+
"blazing",
|
|
279
|
+
"lunar",
|
|
280
|
+
"neon",
|
|
281
|
+
];
|
|
282
|
+
const nouns = [
|
|
283
|
+
"horizon",
|
|
284
|
+
"lake",
|
|
285
|
+
"forest",
|
|
286
|
+
"ocean",
|
|
287
|
+
"canyon",
|
|
288
|
+
"river",
|
|
289
|
+
"meadow",
|
|
290
|
+
"summit",
|
|
291
|
+
"valley",
|
|
292
|
+
"storm",
|
|
293
|
+
];
|
|
294
|
+
function generateTunnelName() {
|
|
295
|
+
const adj = adjectives[Math.floor(Math.random() * adjectives.length)];
|
|
296
|
+
const noun = nouns[Math.floor(Math.random() * nouns.length)];
|
|
297
|
+
const num = Math.floor(Math.random() * 900) + 100;
|
|
298
|
+
return `${adj}-${noun}-${num}`;
|
|
146
299
|
}
|
|
147
300
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,29 +11,32 @@ const list_1 = require("./commands/list");
|
|
|
11
11
|
const stop_1 = require("./commands/stop");
|
|
12
12
|
const replay_1 = require("./commands/replay");
|
|
13
13
|
const logs_1 = require("./commands/logs");
|
|
14
|
+
const config_1 = require("./commands/config");
|
|
15
|
+
const port_1 = require("./commands/port");
|
|
14
16
|
const device_1 = require("./utils/device");
|
|
15
17
|
const program = new commander_1.Command();
|
|
16
18
|
// ASCII art logo
|
|
17
19
|
const logo = `
|
|
18
|
-
${chalk_1.default.cyan(
|
|
19
|
-
${chalk_1.default.cyan(
|
|
20
|
-
${chalk_1.default.cyan(
|
|
20
|
+
${chalk_1.default.cyan("╔═══════════════════════════════════════╗")}
|
|
21
|
+
${chalk_1.default.cyan("║")} ${chalk_1.default.bold.white("DevPortal")} - Share localhost instantly ${chalk_1.default.cyan("║")}
|
|
22
|
+
${chalk_1.default.cyan("╚═══════════════════════════════════════╝")}
|
|
21
23
|
`;
|
|
22
24
|
program
|
|
23
|
-
.name(
|
|
24
|
-
.description(
|
|
25
|
-
.version(
|
|
26
|
-
.hook(
|
|
25
|
+
.name("devportal")
|
|
26
|
+
.description("Expose your localhost to the internet with a single command")
|
|
27
|
+
.version("1.0.0")
|
|
28
|
+
.hook("preAction", () => {
|
|
27
29
|
console.log(logo);
|
|
28
30
|
});
|
|
29
31
|
// Main command: devportal <port>
|
|
30
32
|
program
|
|
31
|
-
.argument(
|
|
32
|
-
.option(
|
|
33
|
-
.option(
|
|
34
|
-
.option(
|
|
35
|
-
.option(
|
|
36
|
-
.option(
|
|
33
|
+
.argument("[port]", "Local port to expose", "3000")
|
|
34
|
+
.option("-s, --subdomain <name>", "Custom subdomain for your URL")
|
|
35
|
+
.option("-p, --password <pass>", "Password protect the tunnel")
|
|
36
|
+
.option("--demo", "Create a temporary link that expires in 2 hours")
|
|
37
|
+
.option("--auth-header <header>", "Add authorization header to requests")
|
|
38
|
+
.option("--local", "Run in local simulation mode (no server required)")
|
|
39
|
+
.option("--forward <ports>", "Port forwarding (format: remote:local, e.g., 8080:3000)")
|
|
37
40
|
.action(async (port, options) => {
|
|
38
41
|
if (port && !isNaN(parseInt(port))) {
|
|
39
42
|
await (0, start_1.startTunnel)(parseInt(port), options);
|
|
@@ -42,46 +45,79 @@ program
|
|
|
42
45
|
program.help();
|
|
43
46
|
}
|
|
44
47
|
});
|
|
48
|
+
// Start command: devportal start <port> (alias for default)
|
|
49
|
+
program
|
|
50
|
+
.command("start [port]")
|
|
51
|
+
.description("Start a tunnel to expose your local port")
|
|
52
|
+
.option("-s, --subdomain <name>", "Custom subdomain for your URL")
|
|
53
|
+
.option("-p, --password <pass>", "Password protect the tunnel")
|
|
54
|
+
.option("--demo", "Create a temporary link that expires in 2 hours")
|
|
55
|
+
.option("--auth-header <header>", "Add authorization header to requests")
|
|
56
|
+
.option("--local", "Run in local simulation mode (no server required)")
|
|
57
|
+
.option("--forward <ports>", "Port forwarding (format: remote:local, e.g., 8080:3000)")
|
|
58
|
+
.action(async (port = "3000", options) => {
|
|
59
|
+
await (0, start_1.startTunnel)(parseInt(port), options);
|
|
60
|
+
});
|
|
45
61
|
// List tunnels: devportal ls
|
|
46
62
|
program
|
|
47
|
-
.command(
|
|
48
|
-
.alias(
|
|
49
|
-
.description(
|
|
63
|
+
.command("ls")
|
|
64
|
+
.alias("list")
|
|
65
|
+
.description("List all active tunnels")
|
|
50
66
|
.action(async () => {
|
|
51
67
|
await (0, list_1.listTunnels)();
|
|
52
68
|
});
|
|
53
69
|
// Stop tunnel: devportal stop <id>
|
|
54
70
|
program
|
|
55
|
-
.command(
|
|
56
|
-
.description(
|
|
57
|
-
.option(
|
|
71
|
+
.command("stop [tunnelId]")
|
|
72
|
+
.description("Stop a tunnel by ID")
|
|
73
|
+
.option("-a, --all", "Stop all active tunnels")
|
|
58
74
|
.action(async (tunnelId, options) => {
|
|
59
75
|
await (0, stop_1.stopTunnel)(tunnelId, options);
|
|
60
76
|
});
|
|
77
|
+
// Stop all tunnels: devportal stop-all (convenient alias)
|
|
78
|
+
program
|
|
79
|
+
.command("stop-all")
|
|
80
|
+
.description("Stop all active tunnels")
|
|
81
|
+
.action(async () => {
|
|
82
|
+
await (0, stop_1.stopTunnel)(undefined, { all: true });
|
|
83
|
+
});
|
|
61
84
|
// Replay request: devportal replay <requestId>
|
|
62
85
|
program
|
|
63
|
-
.command(
|
|
64
|
-
.description(
|
|
65
|
-
.option(
|
|
66
|
-
.option(
|
|
86
|
+
.command("replay <requestId>")
|
|
87
|
+
.description("Replay a captured request")
|
|
88
|
+
.option("-H, --header <header>", "Add or override a header")
|
|
89
|
+
.option("-b, --body <body>", "Override request body")
|
|
67
90
|
.action(async (requestId, options) => {
|
|
68
91
|
await (0, replay_1.replayRequest)(requestId, options);
|
|
69
92
|
});
|
|
70
93
|
// Stream logs: devportal logs <tunnelId>
|
|
71
94
|
program
|
|
72
|
-
.command(
|
|
73
|
-
.description(
|
|
95
|
+
.command("logs <tunnelId>")
|
|
96
|
+
.description("Stream live request logs from a tunnel")
|
|
74
97
|
.action(async (tunnelId) => {
|
|
75
98
|
await (0, logs_1.showLogs)(tunnelId);
|
|
76
99
|
});
|
|
100
|
+
// Config command
|
|
101
|
+
program
|
|
102
|
+
.command("config [action] [value]")
|
|
103
|
+
.description("View or update configuration")
|
|
104
|
+
.action(async (action, value) => {
|
|
105
|
+
await (0, config_1.configCommand)(action, value);
|
|
106
|
+
});
|
|
107
|
+
// Port management command
|
|
108
|
+
program
|
|
109
|
+
.command("port [action] [port]")
|
|
110
|
+
.description("Manage ports (actions: check, scan, list)")
|
|
111
|
+
.action(async (action, port) => {
|
|
112
|
+
await (0, port_1.portCommand)(action, port ? parseInt(port) : undefined);
|
|
113
|
+
});
|
|
77
114
|
// Device info command
|
|
78
115
|
program
|
|
79
|
-
.command(
|
|
80
|
-
.description(
|
|
116
|
+
.command("whoami")
|
|
117
|
+
.description("Show current device ID")
|
|
81
118
|
.action(() => {
|
|
82
119
|
const deviceId = (0, device_1.getDeviceId)();
|
|
83
|
-
console.log(chalk_1.default.gray(
|
|
84
|
-
console.log(chalk_1.default.gray('Dashboard:'), chalk_1.default.underline(`https://devportal.live/dashboard/${deviceId}`));
|
|
120
|
+
console.log(chalk_1.default.gray("Device ID:"), chalk_1.default.cyan(deviceId));
|
|
85
121
|
});
|
|
86
|
-
program.parse();
|
|
122
|
+
program.parse(process.argv);
|
|
87
123
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,4CAA+C;AAC/C,0CAA8C;AAC9C,0CAA6C;AAC7C,8CAAkD;AAClD,0CAA2C;AAC3C,2CAA6C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface Config {
|
|
2
|
+
serverUrl: string;
|
|
3
|
+
wsUrl: string;
|
|
4
|
+
frontendUrl: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getConfig(): Config;
|
|
7
|
+
export declare function saveConfig(config: Partial<Config>): void;
|
|
8
|
+
export declare function setServerUrl(url: string): void;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAOxD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAS9C"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getConfig = getConfig;
|
|
37
|
+
exports.saveConfig = saveConfig;
|
|
38
|
+
exports.setServerUrl = setServerUrl;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const device_1 = require("./device");
|
|
42
|
+
const CONFIG_FILE = path.join((0, device_1.getConfigDir)(), "config.json");
|
|
43
|
+
const DEFAULT_CONFIG = {
|
|
44
|
+
serverUrl: "https://tunnl.stylnode.in",
|
|
45
|
+
wsUrl: "wss://tunnl.stylnode.in/ws",
|
|
46
|
+
frontendUrl: "https://devportal.stylnode.in",
|
|
47
|
+
};
|
|
48
|
+
function getConfig() {
|
|
49
|
+
if (!fs.existsSync(CONFIG_FILE)) {
|
|
50
|
+
saveConfig(DEFAULT_CONFIG);
|
|
51
|
+
return DEFAULT_CONFIG;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const config = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
55
|
+
return { ...DEFAULT_CONFIG, ...config };
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return DEFAULT_CONFIG;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function saveConfig(config) {
|
|
62
|
+
const currentConfig = fs.existsSync(CONFIG_FILE)
|
|
63
|
+
? JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"))
|
|
64
|
+
: {};
|
|
65
|
+
const newConfig = { ...currentConfig, ...config };
|
|
66
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(newConfig, null, 2));
|
|
67
|
+
}
|
|
68
|
+
function setServerUrl(url) {
|
|
69
|
+
// Derive WebSocket URL from HTTP URL (same host, /ws path)
|
|
70
|
+
const wsUrl = url.replace("https://", "wss://").replace("http://", "ws://");
|
|
71
|
+
const wsWithPath = wsUrl.replace(/\/$/, "") + "/ws";
|
|
72
|
+
saveConfig({
|
|
73
|
+
serverUrl: url.replace(/\/$/, ""),
|
|
74
|
+
wsUrl: wsWithPath,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8BAYC;AAED,gCAOC;AAED,oCASC;AAlDD,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAwC;AAQxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,qBAAY,GAAE,EAAE,aAAa,CAAC,CAAC;AAE7D,MAAM,cAAc,GAAW;IAC7B,SAAS,EAAE,2BAA2B;IACtC,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,+BAA+B;CAC7C,CAAC;AAEF,SAAgB,SAAS;IACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,MAAuB;IAChD,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW;IACtC,2DAA2D;IAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAEpD,UAAU,CAAC;QACT,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACjC,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;AACL,CAAC"}
|