import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { request as invoke } from '../../utils/request'; import { Save, AlertTriangle, Shield, ShieldCheck } from 'lucide-react'; import { showToast } from '../common/ToastContainer'; interface IpBlacklistConfig { enabled: boolean; block_message: string; } interface IpWhitelistConfig { enabled: boolean; whitelist_priority: boolean; } interface SecurityMonitorConfig { blacklist: IpBlacklistConfig; whitelist: IpWhitelistConfig; } export const SecurityConfig: React.FC = () => { const { t } = useTranslation(); const [config, setConfig] = useState(null); const [loading, setLoading] = useState(false); const [saving, setSaving] = useState(false); useEffect(() => { loadConfig(); }, []); const loadConfig = async () => { setLoading(true); try { const data = await invoke('get_security_config'); setConfig(data); } catch (e) { console.error('Failed to load security config', e); showToast(t('security.config.load_error'), 'error'); } finally { setLoading(false); } }; const handleSave = async () => { if (!config) return; setSaving(true); try { await invoke('update_security_config', { config }); showToast(t('security.config.save_success'), 'success'); } catch (e) { console.error('Failed to save security config', e); showToast(t('security.config.save_error'), 'error'); } finally { setSaving(false); } }; if (loading) { return
; } if (!config) { return
{t('security.config.load_error')}
; } return (

{t('security.config.title')}

{/* Blacklist Settings */}

{t('security.config.blacklist_title')}

{t('security.config.blacklist_desc')}

setConfig({ ...config, blacklist: { ...config.blacklist, block_message: e.target.value } })} />
{/* Whitelist Settings */}

{t('security.config.whitelist_title')}

{t('security.config.whitelist_desc')}

{t('security.config.whitelist_warning')}
); };