mirror of
https://github.com/Buriburizaem0n/admin-frontend-domain.git
synced 2026-02-04 12:40:08 +00:00
fix api types, add more form fields
This commit is contained in:
@@ -58,4 +58,4 @@ export async function fetcher<T>(method: FetcherMethod, path: string, data?: any
|
||||
|
||||
export async function swrFetcher<T>(input: string | URL | globalThis.Request, init?: RequestInit) {
|
||||
return fetcher<T>(init?.method as FetcherMethod, input.toString(), init?.body);
|
||||
}
|
||||
}
|
||||
|
||||
14
src/api/service.ts
Normal file
14
src/api/service.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { ModelServiceForm } from "@/types"
|
||||
import { fetcher, FetcherMethod } from "./api"
|
||||
|
||||
export const createService = async (data: ModelServiceForm): Promise<number> => {
|
||||
return fetcher<number>(FetcherMethod.POST, '/api/v1/profile', data)
|
||||
}
|
||||
|
||||
export const updateService = async (id: number, data: ModelServiceForm): Promise<void> => {
|
||||
return fetcher<void>(FetcherMethod.PATCH, `/api/v1/profile/${id}`, data)
|
||||
}
|
||||
|
||||
export const deleteService = async (id: number[]): Promise<void> => {
|
||||
return fetcher<void>(FetcherMethod.POST, '/api/v1/batch-delete/service', id)
|
||||
}
|
||||
@@ -29,40 +29,53 @@ import { useForm } from "react-hook-form"
|
||||
import { z } from "zod"
|
||||
import { zodResolver } from "@hookform/resolvers/zod"
|
||||
import { ModelService } from "@/types"
|
||||
import { createService, updateService } from "@/api/service"
|
||||
import { Checkbox } from "./ui/checkbox"
|
||||
import { Label } from "./ui/label"
|
||||
|
||||
interface ServiceCardProps {
|
||||
className?: string;
|
||||
data?: ModelService;
|
||||
}
|
||||
|
||||
const formSchema = z.object({
|
||||
const serviceFormSchema = z.object({
|
||||
cover: z.number(),
|
||||
duration: z.number().min(30),
|
||||
enable_show_in_service: z.boolean().default(false),
|
||||
enable_trigger_task: z.boolean().default(false),
|
||||
fail_trigger_tasks: z.array(z.number()),
|
||||
latency_notify: z.boolean(),
|
||||
max_latency: z.number(),
|
||||
min_latency: z.number(),
|
||||
name: z.string(),
|
||||
notification_group_id: z.number(),
|
||||
notify: z.boolean(),
|
||||
recover_trigger_tasks: z.array(z.number()),
|
||||
skip_servers: z.record(z.boolean()),
|
||||
target: z.string(),
|
||||
type: z.number(),
|
||||
enableShowInService: z.boolean().default(false),
|
||||
duration: z.number().min(30),
|
||||
})
|
||||
});
|
||||
|
||||
const monitorTypes = {
|
||||
const serviceTypes = {
|
||||
1: "HTTP GET (Certificate expiration and changes)",
|
||||
2: "ICMP Ping",
|
||||
3: "TCPing",
|
||||
}
|
||||
|
||||
const serviceCoverageTypes = {
|
||||
0: "All excludes specific servers",
|
||||
1: "Only specific servers",
|
||||
}
|
||||
|
||||
export const ServiceCard: React.FC<ServiceCardProps> = ({ className, data }) => {
|
||||
const form = useForm<z.infer<typeof formSchema>>({
|
||||
resolver: zodResolver(formSchema),
|
||||
defaultValues: {
|
||||
name: data?.name,
|
||||
target: data?.target,
|
||||
type: data?.type,
|
||||
enableShowInService: data?.enable_show_in_service,
|
||||
duration: data?.duration,
|
||||
},
|
||||
const form = useForm<z.infer<typeof serviceFormSchema>>({
|
||||
resolver: zodResolver(serviceFormSchema),
|
||||
defaultValues: data,
|
||||
})
|
||||
|
||||
function onSubmit(values: z.infer<typeof formSchema>) {
|
||||
|
||||
const onSubmit = (values: z.infer<typeof serviceFormSchema>) => {
|
||||
data?.id ? updateService(data.id, values)
|
||||
: createService(values);
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -78,7 +91,7 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({ className, data }) =>
|
||||
</DialogHeader>
|
||||
<div className="items-center">
|
||||
<Form {...form}>
|
||||
<form onSubmit={form.handleSubmit(onSubmit)}>
|
||||
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-2">
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="name"
|
||||
@@ -99,7 +112,7 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({ className, data }) =>
|
||||
<FormItem>
|
||||
<FormLabel>Target</FormLabel>
|
||||
<FormControl>
|
||||
<Input type="link" {...field} />
|
||||
<Input type="link" placeholder="HTTP (https://t.tt)|Ping (t.tt)|TCP (t.tt:80)" {...field} />
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
@@ -118,10 +131,61 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({ className, data }) =>
|
||||
</SelectTrigger>
|
||||
</FormControl>
|
||||
<SelectContent>
|
||||
{Object.entries(monitorTypes).map(([k, v]) => (
|
||||
<SelectItem value={k}>
|
||||
{v}
|
||||
</SelectItem>
|
||||
{Object.entries(serviceTypes).map(([k, v]) => (
|
||||
<SelectItem value={k}>{v}</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="enable_show_in_service"
|
||||
render={({ field }) => (
|
||||
<FormItem className="flex items-center space-x-2">
|
||||
<FormControl>
|
||||
<div className="flex items-center gap-2">
|
||||
<Checkbox
|
||||
checked={field.value}
|
||||
onCheckedChange={field.onChange}
|
||||
/>
|
||||
<Label className="text-sm">Show in Service</Label>
|
||||
</div>
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="duration"
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>Interval</FormLabel>
|
||||
<FormControl>
|
||||
<Input type="number" placeholder="Seconds" {...field} />
|
||||
</FormControl>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="cover"
|
||||
render={({ field }) => (
|
||||
<FormItem>
|
||||
<FormLabel>Coverage</FormLabel>
|
||||
<Select onValueChange={field.onChange} defaultValue={`${field.value}`}>
|
||||
<FormControl>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="Select service type" />
|
||||
</SelectTrigger>
|
||||
</FormControl>
|
||||
<SelectContent>
|
||||
{Object.entries(serviceCoverageTypes).map(([k, v]) => (
|
||||
<SelectItem value={k}>{v}</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
@@ -1,6 +1,6 @@
|
||||
import { swrFetcher } from "@/api/api"
|
||||
import { Checkbox } from "@/components/ui/checkbox"
|
||||
import { ServiceCard } from "@/components/xui/service"
|
||||
import { ServiceCard } from "@/components/service"
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
|
||||
import { ModelService as Service } from "@/types"
|
||||
import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"
|
||||
|
||||
660
src/types/api.ts
660
src/types/api.ts
@@ -10,111 +10,111 @@
|
||||
*/
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseAny {
|
||||
data?: any;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: any;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelAlertRule {
|
||||
data?: ModelAlertRule[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelAlertRule[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelCron {
|
||||
data?: ModelCron[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelCron[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelDDNSProfile {
|
||||
data?: ModelDDNSProfile[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelDDNSProfile[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelNAT {
|
||||
data?: ModelNAT[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelNAT[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelNotification {
|
||||
data?: ModelNotification[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelNotification[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelNotificationGroupResponseItem {
|
||||
data?: ModelNotificationGroupResponseItem[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelNotificationGroupResponseItem[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelServer {
|
||||
data?: ModelServer[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelServer[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelServerGroupResponseItem {
|
||||
data?: ModelServerGroupResponseItem[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelServerGroupResponseItem[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelServiceInfos {
|
||||
data?: ModelServiceInfos[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelServiceInfos[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayModelUser {
|
||||
data?: ModelUser[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelUser[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayString {
|
||||
data?: string[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: string[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseArrayUint64 {
|
||||
data?: number[];
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: number[];
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseModelConfig {
|
||||
data?: ModelConfig;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelConfig;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseModelLoginResponse {
|
||||
data?: ModelLoginResponse;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelLoginResponse;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseModelServiceResponse {
|
||||
data?: ModelServiceResponse;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelServiceResponse;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseModelUser {
|
||||
data?: ModelUser;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: ModelUser;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GithubComNaibaNezhaModelCommonResponseUint64 {
|
||||
data?: number;
|
||||
error?: string;
|
||||
success?: boolean;
|
||||
data: number;
|
||||
error: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface GormDeletedAt {
|
||||
@@ -124,111 +124,111 @@ export interface GormDeletedAt {
|
||||
}
|
||||
|
||||
export interface ModelAlertRule {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
enable?: boolean;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
enable: boolean;
|
||||
/** 失败时执行的触发任务id */
|
||||
fail_trigger_tasks?: number[];
|
||||
id?: number;
|
||||
name?: string;
|
||||
fail_trigger_tasks: number[];
|
||||
id: number;
|
||||
name: string;
|
||||
/** 该报警规则所在的通知组 */
|
||||
notification_group_id?: number;
|
||||
notification_group_id: number;
|
||||
/** 恢复时执行的触发任务id */
|
||||
recover_trigger_tasks?: number[];
|
||||
rules?: ModelRule[];
|
||||
recover_trigger_tasks: number[];
|
||||
rules: ModelRule[];
|
||||
/** 触发模式: 0-始终触发(默认) 1-单次触发 */
|
||||
trigger_mode?: number;
|
||||
updated_at?: string;
|
||||
trigger_mode: number;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelAlertRuleForm {
|
||||
enable?: boolean;
|
||||
enable: boolean;
|
||||
/** 失败时触发的任务id */
|
||||
fail_trigger_tasks?: number[];
|
||||
name?: string;
|
||||
notification_group_id?: number;
|
||||
fail_trigger_tasks: number[];
|
||||
name: string;
|
||||
notification_group_id: number;
|
||||
/** 恢复时触发的任务id */
|
||||
recover_trigger_tasks?: number[];
|
||||
rules?: ModelRule[];
|
||||
trigger_mode?: number;
|
||||
recover_trigger_tasks: number[];
|
||||
rules: ModelRule[];
|
||||
trigger_mode: number;
|
||||
}
|
||||
|
||||
export interface ModelConfig {
|
||||
agent_secret_key?: string;
|
||||
avg_ping_count?: number;
|
||||
agent_secret_key: string;
|
||||
avg_ping_count: number;
|
||||
/** 覆盖范围(0:提醒未被 IgnoredIPNotification 包含的所有服务器; 1:仅提醒被 IgnoredIPNotification 包含的服务器;) */
|
||||
cover?: number;
|
||||
custom_code?: string;
|
||||
custom_code_dashboard?: string;
|
||||
cover: number;
|
||||
custom_code: string;
|
||||
custom_code_dashboard: string;
|
||||
/** debug模式开关 */
|
||||
debug?: boolean;
|
||||
dns_servers?: string;
|
||||
debug: boolean;
|
||||
dns_servers: string;
|
||||
/** IP变更提醒 */
|
||||
enable_ip_change_notification?: boolean;
|
||||
enable_ip_change_notification: boolean;
|
||||
/** 通知信息IP不打码 */
|
||||
enable_plain_ip_in_notification?: boolean;
|
||||
enable_plain_ip_in_notification: boolean;
|
||||
/** 特定服务器IP(多个服务器用逗号分隔) */
|
||||
ignored_ip_notification?: string;
|
||||
ignored_ip_notification: string;
|
||||
/** [ServerID] -> bool(值为true代表当前ServerID在特定服务器列表内) */
|
||||
ignored_ip_notification_server_ids?: Record<string, boolean>;
|
||||
install_host?: string;
|
||||
ip_change_notification_group_id?: number;
|
||||
jwt_secret_key?: string;
|
||||
ignored_ip_notification_server_ids: Record<string, boolean>;
|
||||
install_host: string;
|
||||
ip_change_notification_group_id: number;
|
||||
jwt_secret_key: string;
|
||||
/** 系统语言,默认 zh_CN */
|
||||
language?: string;
|
||||
listen_port?: number;
|
||||
language: string;
|
||||
listen_port: number;
|
||||
/** 时区,默认为 Asia/Shanghai */
|
||||
location?: string;
|
||||
site_name?: string;
|
||||
tls?: boolean;
|
||||
location: string;
|
||||
site_name: string;
|
||||
tls: boolean;
|
||||
}
|
||||
|
||||
export interface ModelCreateFMResponse {
|
||||
session_id?: string;
|
||||
session_id: string;
|
||||
}
|
||||
|
||||
export interface ModelCreateTerminalResponse {
|
||||
server_id?: number;
|
||||
server_name?: string;
|
||||
session_id?: string;
|
||||
server_id: number;
|
||||
server_name: string;
|
||||
session_id: string;
|
||||
}
|
||||
|
||||
export interface ModelCron {
|
||||
command?: string;
|
||||
command: string;
|
||||
/** 计划任务覆盖范围 (0:仅覆盖特定服务器 1:仅忽略特定服务器 2:由触发该计划任务的服务器执行) */
|
||||
cover?: number;
|
||||
created_at?: string;
|
||||
cron_job_id?: number;
|
||||
deleted_at?: GormDeletedAt;
|
||||
id?: number;
|
||||
cover: number;
|
||||
created_at: string;
|
||||
cron_job_id: number;
|
||||
deleted_at: GormDeletedAt;
|
||||
id: number;
|
||||
/** 最后一次执行时间 */
|
||||
last_executed_at?: string;
|
||||
last_executed_at: string;
|
||||
/** 最后一次执行结果 */
|
||||
last_result?: boolean;
|
||||
name?: string;
|
||||
last_result: boolean;
|
||||
name: string;
|
||||
/** 指定通知方式的分组 */
|
||||
notification_group_id?: number;
|
||||
notification_group_id: number;
|
||||
/** 推送成功的通知 */
|
||||
push_successful?: boolean;
|
||||
push_successful: boolean;
|
||||
/** 分钟 小时 天 月 星期 */
|
||||
scheduler?: string;
|
||||
servers?: number[];
|
||||
scheduler: string;
|
||||
servers: number[];
|
||||
/** 0:计划任务 1:触发任务 */
|
||||
task_type?: number;
|
||||
updated_at?: string;
|
||||
task_type: number;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelCronForm {
|
||||
command?: string;
|
||||
cover?: number;
|
||||
id?: number;
|
||||
name?: string;
|
||||
notification_group_id?: number;
|
||||
push_successful?: boolean;
|
||||
scheduler?: string;
|
||||
servers?: number[];
|
||||
command: string;
|
||||
cover: number;
|
||||
id: number;
|
||||
name: string;
|
||||
notification_group_id: number;
|
||||
push_successful: boolean;
|
||||
scheduler: string;
|
||||
servers: number[];
|
||||
/** 0:计划任务 1:触发任务 */
|
||||
task_type?: number;
|
||||
task_type: number;
|
||||
}
|
||||
|
||||
export interface ModelCycleTransferStats {
|
||||
@@ -243,171 +243,171 @@ export interface ModelCycleTransferStats {
|
||||
}
|
||||
|
||||
export interface ModelDDNSForm {
|
||||
access_id?: string;
|
||||
access_secret?: string;
|
||||
domains?: string[];
|
||||
enable_ipv4?: boolean;
|
||||
enable_ipv6?: boolean;
|
||||
max_retries?: number;
|
||||
name?: string;
|
||||
provider?: string;
|
||||
webhook_headers?: string;
|
||||
webhook_method?: number;
|
||||
webhook_request_body?: string;
|
||||
webhook_request_type?: number;
|
||||
webhook_url?: string;
|
||||
access_id: string;
|
||||
access_secret: string;
|
||||
domains: string[];
|
||||
enable_ipv4: boolean;
|
||||
enable_ipv6: boolean;
|
||||
max_retries: number;
|
||||
name: string;
|
||||
provider: string;
|
||||
webhook_headers: string;
|
||||
webhook_method: number;
|
||||
webhook_request_body: string;
|
||||
webhook_request_type: number;
|
||||
webhook_url: string;
|
||||
}
|
||||
|
||||
export interface ModelDDNSProfile {
|
||||
access_id?: string;
|
||||
access_secret?: string;
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
domains?: string[];
|
||||
enable_ipv4?: boolean;
|
||||
enable_ipv6?: boolean;
|
||||
id?: number;
|
||||
max_retries?: number;
|
||||
name?: string;
|
||||
provider?: string;
|
||||
updated_at?: string;
|
||||
webhook_headers?: string;
|
||||
webhook_method?: number;
|
||||
webhook_request_body?: string;
|
||||
webhook_request_type?: number;
|
||||
webhook_url?: string;
|
||||
access_id: string;
|
||||
access_secret: string;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
domains: string[];
|
||||
enable_ipv4: boolean;
|
||||
enable_ipv6: boolean;
|
||||
id: number;
|
||||
max_retries: number;
|
||||
name: string;
|
||||
provider: string;
|
||||
updated_at: string;
|
||||
webhook_headers: string;
|
||||
webhook_method: number;
|
||||
webhook_request_body: string;
|
||||
webhook_request_type: number;
|
||||
webhook_url: string;
|
||||
}
|
||||
|
||||
export interface ModelHost {
|
||||
arch?: string;
|
||||
boot_time?: number;
|
||||
country_code?: string;
|
||||
cpu?: string[];
|
||||
disk_total?: number;
|
||||
gpu?: string[];
|
||||
ip?: string;
|
||||
mem_total?: number;
|
||||
platform?: string;
|
||||
platform_version?: string;
|
||||
swap_total?: number;
|
||||
version?: string;
|
||||
virtualization?: string;
|
||||
arch: string;
|
||||
boot_time: number;
|
||||
country_code: string;
|
||||
cpu: string[];
|
||||
disk_total: number;
|
||||
gpu: string[];
|
||||
ip: string;
|
||||
mem_total: number;
|
||||
platform: string;
|
||||
platform_version: string;
|
||||
swap_total: number;
|
||||
version: string;
|
||||
virtualization: string;
|
||||
}
|
||||
|
||||
export interface ModelHostState {
|
||||
cpu?: number;
|
||||
disk_used?: number;
|
||||
gpu?: number[];
|
||||
load_1?: number;
|
||||
load_15?: number;
|
||||
load_5?: number;
|
||||
mem_used?: number;
|
||||
net_in_speed?: number;
|
||||
net_in_transfer?: number;
|
||||
net_out_speed?: number;
|
||||
net_out_transfer?: number;
|
||||
process_count?: number;
|
||||
swap_used?: number;
|
||||
tcp_conn_count?: number;
|
||||
temperatures?: ModelSensorTemperature[];
|
||||
udp_conn_count?: number;
|
||||
uptime?: number;
|
||||
cpu: number;
|
||||
disk_used: number;
|
||||
gpu: number[];
|
||||
load_1: number;
|
||||
load_15: number;
|
||||
load_5: number;
|
||||
mem_used: number;
|
||||
net_in_speed: number;
|
||||
net_in_transfer: number;
|
||||
net_out_speed: number;
|
||||
net_out_transfer: number;
|
||||
process_count: number;
|
||||
swap_used: number;
|
||||
tcp_conn_count: number;
|
||||
temperatures: ModelSensorTemperature[];
|
||||
udp_conn_count: number;
|
||||
uptime: number;
|
||||
}
|
||||
|
||||
export interface ModelLoginRequest {
|
||||
password?: string;
|
||||
username?: string;
|
||||
password: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface ModelLoginResponse {
|
||||
expire?: string;
|
||||
token?: string;
|
||||
expire: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface ModelNAT {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
domain?: string;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
domain: string;
|
||||
host?: string;
|
||||
id?: number;
|
||||
id: number;
|
||||
name?: string;
|
||||
serverID?: number;
|
||||
updated_at?: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelNATForm {
|
||||
domain?: string;
|
||||
host?: string;
|
||||
name?: string;
|
||||
server_id?: number;
|
||||
domain: string;
|
||||
host: string;
|
||||
name: string;
|
||||
server_id: number;
|
||||
}
|
||||
|
||||
export interface ModelNotification {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
id?: number;
|
||||
name?: string;
|
||||
request_body?: string;
|
||||
request_header?: string;
|
||||
request_method?: number;
|
||||
request_type?: number;
|
||||
updated_at?: string;
|
||||
url?: string;
|
||||
verify_tls?: boolean;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
id: number;
|
||||
name: string;
|
||||
request_body: string;
|
||||
request_header: string;
|
||||
request_method: number;
|
||||
request_type: number;
|
||||
updated_at: string;
|
||||
url: string;
|
||||
verify_tls: boolean;
|
||||
}
|
||||
|
||||
export interface ModelNotificationForm {
|
||||
name?: string;
|
||||
request_body?: string;
|
||||
request_header?: string;
|
||||
request_method?: number;
|
||||
request_type?: number;
|
||||
skip_check?: boolean;
|
||||
url?: string;
|
||||
verify_tls?: boolean;
|
||||
name: string;
|
||||
request_body: string;
|
||||
request_header: string;
|
||||
request_method: number;
|
||||
request_type: number;
|
||||
skip_check: boolean;
|
||||
url: string;
|
||||
verify_tls: boolean;
|
||||
}
|
||||
|
||||
export interface ModelNotificationGroup {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
id?: number;
|
||||
name?: string;
|
||||
updated_at?: string;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
id: number;
|
||||
name: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelNotificationGroupForm {
|
||||
name?: string;
|
||||
notifications?: number[];
|
||||
name: string;
|
||||
notifications: number[];
|
||||
}
|
||||
|
||||
export interface ModelNotificationGroupResponseItem {
|
||||
group?: ModelNotificationGroup;
|
||||
notifications?: number[];
|
||||
group: ModelNotificationGroup;
|
||||
notifications: number[];
|
||||
}
|
||||
|
||||
export interface ModelRule {
|
||||
/** 覆盖范围 RuleCoverAll/IgnoreAll */
|
||||
cover?: number;
|
||||
cover: number;
|
||||
/** 流量统计周期 */
|
||||
cycle_interval?: number;
|
||||
cycle_interval: number;
|
||||
/** 流量统计的开始时间 */
|
||||
cycle_start?: string;
|
||||
cycle_start: string;
|
||||
/** 流量统计周期单位,默认hour,可选(hour, day, week, month, year) */
|
||||
cycle_unit?: string;
|
||||
cycle_unit: string;
|
||||
/** 持续时间 (秒) */
|
||||
duration?: number;
|
||||
duration: number;
|
||||
/** 覆盖范围的排除 */
|
||||
ignore?: Record<string, boolean>;
|
||||
ignore: Record<string, boolean>;
|
||||
/** 最大阈值 (百分比、字节 kb ÷ 1024) */
|
||||
max?: number;
|
||||
max: number;
|
||||
/** 最小阈值 (百分比、字节 kb ÷ 1024) */
|
||||
min?: number;
|
||||
min: number;
|
||||
/**
|
||||
* 指标类型,cpu、memory、swap、disk、net_in_speed、net_out_speed
|
||||
* net_all_speed、transfer_in、transfer_out、transfer_all、offline
|
||||
* transfer_in_cycle、transfer_out_cycle、transfer_all_cycle
|
||||
*/
|
||||
type?: string;
|
||||
type: string;
|
||||
}
|
||||
|
||||
export interface ModelSensorTemperature {
|
||||
@@ -416,113 +416,113 @@ export interface ModelSensorTemperature {
|
||||
}
|
||||
|
||||
export interface ModelServer {
|
||||
created_at?: string;
|
||||
created_at: string;
|
||||
/** DDNS配置 */
|
||||
ddns_profiles?: number[];
|
||||
deleted_at?: GormDeletedAt;
|
||||
ddns_profiles: number[];
|
||||
deleted_at: GormDeletedAt;
|
||||
/** 展示排序,越大越靠前 */
|
||||
display_index?: number;
|
||||
display_index: number;
|
||||
/** 启用DDNS */
|
||||
enable_ddns?: boolean;
|
||||
enable_ddns: boolean;
|
||||
/** 对游客隐藏 */
|
||||
hide_for_guest?: boolean;
|
||||
host?: ModelHost;
|
||||
id?: number;
|
||||
last_active?: string;
|
||||
name?: string;
|
||||
hide_for_guest: boolean;
|
||||
host: ModelHost;
|
||||
id: number;
|
||||
last_active: string;
|
||||
name: string;
|
||||
/** 管理员可见备注 */
|
||||
note?: string;
|
||||
note: string;
|
||||
/** 公开备注 */
|
||||
public_note?: string;
|
||||
state?: ModelHostState;
|
||||
updated_at?: string;
|
||||
uuid?: string;
|
||||
public_note: string;
|
||||
state: ModelHostState;
|
||||
updated_at: string;
|
||||
uuid: string;
|
||||
}
|
||||
|
||||
export interface ModelServerForm {
|
||||
/** DDNS配置 */
|
||||
ddns_profiles?: number[];
|
||||
ddns_profiles: number[];
|
||||
/** 展示排序,越大越靠前 */
|
||||
display_index?: number;
|
||||
display_index: number;
|
||||
/** 启用DDNS */
|
||||
enable_ddns?: boolean;
|
||||
enable_ddns: boolean;
|
||||
/** 对游客隐藏 */
|
||||
hide_for_guest?: boolean;
|
||||
name?: string;
|
||||
hide_for_guest: boolean;
|
||||
name: string;
|
||||
/** 管理员可见备注 */
|
||||
note?: string;
|
||||
note: string;
|
||||
/** 公开备注 */
|
||||
public_note?: string;
|
||||
public_note: string;
|
||||
}
|
||||
|
||||
export interface ModelServerGroup {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
id?: number;
|
||||
name?: string;
|
||||
updated_at?: string;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
id: number;
|
||||
name: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelServerGroupForm {
|
||||
name?: string;
|
||||
servers?: number[];
|
||||
name: string;
|
||||
servers: number[];
|
||||
}
|
||||
|
||||
export interface ModelServerGroupResponseItem {
|
||||
group?: ModelServerGroup;
|
||||
servers?: number[];
|
||||
group: ModelServerGroup;
|
||||
servers: number[];
|
||||
}
|
||||
|
||||
export interface ModelService {
|
||||
cover?: number;
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
duration?: number;
|
||||
enable_show_in_service?: boolean;
|
||||
enable_trigger_task?: boolean;
|
||||
cover: number;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
duration: number;
|
||||
enable_show_in_service: boolean;
|
||||
enable_trigger_task: boolean;
|
||||
/** 失败时执行的触发任务id */
|
||||
fail_trigger_tasks?: number[];
|
||||
id?: number;
|
||||
latency_notify?: boolean;
|
||||
max_latency?: number;
|
||||
min_latency?: number;
|
||||
name?: string;
|
||||
fail_trigger_tasks: number[];
|
||||
id: number;
|
||||
latency_notify: boolean;
|
||||
max_latency: number;
|
||||
min_latency: number;
|
||||
name: string;
|
||||
/** 当前服务监控所属的通知组 ID */
|
||||
notification_group_id?: number;
|
||||
notify?: boolean;
|
||||
notification_group_id: number;
|
||||
notify: boolean;
|
||||
/** 恢复时执行的触发任务id */
|
||||
recover_trigger_tasks?: number[];
|
||||
skip_servers?: Record<string, boolean>;
|
||||
target?: string;
|
||||
type?: number;
|
||||
updated_at?: string;
|
||||
recover_trigger_tasks: number[];
|
||||
skip_servers: Record<string, boolean>;
|
||||
target: string;
|
||||
type: number;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface ModelServiceForm {
|
||||
cover?: number;
|
||||
duration?: number;
|
||||
enable_show_in_service?: boolean;
|
||||
enable_trigger_task?: boolean;
|
||||
fail_trigger_tasks?: number[];
|
||||
latency_notify?: boolean;
|
||||
max_latency?: number;
|
||||
min_latency?: number;
|
||||
name?: string;
|
||||
notification_group_id?: number;
|
||||
notify?: boolean;
|
||||
recover_trigger_tasks?: number[];
|
||||
skip_servers?: Record<string, boolean>;
|
||||
target?: string;
|
||||
type?: number;
|
||||
cover: number;
|
||||
duration: number;
|
||||
enable_show_in_service: boolean;
|
||||
enable_trigger_task: boolean;
|
||||
fail_trigger_tasks: number[];
|
||||
latency_notify: boolean;
|
||||
max_latency: number;
|
||||
min_latency: number;
|
||||
name: string;
|
||||
notification_group_id: number;
|
||||
notify: boolean;
|
||||
recover_trigger_tasks: number[];
|
||||
skip_servers: Record<string, boolean>;
|
||||
target: string;
|
||||
type: number;
|
||||
}
|
||||
|
||||
export interface ModelServiceInfos {
|
||||
avg_delay?: number[];
|
||||
created_at?: number[];
|
||||
monitor_id?: number;
|
||||
monitor_name?: string;
|
||||
server_id?: number;
|
||||
server_name?: string;
|
||||
avg_delay: number[];
|
||||
created_at: number[];
|
||||
monitor_id: number;
|
||||
monitor_name: string;
|
||||
server_id: number;
|
||||
server_name: string;
|
||||
}
|
||||
|
||||
export interface ModelServiceResponse {
|
||||
@@ -542,52 +542,52 @@ export interface ModelServiceResponseItem {
|
||||
}
|
||||
|
||||
export interface ModelSettingForm {
|
||||
cover?: number;
|
||||
custom_code?: string;
|
||||
custom_code_dashboard?: string;
|
||||
custom_nameservers?: string;
|
||||
enable_ip_change_notification?: boolean;
|
||||
enable_plain_ip_in_notification?: boolean;
|
||||
ignored_ip_notification?: string;
|
||||
install_host?: string;
|
||||
cover: number;
|
||||
custom_code: string;
|
||||
custom_code_dashboard: string;
|
||||
custom_nameservers: string;
|
||||
enable_ip_change_notification: boolean;
|
||||
enable_plain_ip_in_notification: boolean;
|
||||
ignored_ip_notification: string;
|
||||
install_host: string;
|
||||
/** IP变更提醒的通知组 */
|
||||
ip_change_notification_group_id?: number;
|
||||
language?: string;
|
||||
site_name?: string;
|
||||
ip_change_notification_group_id: number;
|
||||
language: string;
|
||||
site_name: string;
|
||||
}
|
||||
|
||||
export interface ModelStreamServer {
|
||||
/** 展示排序,越大越靠前 */
|
||||
display_index?: number;
|
||||
host?: ModelHost;
|
||||
id?: number;
|
||||
last_active?: string;
|
||||
name?: string;
|
||||
display_index: number;
|
||||
host: ModelHost;
|
||||
id: number;
|
||||
last_active: string;
|
||||
name: string;
|
||||
/** 公开备注,只第一个数据包有值 */
|
||||
public_note?: string;
|
||||
state?: ModelHostState;
|
||||
public_note: string;
|
||||
state: ModelHostState;
|
||||
}
|
||||
|
||||
export interface ModelStreamServerData {
|
||||
now?: number;
|
||||
servers?: ModelStreamServer[];
|
||||
now: number;
|
||||
servers: ModelStreamServer[];
|
||||
}
|
||||
|
||||
export interface ModelTerminalForm {
|
||||
protocol?: string;
|
||||
server_id?: number;
|
||||
protocol: string;
|
||||
server_id: number;
|
||||
}
|
||||
|
||||
export interface ModelUser {
|
||||
created_at?: string;
|
||||
deleted_at?: GormDeletedAt;
|
||||
id?: number;
|
||||
password?: string;
|
||||
updated_at?: string;
|
||||
username?: string;
|
||||
created_at: string;
|
||||
deleted_at: GormDeletedAt;
|
||||
id: number;
|
||||
password: string;
|
||||
updated_at: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface ModelUserForm {
|
||||
password?: string;
|
||||
username?: string;
|
||||
password: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user