From 0c8a9efecc923796a67300d1026ccb3461406cf6 Mon Sep 17 00:00:00 2001 From: Warp Agent Date: Sun, 4 Jan 2026 14:11:38 +0700 Subject: [PATCH] add shares av system --- backend/bin/calypso-api | Bin 17168662 -> 17168662 bytes docs/{ => on-progress}/ADMIN-CREDENTIALS.md | 0 .../BACKEND-FOUNDATION-COMPLETE.md | 0 docs/{ => on-progress}/BUGFIX-DISK-PARSING.md | 0 docs/{ => on-progress}/BUGFIX-PERMISSIONS.md | 0 .../DATABASE-OPTIMIZATION-COMPLETE.md | 0 docs/{ => on-progress}/DATASET-CACHE-FIX.md | 0 .../ENHANCED-MONITORING-COMPLETE.md | 0 .../FRONTEND-READY-TO-TEST.md | 0 docs/{ => on-progress}/FRONTEND-RUNNING.md | 0 .../FRONTEND-SETUP-COMPLETE.md | 0 .../{ => on-progress}/FRONTEND-TEST-STATUS.md | 0 .../FRONTEND-TESTING-GUIDE.md | 0 .../IMPLEMENTATION-SUMMARY.md | 0 .../INTEGRATION-TESTS-COMPLETE.md | 0 .../MONITORING-TEST-RESULTS.md | 0 docs/{ => on-progress}/PHASE-C-COMPLETE.md | 0 docs/{ => on-progress}/PHASE-C-PROGRESS.md | 0 docs/{ => on-progress}/PHASE-C-STATUS.md | 0 docs/{ => on-progress}/PHASE-D-PLAN.md | 0 docs/{ => on-progress}/PHASE-E-PLAN.md | 0 docs/{ => on-progress}/PHASE-E-PROGRESS.md | 0 docs/{ => on-progress}/PHASE-E-START.md | 0 .../PHASE-E-TAPE-COMPLETE.md | 0 docs/{ => on-progress}/QUICK-START-TESTING.md | 0 docs/{ => on-progress}/QUICK-TEST-FRONTEND.md | 0 docs/{ => on-progress}/REACT-UPDATE-REPORT.md | 0 .../RESPONSE-CACHING-COMPLETE.md | 0 .../SECURITY-HARDENING-COMPLETE.md | 0 .../SECURITY-TEST-RESULTS.md | 0 docs/{ => on-progress}/SYSTEMD-SERVICES.md | 0 docs/{ => on-progress}/TESTING-GUIDE.md | 0 docs/{ => on-progress}/UNIT-TESTS-COMPLETE.md | 0 .../VTL-ENDPOINTS-VERIFICATION.md | 0 docs/{ => on-progress}/VTL-FINAL-FIX.md | 0 .../VTL-IMPLEMENTATION-COMPLETE.md | 0 docs/{ => on-progress}/VTL-QUICK-FIX.md | 0 docs/{ => on-progress}/VTL-TESTING-GUIDE.md | 0 docs/{ => on-progress}/VTL-TESTING-RESULTS.md | 0 .../WEBSOCKET-PROXY-CONFIG.md | 0 .../ZFS-INSTALLATION-SUCCESS.md | 0 .../bacula-vtl-troubleshooting.md | 0 docs/{ => on-progress}/healthcheck-script.md | 0 docs/{ => on-progress}/nfs-install-report.md | 0 .../{ => on-progress}/pre-reboot-checklist.md | 0 docs/{ => on-progress}/services.md | 0 frontend/src/App.tsx | 2 + frontend/src/components/Layout.tsx | 4 +- frontend/src/pages/ShareShield.tsx | 400 ++++++++++++++++++ 49 files changed, 405 insertions(+), 1 deletion(-) rename docs/{ => on-progress}/ADMIN-CREDENTIALS.md (100%) rename docs/{ => on-progress}/BACKEND-FOUNDATION-COMPLETE.md (100%) rename docs/{ => on-progress}/BUGFIX-DISK-PARSING.md (100%) rename docs/{ => on-progress}/BUGFIX-PERMISSIONS.md (100%) rename docs/{ => on-progress}/DATABASE-OPTIMIZATION-COMPLETE.md (100%) rename docs/{ => on-progress}/DATASET-CACHE-FIX.md (100%) rename docs/{ => on-progress}/ENHANCED-MONITORING-COMPLETE.md (100%) rename docs/{ => on-progress}/FRONTEND-READY-TO-TEST.md (100%) rename docs/{ => on-progress}/FRONTEND-RUNNING.md (100%) rename docs/{ => on-progress}/FRONTEND-SETUP-COMPLETE.md (100%) rename docs/{ => on-progress}/FRONTEND-TEST-STATUS.md (100%) rename docs/{ => on-progress}/FRONTEND-TESTING-GUIDE.md (100%) rename docs/{ => on-progress}/IMPLEMENTATION-SUMMARY.md (100%) rename docs/{ => on-progress}/INTEGRATION-TESTS-COMPLETE.md (100%) rename docs/{ => on-progress}/MONITORING-TEST-RESULTS.md (100%) rename docs/{ => on-progress}/PHASE-C-COMPLETE.md (100%) rename docs/{ => on-progress}/PHASE-C-PROGRESS.md (100%) rename docs/{ => on-progress}/PHASE-C-STATUS.md (100%) rename docs/{ => on-progress}/PHASE-D-PLAN.md (100%) rename docs/{ => on-progress}/PHASE-E-PLAN.md (100%) rename docs/{ => on-progress}/PHASE-E-PROGRESS.md (100%) rename docs/{ => on-progress}/PHASE-E-START.md (100%) rename docs/{ => on-progress}/PHASE-E-TAPE-COMPLETE.md (100%) rename docs/{ => on-progress}/QUICK-START-TESTING.md (100%) rename docs/{ => on-progress}/QUICK-TEST-FRONTEND.md (100%) rename docs/{ => on-progress}/REACT-UPDATE-REPORT.md (100%) rename docs/{ => on-progress}/RESPONSE-CACHING-COMPLETE.md (100%) rename docs/{ => on-progress}/SECURITY-HARDENING-COMPLETE.md (100%) rename docs/{ => on-progress}/SECURITY-TEST-RESULTS.md (100%) rename docs/{ => on-progress}/SYSTEMD-SERVICES.md (100%) rename docs/{ => on-progress}/TESTING-GUIDE.md (100%) rename docs/{ => on-progress}/UNIT-TESTS-COMPLETE.md (100%) rename docs/{ => on-progress}/VTL-ENDPOINTS-VERIFICATION.md (100%) rename docs/{ => on-progress}/VTL-FINAL-FIX.md (100%) rename docs/{ => on-progress}/VTL-IMPLEMENTATION-COMPLETE.md (100%) rename docs/{ => on-progress}/VTL-QUICK-FIX.md (100%) rename docs/{ => on-progress}/VTL-TESTING-GUIDE.md (100%) rename docs/{ => on-progress}/VTL-TESTING-RESULTS.md (100%) rename docs/{ => on-progress}/WEBSOCKET-PROXY-CONFIG.md (100%) rename docs/{ => on-progress}/ZFS-INSTALLATION-SUCCESS.md (100%) rename docs/{ => on-progress}/bacula-vtl-troubleshooting.md (100%) rename docs/{ => on-progress}/healthcheck-script.md (100%) rename docs/{ => on-progress}/nfs-install-report.md (100%) rename docs/{ => on-progress}/pre-reboot-checklist.md (100%) rename docs/{ => on-progress}/services.md (100%) create mode 100644 frontend/src/pages/ShareShield.tsx diff --git a/backend/bin/calypso-api b/backend/bin/calypso-api index 1b1ade3fef407f7b697e71b82ee9a6d62e053edd..fe02de61a56eb83604ea7ea537c7d13991881695 100755 GIT binary patch delta 1414 zcmciA)mxJR7{=it7+4sn*qsRb7K{xOR2awrbs*UL;1i~sATSgY6Ga6@1q-{ov9Y^b z><;X1{c+}B;KBVIyw~-dJlC7`KD$H~Hd>rUiq-@ly`L^%kU|FU(kO$nDD0L)c~n3}IHM9OqY7M571dB3HBb|^P#bkn7xhpd4bTvc z&=^h76wTm@=5T{M9WaF&K++7>`s;z(k~B5+-8`(vg9wn1)PD#|+Fw7P2u5voQyAF%LPI zj|EtWMOcg_Sc+v>julvmRalKRSc`SJ`O)k1T>j5~+3e?@YD`;?4cLfH*o-aMif!1A zT?rvPT~|!;|$K?9M0ncF5(g{;|i|g8m{98 z@^KTla2t1U7x!=<5AYC=@EA|<6wmM+FHnG&c!k$^gSU8x_xOO1_=L~+g0J|7@A!eA e_=Vs2Gs&1{mx014QW*Ay;b50%Oe<=4aKK+=zJ754 delta 1414 zcmciAXfGHs_`?Vd(5e!4773cVlCBH`pE6 z-TLL7e}U)R&-3D*bKgAYX1sS7%D^VOc$h2J8SQ8r8WrYDj(6ysk;?Y5c4xd|k$o@nzcp*Ou zpdbpt8--B>MNtgJk#}1HB~c2c;e#?Li*oQqc~n3}R6=D`K~+>kb<{vj)Ix34L0!~C zeKbHrG=c?!849l?sE3pczu?B0g4(l^>EE}?X|4)Bz`twWGr)|JSY{F)2!B%X;cI-eVc48NH zV-NOXANC^)2XGLFa2Q8$6vuEJCvXy{a2jWD7Uyst7jO}ma2Z!{71wYbH;|1S+{7*1 z#vR16wJj5eB#uGfnGd#x&;WggiE#BchKHwuh;WNJAE56}7e&8p5;Wz%I Z>(e|YBQNshg=b!Pd1UF+@_QWW^B0ZYeMbNQ diff --git a/docs/ADMIN-CREDENTIALS.md b/docs/on-progress/ADMIN-CREDENTIALS.md similarity index 100% rename from docs/ADMIN-CREDENTIALS.md rename to docs/on-progress/ADMIN-CREDENTIALS.md diff --git a/docs/BACKEND-FOUNDATION-COMPLETE.md b/docs/on-progress/BACKEND-FOUNDATION-COMPLETE.md similarity index 100% rename from docs/BACKEND-FOUNDATION-COMPLETE.md rename to docs/on-progress/BACKEND-FOUNDATION-COMPLETE.md diff --git a/docs/BUGFIX-DISK-PARSING.md b/docs/on-progress/BUGFIX-DISK-PARSING.md similarity index 100% rename from docs/BUGFIX-DISK-PARSING.md rename to docs/on-progress/BUGFIX-DISK-PARSING.md diff --git a/docs/BUGFIX-PERMISSIONS.md b/docs/on-progress/BUGFIX-PERMISSIONS.md similarity index 100% rename from docs/BUGFIX-PERMISSIONS.md rename to docs/on-progress/BUGFIX-PERMISSIONS.md diff --git a/docs/DATABASE-OPTIMIZATION-COMPLETE.md b/docs/on-progress/DATABASE-OPTIMIZATION-COMPLETE.md similarity index 100% rename from docs/DATABASE-OPTIMIZATION-COMPLETE.md rename to docs/on-progress/DATABASE-OPTIMIZATION-COMPLETE.md diff --git a/docs/DATASET-CACHE-FIX.md b/docs/on-progress/DATASET-CACHE-FIX.md similarity index 100% rename from docs/DATASET-CACHE-FIX.md rename to docs/on-progress/DATASET-CACHE-FIX.md diff --git a/docs/ENHANCED-MONITORING-COMPLETE.md b/docs/on-progress/ENHANCED-MONITORING-COMPLETE.md similarity index 100% rename from docs/ENHANCED-MONITORING-COMPLETE.md rename to docs/on-progress/ENHANCED-MONITORING-COMPLETE.md diff --git a/docs/FRONTEND-READY-TO-TEST.md b/docs/on-progress/FRONTEND-READY-TO-TEST.md similarity index 100% rename from docs/FRONTEND-READY-TO-TEST.md rename to docs/on-progress/FRONTEND-READY-TO-TEST.md diff --git a/docs/FRONTEND-RUNNING.md b/docs/on-progress/FRONTEND-RUNNING.md similarity index 100% rename from docs/FRONTEND-RUNNING.md rename to docs/on-progress/FRONTEND-RUNNING.md diff --git a/docs/FRONTEND-SETUP-COMPLETE.md b/docs/on-progress/FRONTEND-SETUP-COMPLETE.md similarity index 100% rename from docs/FRONTEND-SETUP-COMPLETE.md rename to docs/on-progress/FRONTEND-SETUP-COMPLETE.md diff --git a/docs/FRONTEND-TEST-STATUS.md b/docs/on-progress/FRONTEND-TEST-STATUS.md similarity index 100% rename from docs/FRONTEND-TEST-STATUS.md rename to docs/on-progress/FRONTEND-TEST-STATUS.md diff --git a/docs/FRONTEND-TESTING-GUIDE.md b/docs/on-progress/FRONTEND-TESTING-GUIDE.md similarity index 100% rename from docs/FRONTEND-TESTING-GUIDE.md rename to docs/on-progress/FRONTEND-TESTING-GUIDE.md diff --git a/docs/IMPLEMENTATION-SUMMARY.md b/docs/on-progress/IMPLEMENTATION-SUMMARY.md similarity index 100% rename from docs/IMPLEMENTATION-SUMMARY.md rename to docs/on-progress/IMPLEMENTATION-SUMMARY.md diff --git a/docs/INTEGRATION-TESTS-COMPLETE.md b/docs/on-progress/INTEGRATION-TESTS-COMPLETE.md similarity index 100% rename from docs/INTEGRATION-TESTS-COMPLETE.md rename to docs/on-progress/INTEGRATION-TESTS-COMPLETE.md diff --git a/docs/MONITORING-TEST-RESULTS.md b/docs/on-progress/MONITORING-TEST-RESULTS.md similarity index 100% rename from docs/MONITORING-TEST-RESULTS.md rename to docs/on-progress/MONITORING-TEST-RESULTS.md diff --git a/docs/PHASE-C-COMPLETE.md b/docs/on-progress/PHASE-C-COMPLETE.md similarity index 100% rename from docs/PHASE-C-COMPLETE.md rename to docs/on-progress/PHASE-C-COMPLETE.md diff --git a/docs/PHASE-C-PROGRESS.md b/docs/on-progress/PHASE-C-PROGRESS.md similarity index 100% rename from docs/PHASE-C-PROGRESS.md rename to docs/on-progress/PHASE-C-PROGRESS.md diff --git a/docs/PHASE-C-STATUS.md b/docs/on-progress/PHASE-C-STATUS.md similarity index 100% rename from docs/PHASE-C-STATUS.md rename to docs/on-progress/PHASE-C-STATUS.md diff --git a/docs/PHASE-D-PLAN.md b/docs/on-progress/PHASE-D-PLAN.md similarity index 100% rename from docs/PHASE-D-PLAN.md rename to docs/on-progress/PHASE-D-PLAN.md diff --git a/docs/PHASE-E-PLAN.md b/docs/on-progress/PHASE-E-PLAN.md similarity index 100% rename from docs/PHASE-E-PLAN.md rename to docs/on-progress/PHASE-E-PLAN.md diff --git a/docs/PHASE-E-PROGRESS.md b/docs/on-progress/PHASE-E-PROGRESS.md similarity index 100% rename from docs/PHASE-E-PROGRESS.md rename to docs/on-progress/PHASE-E-PROGRESS.md diff --git a/docs/PHASE-E-START.md b/docs/on-progress/PHASE-E-START.md similarity index 100% rename from docs/PHASE-E-START.md rename to docs/on-progress/PHASE-E-START.md diff --git a/docs/PHASE-E-TAPE-COMPLETE.md b/docs/on-progress/PHASE-E-TAPE-COMPLETE.md similarity index 100% rename from docs/PHASE-E-TAPE-COMPLETE.md rename to docs/on-progress/PHASE-E-TAPE-COMPLETE.md diff --git a/docs/QUICK-START-TESTING.md b/docs/on-progress/QUICK-START-TESTING.md similarity index 100% rename from docs/QUICK-START-TESTING.md rename to docs/on-progress/QUICK-START-TESTING.md diff --git a/docs/QUICK-TEST-FRONTEND.md b/docs/on-progress/QUICK-TEST-FRONTEND.md similarity index 100% rename from docs/QUICK-TEST-FRONTEND.md rename to docs/on-progress/QUICK-TEST-FRONTEND.md diff --git a/docs/REACT-UPDATE-REPORT.md b/docs/on-progress/REACT-UPDATE-REPORT.md similarity index 100% rename from docs/REACT-UPDATE-REPORT.md rename to docs/on-progress/REACT-UPDATE-REPORT.md diff --git a/docs/RESPONSE-CACHING-COMPLETE.md b/docs/on-progress/RESPONSE-CACHING-COMPLETE.md similarity index 100% rename from docs/RESPONSE-CACHING-COMPLETE.md rename to docs/on-progress/RESPONSE-CACHING-COMPLETE.md diff --git a/docs/SECURITY-HARDENING-COMPLETE.md b/docs/on-progress/SECURITY-HARDENING-COMPLETE.md similarity index 100% rename from docs/SECURITY-HARDENING-COMPLETE.md rename to docs/on-progress/SECURITY-HARDENING-COMPLETE.md diff --git a/docs/SECURITY-TEST-RESULTS.md b/docs/on-progress/SECURITY-TEST-RESULTS.md similarity index 100% rename from docs/SECURITY-TEST-RESULTS.md rename to docs/on-progress/SECURITY-TEST-RESULTS.md diff --git a/docs/SYSTEMD-SERVICES.md b/docs/on-progress/SYSTEMD-SERVICES.md similarity index 100% rename from docs/SYSTEMD-SERVICES.md rename to docs/on-progress/SYSTEMD-SERVICES.md diff --git a/docs/TESTING-GUIDE.md b/docs/on-progress/TESTING-GUIDE.md similarity index 100% rename from docs/TESTING-GUIDE.md rename to docs/on-progress/TESTING-GUIDE.md diff --git a/docs/UNIT-TESTS-COMPLETE.md b/docs/on-progress/UNIT-TESTS-COMPLETE.md similarity index 100% rename from docs/UNIT-TESTS-COMPLETE.md rename to docs/on-progress/UNIT-TESTS-COMPLETE.md diff --git a/docs/VTL-ENDPOINTS-VERIFICATION.md b/docs/on-progress/VTL-ENDPOINTS-VERIFICATION.md similarity index 100% rename from docs/VTL-ENDPOINTS-VERIFICATION.md rename to docs/on-progress/VTL-ENDPOINTS-VERIFICATION.md diff --git a/docs/VTL-FINAL-FIX.md b/docs/on-progress/VTL-FINAL-FIX.md similarity index 100% rename from docs/VTL-FINAL-FIX.md rename to docs/on-progress/VTL-FINAL-FIX.md diff --git a/docs/VTL-IMPLEMENTATION-COMPLETE.md b/docs/on-progress/VTL-IMPLEMENTATION-COMPLETE.md similarity index 100% rename from docs/VTL-IMPLEMENTATION-COMPLETE.md rename to docs/on-progress/VTL-IMPLEMENTATION-COMPLETE.md diff --git a/docs/VTL-QUICK-FIX.md b/docs/on-progress/VTL-QUICK-FIX.md similarity index 100% rename from docs/VTL-QUICK-FIX.md rename to docs/on-progress/VTL-QUICK-FIX.md diff --git a/docs/VTL-TESTING-GUIDE.md b/docs/on-progress/VTL-TESTING-GUIDE.md similarity index 100% rename from docs/VTL-TESTING-GUIDE.md rename to docs/on-progress/VTL-TESTING-GUIDE.md diff --git a/docs/VTL-TESTING-RESULTS.md b/docs/on-progress/VTL-TESTING-RESULTS.md similarity index 100% rename from docs/VTL-TESTING-RESULTS.md rename to docs/on-progress/VTL-TESTING-RESULTS.md diff --git a/docs/WEBSOCKET-PROXY-CONFIG.md b/docs/on-progress/WEBSOCKET-PROXY-CONFIG.md similarity index 100% rename from docs/WEBSOCKET-PROXY-CONFIG.md rename to docs/on-progress/WEBSOCKET-PROXY-CONFIG.md diff --git a/docs/ZFS-INSTALLATION-SUCCESS.md b/docs/on-progress/ZFS-INSTALLATION-SUCCESS.md similarity index 100% rename from docs/ZFS-INSTALLATION-SUCCESS.md rename to docs/on-progress/ZFS-INSTALLATION-SUCCESS.md diff --git a/docs/bacula-vtl-troubleshooting.md b/docs/on-progress/bacula-vtl-troubleshooting.md similarity index 100% rename from docs/bacula-vtl-troubleshooting.md rename to docs/on-progress/bacula-vtl-troubleshooting.md diff --git a/docs/healthcheck-script.md b/docs/on-progress/healthcheck-script.md similarity index 100% rename from docs/healthcheck-script.md rename to docs/on-progress/healthcheck-script.md diff --git a/docs/nfs-install-report.md b/docs/on-progress/nfs-install-report.md similarity index 100% rename from docs/nfs-install-report.md rename to docs/on-progress/nfs-install-report.md diff --git a/docs/pre-reboot-checklist.md b/docs/on-progress/pre-reboot-checklist.md similarity index 100% rename from docs/pre-reboot-checklist.md rename to docs/on-progress/pre-reboot-checklist.md diff --git a/docs/services.md b/docs/on-progress/services.md similarity index 100% rename from docs/services.md rename to docs/on-progress/services.md diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c189841..74e553c 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -19,6 +19,7 @@ import ProfilePage from '@/pages/Profile' import MonitoringPage from '@/pages/Monitoring' import ObjectStoragePage from '@/pages/ObjectStorage' import SnapshotReplicationPage from '@/pages/SnapshotReplication' +import ShareShieldPage from '@/pages/ShareShield' import Layout from '@/components/Layout' // Create a client @@ -68,6 +69,7 @@ function App() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index b7fd0d3..3c03f4d 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -15,7 +15,8 @@ import { Share, Activity, Box, - Camera + Camera, + Shield } from 'lucide-react' import { useState, useEffect } from 'react' @@ -55,6 +56,7 @@ export default function Layout() { { name: 'iSCSI Management', href: '/iscsi', icon: Network }, { name: 'Backup Management', href: '/backup', icon: Archive }, { name: 'Terminal Console', href: '/terminal', icon: Terminal }, + { name: 'Share Shield', href: '/share-shield', icon: Shield }, { name: 'Monitoring & Logs', href: '/monitoring', icon: Activity }, { name: 'Alerts', href: '/alerts', icon: Bell }, { name: 'System', href: '/system', icon: Server }, diff --git a/frontend/src/pages/ShareShield.tsx b/frontend/src/pages/ShareShield.tsx new file mode 100644 index 0000000..c124cd0 --- /dev/null +++ b/frontend/src/pages/ShareShield.tsx @@ -0,0 +1,400 @@ +import { useState } from 'react' +import { Link } from 'react-router-dom' +import { ChevronRight, Shield, History, RefreshCw, Database, AlertTriangle, Radar, Bug, Play, Clock, RotateCcw, Trash2, CheckCircle2, MoreVertical, FolderOpen, Plus } from 'lucide-react' + +// Mock data - will be replaced with API calls +const MOCK_QUARANTINE = [ + { + id: '1', + filename: 'invoice_2024.pdf.exe', + path: '/mnt/pool0/users/finance/', + threat: 'Win.Trojan.Agent-1', + threatLevel: 'high', + date: '2024-10-24T10:42:00Z', + }, + { + id: '2', + filename: 'keygen_v2.zip', + path: '/mnt/pool0/public/software/', + threat: 'PUA.Win.Tool.Keygen', + threatLevel: 'medium', + date: '2024-10-22T20:15:00Z', + }, + { + id: '3', + filename: 'script_final.sh', + path: '/root/downloads/', + threat: 'Unix.Malware.Agent', + threatLevel: 'high', + date: '2024-10-20T02:30:00Z', + }, +] + +const MOCK_SCHEDULED_SCANS = [ + { + id: '1', + name: 'Daily Full System', + target: '/', + frequency: 'Every day at 02:00', + lastRun: 'Yesterday 02:00', + status: 'success', + }, + { + id: '2', + name: 'Weekly Pool Scan', + target: '/mnt/pool0', + frequency: 'Sundays at 04:00', + lastRun: '3 days ago', + status: 'success', + }, +] + +export default function ShareShield() { + const [serviceEnabled, setServiceEnabled] = useState(true) + const [scanPath, setScanPath] = useState('/mnt/pool0/data') + const [recursiveScan, setRecursiveScan] = useState(true) + const [scanArchives, setScanArchives] = useState(false) + const [autoRemove, setAutoRemove] = useState(false) + const [selectedQuarantine, setSelectedQuarantine] = useState([]) + + const formatDate = (dateString: string) => { + const date = new Date(dateString) + return date.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: '2-digit', + }) + } + + const getThreatBadgeColor = (level: string) => { + if (level === 'high') { + return 'bg-red-500/10 text-red-400 border-red-500/20' + } + return 'bg-amber-500/10 text-amber-400 border-amber-500/20' + } + + const handleSelectAll = () => { + if (selectedQuarantine.length === MOCK_QUARANTINE.length) { + setSelectedQuarantine([]) + } else { + setSelectedQuarantine(MOCK_QUARANTINE.map((q) => q.id)) + } + } + + const handleQuarantineSelect = (id: string) => { + if (selectedQuarantine.includes(id)) { + setSelectedQuarantine(selectedQuarantine.filter((q) => q !== id)) + } else { + setSelectedQuarantine([...selectedQuarantine, id]) + } + } + + return ( +
+ {/* Header */} +
+
+
+
+ + System + + + + Security + + + Share Shield System +
+
+
+

Share Shield System

+

+ Manage virus definitions, on-demand scans, and quarantine settings for your storage pools. +

+
+
+ + +
+
+
+
+
+ + {/* Scrollable Content */} +
+
+ {/* Top Row: Service Status & Key Stats */} +
+ {/* Service Status Card */} +
+
+
+ +
+
+

Share Shield Service

+

+ + Active & Protecting +

+
+
+ +
+ + {/* Stats: Definitions */} +
+
+ Virus Definitions + +
+
+

v26500

+

Updated: 2 hours ago

+
+
+ + {/* Stats: Quarantine */} +
+
+ Quarantined Files + +
+
+
+

12

+ +2 new +
+

Since last reboot

+
+
+
+ + {/* Middle Row: Scanner Configuration & Quarantine Table */} +
+ {/* Left Column: Scanner (1/3 width) */} +
+ {/* Quick Scan Card */} +
+
+

+ + On-Demand Scanner +

+
+
+
+ +
+ setScanPath(e.target.value)} + /> + +
+
+
+ + + +
+
+ + +
+
+
+
+ + {/* Right Column: Quarantine & Active Threats (2/3 width) */} +
+
+
+

+ + Quarantine Manager +

+
+ + +
+
+
+ + + + + + + + + + + + {MOCK_QUARANTINE.map((item) => ( + + + + + + + + ))} + +
+ + FilenameThreat DetectedDateActions
+ handleQuarantineSelect(item.id)} + className="rounded border-border-dark bg-[#233648] text-primary focus:ring-offset-[#111a22] focus:ring-primary size-4" + type="checkbox" + /> + +
+ {item.filename} + {item.path} +
+
+ + {item.threat} + + {formatDate(item.date)} +
+ + +
+
+
+
+ Showing {MOCK_QUARANTINE.length} of 12 quarantined items +
+
+
+
+ + {/* Bottom: Scheduled Tasks & Recent Logs */} +
+
+

Scheduled Scans

+ +
+
+ + + + + + + + + + + + + {MOCK_SCHEDULED_SCANS.map((scan) => ( + + + + + + + + + ))} + +
NameTargetFrequencyLast RunStatusActions
{scan.name}{scan.target}{scan.frequency}{scan.lastRun} + + + Success + + + +
+
+
+
+
+
+ ) +} +