mirror of
https://github.com/Buriburizaem0n/admin-frontend-domain.git
synced 2026-02-04 12:40:08 +00:00
fix: custom_nameservers should be dns_servers (#46)
* fix: custom_nameservers should be dns_servers * fix ipv6 address conversion
This commit is contained in:
@@ -160,18 +160,88 @@ export function ip16Str(base64str: string) {
|
|||||||
return ipv6BinaryToString(buf);
|
return ipv6BinaryToString(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ipv6BinaryToString(binary: Uint8Array) {
|
const digits = '0123456789abcdef';
|
||||||
let parts: string[] = [];
|
|
||||||
for (let i = 0; i < binary.length; i += 2) {
|
function appendHex(b: string[], x: number): void {
|
||||||
let hex = (binary[i] << 8 | binary[i + 1]).toString(16);
|
if (x >= 0x1000) {
|
||||||
parts.push(hex);
|
b.push(digits[(x >> 12) & 0xf]);
|
||||||
|
}
|
||||||
|
if (x >= 0x100) {
|
||||||
|
b.push(digits[(x >> 8) & 0xf]);
|
||||||
|
}
|
||||||
|
if (x >= 0x10) {
|
||||||
|
b.push(digits[(x >> 4) & 0xf]);
|
||||||
|
}
|
||||||
|
b.push(digits[x & 0xf]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ipv6BinaryToString(ip: Uint8Array): string {
|
||||||
|
let ipBytes: Uint8Array;
|
||||||
|
|
||||||
|
if (ip.length !== 16) {
|
||||||
|
ipBytes = new Uint8Array(16);
|
||||||
|
const len = Math.min(ip.length, 16);
|
||||||
|
ipBytes.set(ip.subarray(0, len));
|
||||||
|
} else {
|
||||||
|
ipBytes = ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
let ipv6 = parts.join(':');
|
const hextets: number[] = [];
|
||||||
|
for (let i = 0; i < 16; i += 2) {
|
||||||
|
hextets.push((ipBytes[i] << 8) | ipBytes[i + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
ipv6 = ipv6.replace(/(:0)+$/, '');
|
let zeroStart = -1;
|
||||||
if (ipv6.indexOf('::') === -1 && parts.filter(p => p === '0').length > 1) {
|
let zeroLength = 0;
|
||||||
ipv6 = ipv6.replace(/(:0)+/, '::');
|
|
||||||
|
for (let i = 0; i <= hextets.length;) {
|
||||||
|
let j = i;
|
||||||
|
while (j < hextets.length && hextets[j] === 0) {
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
const length = j - i;
|
||||||
|
if (length >= 2 && length > zeroLength) {
|
||||||
|
zeroStart = i;
|
||||||
|
zeroLength = length;
|
||||||
|
}
|
||||||
|
if (j === i) {
|
||||||
|
i++;
|
||||||
|
} else {
|
||||||
|
i = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const parts: string[] = [];
|
||||||
|
for (let i = 0; i < hextets.length; i++) {
|
||||||
|
if (zeroLength > 0 && i === zeroStart) {
|
||||||
|
parts.push('');
|
||||||
|
i += zeroLength - 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parts.length > 0) {
|
||||||
|
parts.push(':');
|
||||||
|
}
|
||||||
|
|
||||||
|
const b: string[] = [];
|
||||||
|
appendHex(b, hextets[i]);
|
||||||
|
parts.push(b.join(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
let ipv6 = parts.join('');
|
||||||
|
|
||||||
|
if (ipv6.startsWith('::')) {
|
||||||
|
|
||||||
|
} else if (ipv6.startsWith(':')) {
|
||||||
|
ipv6 = ':' + ipv6;
|
||||||
|
}
|
||||||
|
if (ipv6.endsWith('::')) {
|
||||||
|
|
||||||
|
} else if (ipv6.endsWith(':')) {
|
||||||
|
ipv6 = ipv6 + ':';
|
||||||
|
}
|
||||||
|
if (ipv6 === '') {
|
||||||
|
ipv6 = '::';
|
||||||
}
|
}
|
||||||
|
|
||||||
return ipv6;
|
return ipv6;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import {
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
const settingFormSchema = z.object({
|
const settingFormSchema = z.object({
|
||||||
custom_nameservers: asOptionalField(z.string()),
|
dns_servers: asOptionalField(z.string()),
|
||||||
ignored_ip_notification: asOptionalField(z.string()),
|
ignored_ip_notification: asOptionalField(z.string()),
|
||||||
ip_change_notification_group_id: z.coerce.number().int().min(0),
|
ip_change_notification_group_id: z.coerce.number().int().min(0),
|
||||||
cover: z.coerce.number().int().min(1),
|
cover: z.coerce.number().int().min(1),
|
||||||
@@ -285,7 +285,7 @@ export default function SettingsPage() {
|
|||||||
/>
|
/>
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name="custom_nameservers"
|
name="dns_servers"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>
|
<FormLabel>
|
||||||
|
|||||||
684
src/types/api.ts
684
src/types/api.ts
@@ -10,235 +10,235 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseAny {
|
export interface GithubComNezhahqNezhaModelCommonResponseAny {
|
||||||
data?: any;
|
data: any;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelAlertRule {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelAlertRule {
|
||||||
data?: ModelAlertRule[];
|
data: ModelAlertRule[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelCron {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelCron {
|
||||||
data?: ModelCron[];
|
data: ModelCron[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelDDNSProfile {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelDDNSProfile {
|
||||||
data?: ModelDDNSProfile[];
|
data: ModelDDNSProfile[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNAT {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNAT {
|
||||||
data?: ModelNAT[];
|
data: ModelNAT[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNotification {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNotification {
|
||||||
data?: ModelNotification[];
|
data: ModelNotification[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNotificationGroupResponseItem {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelNotificationGroupResponseItem {
|
||||||
data?: ModelNotificationGroupResponseItem[];
|
data: ModelNotificationGroupResponseItem[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServer {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServer {
|
||||||
data?: ModelServer[];
|
data: ModelServer[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServerGroupResponseItem {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServerGroupResponseItem {
|
||||||
data?: ModelServerGroupResponseItem[];
|
data: ModelServerGroupResponseItem[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelService {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelService {
|
||||||
data?: ModelService[];
|
data: ModelService[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServiceInfos {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelServiceInfos {
|
||||||
data?: ModelServiceInfos[];
|
data: ModelServiceInfos[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelUser {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelUser {
|
||||||
data?: ModelUser[];
|
data: ModelUser[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelWAFApiMock {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayModelWAFApiMock {
|
||||||
data?: ModelWAFApiMock[];
|
data: ModelWAFApiMock[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayString {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayString {
|
||||||
data?: string[];
|
data: string[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseArrayUint64 {
|
export interface GithubComNezhahqNezhaModelCommonResponseArrayUint64 {
|
||||||
data?: number[];
|
data: number[];
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseModelForceUpdateResponse {
|
export interface GithubComNezhahqNezhaModelCommonResponseModelForceUpdateResponse {
|
||||||
data?: ModelForceUpdateResponse;
|
data: ModelForceUpdateResponse;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseModelLoginResponse {
|
export interface GithubComNezhahqNezhaModelCommonResponseModelLoginResponse {
|
||||||
data?: ModelLoginResponse;
|
data: ModelLoginResponse;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseModelProfile {
|
export interface GithubComNezhahqNezhaModelCommonResponseModelProfile {
|
||||||
data?: ModelProfile;
|
data: ModelProfile;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseModelServiceResponse {
|
export interface GithubComNezhahqNezhaModelCommonResponseModelServiceResponse {
|
||||||
data?: ModelServiceResponse;
|
data: ModelServiceResponse;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseModelSettingResponse {
|
export interface GithubComNezhahqNezhaModelCommonResponseModelSettingResponse {
|
||||||
data?: ModelSettingResponse;
|
data: ModelSettingResponse;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GithubComNezhahqNezhaModelCommonResponseUint64 {
|
export interface GithubComNezhahqNezhaModelCommonResponseUint64 {
|
||||||
data?: number;
|
data: number;
|
||||||
error?: string;
|
error: string;
|
||||||
success?: boolean;
|
success: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelAlertRule {
|
export interface ModelAlertRule {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
enable?: boolean;
|
enable: boolean;
|
||||||
/** 失败时执行的触发任务id */
|
/** 失败时执行的触发任务id */
|
||||||
fail_trigger_tasks?: number[];
|
fail_trigger_tasks: number[];
|
||||||
id?: number;
|
id: number;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 该报警规则所在的通知组 */
|
/** 该报警规则所在的通知组 */
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
/** 恢复时执行的触发任务id */
|
/** 恢复时执行的触发任务id */
|
||||||
recover_trigger_tasks?: number[];
|
recover_trigger_tasks: number[];
|
||||||
rules?: ModelRule[];
|
rules: ModelRule[];
|
||||||
/** 触发模式: 0-始终触发(默认) 1-单次触发 */
|
/** 触发模式: 0-始终触发(默认) 1-单次触发 */
|
||||||
trigger_mode?: number;
|
trigger_mode: number;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelAlertRuleForm {
|
export interface ModelAlertRuleForm {
|
||||||
enable?: boolean;
|
enable?: boolean;
|
||||||
/** 失败时触发的任务id */
|
/** 失败时触发的任务id */
|
||||||
fail_trigger_tasks?: number[];
|
fail_trigger_tasks: number[];
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
/** 恢复时触发的任务id */
|
/** 恢复时触发的任务id */
|
||||||
recover_trigger_tasks?: number[];
|
recover_trigger_tasks: number[];
|
||||||
rules?: ModelRule[];
|
rules: ModelRule[];
|
||||||
/** @default 0 */
|
/** @default 0 */
|
||||||
trigger_mode?: number;
|
trigger_mode: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelCreateFMResponse {
|
export interface ModelCreateFMResponse {
|
||||||
session_id?: string;
|
session_id: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelCreateTerminalResponse {
|
export interface ModelCreateTerminalResponse {
|
||||||
server_id?: number;
|
server_id: number;
|
||||||
server_name?: string;
|
server_name: string;
|
||||||
session_id?: string;
|
session_id: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelCron {
|
export interface ModelCron {
|
||||||
command?: string;
|
command: string;
|
||||||
/** 计划任务覆盖范围 (0:仅覆盖特定服务器 1:仅忽略特定服务器 2:由触发该计划任务的服务器执行) */
|
/** 计划任务覆盖范围 (0:仅覆盖特定服务器 1:仅忽略特定服务器 2:由触发该计划任务的服务器执行) */
|
||||||
cover?: number;
|
cover: number;
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
cron_job_id?: number;
|
cron_job_id: number;
|
||||||
id?: number;
|
id: number;
|
||||||
/** 最后一次执行时间 */
|
/** 最后一次执行时间 */
|
||||||
last_executed_at?: string;
|
last_executed_at: string;
|
||||||
/** 最后一次执行结果 */
|
/** 最后一次执行结果 */
|
||||||
last_result?: boolean;
|
last_result: boolean;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 指定通知方式的分组 */
|
/** 指定通知方式的分组 */
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
/** 推送成功的通知 */
|
/** 推送成功的通知 */
|
||||||
push_successful?: boolean;
|
push_successful: boolean;
|
||||||
/** 分钟 小时 天 月 星期 */
|
/** 分钟 小时 天 月 星期 */
|
||||||
scheduler?: string;
|
scheduler: string;
|
||||||
servers?: number[];
|
servers: number[];
|
||||||
/** 0:计划任务 1:触发任务 */
|
/** 0:计划任务 1:触发任务 */
|
||||||
task_type?: number;
|
task_type: number;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelCronForm {
|
export interface ModelCronForm {
|
||||||
command?: string;
|
command?: string;
|
||||||
/** @default 0 */
|
/** @default 0 */
|
||||||
cover?: number;
|
cover: number;
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
push_successful?: boolean;
|
push_successful?: boolean;
|
||||||
scheduler?: string;
|
scheduler: string;
|
||||||
servers?: number[];
|
servers: number[];
|
||||||
/**
|
/**
|
||||||
* 0:计划任务 1:触发任务
|
* 0:计划任务 1:触发任务
|
||||||
* @default 0
|
* @default 0
|
||||||
*/
|
*/
|
||||||
task_type?: number;
|
task_type: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelCycleTransferStats {
|
export interface ModelCycleTransferStats {
|
||||||
from?: string;
|
from: string;
|
||||||
max?: number;
|
max: number;
|
||||||
min?: number;
|
min: number;
|
||||||
name?: string;
|
name: string;
|
||||||
next_update?: Record<string, string>;
|
next_update: Record<string, string>;
|
||||||
server_name?: Record<string, string>;
|
server_name: Record<string, string>;
|
||||||
to?: string;
|
to: string;
|
||||||
transfer?: Record<string, number>;
|
transfer: Record<string, number>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelDDNSForm {
|
export interface ModelDDNSForm {
|
||||||
access_id?: string;
|
access_id?: string;
|
||||||
access_secret?: string;
|
access_secret?: string;
|
||||||
domains?: string[];
|
domains: string[];
|
||||||
enable_ipv4?: boolean;
|
enable_ipv4?: boolean;
|
||||||
enable_ipv6?: boolean;
|
enable_ipv6?: boolean;
|
||||||
/** @default 3 */
|
/** @default 3 */
|
||||||
max_retries?: number;
|
max_retries: number;
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
provider?: string;
|
provider: string;
|
||||||
webhook_headers?: string;
|
webhook_headers?: string;
|
||||||
/** @default 1 */
|
/** @default 1 */
|
||||||
webhook_method?: number;
|
webhook_method?: number;
|
||||||
@@ -249,22 +249,22 @@ export interface ModelDDNSForm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelDDNSProfile {
|
export interface ModelDDNSProfile {
|
||||||
access_id?: string;
|
access_id: string;
|
||||||
access_secret?: string;
|
access_secret: string;
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
domains?: string[];
|
domains: string[];
|
||||||
enable_ipv4?: boolean;
|
enable_ipv4: boolean;
|
||||||
enable_ipv6?: boolean;
|
enable_ipv6: boolean;
|
||||||
id?: number;
|
id: number;
|
||||||
max_retries?: number;
|
max_retries: number;
|
||||||
name?: string;
|
name: string;
|
||||||
provider?: string;
|
provider: string;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
webhook_headers?: string;
|
webhook_headers: string;
|
||||||
webhook_method?: number;
|
webhook_method: number;
|
||||||
webhook_request_body?: string;
|
webhook_request_body: string;
|
||||||
webhook_request_type?: number;
|
webhook_request_type: number;
|
||||||
webhook_url?: string;
|
webhook_url: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelForceUpdateResponse {
|
export interface ModelForceUpdateResponse {
|
||||||
@@ -274,148 +274,148 @@ export interface ModelForceUpdateResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelFrontendTemplate {
|
export interface ModelFrontendTemplate {
|
||||||
author?: string;
|
author: string;
|
||||||
is_admin?: boolean;
|
is_admin: boolean;
|
||||||
is_official?: boolean;
|
is_official: boolean;
|
||||||
name?: string;
|
name: string;
|
||||||
path?: string;
|
path: string;
|
||||||
repository?: string;
|
repository: string;
|
||||||
version?: string;
|
version: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelGeoIP {
|
export interface ModelGeoIP {
|
||||||
country_code?: string;
|
country_code: string;
|
||||||
ip?: ModelIP;
|
ip: ModelIP;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelHost {
|
export interface ModelHost {
|
||||||
arch?: string;
|
arch: string;
|
||||||
boot_time?: number;
|
boot_time: number;
|
||||||
cpu?: string[];
|
cpu: string[];
|
||||||
disk_total?: number;
|
disk_total: number;
|
||||||
gpu?: string[];
|
gpu: string[];
|
||||||
mem_total?: number;
|
mem_total: number;
|
||||||
platform?: string;
|
platform: string;
|
||||||
platform_version?: string;
|
platform_version: string;
|
||||||
swap_total?: number;
|
swap_total: number;
|
||||||
version?: string;
|
version: string;
|
||||||
virtualization?: string;
|
virtualization: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelHostState {
|
export interface ModelHostState {
|
||||||
cpu?: number;
|
cpu: number;
|
||||||
disk_used?: number;
|
disk_used: number;
|
||||||
gpu?: number[];
|
gpu: number[];
|
||||||
load_1?: number;
|
load_1: number;
|
||||||
load_15?: number;
|
load_15: number;
|
||||||
load_5?: number;
|
load_5: number;
|
||||||
mem_used?: number;
|
mem_used: number;
|
||||||
net_in_speed?: number;
|
net_in_speed: number;
|
||||||
net_in_transfer?: number;
|
net_in_transfer: number;
|
||||||
net_out_speed?: number;
|
net_out_speed: number;
|
||||||
net_out_transfer?: number;
|
net_out_transfer: number;
|
||||||
process_count?: number;
|
process_count: number;
|
||||||
swap_used?: number;
|
swap_used: number;
|
||||||
tcp_conn_count?: number;
|
tcp_conn_count: number;
|
||||||
temperatures?: ModelSensorTemperature[];
|
temperatures: ModelSensorTemperature[];
|
||||||
udp_conn_count?: number;
|
udp_conn_count: number;
|
||||||
uptime?: number;
|
uptime: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelIP {
|
export interface ModelIP {
|
||||||
ipv4_addr?: string;
|
ipv4_addr: string;
|
||||||
ipv6_addr?: string;
|
ipv6_addr: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelLoginRequest {
|
export interface ModelLoginRequest {
|
||||||
password?: string;
|
password: string;
|
||||||
username?: string;
|
username: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelLoginResponse {
|
export interface ModelLoginResponse {
|
||||||
expire?: string;
|
expire: string;
|
||||||
token?: string;
|
token: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNAT {
|
export interface ModelNAT {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
domain?: string;
|
domain: string;
|
||||||
host?: string;
|
host: string;
|
||||||
id?: number;
|
id: number;
|
||||||
name?: string;
|
name: string;
|
||||||
server_id?: number;
|
server_id: number;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNATForm {
|
export interface ModelNATForm {
|
||||||
domain?: string;
|
domain: string;
|
||||||
host?: string;
|
host: string;
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
server_id?: number;
|
server_id: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNotification {
|
export interface ModelNotification {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
id?: number;
|
id: number;
|
||||||
name?: string;
|
name: string;
|
||||||
request_body?: string;
|
request_body: string;
|
||||||
request_header?: string;
|
request_header: string;
|
||||||
request_method?: number;
|
request_method: number;
|
||||||
request_type?: number;
|
request_type: number;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
url?: string;
|
url: string;
|
||||||
verify_tls?: boolean;
|
verify_tls: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNotificationForm {
|
export interface ModelNotificationForm {
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
request_body?: string;
|
request_body: string;
|
||||||
request_header?: string;
|
request_header: string;
|
||||||
request_method?: number;
|
request_method: number;
|
||||||
request_type?: number;
|
request_type: number;
|
||||||
skip_check?: boolean;
|
skip_check?: boolean;
|
||||||
url?: string;
|
url: string;
|
||||||
verify_tls?: boolean;
|
verify_tls?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNotificationGroup {
|
export interface ModelNotificationGroup {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
id?: number;
|
id: number;
|
||||||
name?: string;
|
name: string;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNotificationGroupForm {
|
export interface ModelNotificationGroupForm {
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
notifications?: number[];
|
notifications: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelNotificationGroupResponseItem {
|
export interface ModelNotificationGroupResponseItem {
|
||||||
group?: ModelNotificationGroup;
|
group: ModelNotificationGroup;
|
||||||
notifications?: number[];
|
notifications: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelProfile {
|
export interface ModelProfile {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
id?: number;
|
id: number;
|
||||||
login_ip?: string;
|
login_ip: string;
|
||||||
password?: string;
|
password: string;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
username?: string;
|
username: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelProfileForm {
|
export interface ModelProfileForm {
|
||||||
new_password?: string;
|
new_password: string;
|
||||||
new_username?: string;
|
new_username: string;
|
||||||
original_password?: string;
|
original_password: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelRule {
|
export interface ModelRule {
|
||||||
/** 覆盖范围 RuleCoverAll/IgnoreAll */
|
/** 覆盖范围 RuleCoverAll/IgnoreAll */
|
||||||
cover?: number;
|
cover: number;
|
||||||
/** 流量统计周期 */
|
/** 流量统计周期 */
|
||||||
cycle_interval?: number;
|
cycle_interval?: number;
|
||||||
/** 流量统计的开始时间 */
|
/** 流量统计的开始时间 */
|
||||||
@@ -438,7 +438,7 @@ export interface ModelRule {
|
|||||||
* net_all_speed、transfer_in、transfer_out、transfer_all、offline
|
* net_all_speed、transfer_in、transfer_out、transfer_all、offline
|
||||||
* transfer_in_cycle、transfer_out_cycle、transfer_all_cycle
|
* transfer_in_cycle、transfer_out_cycle、transfer_all_cycle
|
||||||
*/
|
*/
|
||||||
type?: string;
|
type: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelSensorTemperature {
|
export interface ModelSensorTemperature {
|
||||||
@@ -447,27 +447,27 @@ export interface ModelSensorTemperature {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServer {
|
export interface ModelServer {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
/** DDNS配置 */
|
/** DDNS配置 */
|
||||||
ddns_profiles?: number[];
|
ddns_profiles?: number[];
|
||||||
/** 展示排序,越大越靠前 */
|
/** 展示排序,越大越靠前 */
|
||||||
display_index?: number;
|
display_index: number;
|
||||||
/** 启用DDNS */
|
/** 启用DDNS */
|
||||||
enable_ddns?: boolean;
|
enable_ddns: boolean;
|
||||||
geoip?: ModelGeoIP;
|
geoip: ModelGeoIP;
|
||||||
/** 对游客隐藏 */
|
/** 对游客隐藏 */
|
||||||
hide_for_guest?: boolean;
|
hide_for_guest: boolean;
|
||||||
host?: ModelHost;
|
host: ModelHost;
|
||||||
id?: number;
|
id: number;
|
||||||
last_active?: string;
|
last_active: string;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 管理员可见备注 */
|
/** 管理员可见备注 */
|
||||||
note?: string;
|
note: string;
|
||||||
/** 公开备注 */
|
/** 公开备注 */
|
||||||
public_note?: string;
|
public_note: string;
|
||||||
state?: ModelHostState;
|
state: ModelHostState;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
uuid?: string;
|
uuid: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServerForm {
|
export interface ModelServerForm {
|
||||||
@@ -477,12 +477,12 @@ export interface ModelServerForm {
|
|||||||
* 展示排序,越大越靠前
|
* 展示排序,越大越靠前
|
||||||
* @default 0
|
* @default 0
|
||||||
*/
|
*/
|
||||||
display_index?: number;
|
display_index: number;
|
||||||
/** 启用DDNS */
|
/** 启用DDNS */
|
||||||
enable_ddns?: boolean;
|
enable_ddns?: boolean;
|
||||||
/** 对游客隐藏 */
|
/** 对游客隐藏 */
|
||||||
hide_for_guest?: boolean;
|
hide_for_guest?: boolean;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 管理员可见备注 */
|
/** 管理员可见备注 */
|
||||||
note?: string;
|
note?: string;
|
||||||
/** 公开备注 */
|
/** 公开备注 */
|
||||||
@@ -490,190 +490,190 @@ export interface ModelServerForm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServerGroup {
|
export interface ModelServerGroup {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
id?: number;
|
id: number;
|
||||||
name?: string;
|
name: string;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServerGroupForm {
|
export interface ModelServerGroupForm {
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
servers?: number[];
|
servers: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServerGroupResponseItem {
|
export interface ModelServerGroupResponseItem {
|
||||||
group?: ModelServerGroup;
|
group: ModelServerGroup;
|
||||||
servers?: number[];
|
servers: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelService {
|
export interface ModelService {
|
||||||
cover?: number;
|
cover: number;
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
duration?: number;
|
duration: number;
|
||||||
enable_show_in_service?: boolean;
|
enable_show_in_service: boolean;
|
||||||
enable_trigger_task?: boolean;
|
enable_trigger_task: boolean;
|
||||||
/** 失败时执行的触发任务id */
|
/** 失败时执行的触发任务id */
|
||||||
fail_trigger_tasks?: number[];
|
fail_trigger_tasks: number[];
|
||||||
id?: number;
|
id: number;
|
||||||
latency_notify?: boolean;
|
latency_notify: boolean;
|
||||||
max_latency?: number;
|
max_latency: number;
|
||||||
min_latency?: number;
|
min_latency: number;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 当前服务监控所属的通知组 ID */
|
/** 当前服务监控所属的通知组 ID */
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
notify?: boolean;
|
notify: boolean;
|
||||||
/** 恢复时执行的触发任务id */
|
/** 恢复时执行的触发任务id */
|
||||||
recover_trigger_tasks?: number[];
|
recover_trigger_tasks: number[];
|
||||||
skip_servers?: Record<string, boolean>;
|
skip_servers: Record<string, boolean>;
|
||||||
target?: string;
|
target: string;
|
||||||
type?: number;
|
type: number;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServiceForm {
|
export interface ModelServiceForm {
|
||||||
cover?: number;
|
cover: number;
|
||||||
duration?: number;
|
duration: number;
|
||||||
enable_show_in_service?: boolean;
|
enable_show_in_service?: boolean;
|
||||||
enable_trigger_task?: boolean;
|
enable_trigger_task?: boolean;
|
||||||
fail_trigger_tasks?: number[];
|
fail_trigger_tasks: number[];
|
||||||
latency_notify?: boolean;
|
latency_notify?: boolean;
|
||||||
/** @default 0 */
|
/** @default 0 */
|
||||||
max_latency?: number;
|
max_latency: number;
|
||||||
/** @default 0 */
|
/** @default 0 */
|
||||||
min_latency?: number;
|
min_latency: number;
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
name?: string;
|
name: string;
|
||||||
notification_group_id?: number;
|
notification_group_id: number;
|
||||||
notify?: boolean;
|
notify?: boolean;
|
||||||
recover_trigger_tasks?: number[];
|
recover_trigger_tasks: number[];
|
||||||
skip_servers?: Record<string, boolean>;
|
skip_servers: Record<string, boolean>;
|
||||||
target?: string;
|
target: string;
|
||||||
type?: number;
|
type: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServiceInfos {
|
export interface ModelServiceInfos {
|
||||||
avg_delay?: number[];
|
avg_delay: number[];
|
||||||
created_at?: number[];
|
created_at: number[];
|
||||||
monitor_id?: number;
|
monitor_id: number;
|
||||||
monitor_name?: string;
|
monitor_name: string;
|
||||||
server_id?: number;
|
server_id: number;
|
||||||
server_name?: string;
|
server_name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServiceResponse {
|
export interface ModelServiceResponse {
|
||||||
cycle_transfer_stats?: Record<string, ModelCycleTransferStats>;
|
cycle_transfer_stats: Record<string, ModelCycleTransferStats>;
|
||||||
services?: Record<string, ModelServiceResponseItem>;
|
services: Record<string, ModelServiceResponseItem>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelServiceResponseItem {
|
export interface ModelServiceResponseItem {
|
||||||
current_down?: number;
|
current_down: number;
|
||||||
current_up?: number;
|
current_up: number;
|
||||||
delay?: number[];
|
delay: number[];
|
||||||
down?: number[];
|
down: number[];
|
||||||
service_name?: string;
|
service_name: string;
|
||||||
total_down?: number;
|
total_down: number;
|
||||||
total_up?: number;
|
total_up: number;
|
||||||
up?: number[];
|
up: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelSettingForm {
|
export interface ModelSettingForm {
|
||||||
cover?: number;
|
cover: number;
|
||||||
custom_code?: string;
|
custom_code?: string;
|
||||||
custom_code_dashboard?: string;
|
custom_code_dashboard?: string;
|
||||||
custom_nameservers?: string;
|
dns_servers?: string;
|
||||||
enable_ip_change_notification?: boolean;
|
enable_ip_change_notification?: boolean;
|
||||||
enable_plain_ip_in_notification?: boolean;
|
enable_plain_ip_in_notification?: boolean;
|
||||||
ignored_ip_notification?: string;
|
ignored_ip_notification?: string;
|
||||||
install_host?: string;
|
install_host?: string;
|
||||||
/** IP变更提醒的通知组 */
|
/** IP变更提醒的通知组 */
|
||||||
ip_change_notification_group_id?: number;
|
ip_change_notification_group_id: number;
|
||||||
/** @minLength 2 */
|
/** @minLength 2 */
|
||||||
language?: string;
|
language: string;
|
||||||
/** 真实IP */
|
/** 真实IP */
|
||||||
real_ip_header?: string;
|
real_ip_header?: string;
|
||||||
/** @minLength 1 */
|
/** @minLength 1 */
|
||||||
site_name?: string;
|
site_name: string;
|
||||||
tls?: boolean;
|
tls?: boolean;
|
||||||
user_template?: string;
|
user_template?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelSettingResponse {
|
export interface ModelSettingResponse {
|
||||||
admin_template?: string;
|
admin_template: string;
|
||||||
agent_secret_key?: string;
|
agent_secret_key: string;
|
||||||
avg_ping_count?: number;
|
avg_ping_count: number;
|
||||||
/** 覆盖范围(0:提醒未被 IgnoredIPNotification 包含的所有服务器; 1:仅提醒被 IgnoredIPNotification 包含的服务器;) */
|
/** 覆盖范围(0:提醒未被 IgnoredIPNotification 包含的所有服务器; 1:仅提醒被 IgnoredIPNotification 包含的服务器;) */
|
||||||
cover?: number;
|
cover: number;
|
||||||
custom_code?: string;
|
custom_code: string;
|
||||||
custom_code_dashboard?: string;
|
custom_code_dashboard: string;
|
||||||
/** debug模式开关 */
|
/** debug模式开关 */
|
||||||
debug?: boolean;
|
debug: boolean;
|
||||||
dns_servers?: string;
|
dns_servers: string;
|
||||||
/** IP变更提醒 */
|
/** IP变更提醒 */
|
||||||
enable_ip_change_notification?: boolean;
|
enable_ip_change_notification: boolean;
|
||||||
/** 通知信息IP不打码 */
|
/** 通知信息IP不打码 */
|
||||||
enable_plain_ip_in_notification?: boolean;
|
enable_plain_ip_in_notification: boolean;
|
||||||
frontend_templates?: ModelFrontendTemplate[];
|
frontend_templates: ModelFrontendTemplate[];
|
||||||
/** 特定服务器IP(多个服务器用逗号分隔) */
|
/** 特定服务器IP(多个服务器用逗号分隔) */
|
||||||
ignored_ip_notification?: string;
|
ignored_ip_notification: string;
|
||||||
/** [ServerID] -> bool(值为true代表当前ServerID在特定服务器列表内) */
|
/** [ServerID] -> bool(值为true代表当前ServerID在特定服务器列表内) */
|
||||||
ignored_ip_notification_server_ids?: Record<string, boolean>;
|
ignored_ip_notification_server_ids: Record<string, boolean>;
|
||||||
install_host?: string;
|
install_host: string;
|
||||||
ip_change_notification_group_id?: number;
|
ip_change_notification_group_id: number;
|
||||||
jwt_secret_key?: string;
|
jwt_secret_key: string;
|
||||||
/** 系统语言,默认 zh_CN */
|
/** 系统语言,默认 zh_CN */
|
||||||
language?: string;
|
language: string;
|
||||||
listen_host?: string;
|
listen_host: string;
|
||||||
listen_port?: number;
|
listen_port: number;
|
||||||
/** 时区,默认为 Asia/Shanghai */
|
/** 时区,默认为 Asia/Shanghai */
|
||||||
location?: string;
|
location: string;
|
||||||
/** 真实IP */
|
/** 真实IP */
|
||||||
real_ip_header?: string;
|
real_ip_header: string;
|
||||||
site_name?: string;
|
site_name: string;
|
||||||
tls?: boolean;
|
tls: boolean;
|
||||||
user_template?: string;
|
user_template: string;
|
||||||
version?: string;
|
version: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelStreamServer {
|
export interface ModelStreamServer {
|
||||||
country_code?: string;
|
country_code: string;
|
||||||
/** 展示排序,越大越靠前 */
|
/** 展示排序,越大越靠前 */
|
||||||
display_index?: number;
|
display_index: number;
|
||||||
host?: ModelHost;
|
host: ModelHost;
|
||||||
id?: number;
|
id: number;
|
||||||
last_active?: string;
|
last_active: string;
|
||||||
name?: string;
|
name: string;
|
||||||
/** 公开备注,只第一个数据包有值 */
|
/** 公开备注,只第一个数据包有值 */
|
||||||
public_note?: string;
|
public_note: string;
|
||||||
state?: ModelHostState;
|
state: ModelHostState;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelStreamServerData {
|
export interface ModelStreamServerData {
|
||||||
now?: number;
|
now: number;
|
||||||
servers?: ModelStreamServer[];
|
servers: ModelStreamServer[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelTerminalForm {
|
export interface ModelTerminalForm {
|
||||||
protocol?: string;
|
protocol: string;
|
||||||
server_id?: number;
|
server_id: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelUser {
|
export interface ModelUser {
|
||||||
created_at?: string;
|
created_at: string;
|
||||||
id?: number;
|
id: number;
|
||||||
password?: string;
|
password: string;
|
||||||
updated_at?: string;
|
updated_at: string;
|
||||||
username?: string;
|
username: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelUserForm {
|
export interface ModelUserForm {
|
||||||
password?: string;
|
password: string;
|
||||||
username?: string;
|
username: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ModelWAFApiMock {
|
export interface ModelWAFApiMock {
|
||||||
count?: number;
|
count: number;
|
||||||
ip?: string;
|
ip: string;
|
||||||
last_block_reason?: number;
|
last_block_reason: number;
|
||||||
last_block_timestamp?: number;
|
last_block_timestamp: number;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user