2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 11:27:17 +08:00

feat: axios转alova.js

This commit is contained in:
耗子
2025-02-04 23:52:36 +08:00
parent 06d620ac06
commit d25c035fc0
7 changed files with 47 additions and 84 deletions

View File

@@ -1,9 +1,6 @@
import type { AxiosResponse } from 'axios'
import { request } from '@/utils'
import { http } from '@/utils'
export default {
// 运行评分
test: (name: string, multi: boolean): Promise<AxiosResponse<any>> =>
request.post('/apps/benchmark/test', { name, multi })
test: (name: string, multi: boolean): any => http.Post('/apps/benchmark/test', { name, multi })
}

View File

@@ -1,4 +1,6 @@
import { http } from '@/utils'
export const getConfig = () => http.Get('/apps/docker/config')
export const updateConfig = (config: string) => http.Post('/apps/docker/config', { config })
export default {
getConfig: (): any => http.Get('/apps/docker/config'),
updateConfig: (config: string): any => http.Post('/apps/docker/config', { config })
}

View File

@@ -1,24 +1,19 @@
import type { AxiosResponse } from 'axios'
import { request } from '@/utils'
import { http } from '@/utils'
export default {
// 保护列表
jails: (page: number, limit: number): Promise<AxiosResponse<any>> =>
request.get('/apps/fail2ban/jails', { params: { page, limit } }),
jails: (page: number, limit: number): any =>
http.Get('/apps/fail2ban/jails', { params: { page, limit } }),
// 添加保护
add: (data: any): Promise<AxiosResponse<any>> => request.post('/apps/fail2ban/jails', data),
add: (data: any): any => http.Post('/apps/fail2ban/jails', data),
// 删除保护
delete: (name: string): Promise<AxiosResponse<any>> =>
request.delete('/apps/fail2ban/jails', { data: { name } }),
delete: (name: string): any => http.Delete('/apps/fail2ban/jails', { name }),
// 封禁列表
jail: (name: string): Promise<AxiosResponse<any>> => request.get('/apps/fail2ban/jails/' + name),
jail: (name: string): any => http.Get('/apps/fail2ban/jails/' + name),
// 解封 IP
unban: (name: string, ip: string): Promise<AxiosResponse<any>> =>
request.post('/apps/fail2ban/unban', { name, ip }),
unban: (name: string, ip: string): any => http.Post('/apps/fail2ban/unban', { name, ip }),
// 获取白名单
whitelist: (): Promise<AxiosResponse<any>> => request.get('/apps/fail2ban/whiteList'),
whitelist: (): any => http.Get('/apps/fail2ban/whiteList'),
// 设置白名单
setWhitelist: (ip: string): Promise<AxiosResponse<any>> =>
request.post('/apps/fail2ban/whiteList', { ip })
setWhitelist: (ip: string): any => http.Post('/apps/fail2ban/whiteList', { ip })
}

View File

