import { Input } from '@heroui/input' import { Switch } from '@heroui/switch' import { useRequest } from 'ahooks' import { useEffect } from 'react' import { Controller, useForm } from 'react-hook-form' import toast from 'react-hot-toast' import SaveButtons from '@/components/button/save_buttons' import PageLoading from '@/components/page_loading' import WebUIManager from '@/controllers/webui_manager' const ServerConfigCard = () => { const { data: configData, loading: configLoading, error: configError, refreshAsync: refreshConfig } = useRequest(WebUIManager.getWebUIConfig) const { control, handleSubmit: handleConfigSubmit, formState: { isSubmitting }, setValue: setConfigValue } = useForm<{ host: string port: number loginRate: number disableWebUI: boolean disableNonLANAccess: boolean }>({ defaultValues: { host: '0.0.0.0', port: 6099, loginRate: 10, disableWebUI: false, disableNonLANAccess: false } }) const reset = () => { if (configData) { setConfigValue('host', configData.host) setConfigValue('port', configData.port) setConfigValue('loginRate', configData.loginRate) setConfigValue('disableWebUI', configData.disableWebUI) setConfigValue('disableNonLANAccess', configData.disableNonLANAccess) } } const onSubmit = handleConfigSubmit(async (data) => { try { await WebUIManager.updateWebUIConfig(data) toast.success('保存成功') } catch (error) { const msg = (error as Error).message toast.error(`保存失败: ${msg}`) } }) const onRefresh = async () => { try { await refreshConfig() toast.success('刷新成功') } catch (error) { const msg = (error as Error).message toast.error(`刷新失败: ${msg}`) } } useEffect(() => { reset() }, [configData]) if (configLoading) return return ( <> 服务器配置 - NapCat WebUI
服务器配置
( )} /> ( field.onChange(parseInt(e.target.value) || 0)} /> )} /> ( field.onChange(parseInt(e.target.value) || 0)} /> )} />
安全配置
(
禁用WebUI 启用后将完全禁用WebUI服务,需要重启生效
)} /> (
禁用非局域网访问 启用后只允许局域网内的设备访问WebUI,提高安全性
)} />
) } export default ServerConfigCard