Compare commits

...

7 Commits
v3.0.3 ... main

Author SHA1 Message Date
chaos-zhu
4808f6e218 🆕 更新readme 2025-02-23 12:11:54 +08:00
chaos-zhu
9bd1cca518 🆕 切换到自建git代理 2025-02-18 22:08:41 +08:00
chaos-zhu
64d5db8c56 🐛 修复git代理host 2025-02-05 22:14:25 +08:00
chaos-zhu
37e1b891d3 🐛 移除任务 2024-12-30 21:56:52 +08:00
chaos-zhu
50ed2a8569 📝 更新描述 2024-12-24 22:49:53 +08:00
chaos-zhu
84b5f1beb6 🐛 修复通知测试按钮&自动重连机制 2024-12-24 22:40:14 +08:00
chaos-zhu
5f0e6e9ecc 📝 更新文档 2024-12-22 23:11:07 +08:00
11 changed files with 26 additions and 36 deletions

View File

@ -1,3 +1,11 @@
## [3.0.3](https://github.com/chaos-zhu/easynode/releases) (2024-12-22)
* 支持keyboard-interactive服务器验证(serv00验证通过)
* 支持TG Bot通知方式
* 添加web端Plus授权功能
* 修复一些UI问题
* 修复MFA2登录验证码为0开头无法输入的bug
## [3.0.2](https://github.com/chaos-zhu/easynode/releases) (2024-11-20)
* 修复添加实例错误禁用的bug

View File

@ -79,16 +79,16 @@ docker run -d -p 8082:8082 --restart=always -v /root/easynode/db:/easynode/app/d
```shell
# 使用默认端口22022安装
curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash
curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash
# 使用自定义端口安装, 例如54321
curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash -s -- 54321
curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash -s -- 54321
```
> 卸载
```shell
curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-uninstall.sh | bash
curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-uninstall.sh | bash
```
> 查看监控服务状态:`systemctl status easynode-client`

View File

@ -10,7 +10,7 @@ SERVER_NAME=easynode-client
FILE_PATH=/root/local/easynode-client
SERVICE_PATH=/etc/systemd/system
CLIENT_VERSION=client-2024-10-13 # 目前监控客户端版本发布需手动更改为最新版本号
SERVER_PROXY="https://ghp.ci/"
SERVER_PROXY="https://git.221022.xyz/"
if [ ! -z "$1" ]; then
clientPort=$1

View File

