Commit Graph
35 Commits
Author SHA1 Message Date
nessi 6d5dc310df feat: add flow-level firewall rule and policy matching with decision classification and audit mode visualization
Add firewall_rule_matches_flow to check if active rules match traffic flows using protocol/port/IP/direction matching with enable status validation, implement policy_matches_flow to evaluate policy definitions against flows with workload/network endpoint resolution and protocol/port matching, add flow_policy_decision to determine final decision from active rules and policies with audit
2026-07-09 19:47:39 +02:00
nessi b12ac38c6c feat: add active firewall rules display to workload insights with managed rule detection and enable status
Add active_firewall_rules_for_workload helper to fetch live firewall rules from provider with NexaFabric policy comment detection and enable status, implement list_firewall_rules method in ProxmoxProvider to retrieve rules via firewall API endpoint, extend WorkloadInsight schema with active_firewall_rules field, add ActiveRulesList component showing rule type/action/protocol/port with enable status and
2026-07-09 19:42:51 +02:00
nessi 1b81847fc6 feat: add automatic guest network interface firewall enablement during policy apply operations
Add network_firewall_enabled_value helper to parse and inject firewall=1 into Proxmox network interface config strings, implement enable_guest_firewall_interfaces to update VM/LXC config with firewall=1 on all netX interfaces before writing rules, extend workload_config_url to build config endpoint paths for qemu/lxc guests, add interfaces_enabled field to apply_rules response showing which interfaces were
2026-07-09 19:40:31 +02:00
nessi 5302a8bc82 feat: add policy enforcement mode normalization and audit mode protection for firewall apply operations
Add normalized_policy_definition helper to validate and default enforcement_mode to "enforced" or "audit" when creating/updating policies, extend firewall_apply to block live apply when policy is in audit mode with explanatory message, add policy_mode field to all firewall apply response paths, update FirewallPreview UI to show enforcement mode in policy dropdown with version number, display audit mode warning
2026-07-09 15:57:23 +02:00
nessi 571d1513e7 feat: add suspicious traffic detection dashboard widget with sensitive port monitoring and security posture indicator
Add dashboard_suspicious_traffic to detect external connections to sensitive ports (SSH/RDP/SMB/VNC/PostgreSQL/MySQL/Redis) from outside IPAM subnets with severity classification, extend Dashboard type with security_posture/suspicious_traffic/last_syncs fields, implement BarList component for traffic visualization with percentage bars and byte formatting, add security posture card
2026-07-09 15:50:42 +02:00
nessi 32906bca1e feat: add IP-based flow labels with internal/external classification and redesign workload summary sidebar with compact flow visualization
Add flow_ip_label helper to format flow endpoints with IP addresses and internal/external classification based on subnet membership, extend workload_insights response with source_label/destination_label fields showing IP addresses with context, implement endpointText helper to display formatted flow labels in UI, add CompactFlowList component showing top 3 flows with protocol
2026-07-09 15:42:56 +02:00
nessi baa0d24eb4 feat: add network: endpoint resolver, VM.Config.Options privilege requirement, top talkers dashboard widget, and automatic guest firewall enablement
Add network: prefix support in endpoint_values to resolve network names to IPAM subnet CIDRs for policy matching, extend workload_provider_target to accept vmid: prefix and bare workload names as fallback resolution methods, implement dashboard_top_talkers to aggregate traffic flows by workload with interface_traffic fallback when flows unavailable, add
2026-07-09 15:36:42 +02:00
nessi a16b56614c feat: add subnet edit functionality with internal subnet labeling in workload traffic insights
Add SubnetUpdate schema with optional fields for PATCH operations, implement update_subnet endpoint with validation and audit logging, add subnet_label_for_ip helper to match IPs against known subnets using longest prefix matching, update flow_endpoint_label to show "internal (CIDR)" for traffic within known subnets instead of "external", add DNS servers and DHCP toggle to subnet form UI, implement edit
2026-07-09 15:29:36 +02:00
nessi 10e9406510 feat: add workload detail page with traffic visualization, protocol distribution, and flow aggregation
Add WorkloadDetail component with dedicated route for per-workload traffic analysis, implement summarizeTraffic to aggregate flows by 5-tuple with byte/packet totals and IP address collection, add TrafficBars component showing top 5 flows with horizontal bar charts, implement ProtocolChart with color-coded protocol distribution and percentage breakdown, add TrafficTable with scrollable flow list showing
2026-07-09 15:26:15 +02:00
nessi 4ceb4489c5 feat: add AF_PACKET flow collector to agent for real VM traffic visibility with IPv4 TCP/UDP/ICMP flow extraction
Add packet flow collector in agent v0.2.0 using Linux AF_PACKET sockets to capture and aggregate IPv4 TCP/UDP/ICMP flows from VM interfaces (tap/fwln) with configurable window/limit, implement parse_packet_flow to extract 5-tuple from raw Ethernet frames with VLAN tag handling, add selected_flow_interfaces to choose best interface per VM NIC for packet capture, include packet collector
2026-07-09 15:18:35 +02:00
nessi 3bfd77a74a feat: add interface traffic counters as fallback telemetry when conntrack flows unavailable
Add interface_traffic collection in agent to aggregate VM/LXC network counters by vmid/nic with tap/fwln/fwpr/fwbr interface ranking, implement collect_interface_traffic to select best interface per VM NIC and format as flow-like records with rx/tx bytes/packets, add collect_flow_diagnostics to capture conntrack binary path and kernel bridge/netfilter settings for debugging, update workload_insights endpoint
2026-07-09 15:12:31 +02:00
nessi dbd7fc6f95 fix: escape arrow operator in conntrack flow display and remove push trigger from CI workflow
Remove push event trigger from GitHub Actions CI workflow to run only on pull requests, wrap arrow operator in curly braces to prevent JSX parsing issues in conntrack flow source/destination display
2026-07-09 15:05:51 +02:00
nessi fc719800f9 feat: add LoadingOverlay component with contextual busy messages for async operations across cluster sync, firewall preview/apply, IPAM discovery/export, node agent installer, and policy compilation
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 27s
Add LoadingOverlay component with spinner, customizable title/message, and backdrop blur styling, implement busy state tracking with setBusyMessage in Clusters/FirewallPreview/Ipam/Nodes/Policies pages, wrap async operations (cluster test/sync, firewall preview/apply, IPAM discover/export CSV, node agent installer
2026-07-09 15:04:27 +02:00
nessi 8536014666 feat: add agent data detail modal with interface telemetry, conntrack flows, and raw payload viewer
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 30s
Add ScrollText icon button to nodes table to open agent data modal, implement agentFlows/agentInterfaces/agentConntrack helpers to safely extract telemetry from last_payload with type guards, add Modal with status/flows/conntrack summary cards, display interface list with operstate/vmid/rx/tx stats in scrollable container, show top 50 conntrack flows with source/destination/protocol/bytes/packets/state details
2026-07-09 15:02:16 +02:00
nessi 5040ac2f16 feat: change agent installer to use restart instead of enable --now for systemd service activation
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 27s
Replace `systemctl enable --now` with separate `systemctl enable` and `systemctl restart` commands to ensure agent service restarts on reinstall rather than silently failing when service already exists
2026-07-09 14:58:22 +02:00
nessi 926a1b8165 feat: redesign sidebar navigation with grouped sections, improved visual hierarchy, and enhanced active state indicators
Restructure navigation into three logical groups (Operate, Network, Security) with uppercase section labels, move system-related items (Jobs, Audit, Users, Settings) to separate bottom section with border separator, add NF logo badge next to app title in header, extract SidebarLink component with refined styling including left accent bar for active items, update active state to
2026-07-09 14:58:15 +02:00
nessi 714aebfdc0 feat: add /agents/ nginx proxy route and improve agent heartbeat error handling with URL normalization
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 27s
Add /agents/ location block to nginx config to proxy agent heartbeat requests directly to backend API without /api/v1 prefix duplication, implement normalized_api_url helper to detect and fix double /api/v1 suffixes in agent config with automatic /api/v1 appending when missing, enhance heartbeat error logging to include HTTP status codes, response body preview, and resolved API URL for debugging connection
2026-07-09 14:30:11 +02:00
nessi 45baa6ae7a feat: add JWT refresh token support with automatic token renewal and session expiration handling
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 26s
Add /auth/refresh endpoint to issue new access tokens using refresh tokens with token type validation and user activity checks, implement automatic token refresh on 401 responses with single retry logic in frontend API client, add authorizedFetch helper for non-JSON endpoints with refresh support, store both access and refresh tokens in localStorage with clearTokens cleanup helper, add nexafabric.authExpired event
2026-07-09 14:27:46 +02:00
nessi 7818158a9b feat: fix agent heartbeat payload serialization to handle datetime objects
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 29s
Add mode="json" to model_dump() call in agent_heartbeat endpoint to properly serialize datetime fields in AgentHeartbeat payload, preventing serialization errors when storing payload in database
2026-07-09 14:22:44 +02:00
nessi ffc69011c4 feat: add reverse proxy support with X-Forwarded-Host header handling for agent installer URL generation
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 27s
Add external_base_url helper to detect base URL from X-Forwarded-Host and X-Forwarded-Proto headers with fallback to request.base_url, replace hardcoded request.base_url usage in node_agent_install, node_agent_install_info, and public_node_agent_install endpoints to support reverse proxy deployments, update nginx config to pass X-Forwarded-Host header and use $http_host instead of $host for proper hostname forw
2026-07-09 14:21:11 +02:00
nessi e67174a4ae feat: add node agent system with heartbeat collection, installer generation, and traffic flow telemetry
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 28s
Add NodeAgent and TrafficFlow models to track agent status and network flows, implement /agents/heartbeat endpoint to receive interface counters, conntrack flows, firewall status, and nftables ruleset hash from agents, add nexafabric-agent.py Python script to collect host telemetry including VM/LXC interface hints via tap/fwbr regex matching, conntrack flow parsing with protocol/state/byte counters, and pve-firewall status checks,
2026-07-09 14:13:47 +02:00
nessi 88badf1f22 feat: add cluster update/delete endpoints, expand tcp/udp protocol handling, and enhance cluster management UI
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 28s
Add PATCH /clusters/{cluster_id} endpoint with optional token update and audit logging, implement DELETE /clusters/{cluster_id} with cascading deletion of nodes, workloads, networks, subnets, and IP addresses, expand firewall rule generation to split tcp/udp protocol into separate tcp and udp rules for Proxmox compatibility, add ClusterUpdate schema with optional api_token field, include
2026-07-09 14:04:17 +02:00
nessi 1ada59d3c7 docs: document Proxmox write permissions and firewall apply scope, add live apply implementation with rule resolution and provider integration
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 28s
Add minimum write privileges section covering VM.Audit and VM.Config.Network requirements for firewall orchestration, document NexaFabric comment marker approach for safe rule replacement, clarify that only VM/LXC-level rules with concrete workload targets are supported for live apply while security groups remain preview-only, add firewall interface checkbox requirement for enforcement, document
2026-07-09 13:43:08 +02:00
nessi 7fa4bcaad1 feat: add policy deletion, improve dry run handling, and enhance policy designer UX
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 32s
Add DELETE /policies/{policy_id} endpoint with audit logging, improve firewall apply to handle dry run mode without calling provider and track operation success separately from applied status, update Proxmox provider error message to clarify rule-to-VM mapping requirement, add dry run explanation text to FirewallPreview with conditional button labels, enhance Policies page with expanded DataTable columns showing source
2026-07-09 13:32:35 +02:00
nessi b382d4362c feat: add container network filtering, enhance IP address display, and improve workload insights UI
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 29s
Add is_docker_or_container_network helper to detect Docker bridge, Kubernetes CNI, and loopback networks, implement cleanup_discovered_container_networks to remove container bridge IPs from discovered networks during IPAM discovery, add ip_address_payload helper to enrich IP addresses with subnet CIDR and workload details, update ProxmoxProvider to ignore guest interfaces matching common container pref
2026-07-09 13:27:39 +02:00
nessi 701835e9f3 feat: redesign login page with split layout, feature highlights, and improved UX
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 27s
Add two-column layout with left panel showcasing product features including inventory sync, policy audit mode, and preview capabilities with animated decorative elements, redesign right panel with larger form inputs and focus states, remove hardcoded demo credentials to require manual entry, add autocomplete attributes for username and password fields, implement disabled state for submit button when fields are empty, add animations
2026-07-09 13:16:50 +02:00
nessi 0aaaa12ba1 docs: add Proxmox preparation guide and update quick start for setup wizard
Add comprehensive Proxmox integration guide covering API token creation, minimum read permissions, QEMU guest agent setup for IP discovery, LXC IP configuration, cluster sync workflow, firewall requirements, network flow visibility options, and troubleshooting common integration errors. Update quick start section to document setup wizard for fresh installations, remove hardcoded demo credentials, add instructions for res
2026-07-09 13:15:37 +02:00
nessi 150a69b60b feat: add IPAM discovery from Proxmox with IP enrichment, improve workload insights, and enhance DataTable interactivity
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 29s
Add /ipam/discover endpoint to automatically import IP addresses from Proxmox clusters with error tracking and audit logging, implement ensure_discovered_network helper to create "discovered-ipam" network for auto-discovered IPs, add import_discovered_ips function to parse IP interfaces and create subnet/address records with assignment tracking, enhance ProxmoxProvider.enrich_work
2026-07-09 13:14:01 +02:00
nessi 4554b00b73 feat: improve setup wizard UX, add cluster sync error handling, and conditional demo data seeding
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 31s
Add SEED_DEMO_DATA environment variable to control demo data population, enhance setup wizard with welcome screen and theme toggle, add smooth animations for wizard transitions, improve dashboard endpoint to return structured objects for last_syncs and faulty_nodes instead of raw models, implement comprehensive error handling in cluster sync with failed status tracking and audit logging, fix Proxmox provider
2026-07-09 12:57:07 +02:00
nessi 3cd2c0a2f1 feat: add initial setup wizard, workload insights, and policy audit mode
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 29s
Add setup wizard with status tracking via SystemSetting model, implement /setup/status and /setup/complete endpoints to create initial admin user and optional cluster configuration, add workload insights endpoint with traffic analysis and policy matching including audit mode detection, implement enforcement_mode property on Policy model with audit/enforced states, add Modal component for dialogs, create SetupWizard page with multi
2026-07-09 12:47:08 +02:00
nessi a911d36f34 feat: add comprehensive CRUD endpoints, cluster sync improvements, and firewall orchestration
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 30s
Add create endpoints for users, roles, tenants, projects, networks, subnets, and security rules with audit logging, implement commit_or_400 helper for IntegrityError handling with 409 responses, enhance cluster sync to populate nodes, workloads, and networks from provider inventory with last_sync_at tracking, add update/delete operations for IP addresses and policies with version tracking, implement IP
2026-07-09 12:33:36 +02:00
nessi dea27b5459 feat: normalize email login and improve theme handling
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 27s
Normalize email input by stripping whitespace and converting to lowercase in login endpoint, remove EmailStr validation in favor of plain string type, move dark mode class toggle from Layout to App component for better initialization, add theme toggle button to login page, and set dark mode as default theme when no preference is stored
2026-07-09 12:23:28 +02:00
nessi 4fd7e5acbf feat: add CORS origins string parsing with field validator
CI / backend (push) Failing after 3s
CI / frontend (push) Failing after 30s
Add field_validator to Settings.cors_origins to support comma-separated string input in addition to list format, enabling flexible configuration through environment variables
2026-07-09 12:20:23 +02:00
nessi 97584e3942 feat: add Vite environment type definitions for API base URL configuration
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 31s
Add TypeScript declarations for Vite environment variables including VITE_API_BASE_URL to enable type-safe access to import.meta.env in the frontend application
2026-07-09 12:15:33 +02:00
nessi 14e7710120 chore: initial project setup with backend, frontend, CI/CD, and documentation
CI / backend (push) Failing after 15s
CI / frontend (push) Failing after 39s
Add complete NexaFabric project structure including:
- FastAPI backend with SQLAlchemy models, JWT auth, RBAC, audit logging, and provider interfaces
- React + TypeScript frontend with Vite, Tailwind CSS, TanStack Query, and Zustand
- Docker Compose configuration for PostgreSQL, Redis, API, worker, frontend, and nginx
- GitHub Actions and GitLab CI workflows for testing, linting, building, and security scanning
- Environment
2026-07-09 12:10:35 +02:00