Compare commits

...
8 Commits
Author SHA1 Message Date
黑先森 41f58f1df6 重大结构更新
+ 升级rust为1.8版本
+ 升级tauri为最新版,以及其他包升级
+ 现在构建分为window7和window7以上两种版本
+ 优化分享配置弹窗遮盖问题
+ 增加uninstall.exe(不会删除日志)
+ 增加windows.0.48.5.lib
+ 增加build.bat 内含windows7构建之前的操作
2025-01-16 16:53:51 +08:00
黑先森 0a17c269ea 这是一个测试分支,用于rust最新包更新与适配 2025-01-10 18:42:02 +08:00
黑先森 6fd3b999d7 修复安全漏洞 2025-01-09 10:33:42 +08:00
黑先森 3773e11b24 去除房间信息tooltip 2025-01-09 09:53:35 +08:00
黑先森 987541ab52 Merge branch 'dev_1.3.6_package_upgrade' 2025-01-08 15:04:57 +08:00
黑先森 d800a414c0 升级package,增强工具 防火墙类别,新增自定义防火墙策略界面开启按钮 2025-01-08 12:12:00 +08:00
黑先森 922ba3f1ea 优化主界面文字说明,高级选项排版和文字说明 2025-01-06 20:00:47 +08:00
黑先森 a5954744a1 更新readme 2025-01-03 17:28:15 +08:00
22 changed files with 1774 additions and 997 deletions
+1 -1
View File
@@ -1 +1 @@
18.18.2 20.18.1
+3
View File
@@ -56,6 +56,9 @@ Releases [https://github.com/EasyTier/EasytierGame/releases](https://github.c
- 1.2.6重写 自建服务器功能,可以自行搭建服务器,但是需要一些网络知识,具体可以查看文档[自建服务器](https://www.easytier.top/guide/network/host-public-server.html),也可查看帮助.txt - 1.2.6重写 自建服务器功能,可以自行搭建服务器,但是需要一些网络知识,具体可以查看文档[自建服务器](https://www.easytier.top/guide/network/host-public-server.html),也可查看帮助.txt
![game-step13](/assets/game-step13.png) ![game-step13](/assets/game-step13.png)
- 1.3.5 增强工具 新增了forceBindIP
![game-step14](/assets/game-step14.png)
## 特性 ## 特性
- 基于easytier组网工具开发,界面清晰简单 - 基于easytier组网工具开发,界面清晰简单
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

+11
View File
@@ -0,0 +1,11 @@
rustup default nightly
@echo 使用rust nightly构建支持win7的版本,请先将根目录的windows.0.48.5 放入以下目录
@echo C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\你自己的版本\lib\x64
@echo C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\你自己的版本\lib\x86
@echo C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\你自己的版本\atlmfc\lib\x64
@echo C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\你自己的版本\atlmfc\lib\x86
pnpm tauri build -- -Z build-std --target x86_64-win7-windows-msvc
rustup default stable
pnpm tauri build
pnpm run release
pnpm run release-win7
+14 -15
View File
@@ -3,41 +3,40 @@
"private": true, "private": true,
"author": "leizi97", "author": "leizi97",
"description": "A simple network initiator based on Easytier", "description": "A simple network initiator based on Easytier",
"version": "1.3.5", "version": "1.3.7",
"scripts": { "scripts": {
"dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0", "dev": "nuxt dev --dotenv env/.env.dev --host 0.0.0.0",
"build": "nuxt generate --dotenv env/.env.prod", "build": "nuxt generate --dotenv env/.env.prod",
"release": "node zip.js" "release": "node zip.js",
"release-win7": "node zip.js win7"
}, },
"devDependencies": { "devDependencies": {
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
"@element-plus/nuxt": "^1.1.1", "@element-plus/nuxt": "^1.1.1",
"@nuxtjs/tailwindcss": "^6.12.2", "@nuxtjs/tailwindcss": "6.13.1",
"@pinia/nuxt": "0.9.0", "@pinia/nuxt": "0.9.0",
"@tauri-apps/api": "^2.1.1", "@tauri-apps/api": "^2.2.0",
"@tauri-apps/cli": "^2.1.0", "@tauri-apps/cli": "2.2.4",
"@tauri-apps/plugin-cli": "^2.2.0", "@tauri-apps/plugin-cli": "^2.2.0",
"@tauri-apps/plugin-clipboard-manager": "^2.0.0", "@tauri-apps/plugin-clipboard-manager": "2.2.0",
"@tauri-apps/plugin-fs": "^2.2.0", "@tauri-apps/plugin-fs": "^2.2.0",
"@tauri-apps/plugin-log": "^2.2.0", "@tauri-apps/plugin-log": "^2.2.0",
"@tauri-apps/plugin-shell": "^2.2.0", "@tauri-apps/plugin-shell": "^2.2.0",
"@tauri-apps/plugin-window-state": "^2.2.0", "@tauri-apps/plugin-window-state": "^2.2.0",
"@tauri-apps/plugin-dialog": "2.2.0",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@vitejs/plugin-vue-jsx": "^4.1.1", "@vitejs/plugin-vue-jsx": "^4.1.1",
"@vueuse/core": "12.2.0", "@vueuse/core": "12.4.0",
"archiver": "^7.0.1", "archiver": "^7.0.1",
"element-plus": "^2.9.1", "element-plus": "2.9.3",
"less": "^4.2.0", "less": "4.2.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"nuxt": "3.15.0", "nuxt": "3.15.2",
"pinia": "^2.3.0", "pinia": "^2.3.0",
"pinia-plugin-persistedstate": "^4.2.0", "pinia-plugin-persistedstate": "^4.2.0",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"prettier": "^3.4.1", "prettier": "3.4.2",
"prettier-plugin-tailwindcss": "^0.6.9", "prettier-plugin-tailwindcss": "0.6.10",
"vue-clipboard3": "^2.0.0" "vue-clipboard3": "^2.0.0"
},
"dependencies": {
"@tauri-apps/plugin-dialog": "~2"
} }
} }
+33 -28
View File
@@ -1,9 +1,8 @@
<template> <template>
<div class="flex h-full flex-col items-start overflow-auto px-[25px]"> <div class="flex h-full flex-col items-start overflow-auto px-[25px]">
<div><ElCheckbox v-model="mainStore.config.disableIpv6">不使用IPv6</ElCheckbox></div>
<div class="flex flex-nowrap items-center gap-[15px]"> <div class="flex flex-nowrap items-center gap-[15px]">
<div class="flex flex-nowrap items-center gap-[5px]"> <div class="flex flex-nowrap items-center gap-[5px]">
<ElCheckbox v-model="mainStore.config.enableCustomProtocol">自定义联机时使用的默认协议</ElCheckbox> <ElCheckbox v-model="mainStore.config.enableCustomProtocol">默认直连(p2p)使用的协议</ElCheckbox>
<ElTooltip content="如果没有支持该协议的节点地址,程序会自动处理,请放心使用"> <ElTooltip content="如果没有支持该协议的节点地址,程序会自动处理,请放心使用">
<ElIcon><QuestionFilled /></ElIcon> <ElIcon><QuestionFilled /></ElIcon>
</ElTooltip> </ElTooltip>
@@ -24,29 +23,8 @@
</ElSelect> </ElSelect>
</div> </div>
</div> </div>
<div class="flex flex-nowrap items-center gap-[15px]"> <div>
<ElCheckbox v-model="mainStore.config.saveErrorLog">输出日志到本地</ElCheckbox> <ElCheckbox v-model="mainStore.config.relayAllPeerrpc">帮助对等节点建立直连(p2p)通信</ElCheckbox>
<div class="w-[140px]">
<ElSelect
size="small"
v-model="mainStore.config.logLevel"
placeholder="请选择日志等级"
class="ml-[5px]"
>
<ElOption
v-for="item in data"
:key="item"
:label="`level - ${item}`"
:value="item"
></ElOption>
</ElSelect>
</div>
<ElButton
@click="openLogDir"
size="small"
>
打开日志目录
</ElButton>
</div> </div>
<div><ElCheckbox v-model="mainStore.config.connectAfterStart">软件启动后自动"启动联机"(搭配开机自启无感联机)</ElCheckbox></div> <div><ElCheckbox v-model="mainStore.config.connectAfterStart">软件启动后自动"启动联机"(搭配开机自启无感联机)</ElCheckbox></div>
<div class="flex flex-nowrap items-center gap-[15px]"> <div class="flex flex-nowrap items-center gap-[15px]">
@@ -59,6 +37,13 @@
</ElButton> </ElButton>
</div> </div>
<div><ElCheckbox v-model="mainStore.config.enablePreventSleep">防止系统休眠(比如:屏幕会一直亮着)</ElCheckbox></div> <div><ElCheckbox v-model="mainStore.config.enablePreventSleep">防止系统休眠(比如:屏幕会一直亮着)</ElCheckbox></div>
<div class="flex flex-nowrap items-center gap-[5px]">
<ElCheckbox v-model="mainStore.config.latencyfirst">延迟优先模式将尝试使用最低延迟路径转发流量</ElCheckbox>
<ElTooltip content="视网络质量进行选择,可能会出现中转与直连(p2p)来回切换的情况">
<ElIcon><QuestionFilled /></ElIcon>
</ElTooltip>
</div>
<div><ElCheckbox v-model="mainStore.config.disableIpv6">不使用IPv6</ElCheckbox></div>
<ElDivider /> <ElDivider />
<div class="flex items-center gap-[10px]"> <div class="flex items-center gap-[10px]">
<ElCheckbox v-model="mainStore.config.disbleListenner">不监听任何端口只连接到对等节点</ElCheckbox> <ElCheckbox v-model="mainStore.config.disbleListenner">不监听任何端口只连接到对等节点</ElCheckbox>
@@ -210,10 +195,30 @@
<ElDivider /> <ElDivider />
<div><ElCheckbox v-model="mainStore.config.useSmoltcp">为子网代理启用smoltcp堆栈</ElCheckbox></div> <div><ElCheckbox v-model="mainStore.config.useSmoltcp">为子网代理启用smoltcp堆栈</ElCheckbox></div>
<div><ElCheckbox v-model="mainStore.config.latencyfirst">延迟优先模式,将尝试使用最低延迟路径转发流量</ElCheckbox></div>
<div><ElCheckbox v-model="mainStore.config.disableUdpHolePunching">禁用UDP打洞功能</ElCheckbox></div> <div><ElCheckbox v-model="mainStore.config.disableUdpHolePunching">禁用UDP打洞功能</ElCheckbox></div>
<div> <div class="flex flex-nowrap items-center gap-[15px]">
<ElCheckbox v-model="mainStore.config.relayAllPeerrpc">转发所有对等节点的RPC数据包,即使对等节点不在转发网络白名单内</ElCheckbox> <ElCheckbox v-model="mainStore.config.saveErrorLog">输出日志到本地</ElCheckbox>
<div class="w-[140px]">
<ElSelect
size="small"
v-model="mainStore.config.logLevel"
placeholder="请选择日志等级"
class="ml-[5px]"
>
<ElOption
v-for="item in data"
:key="item"
:label="`level - ${item}`"
:value="item"
></ElOption>
</ElSelect>
</div>
<ElButton
@click="openLogDir"
size="small"
>
打开日志目录
</ElButton>
</div> </div>
</div> </div>
</template> </template>
+33 -24
View File
@@ -11,7 +11,12 @@
> >
<template #label> <template #label>
<div class="flex flex-nowrap items-center gap-[0_5px]"> <div class="flex flex-nowrap items-center gap-[0_5px]">
<div>服务器</div> <div class="flex flex-nowrap items-center gap-[5px]">
<div>服务器</div>
<ElTooltip content="服务器是什么协议,中转就是什么协议">
<ElIcon><QuestionFilled /></ElIcon>
</ElTooltip>
</div>
<span>-</span> <span>-</span>
<ElTag <ElTag
effect="dark" effect="dark"
@@ -29,7 +34,7 @@
v-else v-else
class="flex-1 truncate" class="flex-1 truncate"
> >
<ElTooltip :content="data.coreVersion"> <ElTooltip :content="`内核版本:${data.coreVersion}(不是软件的版本)`">
<ElTag type="info"> <ElTag type="info">
{{ data.coreVersion }} {{ data.coreVersion }}
</ElTag> </ElTag>
@@ -121,10 +126,10 @@
</ElFormItem> </ElFormItem>
<div class="flex flex-wrap items-center gap-[0_10px]"> <div class="flex flex-wrap items-center gap-[0_10px]">
<div class="flex-1"> <div class="flex-1">
<ElFormItem label="网络名"> <ElFormItem label="房间名">
<template #label> <template #label>
<div class="flex items-center"> <div class="flex items-center">
网络 房间
<ElTooltip content="对应命令行参数 --network-name"> <ElTooltip content="对应命令行参数 --network-name">
<ElIcon><QuestionFilled /></ElIcon> <ElIcon><QuestionFilled /></ElIcon>
</ElTooltip> </ElTooltip>
@@ -132,16 +137,16 @@
</template> </template>
<ElInput <ElInput
maxlength="100" maxlength="100"
placeholder="请输入网络名" placeholder="请输入房间名"
v-model="config.networkName" v-model="config.networkName"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem>
</div> </div>
<div class="flex-1"> <div class="flex-1">
<ElFormItem label="网络密码"> <ElFormItem label="房间密码">
<template #label> <template #label>
<div class="flex items-center"> <div class="flex items-center">
网络密码 房间密码
<ElTooltip content="对应命令行参数 --network-secret"> <ElTooltip content="对应命令行参数 --network-secret">
<ElIcon><QuestionFilled /></ElIcon> <ElIcon><QuestionFilled /></ElIcon>
</ElTooltip> </ElTooltip>
@@ -150,7 +155,7 @@
<ElInput <ElInput
show-password show-password
maxlength="100" maxlength="100"
placeholder="请输入网络密码" placeholder="请输入房间密码"
v-model="config.networkPassword" v-model="config.networkPassword"
type="password" type="password"
></ElInput> ></ElInput>
@@ -158,10 +163,10 @@
</div> </div>
</div> </div>
<div class="flex gap-[0_10px]"> <div class="flex gap-[0_10px]">
<ElFormItem label="主机名"> <ElFormItem label="成员名">
<template #label> <template #label>
<div class="flex items-center"> <div class="flex items-center">
主机 成员
<ElTooltip content="对应命令行参数 --hostname"> <ElTooltip content="对应命令行参数 --hostname">
<ElIcon><QuestionFilled /></ElIcon> <ElIcon><QuestionFilled /></ElIcon>
</ElTooltip> </ElTooltip>
@@ -269,18 +274,18 @@
plain plain
></ElButton> ></ElButton>
</ElTooltip> </ElTooltip>
<ElTooltip <!-- <ElTooltip
placement="left" placement="left"
content="成员" content="房间信息"
> > -->
<ElButton <ElButton
class="!ml-[7px]"
@click="handleShowMemberDialog" @click="handleShowMemberDialog"
:icon="UserFilled"
plain plain
type="success" type="success"
size="small" size="small"
></ElButton> >房间信息</ElButton>
</ElTooltip> <!-- </ElTooltip> -->
</div> </div>
</div> </div>
<div class="ml-auto"> <div class="ml-auto">
@@ -548,7 +553,7 @@
import { getMatches } from "@tauri-apps/plugin-cli"; import { getMatches } from "@tauri-apps/plugin-cli";
import { initStartWinIpBroadcast } from "~/composables/netcard"; import { initStartWinIpBroadcast } from "~/composables/netcard";
import useMainStore from "@/stores/index"; import useMainStore from "@/stores/index";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox, ElTooltip } from "element-plus";
import { getCurrentWindow, type Window } from "@tauri-apps/api/window"; import { getCurrentWindow, type Window } from "@tauri-apps/api/window";
import { getAllWebviewWindows, WebviewWindow } from "@tauri-apps/api/webviewWindow"; import { getAllWebviewWindows, WebviewWindow } from "@tauri-apps/api/webviewWindow";
import etWindows from "@/composables/windows"; import etWindows from "@/composables/windows";
@@ -1049,7 +1054,6 @@
mountedShow(); // 不需要await mountedShow(); // 不需要await
closePrevent(); closePrevent();
data.hasNewVersion = await checkNewVersion(); data.hasNewVersion = await checkNewVersion();
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
@@ -1290,7 +1294,7 @@
disableUdpHolePunching, disableUdpHolePunching,
relayAllPeerrpc, relayAllPeerrpc,
compression, compression,
enablePreventSleep, enablePreventSleep
} = mainStore.config; } = mainStore.config;
const WT = btoa( const WT = btoa(
encodeURIComponent( encodeURIComponent(
@@ -1327,16 +1331,21 @@
) )
); );
await writeText(WT); await writeText(WT);
await ElConfirmPrimary(
`{action} 虚拟网IP,主机名,子网代理,为子网代理启用smoltcp堆栈,开机自启,软件启动自动联机,出口节点,不生成Tun网卡,错误日志相关配置`,
"提示",
{
confirmButtonText: "知道了",
showCancelButton: false,
action: "不会分享"
}
);
ElMessage.success("配置已复制"); ElMessage.success("配置已复制");
} catch (err) { } catch (err) {
console.error(err); console.error(err);
ElMessage.error("分享失败"); ElMessage.error("分享失败");
} }
ElConfirmPrimary(`{action} 虚拟网IP,主机名,子网代理,为子网代理启用smoltcp堆栈,开机自启,软件启动自动联机,出口节点,不生成Tun网卡,错误日志相关配置`, "提示", {
confirmButtonText: "知道了",
showCancelButton: false,
action: "不会分享"
});
} }
if (command === "import_config") { if (command === "import_config") {
importConfigData.data = ""; importConfigData.data = "";
+1 -1
View File
@@ -16,7 +16,7 @@
<ElTableColumn <ElTableColumn
sortable sortable
width="140" width="140"
label="主机名" label="成员名"
prop="hostname" prop="hostname"
> >
<template #default="{ row }"> <template #default="{ row }">
+11
View File
@@ -201,6 +201,13 @@
> >
一键关闭防火墙 一键关闭防火墙
</ElButton> </ElButton>
<ElButton
@click="handleCustomFireWall"
type="danger"
size="small"
>
自定义防火墙策略
</ElButton>
</div> </div>
<div class="mb-[10px]"> <div class="mb-[10px]">
<ElText class="!mx-[10px]">域防火墙</ElText> <ElText class="!mx-[10px]">域防火墙</ElText>
@@ -298,6 +305,10 @@
forceBindStart: false forceBindStart: false
}); });
const handleCustomFireWall = async () => {
await open("wf.msc");
}
const handleTabsChange = async (tabPaneName: TabPaneName) => { const handleTabsChange = async (tabPaneName: TabPaneName) => {
if (tabPaneName === "netcard") { if (tabPaneName === "netcard") {
// await initNetCardInfo(); // await initNetCardInfo();
+668 -415
View File
File diff suppressed because it is too large Load Diff
+954 -477
View File
File diff suppressed because it is too large Load Diff
+16 -15
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "easytier-game" name = "easytier-game"
version = "1.3.5" version = "1.3.7"
homepage = "https://github.com/EasyTier/EasyTier" homepage = "https://github.com/EasyTier/EasyTier"
repository = "https://github.com/EasyTier/EasytierGame" repository = "https://github.com/EasyTier/EasytierGame"
description = "A simple network initiator based on Easytier" description = "A simple network initiator based on Easytier"
@@ -8,7 +8,7 @@ authors = ["leizi97"]
license = "LICENSE" license = "LICENSE"
edition = "2021" edition = "2021"
rust-version = "1.77.2" # rust-version = "1.77.2"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -18,34 +18,35 @@ name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"] crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies] [build-dependencies]
tauri-build = { version = "2.0.3", features = [] } tauri-build = { version = "2.0.5", features = [] }
# prost-build = "0.13.2" # prost-build = "0.13.2"
[dependencies] [dependencies]
serde_json = "1.0" serde_json = "1.0.135"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0.217", features = ["derive"] }
log = "0.4" log = "0.4.25"
tauri = { version = "2.1.1", features = [ tauri = { version = "2.2.2", features = [
"tray-icon", "tray-icon",
"image-png", "image-png",
"image-ico", "image-ico",
"devtools"
] } ] }
tauri-plugin-log = "2.2.0" tauri-plugin-log = "2.2.0"
tauri-plugin-shell = "2.2.0" tauri-plugin-shell = "2.2.0"
reqwest = { version = "0.12", features = ["json"] } reqwest = { version = "0.12.12", features = ["json"] }
zip = "2.2" zip = "2.2.2"
sysinfo = '0.32.0' sysinfo = '0.33.1'
planif = { git = "https://github.com/mattrobineau/planif", tag = "1.0.1" } planif = { git = "https://github.com/mattrobineau/planif", tag = "1.0.1" }
whoami = "1.5.2" whoami = "1.5.2"
tauri-plugin-fs = "2.2.0" tauri-plugin-fs = "2.2.0"
tauri-plugin-clipboard-manager = "2.0.2" tauri-plugin-clipboard-manager = "2.2.0"
rand = "0.8.5" rand = "0.8.5"
tokio = { version = "1.41.1", features = ["process"] } tokio = { version = "1.43.0", features = ["process"] }
tauri-plugin-dialog = "2" tauri-plugin-dialog = "2.2.0"
# prost = "0.13" # prost = "0.13"
# prost-types = "0.13" # prost-types = "0.13"
hashbrown = "0.15.2"
[dependencies.windows] [dependencies.windows]
version = "0.58.0" version = "0.58.0"
@@ -53,5 +54,5 @@ features = ["Win32_System_TaskScheduler", "Win32_System_Power", "Win32_NetworkMa
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies] [target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
tauri-plugin-cli = "2.2.0" tauri-plugin-cli = "2.2.0"
tauri-plugin-single-instance = "2.2.0" tauri-plugin-single-instance = "2.2.1"
tauri-plugin-window-state = "2.2.0" tauri-plugin-window-state = "2.2.0"
+5
View File
@@ -74,6 +74,11 @@
"cmd": "explorer", "cmd": "explorer",
"name": "explorer" "name": "explorer"
}, },
{
"args": true,
"cmd": "wf.msc",
"name": "wf.msc"
},
{ {
"args": true, "args": true,
"cmd": "netsh", "cmd": "netsh",
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -754,7 +754,7 @@ pub fn run() {
// } // }
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
let _tray_menu = TrayIconBuilder::with_id("main") let _tray_menu = TrayIconBuilder::with_id("main")
.menu_on_left_click(false) .show_menu_on_left_click(false)
.on_tray_icon_event(|tray, event| { .on_tray_icon_event(|tray, event| {
if let TrayIconEvent::Click { if let TrayIconEvent::Click {
button: MouseButton::Left, button: MouseButton::Left,
+4 -3
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "easytier-game", "productName": "easytier-game",
"version": "1.3.5", "version": "1.3.7",
"identifier": "com.tauri.easytier-game", "identifier": "com.tauri.easytier-game",
"build": { "build": {
@@ -13,7 +13,7 @@
"app": { "app": {
"windows": [ "windows": [
{ {
"title": "easytier-game 1.3.5", "title": "easytier-game 1.3.7",
"label": "main", "label": "main",
"minWidth": 340, "minWidth": 340,
"width": 340, "width": 340,
@@ -63,7 +63,8 @@
"easytier/Packet.dll", "easytier/Packet.dll",
"easytier/wintun.dll", "easytier/wintun.dll",
"easytier/clear_local_data.bat", "easytier/clear_local_data.bat",
"帮助.txt" "帮助.txt",
"uninstall.exe"
], ],
"windows": { "windows": {
"webviewInstallMode": { "webviewInstallMode": {
Binary file not shown.
+10 -10
View File
@@ -14,28 +14,28 @@ const store = defineStore("main", {
connectAfterStart: false, //软件打开后,是否自动连接 connectAfterStart: false, //软件打开后,是否自动连接
disableIpv6: false, // 是否禁用IPv6 disableIpv6: false, // 是否禁用IPv6
port: "11010", // 监听端口号 port: "11010", // 监听端口号
enableCustomListener: false, // 是否自定义监听 enableCustomListener: true, // 是否自定义监听
customListenerV6Data: "", //自定义ipv6监听 customListenerV6Data: "udp://[::]:11010", //自定义ipv6监听
enableCustomListenerV6: false, // 是否自定义监听 enableCustomListenerV6: true, // 是否自定义监听
customListenerData: "", // 自定义监听地址 customListenerData: "tcp://0.0.0.0:11010\nudp://0.0.0.0:11010\ntcp://[::]:11010", // 自定义监听地址
disbleListenner: false, // 是否禁用监听 disbleListenner: false, // 是否禁用监听
disableEncryption: true, // 是否禁用加密 disableEncryption: false, // 是否禁用加密
multiThread: false, //使用多线程 multiThread: false, //使用多线程
enablExitNode: false, // 是否启用退出节点 enablExitNode: false, // 是否启用退出节点
noTun: false, // 是否使用TUN noTun: false, // 是否使用TUN
latencyfirst: false, // 是否优先延迟 latencyfirst: false, // 是否优先延迟
useSmoltcp: false, // 是否为子网代理启用smoltcp堆栈 useSmoltcp: false, // 是否为子网代理启用smoltcp堆栈
disableUdpHolePunching: false, // 是否禁用UDP打洞 disableUdpHolePunching: false, // 是否禁用UDP打洞
relayAllPeerrpc: false, // 是否启用所有对等RPC relayAllPeerrpc: true, // 是否启用所有对等RPC
disbleP2p: false, // 是否使用P2P disbleP2p: false, // 是否使用P2P
dhcp: true, // 是否使用DHCP dhcp: true, // 是否使用DHCP
saveErrorLog: true, // 是否保存错误日志 saveErrorLog: true, // 是否保存错误日志
logLevel: "error", //日志等级 logLevel: "error", //日志等级
devName: false, //自定义网卡名 devName: true, //自定义网卡名
devNameValue: "", //自定义网卡名 devNameValue: "etgame", //自定义网卡名
enableCustomProtocol: false, //自定义默认协议 enableCustomProtocol: true, //自定义默认协议
customProtocol: "tcp", //自定义默认协议 customProtocol: "tcp", //自定义默认协议
enableNetCardMetric: false, //启用网卡自定义跃点 enableNetCardMetric: true, //启用网卡自定义跃点
netCardMetricValue: 1, //自定义网卡跃点值 netCardMetricValue: 1, //自定义网卡跃点值
enablePreventSleep: false, //组织系统休眠 enablePreventSleep: false, //组织系统休眠
compression: "none", //加密算法 compression: "none", //加密算法
+3 -3
View File
@@ -1,8 +1,8 @@
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
/** @type {import('tailwindcss/plugin')} */ /** @type {import('tailwindcss/plugin')} */
import plugin from "tailwindcss/plugin"
const plugin = require("tailwindcss/plugin"); // const plugin = require("tailwindcss/plugin");
module.exports = { export default {
content: ["./components/**/*.{js,vue,ts}", "./layouts/**/*.vue", "./pages/**/*.vue", "./plugins/**/*.{js,ts}", "./app.vue", "./error.vue"], content: ["./components/**/*.{js,vue,ts}", "./layouts/**/*.vue", "./pages/**/*.vue", "./plugins/**/*.{js,ts}", "./app.vue", "./error.vue"],
theme: { theme: {
extend: {} extend: {}
Binary file not shown.
+6 -4
View File
@@ -1,14 +1,15 @@
/** /**
* 生成 release 发布包 zip 文件 * 生成 release 发布包 zip 文件
*/ */
const pkg = require("./package.json");
const releaseDir = "./src-tauri/target/release"; const isWin7 = process.argv[2] == 'win7';
const releaseDir = isWin7 ? "./src-tauri/target/x86_64-win7-windows-msvc/release" : "./src-tauri/target/release";
const fileName = isWin7 ? `easytier-game_windows7_fix_${pkg.version}.zip` : `easytier-game_windows_x86_64_${pkg.version}.zip`; // 发布包格式
const releaseDirEasytier = `${releaseDir}/easytier/`; const releaseDirEasytier = `${releaseDir}/easytier/`;
const releaseExe = `${releaseDir}/easytier-game.exe`; const releaseExe = `${releaseDir}/easytier-game.exe`;
const releaseHelp = `${releaseDir}/帮助.txt`; const releaseHelp = `${releaseDir}/帮助.txt`;
const releaseUninstall = `${releaseDir}/uninstall.exe`;
const deleteEasytierFiles = ["logs/", "guiLogs/", "cache/"]; const deleteEasytierFiles = ["logs/", "guiLogs/", "cache/"];
const pkg = require("./package.json");
const fileName = `easytier-game_windows_x86_64_${pkg.version}.zip`; // 发布包格式
const releaseZipDir = "./release"; const releaseZipDir = "./release";
const releaseZip = `${releaseZipDir}/${fileName}`; const releaseZip = `${releaseZipDir}/${fileName}`;
@@ -62,5 +63,6 @@ archive.pipe(output);
archive archive
.append(fs.createReadStream(path.join(__dirname, releaseExe)), { name: "easytier-game.exe" }) .append(fs.createReadStream(path.join(__dirname, releaseExe)), { name: "easytier-game.exe" })
.append(fs.createReadStream(path.join(__dirname, releaseHelp)), { name: "帮助.txt" }) .append(fs.createReadStream(path.join(__dirname, releaseHelp)), { name: "帮助.txt" })
.append(fs.createReadStream(path.join(__dirname, releaseUninstall)), { name: "uninstall.exe" })
.directory(path.join(__dirname, releaseDirEasytier), "easytier") .directory(path.join(__dirname, releaseDirEasytier), "easytier")
.finalize(); .finalize();