@ -1,12 +1,12 @@
[
{
"name": "easynode监控服务安装",
"command": "curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash",
"command": "curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash",
"description": "easynode-监控服务-安装脚本"
},
{
"name": "easynode监控服务卸载",
"command": "curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-uninstall.sh | bash",
"command": "curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-uninstall.sh | bash",
"description": "easynode-监控服务-卸载脚本"
},
{

View File

@ -25,7 +25,7 @@ async function updateNotifyConfig({ res, request }) {
case 'tg':
let { sendTg } = await decryptAndExecuteAsync(path.join(__dirname, '../utils/plus.js')) || {}
console.log('sendTg: ', sendTg)
if (!sendTg) return res.fail({ msg: 'Plus功能解析失败' })
if (!sendTg) return res.fail({ msg: 'Plus专属功能点请激活Plus' })
await sendTg(noticeConfig[type], 'EasyNode通知测试', '这是一条测试通知')
break
}

View File

@ -1,4 +1,3 @@
const schedule = require('node-schedule')
const { getLocalNetIP } = require('./tools')
const { AESEncryptAsync } = require('./encrypt')
const version = require('../../package.json').version
@ -91,10 +90,4 @@ async function getLicenseInfo(key = '') {
}
}
const randomHour = Math.floor(Math.random() * 24)
const randomMinute = Math.floor(Math.random() * 60)
const randomDay = Math.floor(Math.random() * 7)
const cronExpression = `${ randomMinute } ${ randomHour } * * ${ randomDay }`
schedule.scheduleJob(cronExpression, getLicenseInfo)
module.exports = getLicenseInfo

View File

@ -10,7 +10,7 @@
size="small"
type="primary"
link
@click="handlePlusSupport"
@click="gotoPlusPage"
>
去激活
</el-button>
@ -22,13 +22,15 @@
<script setup>
import { computed, getCurrentInstance } from 'vue'
import { useRouter } from 'vue-router'
const { proxy: { $store } } = getCurrentInstance()
const router = useRouter()
const isPlusActive = computed(() => $store.isPlusActive)
const handlePlusSupport = () => {
window.open('https://en.221022.xyz/buy-plus', '_blank')
const gotoPlusPage = () => {
router.push('/setting?tabKey=plus')
}
</script>

View File

@ -52,7 +52,7 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>EasyNode</strong>最初是一个简单的Web终端工具随着用户群的不断扩大功能需求也日益增长为了实现大家的功能需求我投入了大量的业余时间进行开发和维护
一直在为爱发电渐渐的也没了开发的动力
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了项目的可持续发展<strong>后续</strong>版本开始推出<strong>PLUS</strong>版本具体特性鼠标悬浮右上角PLUS图标查看后续特性功能开发也会优先在<strong>PLUS</strong>版本中实现但即使不升级到<strong>PLUS</strong>也不会影响到<strong>EasyNode</strong>的基础功能使用注意:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了项目的可持续发展<strong>后续</strong>版本开始推出<strong>PLUS</strong>版本后续特性功能开发也会优先在<strong>PLUS</strong>版本中实现但即使不升级到<strong>PLUS</strong>也不会影响到<strong>EasyNode</strong>的基础功能使用注意:
暂不支持纯内网用户激活PLUS功能
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="text-decoration: underline;">

View File

@ -426,7 +426,7 @@ onActivated(async () => {
const { hostIds, execClientInstallScript } = route.query
if (!hostIds) return
if (execClientInstallScript === 'true') {
let clientInstallScript = 'curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash\n'
let clientInstallScript = 'curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash\n'
console.log(hostIds.split(','))
createExecShell(hostIds.split(','), clientInstallScript, 300)
// $messageBox.confirm(`${ host }`, 'Warning', {
@ -435,7 +435,7 @@ onActivated(async () => {
// type: 'warning'
// })
// .then(async () => {
// let clientInstallScript = 'curl -o- https://ghp.ci/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash\n'
// let clientInstallScript = 'curl -o- https://git.221022.xyz/https://raw.githubusercontent.com/chaos-zhu/easynode/main/client/easynode-client-install.sh | bash\n'
// createExecShell([host,], clientInstallScript, 300)
// })
}

View File

@ -93,30 +93,19 @@
</template>
<el-form-item label="" class="form_item">
<el-button
v-if="noticeConfig.type !== 'tg'"
type="primary"
:loading="loading"
@click="handleSave"
>
测试并保存
</el-button>
<PlusSupportTip>
<el-button
type="primary"
:disabled="!isPlusActive"
:loading="loading"
@click="handleSave"
>
测试并保存
</el-button>
</PlusSupportTip>
</el-form-item>
</el-form>
</template>
<script setup>
import { ref, reactive, onMounted, getCurrentInstance, computed } from 'vue'
import PlusSupportTip from '@/components/common/PlusSupportTip.vue'
// import PlusSupportTip from '@/components/common/PlusSupportTip.vue'
const { proxy: { $api, $notification, $store } } = getCurrentInstance()

View File

@ -211,7 +211,7 @@ const connectIO = () => {
curStatus.value = CONNECT_FAIL
term.value.write('\r\n\x1b[91mError: 连接失败,请检查EasyNode服务端是否正常, 回车重新发起连接\x1b[0m \r\n')
$notification({
title: '连接失败',
title: '服务端连接失败',
message: '请检查EasyNode服务端是否正常',
type: 'error'
})
@ -222,7 +222,6 @@ const reconnectTerminal = (isCommonTips = false, tips) => {
socket.value.removeAllListeners()
socket.value.close()
socket.value = null
curStatus.value = CONNECT_FAIL
socketConnected.value = false
if (isCommonTips) {
if (isPlusActive.value && autoReconnect.value) {
@ -354,12 +353,11 @@ function extractLastCdPath(text) {
const onData = () => {
term.value.onData((key) => {
if (!socket.value || !socketConnected.value) return
if ('\r' === key && curStatus.value === CONNECT_FAIL) {
reconnectTerminal(false, '重新连接中...')
return
}
if (!socket.value || !socketConnected.value) return
if (isLongPressCtrl.value || isLongPressAlt.value) {
const keyCode = key.toUpperCase().charCodeAt(0)