Initial commit — Stupid Simple Network Inventory
Application web d'inventaire réseau manuel avec FastAPI, Vue 3 et Docker. Inclut l'authentification JWT, la découverte ICMP, et la topologie en cards CSS. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
import {
|
||||
siProxmox, siDocker,
|
||||
siSynology, siTruenas,
|
||||
siUbiquiti, siMikrotik, siCisco, siTplink, siAsus, siNetgear, siPfsense, siOpnsense, siOpenwrt,
|
||||
siApache, siTraefikproxy,
|
||||
siMariadb,
|
||||
siKubernetes,
|
||||
siDebian, siUbuntu,
|
||||
siAnsible,
|
||||
siDell, siHp,
|
||||
siRaspberrypi, siArduino,
|
||||
siNextcloud, siPaperlessngx, siUptimekuma, siMaterialformkdocs,
|
||||
siJellyfin, siHomeassistant, siPhilipshue, siXiaomi,
|
||||
siExcalidraw,
|
||||
siKde,
|
||||
} from 'simple-icons'
|
||||
|
||||
// Ordre : du plus spécifique au plus générique pour éviter les faux positifs.
|
||||
const BRANDS = [
|
||||
// Hyperviseurs / virtualisation
|
||||
{ kw: ['proxmox', 'pve'], icon: siProxmox },
|
||||
{ kw: ['docker'], icon: siDocker },
|
||||
|
||||
// NAS
|
||||
{ kw: ['synology', 'dsm'], icon: siSynology },
|
||||
{ kw: ['truenas', 'freenas'], icon: siTruenas },
|
||||
|
||||
// Réseau
|
||||
{ kw: ['ubiquiti', 'unifi', 'usg', 'udm'], icon: siUbiquiti },
|
||||
{ kw: ['mikrotik', 'routeros'], icon: siMikrotik },
|
||||
{ kw: ['cisco'], icon: siCisco },
|
||||
{ kw: ['tp-link', 'tplink', 'tp link'], icon: siTplink },
|
||||
{ kw: ['asus'], icon: siAsus },
|
||||
{ kw: ['netgear'], icon: siNetgear },
|
||||
{ kw: ['pfsense'], icon: siPfsense },
|
||||
{ kw: ['opnsense'], icon: siOpnsense },
|
||||
{ kw: ['openwrt'], icon: siOpenwrt },
|
||||
|
||||
// Serveurs web / proxy
|
||||
{ kw: ['apache', 'apache2', 'httpd'], icon: siApache },
|
||||
{ kw: ['traefik'], icon: siTraefikproxy },
|
||||
|
||||
// Bases de données
|
||||
{ kw: ['mariadb', 'maria db'], icon: siMariadb },
|
||||
|
||||
// Orchestration
|
||||
{ kw: ['kubernetes', 'k8s', 'kubectl', 'k3s'], icon: siKubernetes },
|
||||
|
||||
// OS / distros
|
||||
{ kw: ['debian'], icon: siDebian },
|
||||
{ kw: ['ubuntu'], icon: siUbuntu },
|
||||
|
||||
// Automatisation
|
||||
{ kw: ['ansible'], icon: siAnsible },
|
||||
|
||||
// Serveurs
|
||||
{ kw: ['dell', 'idrac', 'poweredge'], icon: siDell },
|
||||
{ kw: ['proliant', 'ilo', 'hewlett'], icon: siHp },
|
||||
|
||||
// SBC / DIY
|
||||
{ kw: ['raspberry', 'raspberrypi', 'rpi', 'raspi'], icon: siRaspberrypi },
|
||||
{ kw: ['arduino'], icon: siArduino },
|
||||
|
||||
// Environnements de bureau
|
||||
{ kw: ['kde', 'plasma', 'kde desktop'], icon: siKde },
|
||||
|
||||
// Outils
|
||||
{ kw: ['excalidraw'], icon: siExcalidraw },
|
||||
|
||||
// Productivité / self-hosted
|
||||
{ kw: ['nextcloud'], icon: siNextcloud },
|
||||
{ kw: ['paperless', 'paperless-ng', 'paperless-ngx'], icon: siPaperlessngx },
|
||||
{ kw: ['uptime-kuma', 'uptimekuma', 'uptime kuma'], icon: siUptimekuma },
|
||||
{ kw: ['mkdocs', 'material for mkdocs'], icon: siMaterialformkdocs },
|
||||
|
||||
// Médias / domotique
|
||||
{ kw: ['jellyfin'], icon: siJellyfin },
|
||||
{ kw: ['homeassistant', 'home assistant', 'hassio', 'hass'], icon: siHomeassistant },
|
||||
{ kw: ['philips hue', 'hue bridge', 'hue hub'], icon: siPhilipshue },
|
||||
{ kw: ['xiaomi', 'mi home', 'yeelight'], icon: siXiaomi },
|
||||
]
|
||||
|
||||
export function detectBrands(name, description) {
|
||||
const text = ((name || '') + ' ' + (description || '')).toLowerCase()
|
||||
if (!text.trim()) return []
|
||||
return BRANDS.filter(b => b.kw.some(kw => text.includes(kw))).map(b => b.icon)
|
||||
}
|
||||
Reference in New Issue
Block a user