From a332c6a8f969ca7542c42b4abf880c385997e103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 11:09:05 +0800 Subject: [PATCH 01/29] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96=E5=8C=85?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 0193af5..b6498a6 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,6 @@ "animate.css": "^4.1.1", "electron-dl": "^3.5.1", "electron-log": "^5.1.7", - "tar": "^6.2.0", - "unzipper": "^0.10.14" + "tar": "^6.2.0" } } From ce949aca445bc9867a420bbc4542baa550910cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 21:21:42 +0800 Subject: [PATCH 02/29] =?UTF-8?q?:building=5Fconstruction:=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- electron-builder.json5 | 125 +++++++++++++++++++++++++++++++++++++++-- package.json | 27 +++++---- 3 files changed, 135 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 72a6a4d..56269e2 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ ## 社区 微信扫描加入开源项目交流群 广告勿进!!! - Logo + Logo ## 演示 diff --git a/electron-builder.json5 b/electron-builder.json5 index 35078a3..acb1870 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -14,33 +14,146 @@ "dist", "dist-electron" ], + "dmg": { + "window": { + "width": 540, + "height": 380 + }, + "contents": [ + { + "x": 410, + "y": 230, + "type": "link", + "path": "/Applications" + }, + { + "x": 130, + "y": 230, + "type": "file" + } + ] + }, "mac": { "target": [ - "dmg" + { + target: "dmg", + "arch": [ + "x64", + "arm64", + "universal" + ] + }, + { + "target": "zip", + "arch": [ + "x64", + "arm64", + "universal" + ] + } ], - "artifactName": "${productName}-Mac-${arch}-${version}-Installer.${ext}" + "extraResources": { + "from": "./extra/darwin/${arch}/", + "to": "./", + "filter": [ + "**/*" + ] + }, }, "win": { "target": [ { "target": "nsis", "arch": [ - "x64" + "x64", + "ia32" + ] + }, +// { + // "target": "appx", + // "arch": [ + // "x64", + // "ia32" + // ] + // }, + { + "target": "zip", + "arch": [ + "x64", + "ia32" + ] + }, + { + "target": "portable", + "arch": [ + "x64", + "ia32" ] } ], - "artifactName": "${productName}-Windows-${arch}-${version}-Setup.${ext}" + "extraResources": { + "from": "./extra/win32/${arch}/", + "to": "./", + "filter": [ + "**/*" + ] + } }, "nsis": { + "artifactName": "${productName}-Setup-${version}.${ext}", "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, "deleteAppDataOnUninstall": false }, + "portable": { + "artifactName": "${productName}-${version}-${arch}.${ext}" + }, "linux": { "target": [ - "AppImage" + { + "target": "AppImage", + "arch": [ + "x64", + "arm64", +// "armv7l" + ] + }, + { + "target": "deb", + "arch": [ + "x64", + "arm64", +// "armv7l" + ] + }, + { + "target": "rpm", + "arch": [ + "x64" + ] + }, + { + "target": "snap", + "arch": [ + "x64" + ] + } ], - "artifactName": "${productName}-Linux-${arch}-${version}.${ext}" + "extraResources": { + "from": "./extra/linux/${arch}/", + "to": "./", + "filter": [ + "**/*" + ] + }, + "publish": [ + { + "provider": "github", + "owner": "luckjiawei", + "repo": "frpc-desktop", + "releaseType": "draft", + }, + ] }, } diff --git a/package.json b/package.json index b6498a6..4521f36 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,19 @@ { "name": "Frpc-Desktop", - "version": "1.0.5", + "version": "1.0.6", "main": "dist-electron/main/index.js", "description": "一个frpc桌面客户端", - "repository": "https://github.com/luckjiawei/frpc-desktop", + "repository": "github:luckjiawei/frpc-desktop", "author": "刘嘉伟 <8473136@qq.com>", "license": "MIT", "private": true, "keywords": [ - "electron", - "rollup", - "vite", - "vue3", - "vue" + "frp", + "frpc" ], + "engines": { + "node": ">=12 <18" + }, "debug": { "env": { "VITE_DEV_SERVER_URL": "http://127.0.0.1:3344/" @@ -23,9 +23,9 @@ "dev": "vite", "build": "vue-tsc --noEmit && vite build", "build:electron": "npm run build && electron-builder", - "build:electron:mac": "npm run build && electron-builder --mac --x64 --arm64", - "build:electron:win": "npm run build && electron-builder --win --arm64 --x64 --ia32", - "build:electron:linux": "npm run build && electron-builder --linux --arm64 --x64", + "build:electron:mac": "npm run build && electron-builder --mac", + "build:electron:win": "npm run build && electron-builder --win", + "build:electron:linux": "npm run build && electron-builder --linux", "build:electron:all": "npm run build:electron:win && npm run build:electron:mac && npm run build:electron:linux", "preview": "vite preview", "electron:generate-icons": "electron-icon-builder --input=./public/logo.png --output=build --flatten" @@ -33,14 +33,16 @@ "devDependencies": { "@iconify/vue": "^4.1.1", "@types/nedb": "^1.8.16", + "@types/node": "^18.15.11", "@vitejs/plugin-vue": "^4.3.3", "@vue/eslint-config-prettier": "^7.1.0", - "@vueuse/core": "^9.13.0", + "@vueuse/core": "^8.9.4", "autoprefixer": "^10.4.15", "cssnano": "^6.0.1", - "electron": "^26.0.0", + "electron": "^25.9.7", "electron-builder": "^24.6.3", "element-plus": "^2.4.2", + "eslint": "^7.32.0", "eslint-plugin-prettier": "^4.2.1", "moment": "^2.29.4", "nedb": "^1.8.0", @@ -55,6 +57,7 @@ "vite-plugin-electron": "^0.15.3", "vite-plugin-electron-renderer": "^0.14.5", "vue": "^3.3.4", + "vue-demi": "^0.14.10", "vue-router": "^4.2.4", "vue-tsc": "^2.0.22", "vue-types": "^5.1.1" From d07fe5f5b4e18b47c1e313d648246901af3921bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 21:22:02 +0800 Subject: [PATCH 03/29] =?UTF-8?q?:fire:=20=E5=88=A0=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/github.ts | 1 - electron/main/index.ts | 4 ---- 2 files changed, 5 deletions(-) diff --git a/electron/api/github.ts b/electron/api/github.ts index 1209ef3..b5dc9f8 100644 --- a/electron/api/github.ts +++ b/electron/api/github.ts @@ -5,7 +5,6 @@ const fs = require("fs"); const path = require("path"); const zlib = require("zlib"); const {download} = require("electron-dl"); -const unzipper = require('unzipper'); const AdmZip = require('adm-zip'); const log = require('electron-log'); diff --git a/electron/main/index.ts b/electron/main/index.ts index 6aa998f..8a196a0 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -213,10 +213,6 @@ ipcMain.handle("open-win", (_, arg) => { } }); -ipcMain.on('open-url', (event, url) => { - shell.openExternal(url).then(r => { - }); -}); initGitHubApi(); initConfigApi(); From 17f1ed5473ed52acb34ee93f383a1cfddd099ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 21:22:34 +0800 Subject: [PATCH 04/29] =?UTF-8?q?:fire:=20=E5=88=A0=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logo(new).pxd | Bin 187616 -> 0 bytes logo(old).png | Bin 38069 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 logo(new).pxd delete mode 100644 logo(old).png diff --git a/logo(new).pxd b/logo(new).pxd deleted file mode 100644 index 125d9dbc95048c20992a151287f02538ffc2552b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187616 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 diff --git a/logo(old).png b/logo(old).png deleted file mode 100644 index f60b50619c8c467dfa070c57d343b02150084933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38069 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 q`RVM){reZof`dHJED59i{es94D Date: Wed, 7 Aug 2024 21:22:51 +0800 Subject: [PATCH 05/29] =?UTF-8?q?:truck:=20=E7=A7=BB=E5=8A=A8=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {demo => screenshots}/conn.png | Bin {demo => screenshots}/log.png | Bin {demo => screenshots}/proxys.png | Bin {demo => screenshots}/versions.png | Bin wechat-qr.png => screenshots/wechat-qr.png | Bin 5 files changed, 0 insertions(+), 0 deletions(-) rename {demo => screenshots}/conn.png (100%) rename {demo => screenshots}/log.png (100%) rename {demo => screenshots}/proxys.png (100%) rename {demo => screenshots}/versions.png (100%) rename wechat-qr.png => screenshots/wechat-qr.png (100%) diff --git a/demo/conn.png b/screenshots/conn.png similarity index 100% rename from demo/conn.png rename to screenshots/conn.png diff --git a/demo/log.png b/screenshots/log.png similarity index 100% rename from demo/log.png rename to screenshots/log.png diff --git a/demo/proxys.png b/screenshots/proxys.png similarity index 100% rename from demo/proxys.png rename to screenshots/proxys.png diff --git a/demo/versions.png b/screenshots/versions.png similarity index 100% rename from demo/versions.png rename to screenshots/versions.png diff --git a/wechat-qr.png b/screenshots/wechat-qr.png similarity index 100% rename from wechat-qr.png rename to screenshots/wechat-qr.png From aacd51b1f713688cb0773f0dcb2f080ae6d324d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 21:23:03 +0800 Subject: [PATCH 06/29] =?UTF-8?q?:sparkles:=20=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/compoenets/LeftMenu.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layout/compoenets/LeftMenu.vue b/src/layout/compoenets/LeftMenu.vue index 063c87d..78017ef 100644 --- a/src/layout/compoenets/LeftMenu.vue +++ b/src/layout/compoenets/LeftMenu.vue @@ -69,7 +69,7 @@ onMounted(() => {
- v1.0.5 + v1.0.6
From d7b70c439d2b397b4d8da0c861423a9164eac41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 21:56:58 +0800 Subject: [PATCH 07/29] =?UTF-8?q?:building=5Fconstruction:=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 4521f36..09c13e8 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dev": "vite", "build": "vue-tsc --noEmit && vite build", "build:electron": "npm run build && electron-builder", + "release": "npm run build && electron-builder -p onTagOrDraft", "build:electron:mac": "npm run build && electron-builder --mac", "build:electron:win": "npm run build && electron-builder --win", "build:electron:linux": "npm run build && electron-builder --linux", From 62e67f97bd1fade10aefaaa2d4ae33be0967823e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 22:09:28 +0800 Subject: [PATCH 08/29] =?UTF-8?q?:bug:=20linux=20x64=E6=89=BE=E4=B8=8D?= =?UTF-8?q?=E5=88=B0frp=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/github.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/api/github.ts b/electron/api/github.ts index b5dc9f8..64329e5 100644 --- a/electron/api/github.ts +++ b/electron/api/github.ts @@ -14,13 +14,13 @@ const versionRelation = { "win32_ia32": ["window", "386"], "darwin_arm64": ["darwin", "arm64"], "darwin_x64": ["darwin", "amd64"], - // "darwin_arm64": ["window", "amd64"], "darwin_amd64": ["darwin", "amd64"], + "linux_x64": ["linux", "amd64"], + "linux_arm64": ["linux", "arm64"], } const platform = process.platform; const arch = process.arch; let currArch = `${platform}_${arch}` -// currArch = `darwin_x64` const frpArch = versionRelation[currArch] const unTarGZ = (tarGzPath: string, targetPath: string) => { From a98c8d343acae0315f859276537a8bca3b5b01e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Wed, 7 Aug 2024 23:12:47 +0800 Subject: [PATCH 09/29] =?UTF-8?q?:sparkles:=20=E6=9B=B4=E6=96=B0=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/update.ts | 51 ++++++++++++++++++++++++++++++++++++++++++ electron/main/index.ts | 26 ++++++++++++++------- 2 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 electron/api/update.ts diff --git a/electron/api/update.ts b/electron/api/update.ts new file mode 100644 index 0000000..c2231ca --- /dev/null +++ b/electron/api/update.ts @@ -0,0 +1,51 @@ +import {app, dialog, autoUpdater } from "electron"; + +const log = require('electron-log'); + + +export const initUpdaterApi = () => { + const server = 'https://hazel-jplav4y84-uiluck.vercel.app' + const url = `${server}/update/${process.platform}/${app.getVersion()}` + autoUpdater.setFeedURL({ url }) + setInterval(() => { + }, 60000) + autoUpdater.checkForUpdates() + + // autoUpdater.on('checking-for-update', () => { + // log.info("正在检查更新") + // }) + // + // autoUpdater.on('update-available', () => { + // log.info("有可用更新") + // }) + // + // autoUpdater.on('update-not-available', () => { + // log.info('没有可用的更新') + // }) + // + // autoUpdater.on('error', (err) => { + // log.error(`更新错误:${err.message}`) + // + // }) + // + // autoUpdater.on('download-progress', (progressObj) => { + // log.debug(`下载进度 ${progressObj.percent}%`) + // }) + // + // autoUpdater.on('update-downloaded', () => { + // console.log('update-downloaded') + // + // dialog.showMessageBox({ + // type: 'info', + // title: '应用更新', + // message: '发现新版本,是否更新?', + // buttons: ['是', '否'] + // }).then((buttonIndex) => { + // if (buttonIndex.response == 0) { //选择是,则退出程序,安装新版本 + // autoUpdater.quitAndInstall() + // app.quit() + // } + // }) + // }) + +} diff --git a/electron/main/index.ts b/electron/main/index.ts index 8a196a0..a71df8f 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -9,6 +9,7 @@ import {initLoggerApi} from "../api/logger"; import {initFileApi} from "../api/file"; import {getConfig} from "../storage/config"; import log from "electron-log"; +import {initUpdaterApi} from "../api/update"; // The built directory structure // // ├─┬ dist-electron @@ -160,6 +161,23 @@ export const createTray = () => { } app.whenReady().then(() => { + initGitHubApi(); + initConfigApi(); + initProxyApi(); + initFrpcApi(); + initLoggerApi(); + initFileApi(); + // initUpdaterApi(); + + + //更新测试打开 + Object.defineProperty(app, 'isPackaged', { + get() { + return true; + } + }); + + createWindow().then(r => { createTray() }) @@ -212,11 +230,3 @@ ipcMain.handle("open-win", (_, arg) => { childWindow.loadFile(indexHtml, {hash: arg}); } }); - - -initGitHubApi(); -initConfigApi(); -initProxyApi(); -initFrpcApi(); -initLoggerApi(); -initFileApi(); From 1cb66059afbbe6e0ebfb3266e1033ee7bc7606a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Thu, 8 Aug 2024 09:11:36 +0800 Subject: [PATCH 10/29] =?UTF-8?q?:arrow=5Fup:=20=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 09c13e8..c7e34a4 100644 --- a/package.json +++ b/package.json @@ -41,9 +41,9 @@ "autoprefixer": "^10.4.15", "cssnano": "^6.0.1", "electron": "^25.9.7", - "electron-builder": "^24.6.3", + "electron-builder": "^24.10.0", "element-plus": "^2.4.2", - "eslint": "^7.32.0", + "eslint": "^8.56.0", "eslint-plugin-prettier": "^4.2.1", "moment": "^2.29.4", "nedb": "^1.8.0", @@ -57,9 +57,9 @@ "vite": "^4.4.9", "vite-plugin-electron": "^0.15.3", "vite-plugin-electron-renderer": "^0.14.5", - "vue": "^3.3.4", + "vue": "^3.3.13", "vue-demi": "^0.14.10", - "vue-router": "^4.2.4", + "vue-router": "^4.2.5", "vue-tsc": "^2.0.22", "vue-types": "^5.1.1" }, From 18567646bc9437e0da9c38b2f96cf91a2ce6fd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Thu, 8 Aug 2024 12:21:07 +0800 Subject: [PATCH 11/29] =?UTF-8?q?:arrow=5Fup:=20=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index c7e34a4..0c5727a 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,13 @@ "private": true, "keywords": [ "frp", - "frpc" + "frpc", + "proxy", + "electron-app" ], "engines": { - "node": ">=12 <18" + "node": ">= 16", + "npm": ">=8.5.2" }, "debug": { "env": { @@ -23,10 +26,13 @@ "dev": "vite", "build": "vue-tsc --noEmit && vite build", "build:electron": "npm run build && electron-builder", - "release": "npm run build && electron-builder -p onTagOrDraft", "build:electron:mac": "npm run build && electron-builder --mac", "build:electron:win": "npm run build && electron-builder --win", "build:electron:linux": "npm run build && electron-builder --linux", + "release": "npm run build && electron-builder -p onTagOrDraft", + "release:mac": "npm run build && electron-builder --mac -p onTagOrDraft", + "release:win": "npm run build && electron-builder --win -p onTagOrDraft", + "release:linux": "npm run build && electron-builder --linux -p onTagOrDraft", "build:electron:all": "npm run build:electron:win && npm run build:electron:mac && npm run build:electron:linux", "preview": "vite preview", "electron:generate-icons": "electron-icon-builder --input=./public/logo.png --output=build --flatten" From d3835b1ed58e0265101275cce1bab9ee00ea9607 Mon Sep 17 00:00:00 2001 From: luckjiawei <8473136@qq.com> Date: Thu, 8 Aug 2024 15:25:52 +0800 Subject: [PATCH 12/29] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=89=93?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron-builder.json5 | 51 +++++++++++++----------------------------- 1 file changed, 16 insertions(+), 35 deletions(-) diff --git a/electron-builder.json5 b/electron-builder.json5 index acb1870..69c047a 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -52,13 +52,7 @@ ] } ], - "extraResources": { - "from": "./extra/darwin/${arch}/", - "to": "./", - "filter": [ - "**/*" - ] - }, + category: "public.app-category.utilities" }, "win": { "target": [ @@ -91,13 +85,6 @@ ] } ], - "extraResources": { - "from": "./extra/win32/${arch}/", - "to": "./", - "filter": [ - "**/*" - ] - } }, "nsis": { "artifactName": "${productName}-Setup-${version}.${ext}", @@ -133,27 +120,21 @@ "x64" ] }, - { - "target": "snap", - "arch": [ - "x64" - ] - } +// { +// "target": "snap", +// "arch": [ +// "x64" +// ] +// } ], - "extraResources": { - "from": "./extra/linux/${arch}/", - "to": "./", - "filter": [ - "**/*" - ] - }, - "publish": [ - { - "provider": "github", - "owner": "luckjiawei", - "repo": "frpc-desktop", - "releaseType": "draft", - }, - ] + "category": "Network", }, + "publish": [ + { + "provider": "github", + "owner": "luckjiawei", + "repo": "frpc-desktop", + "releaseType": "draft", + }, + ] } From 984436bce889635cfda0749b75de7f9c2767e195 Mon Sep 17 00:00:00 2001 From: luckjiawei <8473136@qq.com> Date: Thu, 8 Aug 2024 15:27:58 +0800 Subject: [PATCH 13/29] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=E6=89=93?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0c5727a..29ec907 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "autoprefixer": "^10.4.15", "cssnano": "^6.0.1", "electron": "^25.9.7", - "electron-builder": "^24.10.0", + "electron-builder": "^24.6.3", "element-plus": "^2.4.2", "eslint": "^8.56.0", "eslint-plugin-prettier": "^4.2.1", From 9b2131dd008e48f65fc8e6a2027865b9242e575a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Thu, 8 Aug 2024 16:44:36 +0800 Subject: [PATCH 14/29] =?UTF-8?q?:arrow=5Fup:=20=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E4=BE=9D=E8=B5=96=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 26 +++++++++++++------------- tsconfig.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 29ec907..47a458d 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,7 @@ "electron-app" ], "engines": { - "node": ">= 16", - "npm": ">=8.5.2" + "node": ">= 18" }, "debug": { "env": { @@ -40,40 +39,41 @@ "devDependencies": { "@iconify/vue": "^4.1.1", "@types/nedb": "^1.8.16", - "@types/node": "^18.15.11", "@vitejs/plugin-vue": "^4.3.3", "@vue/eslint-config-prettier": "^7.1.0", - "@vueuse/core": "^8.9.4", + "@vueuse/core": "^9.13.0", + "eslint": "^7.28.0", "autoprefixer": "^10.4.15", "cssnano": "^6.0.1", - "electron": "^25.9.7", - "electron-builder": "^24.6.3", + "electron": "^26.6.10", + "electron-builder": "^24.13.3", + "electron-builder-squirrel-windows": "^24.13.3", "element-plus": "^2.4.2", - "eslint": "^8.56.0", "eslint-plugin-prettier": "^4.2.1", "moment": "^2.29.4", "nedb": "^1.8.0", "node-cmd": "^5.0.0", "prettier": "^2.8.8", "sass": "^1.66.1", - "sass-loader": "^13.3.2", "tailwindcss": "^3.3.3", "tree-kill": "^1.2.2", "typescript": "^5.1.6", "vite": "^4.4.9", "vite-plugin-electron": "^0.15.3", "vite-plugin-electron-renderer": "^0.14.5", - "vue": "^3.3.13", - "vue-demi": "^0.14.10", - "vue-router": "^4.2.5", + "vue": "^3.3.4", + "vue-router": "^4.2.4", "vue-tsc": "^2.0.22", - "vue-types": "^5.1.1" + "vue-types": "^5.1.1", + "postcss": "^8.4.31" }, "dependencies": { "adm-zip": "^0.5.14", "animate.css": "^4.1.1", "electron-dl": "^3.5.1", "electron-log": "^5.1.7", - "tar": "^6.2.0" + "tar": "^6.2.0", + "unused-filename": "^4.0.1", + "isbinaryfile": "4.0.10" } } diff --git a/tsconfig.json b/tsconfig.json index afca1ed..216c79d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,7 +22,7 @@ ] }, "types": [ - "node", +// "node", "vite/client", "element-plus/global" ], From 4f9cf606718a524fa9c69291467b7f08d220bf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Thu, 8 Aug 2024 16:49:40 +0800 Subject: [PATCH 15/29] =?UTF-8?q?:lipstick:=20=E4=BF=AE=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/preload/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electron/preload/index.ts b/electron/preload/index.ts index ebf1276..8061fd0 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -44,7 +44,7 @@ function useLoading() { animation-fill-mode: both; width: 50px; height: 50px; - background: #fff; + background: #5F3BB0; animation: square-spin 3s 0s cubic-bezier(0.09, 0.57, 0.49, 0.9) infinite; } .app-loading-wrap { @@ -56,7 +56,7 @@ function useLoading() { display: flex; align-items: center; justify-content: center; - background: #282c34; + background: #ffffff; z-index: 9; } ` From a155e13cfb671f2bced104a614a4921f2a064103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 00:09:52 +0800 Subject: [PATCH 16/29] =?UTF-8?q?:rocket:=20=E5=8F=91=E5=B8=83=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 47a458d..9748db5 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "build:electron:mac": "npm run build && electron-builder --mac", "build:electron:win": "npm run build && electron-builder --win", "build:electron:linux": "npm run build && electron-builder --linux", - "release": "npm run build && electron-builder -p onTagOrDraft", + "release": "npm run build && electron-builder --mac --win --linux -p onTagOrDraft", "release:mac": "npm run build && electron-builder --mac -p onTagOrDraft", "release:win": "npm run build && electron-builder --win -p onTagOrDraft", "release:linux": "npm run build && electron-builder --linux -p onTagOrDraft", From 7df9759194badebce5407f6bf09b4e404f00603a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 00:14:18 +0800 Subject: [PATCH 17/29] =?UTF-8?q?:memo:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 56269e2..41953e3 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@

Frpc-Desktop

- 🎉 一个 Frp 跨平台桌面客户端 支持多个frp版本 + 🎉 Frp 跨平台桌面客户端 支持所有frp版本

@@ -24,12 +24,15 @@ ## TODO - [x] 开机自启动 - [x] 适配多用户 user & meta_token -- [ ] 支持配置的导出导入 -- [ ] 优化配置 -- [ ] 便携版 +- [x] 便携版 - [ ] 在线更新 +- [ ] 支持stcp代理类型 +- [ ] 支持快速分享frps +- [ ] 支持配的导出导入 +- [ ] 优化配置 ## 里程碑 +- 2024-08-09: 发布v1.0.6版本 - 2024-08-06: 发布v1.0.5版本 - 2024-08-06: 发布v1.0.4版本 适配支持多用户插件 - 2024-07-17: 发布v1.0.3版本 修复已知bug 增加开机自启 增加删除frp版本 From 5c01c0442c82369b175568adc6fef503d3756083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 00:18:33 +0800 Subject: [PATCH 18/29] =?UTF-8?q?:fire:=20=E6=9A=82=E6=97=B6=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/update.ts | 5 +++-- electron/main/index.ts | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/electron/api/update.ts b/electron/api/update.ts index c2231ca..3064fcd 100644 --- a/electron/api/update.ts +++ b/electron/api/update.ts @@ -1,12 +1,13 @@ -import {app, dialog, autoUpdater } from "electron"; +import {app, dialog, autoUpdater} from "electron"; const log = require('electron-log'); export const initUpdaterApi = () => { + log.info("自动更新") const server = 'https://hazel-jplav4y84-uiluck.vercel.app' const url = `${server}/update/${process.platform}/${app.getVersion()}` - autoUpdater.setFeedURL({ url }) + autoUpdater.setFeedURL({url}) setInterval(() => { }, 60000) autoUpdater.checkForUpdates() diff --git a/electron/main/index.ts b/electron/main/index.ts index a71df8f..e33c4ae 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -9,7 +9,6 @@ import {initLoggerApi} from "../api/logger"; import {initFileApi} from "../api/file"; import {getConfig} from "../storage/config"; import log from "electron-log"; -import {initUpdaterApi} from "../api/update"; // The built directory structure // // ├─┬ dist-electron From bda469e14b2f115867cfdaa0318bbba2ec79dd9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 00:33:31 +0800 Subject: [PATCH 19/29] =?UTF-8?q?:rocket:=20=E6=89=93=E5=8C=85=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron-builder.json5 | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/electron-builder.json5 b/electron-builder.json5 index 69c047a..e2d99e4 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -49,9 +49,10 @@ "x64", "arm64", "universal" - ] + ], } ], + "artifactName": "${productName}-Mac-${arch}-${version}.${ext}", category: "public.app-category.utilities" }, "win": { @@ -63,7 +64,7 @@ "ia32" ] }, -// { + // { // "target": "appx", // "arch": [ // "x64", @@ -85,16 +86,17 @@ ] } ], + "artifactName": "${productName}-Windows-${arch}-${version}.${ext}" }, "nsis": { - "artifactName": "${productName}-Setup-${version}.${ext}", + "artifactName": "${productName}-Windows-${arch}-${version}-Setup.${ext}", "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, "deleteAppDataOnUninstall": false }, "portable": { - "artifactName": "${productName}-${version}-${arch}.${ext}" + "artifactName": "${productName}-Windows-${arch}-${version}.${ext}" }, "linux": { "target": [ @@ -103,7 +105,7 @@ "arch": [ "x64", "arm64", -// "armv7l" + // "armv7l" ] }, { @@ -111,7 +113,7 @@ "arch": [ "x64", "arm64", -// "armv7l" + // "armv7l" ] }, { @@ -120,14 +122,15 @@ "x64" ] }, -// { -// "target": "snap", -// "arch": [ -// "x64" -// ] -// } + // { + // "target": "snap", + // "arch": [ + // "x64" + // ] + // } ], "category": "Network", + "artifactName": "${productName}-Linux-${arch}-${version}.${ext}" }, "publish": [ { From 08387c93646fe775cc87ff5dcbfa41d80b8065c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 00:36:59 +0800 Subject: [PATCH 20/29] =?UTF-8?q?:rocket:=20=E6=89=93=E5=8C=85=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 9748db5..3b2ac6c 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "scripts": { "dev": "vite", "build": "vue-tsc --noEmit && vite build", - "build:electron": "npm run build && electron-builder", + "build:electron": "npm run build && electron-builder --mac --win --linux", "build:electron:mac": "npm run build && electron-builder --mac", "build:electron:win": "npm run build && electron-builder --win", "build:electron:linux": "npm run build && electron-builder --linux", @@ -32,7 +32,6 @@ "release:mac": "npm run build && electron-builder --mac -p onTagOrDraft", "release:win": "npm run build && electron-builder --win -p onTagOrDraft", "release:linux": "npm run build && electron-builder --linux -p onTagOrDraft", - "build:electron:all": "npm run build:electron:win && npm run build:electron:mac && npm run build:electron:linux", "preview": "vite preview", "electron:generate-icons": "electron-icon-builder --input=./public/logo.png --output=build --flatten" }, From 14346ca6d95d86e6d941b071aed6b5a29b876711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 09:32:15 +0800 Subject: [PATCH 21/29] =?UTF-8?q?:rocket:=20=E6=89=93=E5=8C=85=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron-builder.json5 | 1 + 1 file changed, 1 insertion(+) diff --git a/electron-builder.json5 b/electron-builder.json5 index e2d99e4..a2a742d 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -128,6 +128,7 @@ // "x64" // ] // } + ], "category": "Network", "artifactName": "${productName}-Linux-${arch}-${version}.${ext}" From b0cc438d687d12cd0aaef7a82e7a760dc6d8a74c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 09:52:00 +0800 Subject: [PATCH 22/29] =?UTF-8?q?:memo:=20=E5=B8=B8=E8=A7=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +++++++++---- package.json | 8 ++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 41953e3..8e5646f 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,11 @@ - [ ] 支持配的导出导入 - [ ] 优化配置 +## 常见问题 + +### Mac提示已损坏 +执行命令:`sudo xattr -cr Frpc-Desktop.app` + ## 里程碑 - 2024-08-09: 发布v1.0.6版本 - 2024-08-06: 发布v1.0.5版本 @@ -48,13 +53,13 @@ ## 演示 -![connect server](https://github.com/luckjiawei/frpc-desktop/blob/main/demo/conn.png?raw=true) +![connect server](https://github.com/luckjiawei/frpc-desktop/blob/main/screenshots/conn.png?raw=true) -![proxys manager](https://github.com/luckjiawei/frpc-desktop/blob/main/demo/proxys.png?raw=true) +![proxys manager](https://github.com/luckjiawei/frpc-desktop/blob/main/screenshots/proxys.png?raw=true) -![frp download](https://github.com/luckjiawei/frpc-desktop/blob/main/demo/versions.png?raw=true) +![frp download](https://github.com/luckjiawei/frpc-desktop/blob/main/screenshots/versions.png?raw=true) -![log](https://github.com/luckjiawei/frpc-desktop/blob/main/demo/log.png?raw=true) +![log](https://github.com/luckjiawei/frpc-desktop/blob/main/screenshots/log.png?raw=true) ## License diff --git a/package.json b/package.json index 3b2ac6c..5b4b2c1 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ "build:electron:mac": "npm run build && electron-builder --mac", "build:electron:win": "npm run build && electron-builder --win", "build:electron:linux": "npm run build && electron-builder --linux", - "release": "npm run build && electron-builder --mac --win --linux -p onTagOrDraft", - "release:mac": "npm run build && electron-builder --mac -p onTagOrDraft", - "release:win": "npm run build && electron-builder --win -p onTagOrDraft", - "release:linux": "npm run build && electron-builder --linux -p onTagOrDraft", + "release": "npm run build && electron-builder --mac --win --linux -p always", + "release:mac": "npm run build && electron-builder --mac -p always", + "release:win": "npm run build && electron-builder --win -p always", + "release:linux": "npm run build && electron-builder --linux -p always", "preview": "vite preview", "electron:generate-icons": "electron-icon-builder --input=./public/logo.png --output=build --flatten" }, From f8aa1180713514f4ba6427e12869e10a473e7a4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 13:08:45 +0800 Subject: [PATCH 23/29] =?UTF-8?q?:sparkles:=20=E5=85=88=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron-builder.json5 | 10 ++-- electron/api/update.ts | 109 ++++++++++++++++++++++++++--------------- electron/main/index.ts | 1 + package.json | 10 ++-- 4 files changed, 80 insertions(+), 50 deletions(-) diff --git a/electron-builder.json5 b/electron-builder.json5 index a2a742d..a7bf322 100644 --- a/electron-builder.json5 +++ b/electron-builder.json5 @@ -52,7 +52,7 @@ ], } ], - "artifactName": "${productName}-Mac-${arch}-${version}.${ext}", +// "artifactName": "${productName}-mac-${arch}-${version}.${ext}", category: "public.app-category.utilities" }, "win": { @@ -86,17 +86,17 @@ ] } ], - "artifactName": "${productName}-Windows-${arch}-${version}.${ext}" +// "artifactName": "${productName}-win-${arch}-${version}.${ext}" }, "nsis": { - "artifactName": "${productName}-Windows-${arch}-${version}-Setup.${ext}", +// "artifactName": "${productName}-win-${arch}-${version}-Setup.${ext}", "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, "deleteAppDataOnUninstall": false }, "portable": { - "artifactName": "${productName}-Windows-${arch}-${version}.${ext}" +// "artifactName": "${productName}-win-${arch}-${version}.${ext}" }, "linux": { "target": [ @@ -131,7 +131,7 @@ ], "category": "Network", - "artifactName": "${productName}-Linux-${arch}-${version}.${ext}" +// "artifactName": "${productName}-Linux-${arch}-${version}.${ext}" }, "publish": [ { diff --git a/electron/api/update.ts b/electron/api/update.ts index 3064fcd..2526713 100644 --- a/electron/api/update.ts +++ b/electron/api/update.ts @@ -4,49 +4,78 @@ const log = require('electron-log'); export const initUpdaterApi = () => { - log.info("自动更新") - const server = 'https://hazel-jplav4y84-uiluck.vercel.app' - const url = `${server}/update/${process.platform}/${app.getVersion()}` - autoUpdater.setFeedURL({url}) - setInterval(() => { - }, 60000) - autoUpdater.checkForUpdates() - // autoUpdater.on('checking-for-update', () => { - // log.info("正在检查更新") - // }) - // - // autoUpdater.on('update-available', () => { - // log.info("有可用更新") - // }) - // - // autoUpdater.on('update-not-available', () => { - // log.info('没有可用的更新') - // }) - // - // autoUpdater.on('error', (err) => { - // log.error(`更新错误:${err.message}`) - // - // }) - // + const server = 'https://hazel-git-master-uiluck.vercel.app' + let packageName = null + const platform = process.platform; + const arch = process.arch; + switch (platform) { + case "darwin": + if (arch == "arm64") { + packageName = "dmg_arm64"; + } else { + packageName = "dmg"; + } + break; + case "win32": + packageName = "exe"; + break; + case "linux": + packageName = "AppImage"; + if (arch == "arm64") { + packageName = "AppImage_arm64"; + } else { + packageName = "AppImage"; + } + break; + } + const url = `${server}/update/${packageName}/${app.getVersion()}` + log.info(`开启自动更新 ${url}`); + autoUpdater.setFeedURL({url}) + + autoUpdater.on('checking-for-update', () => { + log.info("正在检查更新") + }) + + autoUpdater.on('update-available', () => { + log.info("有可用更新") + }) + + autoUpdater.on('update-not-available', () => { + log.info('没有可用的更新') + }) + + autoUpdater.on('error', (err) => { + log.error(`更新错误:${err.message}`) + + }) + // autoUpdater.on('download-progress', (progressObj) => { // log.debug(`下载进度 ${progressObj.percent}%`) // }) - // - // autoUpdater.on('update-downloaded', () => { - // console.log('update-downloaded') - // - // dialog.showMessageBox({ - // type: 'info', - // title: '应用更新', - // message: '发现新版本,是否更新?', - // buttons: ['是', '否'] - // }).then((buttonIndex) => { - // if (buttonIndex.response == 0) { //选择是,则退出程序,安装新版本 - // autoUpdater.quitAndInstall() - // app.quit() - // } - // }) - // }) + + autoUpdater.on('update-downloaded', () => { + console.log('update-downloaded') + + dialog.showMessageBox({ + type: 'info', + title: '应用更新', + message: '发现新版本,是否更新?', + buttons: ['是', '否'] + }).then((buttonIndex) => { + if (buttonIndex.response == 0) { //选择是,则退出程序,安装新版本 + autoUpdater.quitAndInstall() + app.quit() + } + }) + }) + + // setInterval(() => { + // log.initialize("定时检查更新") + // // autoUpdater.checkForUpdates(); + // }, 60000) + autoUpdater.checkForUpdates(); + log.info("手动检查更新一次") + } diff --git a/electron/main/index.ts b/electron/main/index.ts index e33c4ae..dba6981 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -7,6 +7,7 @@ import {initProxyApi} from "../api/proxy"; import {initFrpcApi, startFrpWorkerProcess, stopFrpcProcess} from "../api/frpc"; import {initLoggerApi} from "../api/logger"; import {initFileApi} from "../api/file"; +import {initUpdaterApi} from "../api/update"; import {getConfig} from "../storage/config"; import log from "electron-log"; // The built directory structure diff --git a/package.json b/package.json index 5b4b2c1..bc9f584 100644 --- a/package.json +++ b/package.json @@ -41,17 +41,18 @@ "@vitejs/plugin-vue": "^4.3.3", "@vue/eslint-config-prettier": "^7.1.0", "@vueuse/core": "^9.13.0", - "eslint": "^7.28.0", "autoprefixer": "^10.4.15", "cssnano": "^6.0.1", "electron": "^26.6.10", "electron-builder": "^24.13.3", "electron-builder-squirrel-windows": "^24.13.3", "element-plus": "^2.4.2", + "eslint": "^7.28.0", "eslint-plugin-prettier": "^4.2.1", "moment": "^2.29.4", "nedb": "^1.8.0", "node-cmd": "^5.0.0", + "postcss": "^8.4.31", "prettier": "^2.8.8", "sass": "^1.66.1", "tailwindcss": "^3.3.3", @@ -63,16 +64,15 @@ "vue": "^3.3.4", "vue-router": "^4.2.4", "vue-tsc": "^2.0.22", - "vue-types": "^5.1.1", - "postcss": "^8.4.31" + "vue-types": "^5.1.1" }, "dependencies": { "adm-zip": "^0.5.14", "animate.css": "^4.1.1", "electron-dl": "^3.5.1", "electron-log": "^5.1.7", + "isbinaryfile": "4.0.10", "tar": "^6.2.0", - "unused-filename": "^4.0.1", - "isbinaryfile": "4.0.10" + "unused-filename": "^4.0.1" } } From 521fce52bf4d36d8ce025a31dd8a4ebdb0cc7c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 13:09:34 +0800 Subject: [PATCH 24/29] =?UTF-8?q?:fire:=20=E5=85=88=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/main/index.ts b/electron/main/index.ts index dba6981..cd361c9 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -118,7 +118,7 @@ async function createWindow() { } export const createTray = () => { - log.info(`当前环境 platform:${process.platform} arch:${process.arch} appData:${app.getPath("userData")}`) + log.info(`当前环境 platform:${process.platform} arch:${process.arch} appData:${app.getPath("userData")} version:${app.getVersion()}`) let menu: Array<(MenuItemConstructorOptions) | (MenuItem)> = [ { label: '显示主窗口', click: function () { From 8a5d76982fc002c4a95ff6aae2c6f68f7f312220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Fri, 9 Aug 2024 14:08:24 +0800 Subject: [PATCH 25/29] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/update.ts | 25 ++++++++++++++----------- electron/main/index.ts | 25 ++++++++----------------- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/electron/api/update.ts b/electron/api/update.ts index 2526713..9d4554d 100644 --- a/electron/api/update.ts +++ b/electron/api/update.ts @@ -1,10 +1,15 @@ -import {app, dialog, autoUpdater} from "electron"; +import {app, dialog, autoUpdater, BrowserWindow} from "electron"; const log = require('electron-log'); -export const initUpdaterApi = () => { - +export const initUpdaterApi = (win: BrowserWindow) => { + //更新测试打开 + Object.defineProperty(app, 'isPackaged', { + get() { + return true; + } + }); const server = 'https://hazel-git-master-uiluck.vercel.app' let packageName = null const platform = process.platform; @@ -12,9 +17,9 @@ export const initUpdaterApi = () => { switch (platform) { case "darwin": if (arch == "arm64") { - packageName = "dmg_arm64"; + packageName = "darwin_arm64"; } else { - packageName = "dmg"; + packageName = "darwin"; } break; case "win32": @@ -31,18 +36,19 @@ export const initUpdaterApi = () => { } const url = `${server}/update/${packageName}/${app.getVersion()}` log.info(`开启自动更新 ${url}`); - autoUpdater.setFeedURL({url}) + autoUpdater.setFeedURL({url: url}) autoUpdater.on('checking-for-update', () => { log.info("正在检查更新") }) - autoUpdater.on('update-available', () => { - log.info("有可用更新") + autoUpdater.on('update-available', (event, info) => { + log.info(`发现新版本`) }) autoUpdater.on('update-not-available', () => { log.info('没有可用的更新') + }) autoUpdater.on('error', (err) => { @@ -50,9 +56,6 @@ export const initUpdaterApi = () => { }) - // autoUpdater.on('download-progress', (progressObj) => { - // log.debug(`下载进度 ${progressObj.percent}%`) - // }) autoUpdater.on('update-downloaded', () => { console.log('update-downloaded') diff --git a/electron/main/index.ts b/electron/main/index.ts index cd361c9..88a9c9f 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -161,25 +161,16 @@ export const createTray = () => { } app.whenReady().then(() => { - initGitHubApi(); - initConfigApi(); - initProxyApi(); - initFrpcApi(); - initLoggerApi(); - initFileApi(); - // initUpdaterApi(); - - - //更新测试打开 - Object.defineProperty(app, 'isPackaged', { - get() { - return true; - } - }); - - createWindow().then(r => { createTray() + // 初始化各个API + initGitHubApi(); + initConfigApi(); + initProxyApi(); + initFrpcApi(); + initLoggerApi(); + initFileApi(); + // initUpdaterApi(win); }) }); From abd25546684e4732421056ae91d7c94491ed8738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Sun, 11 Aug 2024 11:18:26 +0800 Subject: [PATCH 26/29] =?UTF-8?q?:sparkles:=20=E6=94=AF=E6=8C=81=E6=97=A0?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/config/index.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/config/index.vue b/src/views/config/index.vue index 5124624..f666d04 100644 --- a/src/views/config/index.vue +++ b/src/views/config/index.vue @@ -300,6 +300,7 @@ onUnmounted(() => { @change="handleAuthMethodChange" clearable > + From ef9475df4dc3bdb2acacb2f6e7205786b6227cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Sun, 11 Aug 2024 14:59:23 +0800 Subject: [PATCH 27/29] =?UTF-8?q?:sparkles:=20=E5=A2=9E=E5=8A=A0=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E5=BF=AB=E9=80=9F=E5=88=86?= =?UTF-8?q?=E4=BA=AB=E5=8A=9F=E8=83=BD=E3=80=81=E5=A2=9E=E5=8A=A0=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/frpc.ts | 14 +++ electron/storage/config.ts | 2 + src/views/config/index.vue | 217 ++++++++++++++++++++++++++++++++++++- 3 files changed, 228 insertions(+), 5 deletions(-) diff --git a/electron/api/frpc.ts b/electron/api/frpc.ts index e620f49..e61ecd9 100644 --- a/electron/api/frpc.ts +++ b/electron/api/frpc.ts @@ -72,6 +72,12 @@ ${config.authMethod === 'multiuser' ? ` user = "${config.user}" metadatas.token = "${config.metaToken}" ` : ""} +${config.transportHeartbeatInterval ? ` +transport.heartbeatInterval = ${config.transportHeartbeatInterval} +` : ""} +${config.transportHeartbeatTimeout ? ` +transport.heartbeatTimeout = ${config.transportHeartbeatTimeout} +` : ""} log.to = "frpc.log" @@ -135,6 +141,14 @@ ${config.authMethod === 'multiuser' ? ` user = ${config.user} meta_token = ${config.metaToken} ` : ""} + +${config.transportHeartbeatInterval ? ` +heartbeat_interval = ${config.transportHeartbeatInterval} +` : ""} +${config.transportHeartbeatTimeout ? ` +heartbeat_timeout = ${config.transportHeartbeatTimeout} +` : ""} + log_file = "frpc.log" log_level = ${config.logLevel} log_max_days = ${config.logMaxDays} diff --git a/electron/storage/config.ts b/electron/storage/config.ts index ca2e7bf..5c41b6c 100644 --- a/electron/storage/config.ts +++ b/electron/storage/config.ts @@ -28,6 +28,8 @@ export type Config = { systemStartupConnect: boolean; user: string; metaToken: string; + transportHeartbeatInterval: number; + transportHeartbeatTimeout: number; }; /** diff --git a/src/views/config/index.vue b/src/views/config/index.vue index f666d04..1b2399b 100644 --- a/src/views/config/index.vue +++ b/src/views/config/index.vue @@ -6,6 +6,7 @@ import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue"; import {useDebounceFn} from "@vueuse/core"; import {clone} from "@/utils/clone"; import {Icon} from "@iconify/vue"; +import {Base64} from "js-base64"; defineComponent({ name: "Config" @@ -30,6 +31,8 @@ type Config = { systemStartupConnect: boolean; user: string; metaToken: string; + transportHeartbeatInterval: number; + transportHeartbeatTimeout: number; }; type Version = { @@ -37,7 +40,18 @@ type Version = { name: string; } -const formData = ref({ +type ShareLinkConfig = { + serverAddr: string, + serverPort: number, + authMethod: string, + authToken: string, + transportHeartbeatInterval: number, + transportHeartbeatTimeout: number, + user: string, + metaToken: string, +} + +const defaultFormData = ref({ currentVersion: "", serverAddr: "", serverPort: 7000, @@ -55,9 +69,14 @@ const formData = ref({ systemSelfStart: false, systemStartupConnect: false, user: "", - metaToken: "" + metaToken: "", + transportHeartbeatInterval: 30, + transportHeartbeatTimeout: 90, }); + +const formData = ref(defaultFormData.value); + const loading = ref(1); const rules = reactive({ @@ -99,12 +118,27 @@ const rules = reactive({ ], systemSelfStart: [ {required: true, message: "请选择是否开机自启", trigger: "change"}, - ] + ], + transportHeartbeatInterval: [ + {required: true, message: "心跳间隔时间不能为空", trigger: "change"}, + ], + transportHeartbeatTimeout: [ + {required: true, message: "心跳超时时间不能为空", trigger: "change"}, + ], + }); const versions = ref>([]); +const copyServerConfigBase64 = ref(); +const pasteServerConfigBase64 = ref(); const formRef = ref(); + +const visibles = reactive({ + copyServerConfig: false, + pasteServerConfig: false, +}); + const handleSubmit = useDebounceFn(() => { if (!formRef.value) return; formRef.value.validate(valid => { @@ -138,6 +172,13 @@ onMounted(() => { const {err, data} = args; if (!err) { if (data) { + console.log('data', data) + if (!data.transportHeartbeatInterval) { + data.transportHeartbeatInterval = defaultFormData.value.transportHeartbeatInterval + } + if (!data.transportHeartbeatTimeout) { + data.transportHeartbeatTimeout = defaultFormData.value.transportHeartbeatTimeout + } formData.value = data; } } @@ -177,6 +218,78 @@ const handleSelectFile = (type: number, ext: string[]) => { }) } +/** + * 分享配置 + */ +const handleCopyServerConfig2Base64 = useDebounceFn(() => { + const shareConfig: ShareLinkConfig = { + serverAddr: formData.value.serverAddr, + serverPort: formData.value.serverPort, + authMethod: formData.value.authMethod, + authToken: formData.value.authToken, + transportHeartbeatInterval: formData.value.transportHeartbeatInterval, + transportHeartbeatTimeout: formData.value.transportHeartbeatTimeout, + user: formData.value.user, + metaToken: formData.value.metaToken, + }; + const base64str = Base64.encode( + JSON.stringify(shareConfig) + ) + copyServerConfigBase64.value = base64str; + visibles.copyServerConfig = true; + +}, 300); + +/** + * 导入配置 + */ +const handlePasteServerConfig4Base64 = useDebounceFn(() => { + visibles.pasteServerConfig = true; +}, 300); + +const handlePasteServerConfigBase64 = useDebounceFn(() => { + const plain = Base64.decode(pasteServerConfigBase64.value) + console.log('plain', plain) + let serverConfig: ShareLinkConfig = null; + try { + serverConfig = JSON.parse(plain) + } catch { + ElMessage({ + type: "warning", + message: "链接不正确 请输入正确的链接" + }); + return; + } + + if (!serverConfig && !serverConfig.serverAddr) { + ElMessage({ + type: "warning", + message: "链接不正确 请输入正确的链接" + }); + return; + } + if (!serverConfig && !serverConfig.serverPort) { + ElMessage({ + type: "warning", + message: "链接不正确 请输入正确的链接" + }); + return; + } + formData.value.serverAddr = serverConfig.serverAddr + formData.value.serverPort = serverConfig.serverPort + formData.value.authMethod = serverConfig.authMethod + formData.value.authToken = serverConfig.authToken + formData.value.transportHeartbeatInterval = serverConfig.transportHeartbeatInterval + formData.value.transportHeartbeatTimeout = serverConfig.transportHeartbeatTimeout + formData.value.user = serverConfig.user + formData.value.metaToken = serverConfig.metaToken + + handleSubmit(); + visibles.pasteServerConfig = false; + +}, 300) + + onUnmounted(() => { ipcRenderer.removeAllListeners("Config.getConfig.hook"); ipcRenderer.removeAllListeners("Config.saveConfig.hook"); @@ -236,7 +349,16 @@ onUnmounted(() => { -
服务器配置
+
+
服务器配置
+
+ + +
+
+
@@ -366,7 +488,7 @@ onUnmounted(() => { trigger="hover" > +
日志配置
@@ -622,6 +809,25 @@ onUnmounted(() => { + + + + + + + + + + + @@ -642,4 +848,5 @@ onUnmounted(() => { .button-input { width: calc(100% - 68px); } + From ff1b7fbb35c9dd33815f949232fe8b278e6ee17b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Sun, 11 Aug 2024 14:59:29 +0800 Subject: [PATCH 28/29] =?UTF-8?q?:sparkles:=20=E5=A2=9E=E5=8A=A0=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=85=8D=E7=BD=AE=E5=BF=AB=E9=80=9F=E5=88=86?= =?UTF-8?q?=E4=BA=AB=E5=8A=9F=E8=83=BD=E3=80=81=E5=A2=9E=E5=8A=A0=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index bc9f584..4cf9376 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "electron-dl": "^3.5.1", "electron-log": "^5.1.7", "isbinaryfile": "4.0.10", + "js-base64": "^3.7.7", "tar": "^6.2.0", "unused-filename": "^4.0.1" } From b2f7d8adb3a69fd0ad6b3ed7eac2a6b7d2b70b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=98=89=E4=BC=9F?= <8473136@qq.com> Date: Sun, 11 Aug 2024 15:12:45 +0800 Subject: [PATCH 29/29] =?UTF-8?q?:sparkles:=20=E5=A2=9E=E5=8A=A0=E5=AF=B9u?= =?UTF-8?q?dp=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/api/frpc.ts | 2 + src/views/proxy/index.vue | 182 ++++++++++++++++++++------------------ 2 files changed, 96 insertions(+), 88 deletions(-) diff --git a/electron/api/frpc.ts b/electron/api/frpc.ts index e61ecd9..99eae16 100644 --- a/electron/api/frpc.ts +++ b/electron/api/frpc.ts @@ -49,6 +49,7 @@ localPort = ${m.localPort} `; switch (m.type) { case "tcp": + case "udp": toml += `remotePort = ${m.remotePort}`; break; case "http": @@ -117,6 +118,7 @@ local_port = ${m.localPort} `; switch (m.type) { case "tcp": + case "udp": ini += `remote_port = ${m.remotePort}`; break; case "http": diff --git a/src/views/proxy/index.vue b/src/views/proxy/index.vue index 6b6abe2..35d24cf 100644 --- a/src/views/proxy/index.vue +++ b/src/views/proxy/index.vue @@ -1,10 +1,10 @@