mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-01-31 11:46:16 +08:00
- Add fingerprint recognition section to README with support for 2.7W+ rules from multiple sources (EHole, Goby, Wappalyzer, Fingers, FingerPrintHub, ARL) - Update scanning pipeline architecture diagram to include fingerprint recognition stage between site identification and deep analysis - Add fingerprint recognition styling to mermaid diagram for visual consistency - Include WORKER_API_KEY environment variable in task distributor for worker authentication - Update WeChat QR code image and public account name from "洋洋的小黑屋" to "塔罗安全学苑" - Fix import statements in nav-system.tsx to use i18n navigation utilities instead of next/link and next/navigation - Enhance scanning workflow documentation to reflect complete pipeline: subdomain discovery → port scanning → site identification → fingerprint recognition → URL collection → directory scanning → vulnerability scanning
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
"use client"
|
|
|
|
import { type Icon } from "@tabler/icons-react"
|
|
import { useTranslations } from "next-intl"
|
|
|
|
import { Link, usePathname } from "@/i18n/navigation"
|
|
|
|
import {
|
|
SidebarGroup,
|
|
SidebarGroupLabel,
|
|
SidebarMenu,
|
|
SidebarMenuButton,
|
|
SidebarMenuItem,
|
|
} from "@/components/ui/sidebar"
|
|
|
|
export function NavSystem({
|
|
items,
|
|
}: {
|
|
items: {
|
|
name: string
|
|
url: string
|
|
icon: Icon
|
|
}[]
|
|
}) {
|
|
const pathname = usePathname()
|
|
const tNav = useTranslations("navigation")
|
|
const normalize = (p: string) => (p !== "/" && p.endsWith("/") ? p.slice(0, -1) : p)
|
|
const current = normalize(pathname)
|
|
|
|
return (
|
|
<SidebarGroup className="group-data-[collapsible=icon]:hidden">
|
|
<SidebarGroupLabel>{tNav("settings")}</SidebarGroupLabel>
|
|
<SidebarMenu>
|
|
{items.map((item) => {
|
|
const navUrl = normalize(item.url)
|
|
const isActive = current === navUrl || current.startsWith(navUrl + "/")
|
|
|
|
return (
|
|
<SidebarMenuItem key={item.name}>
|
|
<SidebarMenuButton asChild isActive={isActive}>
|
|
<Link href={item.url}>
|
|
<item.icon />
|
|
<span>{item.name}</span>
|
|
</Link>
|
|
</SidebarMenuButton>
|
|
</SidebarMenuItem>
|
|
)
|
|
})}
|
|
</SidebarMenu>
|
|
</SidebarGroup>
|
|
)
|
|
}
|