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:
@@ -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 })
|
||||
}
|
||||
|
||||
@@ -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 })
|
||||
}
|
||||
|
||||
@@ -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 })
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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('保存成功')
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
export interface Jail {
|
||||
name: string
|
||||
enabled: boolean
|
||||
log_path: string
|
||||
max_retry: number
|
||||
find_time: number
|
||||
ban_time: number
|
||||
}
|
||||
Reference in New Issue
Block a user