diff --git a/backend/bin/calypso-api b/backend/bin/calypso-api index 1b1ade3..fe02de6 100755 Binary files a/backend/bin/calypso-api and b/backend/bin/calypso-api differ 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 + + + +
+
+
+
+
+
+ ) +} +