Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4808f6e218 | ||
|
9bd1cca518 | ||
|
64d5db8c56 | ||
|
37e1b891d3 | ||
|
50ed2a8569 | ||
|
84b5f1beb6 | ||
|
5f0e6e9ecc |
@ -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
|
||||
|
@ -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`
|
||||
|
@ -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
|
||||
|
@ -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-监控服务-卸载脚本"
|
||||
},
|
||||
{
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -52,7 +52,7 @@
|
||||
<strong>EasyNode</strong>最初是一个简单的Web终端工具,随着用户群的不断扩大,功能需求也日益增长,为了实现大家的功能需求,我投入了大量的业余时间进行开发和维护。
|
||||
一直在为爱发电,渐渐的也没了开发的动力。
|
||||
<br>
|
||||
为了项目的可持续发展,<strong>后续</strong>版本开始推出<strong>PLUS</strong>版本,具体特性鼠标悬浮右上角PLUS图标查看,后续特性功能开发也会优先在<strong>PLUS</strong>版本中实现,但即使不升级到<strong>PLUS</strong>,也不会影响到<strong>EasyNode</strong>的基础功能使用【注意:
|
||||
为了项目的可持续发展,<strong>后续</strong>版本开始推出<strong>PLUS</strong>版本,后续特性功能开发也会优先在<strong>PLUS</strong>版本中实现,但即使不升级到<strong>PLUS</strong>,也不会影响到<strong>EasyNode</strong>的基础功能使用【注意:
|
||||
暂不支持纯内网用户激活PLUS功能】。
|
||||
<br>
|
||||
<span style="text-decoration: underline;">
|
||||
|
@ -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)
|
||||
// })
|
||||
}
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user