Skip to content

Commit f82d511

Browse files
authored
Merge pull request #4 from yunying1/new-ngrok
Feat support ngrok
2 parents cffe0f4 + 930f473 commit f82d511

File tree

22 files changed

+555
-52
lines changed

22 files changed

+555
-52
lines changed

forge.config.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,27 @@ module.exports = {
1010
FileDescription: "Sharing GUI for windows",
1111
},
1212
asar: true,
13+
ignore: [
14+
"\/sharing\-pkg\/easy\-sharing\-linux",
15+
"\/sharing\-pkg\/easy\-sharing\-win\.exe",
16+
],
17+
// ignore: function ignore(path) {
18+
// // console.log("ignore/path", path, process.platform, process);
19+
// let ignoreList = [
20+
// "/node_modules/.bin",
21+
// "/node_modules/electron",
22+
// "/node_modules/electron-prebuilt",
23+
// "/node_modules/electron-prebuilt-compile",
24+
// "/.git",
25+
// ];
26+
// for (let i = 0; i < ignoreList.length; i++) {
27+
// const element = ignoreList[i];
28+
// if (path.indexOf(element) === 0) {
29+
// return true;
30+
// }
31+
// }
32+
// return false;
33+
// },
1334
// platforms: ["darwin"],
1435
},
1536
rebuildConfig: {},

main.js

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const {
99
const path = require("path");
1010
const { exec, execFile, spawn } = require("child_process");
1111
const fs = require("fs");
12+
const ngrok = require("ngrok-electron");
1213
const pkg = require("./package.json");
1314
const APP_URL = `http://${pkg.env.SERVER_HOST}:${pkg.env.SERVER_PORT}`;
1415

@@ -26,7 +27,7 @@ const SHARING_PKG = {
2627

2728
const createWindow = () => {
2829
const win = new BrowserWindow({
29-
width: 555,
30+
width: 557,
3031
height: 525,
3132
webPreferences: {
3233
preload: path.join(__dirname, "preload.js"),
@@ -104,14 +105,35 @@ const ipcInit = () => {
104105
if (_params.password) {
105106
params.push(`--password ${_params.password}`);
106107
}
108+
params.push("--dev");
107109

108110
serviceLs = execFile(binaryPath, params, { shell: true });
109111
serviceLs.stdout.on("data", function (data) {
110112
console.log("stdout: \r\n" + data);
111-
let dataStr = data.toString();
112-
if (dataStr.indexOf("link") >= 0) {
113-
let url = dataStr.match(/link:\s*(.*?)\s/)[1];
114-
reslove({ success: true, url });
113+
try {
114+
const resData = JSON.parse(data);
115+
if (resData.success) {
116+
const linkInfo = resData.data.link;
117+
let url = `${linkInfo.protocol}://${linkInfo.host}:${linkInfo.port}${linkInfo.path}`;
118+
if (_params.ngrok) {
119+
useNgrok(_params.ngrok, linkInfo.port).then(
120+
(ngrokUrl) => {
121+
url = `${ngrokUrl}${linkInfo.path}`;
122+
reslove({ success: true, url });
123+
},
124+
(err) => {
125+
reject(err);
126+
}
127+
);
128+
} else {
129+
reslove({ success: true, url });
130+
}
131+
} else {
132+
reject(resData.msg);
133+
}
134+
} catch (err) {
135+
// console.log("err", err);
136+
reject(err);
115137
}
116138
});
117139

@@ -146,7 +168,9 @@ const ipcInit = () => {
146168
ipcMain.handle("end-sharing", (event) => {
147169
return new Promise((reslove, reject) => {
148170
execFile("kill", [serviceLs.pid]);
149-
reslove();
171+
ngrok.kill().then(() => {
172+
reslove();
173+
});
150174
});
151175
});
152176

@@ -169,3 +193,26 @@ const ipcInit = () => {
169193
});
170194
});
171195
};
196+
197+
function useNgrok(authtoken, port) {
198+
return new Promise((reslove, reject) => {
199+
try {
200+
ngrok
201+
.connect({
202+
authtoken,
203+
addr: port,
204+
})
205+
.then(
206+
(res) => {
207+
reslove(res);
208+
},
209+
(err) => {
210+
console.log("ngrok error:", err);
211+
reject(err);
212+
}
213+
);
214+
} catch (err) {
215+
reject(err);
216+
}
217+
});
218+
}

0 commit comments

Comments
 (0)