feat: enrichers, panel de ingest y menu contextual en el grafo
- Añade enricher.go + directorio enrichers/ para enriquecer entidades con fuentes externas. - Nuevos componentes frontend: IngestPanel (panel de ingesta de datos) y NodeContextMenu (menu contextual sobre nodos del grafo). - Retira SearchBar y lib/utils.ts; la busqueda se integra dentro de los paneles existentes. - Ajusta tipos (types.go, types.ts, wailsjs/go) y theming (postcss + app.css + Mantine). - Actualiza app.go y wails.json para exponer las nuevas capacidades. - Añade directorio projects/ con estado inicial. - Rebuild del frontend (dist actualizado).
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
package main
|
||||
|
||||
// EntityTypePreset defines an OSINT entity type with its visual properties and suggested metadata fields.
|
||||
// EntityTypePreset defines an entity type with its visual properties and suggested metadata fields.
|
||||
type EntityTypePreset struct {
|
||||
TypeRef string `json:"type_ref"` // registry type ID
|
||||
Label string `json:"label"` // human-readable
|
||||
Color string `json:"color"` // hex color for graph nodes
|
||||
TypeRef string `json:"type_ref"` // short type name
|
||||
Label string `json:"label"` // human-readable
|
||||
Color string `json:"color"` // hex color for graph nodes
|
||||
MetadataFields []string `json:"metadata_fields"` // suggested metadata keys
|
||||
}
|
||||
|
||||
@@ -77,41 +77,46 @@ type AssertionInput struct {
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
// Color map for OSINT entity types
|
||||
// Color map for entity types (short names aligned with registry)
|
||||
var entityTypeColors = map[string]string{
|
||||
"osint_person_go_cybersecurity": "#e74c3c",
|
||||
"osint_organization_go_cybersecurity": "#3498db",
|
||||
"osint_crypto_wallet_go_cybersecurity": "#f39c12",
|
||||
"osint_ip_address_go_cybersecurity": "#2ecc71",
|
||||
"osint_domain_go_cybersecurity": "#9b59b6",
|
||||
"osint_email_go_cybersecurity": "#1abc9c",
|
||||
"osint_phone_go_cybersecurity": "#e67e22",
|
||||
"osint_malware_go_cybersecurity": "#c0392b",
|
||||
"osint_vulnerability_go_cybersecurity": "#8e44ad",
|
||||
"osint_social_media_go_cybersecurity": "#2980b9",
|
||||
"osint_document_go_cybersecurity": "#7f8c8d",
|
||||
"osint_event_go_cybersecurity": "#d35400",
|
||||
"osint_location_go_cybersecurity": "#27ae60",
|
||||
"person": "#e74c3c",
|
||||
"organization": "#3498db",
|
||||
"crypto_wallet": "#f39c12",
|
||||
"ip_address": "#2ecc71",
|
||||
"domain": "#9b59b6",
|
||||
"email": "#1abc9c",
|
||||
"phone": "#e67e22",
|
||||
"malware": "#c0392b",
|
||||
"vulnerability": "#8e44ad",
|
||||
"social_media": "#2980b9",
|
||||
"document": "#7f8c8d",
|
||||
"event": "#d35400",
|
||||
"location": "#27ae60",
|
||||
"text": "#78909c",
|
||||
"url": "#8bc34a",
|
||||
}
|
||||
|
||||
var entityTypePresets = []EntityTypePreset{
|
||||
{"osint_person_go_cybersecurity", "Person", "#e74c3c", []string{"full_name", "alias", "nationality", "dob", "gender", "risk_score"}},
|
||||
{"osint_organization_go_cybersecurity", "Organization", "#3498db", []string{"legal_name", "country", "sector", "founded", "risk_score"}},
|
||||
{"osint_crypto_wallet_go_cybersecurity", "Crypto Wallet", "#f39c12", []string{"address", "blockchain", "balance", "first_seen", "last_seen"}},
|
||||
{"osint_ip_address_go_cybersecurity", "IP Address", "#2ecc71", []string{"ip", "asn", "country", "isp", "geolocation", "last_seen"}},
|
||||
{"osint_domain_go_cybersecurity", "Domain", "#9b59b6", []string{"fqdn", "registrar", "created_date", "expires_date", "name_servers"}},
|
||||
{"osint_email_go_cybersecurity", "Email", "#1abc9c", []string{"address", "provider", "verified", "breached"}},
|
||||
{"osint_phone_go_cybersecurity", "Phone", "#e67e22", []string{"number", "country_code", "carrier", "phone_type"}},
|
||||
{"osint_malware_go_cybersecurity", "Malware", "#c0392b", []string{"family", "hash_sha256", "first_seen", "last_seen", "threat_level"}},
|
||||
{"osint_vulnerability_go_cybersecurity", "Vulnerability", "#8e44ad", []string{"cve_id", "cvss", "affected_product", "published", "exploited"}},
|
||||
{"osint_social_media_go_cybersecurity", "Social Media", "#2980b9", []string{"platform", "username", "url", "followers", "verified"}},
|
||||
{"osint_document_go_cybersecurity", "Document", "#7f8c8d", []string{"title", "format", "classification", "hash_sha256", "source"}},
|
||||
{"osint_event_go_cybersecurity", "Event", "#d35400", []string{"event_type", "date", "location", "description", "severity"}},
|
||||
{"osint_location_go_cybersecurity", "Location", "#27ae60", []string{"lat", "lon", "address", "country", "city"}},
|
||||
{"person", "Person", "#e74c3c", []string{"full_name", "alias", "nationality", "dob", "gender", "risk_score"}},
|
||||
{"organization", "Organization", "#3498db", []string{"legal_name", "country", "sector", "founded", "risk_score"}},
|
||||
{"crypto_wallet", "Crypto Wallet", "#f39c12", []string{"address", "blockchain", "balance", "first_seen", "last_seen"}},
|
||||
{"ip_address", "IP Address", "#2ecc71", []string{"ip", "asn", "country", "isp", "geolocation", "last_seen"}},
|
||||
{"domain", "Domain", "#9b59b6", []string{"fqdn", "registrar", "created_date", "expires_date", "name_servers"}},
|
||||
{"email", "Email", "#1abc9c", []string{"address", "provider", "verified", "breached"}},
|
||||
{"phone", "Phone", "#e67e22", []string{"number", "country_code", "carrier", "phone_type"}},
|
||||
{"malware", "Malware", "#c0392b", []string{"family", "hash_sha256", "first_seen", "last_seen", "threat_level"}},
|
||||
{"vulnerability", "Vulnerability", "#8e44ad", []string{"cve_id", "cvss", "affected_product", "published", "exploited"}},
|
||||
{"social_media", "Social Media", "#2980b9", []string{"platform", "username", "url", "followers", "verified"}},
|
||||
{"document", "Document", "#7f8c8d", []string{"title", "format", "classification", "file_path", "source"}},
|
||||
{"event", "Event", "#d35400", []string{"event_type", "date", "location", "description", "severity"}},
|
||||
{"location", "Location", "#27ae60", []string{"lat", "lon", "address", "country", "city"}},
|
||||
{"text", "Text", "#78909c", []string{"content_preview", "source", "char_count"}},
|
||||
{"url", "URL", "#8bc34a", []string{"url", "domain", "status_code"}},
|
||||
}
|
||||
|
||||
var relationPresets = []string{
|
||||
"funds", "employs", "communicates_with", "owns", "operates",
|
||||
"controls", "affiliated_with", "located_at", "resolves_to",
|
||||
"registered_by", "hosts", "exploits", "attributed_to", "related_to",
|
||||
"extracted_from", "contains", "fetched_from",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user