fix process-name/ipcidr copy

This commit is contained in:
汐殇 2024-11-24 00:28:22 +08:00
parent 22c35b606e
commit 56139a5e9f

View File

@ -26,72 +26,65 @@ const CopyableSettingItem: React.FC<{
value: string | string[] value: string | string[]
displayName?: string displayName?: string
prefix?: string[] prefix?: string[]
suffix?: string }> = ({ title, value, displayName, prefix = [] }) => {
}> = ({ title, value, displayName, prefix = [], suffix = '' }) => {
const getSubDomains = (domain: string): string[] => const getSubDomains = (domain: string): string[] =>
domain.split('.').length <= 2 domain.split('.').length <= 2
? [domain] ? [domain]
: domain : domain
.split('.') .split('.')
.map((_, i, parts) => parts.slice(i).join('.')) .map((_, i, parts) => parts.slice(i).join('.'))
.slice(0, -1) .slice(0, -1)
const isIPv6 = (ip: string) => ip.includes(':')
const menuItems = [ const menuItems = [
{ key: 'raw', text: displayName || (Array.isArray(value) ? value.join(', ') : value) }, { key: 'raw', text: displayName || (Array.isArray(value) ? value.join(', ') : value) },
...(Array.isArray(value) && value.length === prefix.length ...(Array.isArray(value)
? prefix ? value.map((v, i) => {
.map((p, i) => const p = prefix[i]
value[i] if (!p || !v) return null
? {
key: `${p},${p === 'IP-ASN' ? value[i].split(' ')[0] : value[i]}${suffix}`, if (p === 'DOMAIN-SUFFIX') {
text: `${p},${p === 'IP-ASN' ? value[i].split(' ')[0] : value[i]}${suffix}` return getSubDomains(v).map((subV) => ({
} key: `${p},${subV}`,
: null text: `${p},${subV}`
) }))
.filter(Boolean) }
: prefix.flatMap((p) =>
Array.isArray(value) if (p === 'IP-ASN' || p === 'SRC-IP-ASN') {
? value return {
.map((v) => key: `${p},${v.split(' ')[0]}`,
p === 'DOMAIN-SUFFIX' text: `${p},${v.split(' ')[0]}`
? getSubDomains(v).map((subV) => ({ }
key: `${p},${subV}${suffix}`, }
text: `${p},${subV}${suffix}`
})) const suffix = (p === 'IP-CIDR' || p === 'SRC-IP-CIDR') ? (isIPv6(v) ? '/128' : '/32') : ''
: p === 'IP-ASN' || p === 'SRC-IP-ASN' return {
? [ key: `${p},${v}${suffix}`,
{ text: `${p},${v}${suffix}`
key: `${p},${v.split(' ')[0]}${suffix}`, }
text: `${p},${v.split(' ')[0]}${suffix}` }).filter(Boolean).flat()
} : prefix.map(p => {
] const v = value as string
: [ if (p === 'DOMAIN-SUFFIX') {
{ return getSubDomains(v).map((subV) => ({
key: `${p},${v}${suffix}`, key: `${p},${subV}`,
text: `${p},${v}${suffix}` text: `${p},${subV}`
} }))
] }
)
.flat() if (p === 'IP-ASN' || p === 'SRC-IP-ASN') {
: p === 'DOMAIN-SUFFIX' return {
? getSubDomains(value).map((v) => ({ key: `${p},${v.split(' ')[0]}`,
key: `${p},${v}${suffix}`, text: `${p},${v.split(' ')[0]}`
text: `${p},${v}${suffix}` }
})) }
: p === 'IP-ASN' || p === 'SRC-IP-ASN'
? [ const suffix = (p === 'IP-CIDR' || p === 'SRC-IP-CIDR') ? (isIPv6(v) ? '/128' : '/32') : ''
{ return {
key: `${p},${value.split(' ')[0]}${suffix}`, key: `${p},${v}${suffix}`,
text: `${p},${value.split(' ')[0]}${suffix}` text: `${p},${v}${suffix}`
} }
] }).flat())
: [
{
key: `${p},${value}${suffix}`,
text: `${p},${value}${suffix}`
}
]
))
] ]
return ( return (
@ -175,10 +168,10 @@ const ConnectionDetailModal: React.FC<Props> = (props) => {
title="进程名" title="进程名"
value={[ value={[
connection.metadata.process, connection.metadata.process,
connection.metadata.uid ? connection.metadata.uid.toString() : '' ...(connection.metadata.uid ? [connection.metadata.uid.toString()] : [])
]} ]}
displayName={`${connection.metadata.process}${connection.metadata.uid ? `(${connection.metadata.uid})` : ''}`} displayName={`${connection.metadata.process}${connection.metadata.uid ? `(${connection.metadata.uid})` : ''}`}
prefix={['PROCESS-NAME', 'UID']} prefix={['PROCESS-NAME', ...(connection.metadata.uid ? ['UID'] : [])]}
/> />
)} )}
{connection.metadata.processPath && ( {connection.metadata.processPath && (
@ -193,7 +186,6 @@ const ConnectionDetailModal: React.FC<Props> = (props) => {
title="来源IP" title="来源IP"
value={connection.metadata.sourceIP} value={connection.metadata.sourceIP}
prefix={['SRC-IP-CIDR']} prefix={['SRC-IP-CIDR']}
suffix="/32"
/> />
)} )}
{connection.metadata.sourceGeoIP && connection.metadata.sourceGeoIP.length > 0 && ( {connection.metadata.sourceGeoIP && connection.metadata.sourceGeoIP.length > 0 && (
@ -215,7 +207,6 @@ const ConnectionDetailModal: React.FC<Props> = (props) => {
title="目标IP" title="目标IP"
value={connection.metadata.destinationIP} value={connection.metadata.destinationIP}
prefix={['IP-CIDR']} prefix={['IP-CIDR']}
suffix="/32"
/> />
)} )}
{connection.metadata.destinationGeoIP && {connection.metadata.destinationGeoIP &&