@@ -102,11 +102,11 @@ const handleTest = async () => {
current.value = test
if (test != 'memory' && test != 'disk') {
for (let j = 0; j < 2; j++) {
const { data } = await benchmark.test(test, j === 1)
cpu.value[test as keyof typeof cpu.value][j === 1 ? 'multi' : 'single'] = data
cpu.value[test as keyof typeof cpu.value][j === 1 ? 'multi' : 'single'] =
await benchmark.test(test, j === 1)
}
} else {
const { data } = await benchmark.test(test, false)
const data = await benchmark.test(test, false)
if (test === 'memory') {
memory.value = data
} else {

View File

@@ -6,14 +6,14 @@ defineOptions({
import Editor from '@guolao/vue-monaco-editor'
import { NButton, NPopconfirm } from 'naive-ui'
import { getConfig, updateConfig } from '@/api/apps/docker'
import docker from '@/api/apps/docker'
import systemctl from '@/api/panel/systemctl'
const currentTab = ref('status')
const status = ref(false)
const isEnabled = ref(false)
const { data: config }: { data: any } = useRequest(getConfig, {
const { data: config } = useRequest(docker.getConfig, {
initialData: {
config: ''
}
@@ -36,7 +36,7 @@ const getIsEnabled = async () => {
}
const handleSaveConfig = async () => {
useRequest(() => updateConfig(config.value)).onSuccess(() => {
useRequest(() => docker.updateConfig(config.value)).onSuccess(() => {
window.$message.success('保存成功')
})
}

View File

@@ -10,7 +10,6 @@ import app from '@/api/panel/app'
import systemctl from '@/api/panel/systemctl'
import website from '@/api/panel/website'
import { renderIcon } from '@/utils'
import type { Jail } from '@/views/apps/fail2ban/types'
const currentTab = ref('status')
const status = ref(false)
@@ -65,13 +64,6 @@ const jailsColumns: any = [
{ title: '最大尝试', key: 'max_retry', minWidth: 150, ellipsis: { tooltip: true } },
{ title: '封禁时间', key: 'ban_time', minWidth: 150, ellipsis: { tooltip: true } },
{ title: '周期', key: 'find_time', minWidth: 150, ellipsis: { tooltip: true } },
{
title: '日志路径',
key: 'log_path',
minWidth: 150,
resizable: true,
ellipsis: { tooltip: true }
},
{
title: '操作',
key: 'actions',
@@ -126,8 +118,6 @@ const jailsColumns: any = [
}
]
const jails = ref<Jail[]>([])
const banedIPColumns: any = [
{
title: 'IP',
@@ -173,22 +163,10 @@ const banedIPColumns: any = [
}
]
const pagination = reactive({
page: 1,
pageCount: 1,
pageSize: 20,
itemCount: 0,
showQuickJumper: true,
showSizePicker: true,
pageSizes: [20, 50, 100, 200]
})
const websites = ref<any[]>([])
const getWhiteList = async () => {
await fail2ban.whitelist().then((res: any) => {
white.value = res.data
})
white.value = await fail2ban.whitelist()
}
const handleSaveWhiteList = async () => {
@@ -207,24 +185,14 @@ const getWebsiteList = async (page: number, limit: number) => {
addJailModel.value.website_name = websites.value[0]?.value
}
const getJails = async (page: number, limit: number) => {
const { data } = await fail2ban.jails(page, limit)
return data
}
const onPageChange = (page: number) => {
pagination.page = page
getJails(page, pagination.pageSize).then((res) => {
jails.value = res.items
pagination.itemCount = res.total
pagination.pageCount = res.total / pagination.pageSize + 1
})
}
const onPageSizeChange = (pageSize: number) => {
pagination.pageSize = pageSize
onPageChange(1)
}
const { loading, data, page, total, pageSize, pageCount, refresh } = usePagination(
(page, pageSize) => fail2ban.jails(page, pageSize),
{
initialData: { total: 0, list: [] },
total: (res: any) => res.total,
data: (res: any) => res.items
}
)
const getStatus = async () => {
await systemctl.status('fail2ban').then((res: any) => {
@@ -275,19 +243,19 @@ const handleReload = async () => {
const handleAddJail = async () => {
await fail2ban.add(addJailModel.value)
await refresh()
window.$message.success('添加成功')
addJailModal.value = false
onPageChange(1)
}
const handleDeleteJail = async (name: string) => {
await fail2ban.delete(name)
await refresh()
window.$message.success('删除成功')
onPageChange(1)
}
const getJailInfo = async (name: string) => {
const { data } = await fail2ban.jail(name)
const data = await fail2ban.jail(name)
jailCurrentlyBan.value = data.currently_ban
jailTotalBan.value = data.total_ban
jailBanedList.value = data.baned_list
@@ -300,10 +268,10 @@ const handleUnBan = async (name: string, ip: string) => {
}
onMounted(() => {
refresh()
getStatus()
getIsEnabled()
getWhiteList()
onPageChange(1)
app.isInstalled('nginx').then((res) => {
if (res.data.installed) {
getWebsiteList(1, 10000)
@@ -389,12 +357,21 @@ onMounted(() => {
striped
remote
:scroll-x="1000"
:loading="false"
:loading="loading"
:columns="jailsColumns"
:data="jails"
:data="data"
:row-key="(row: any) => row.name"
@update:page="onPageChange"
@update:page-size="onPageSizeChange"
v-model:page="page"
v-model:pageSize="pageSize"
:pagination="{
page: page,
pageCount: pageCount,
pageSize: pageSize,
itemCount: total,
showQuickJumper: true,
showSizePicker: true,
pageSizes: [20, 50, 100, 200]
}"
/>
</n-card>
</n-tab-pane>

View File

@@ -1,8 +0,0 @@
export interface Jail {
name: string
enabled: boolean
log_path: string
max_retry: number
find_time: number
ban_time: number
}