Commit Graph

45 Commits

Author SHA1 Message Date
olivier ca45fa5caa feat: add UPS, network security, monitoring and log stack brand icons
UPS: Schneider Electric / APC (siSchneiderelectric)
Network security: Fortinet / FortiGate (siFortinet)
Monitoring: Prometheus, Grafana, Datadog, Netdata, Checkmk, Icinga,
            InfluxDB, VictoriaMetrics
Alerting: Opsgenie, PagerDuty
Logs/Traces: Elastic/ELK, Kibana, Logstash, Splunk, Graylog, Jaeger,
             OpenTelemetry

Color overrides for near-black icons: Icinga → #3F5FBA, Opsgenie → #2684FF,
Splunk → #65A637, OpenTelemetry → #425CC7.

Not available in simple-icons: Zabbix, Centreon, Nagios, PRTG, Eaton,
Riello, Vertiv (noted in CLAUDE.md).

READMEs (fr/en/es) updated with all new entries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:42:15 +02:00
olivier 29e32d3911 fix: escape apostrophe in French dnsHint string (broke Vite build)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:26:22 +02:00
olivier 806fe1caec feat: DNS_SERVER env var — pre-fills discovery UI, optional for scan
- DNS_SERVER env var configures the default DNS server for PTR lookups
- GET /api/discovery/config exposes it to the frontend
- DiscoveryModal fetches it on mount and pre-fills the field (editable)
- dns_server is now optional in ScanRequest (default empty string)
- PTR lookup is skipped when dns_server is empty — scan still proceeds
- Validator only runs when dns_server is non-empty
- .env.example, docker-compose.yml, READMEs (fr/en/es) updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:22:05 +02:00
olivier c8607831a4 fix: remove default DNS server in backend — dns_server is now required
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:17:16 +02:00
olivier b7c2e86673 fix: remove default DNS server value — user must enter their own
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:16:07 +02:00
olivier 06577fd245 fix: replace hardcoded personal DNS with neutral default (8.8.8.8)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:15:32 +02:00
olivier ce1402b5f3 docs: add Apple to brand tables and troubleshooting section (proxy-ARP)
- Add Apple ecosystem row in all three README brand tables
- Add Troubleshooting section explaining proxy-ARP false positives and
  the TCP check fix (fr/en/es)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 12:00:58 +02:00
olivier 4d1e49671b feat: add Apple brand icon (iPhone, iPad, MacBook, iMac, macOS, iOS…)
Uses siApple with hex override #555555 (visible on both light and dark
themes — Apple's brand color #000000 is invisible on dark backgrounds).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 11:48:49 +02:00
olivier a4538b7fe0 fix: correct tcp_check hint — RST on closed port means host is detected
The previous wording wrongly implied smartphones and firewalled PCs could
be missed. Only devices that silently DROP (not REJECT) all probed ports
are undetected; a RST reply on a closed port correctly identifies the host.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 11:21:20 +02:00
olivier cc716783ea feat: add optional TCP check to scan to filter proxy-ARP false positives
Some gateways (e.g. UniFi) respond to ICMP for every IP in a subnet via
proxy-ARP, spoofing the source IP so the existing ICMP guard cannot help.
A secondary TCP probe (ports 22, 80, 443, 8080, 8443) distinguishes real
hosts (RST/connect on closed ports) from ghost IPs (gateway drops SYN →
timeout). The check is opt-in (disabled by default) to avoid missing
devices whose firewall DROPs all probed ports.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 11:17:55 +02:00
olivier 14de657deb feat: cascade-delete hosts when removing a network
When a VLAN/LAN is deleted, all non-gateway, non-livebox devices
with an interface in that network are deleted automatically.
Gateway and livebox devices are preserved; their interface is
unlinked (vlan_id set to NULL).

The confirmation dialog now shows the exact count of devices
that will be deleted (all three locales: fr/en/es).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 10:48:36 +02:00
olivier cf07461436 fix: guard _ping() against proxy-ARP false positives
Verify that the ICMP reply source IP matches the target before
reporting a host as alive. Prevents scan from returning the entire
CIDR range when a gateway answers ARP requests on behalf of all IPs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 08:38:58 +02:00
olivier 0a91d840be fix: keep layout always in DOM via v-show to avoid Firefox click dispatch bug
Replace v-if/v-else-if/v-else auth guard with v-if on LoginPage and
v-show on the layout div. Firefox fails to dispatch clicks to children
after a DOM node is inserted into a display:flex container; using v-show
means the layout is always present (just display:none), so no node
replacement ever occurs in .app-root. Move the forced AccountModal
(mustChangePassword) inside the layout as a first child with v-if.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 08:09:06 +02:00
olivier 6ae7fac766 feat: add Free, Bouygues Telecom and SFR brand icons
None of the three are in simple-icons — custom wifi icons with
official brand colors (Free #CD1126, Bouygues #0099CC, SFR #E2001A).
Keywords avoid the bare word "free" to prevent false positives on
freenas/freebsd/etc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:43:55 +02:00
olivier f6162c59a6 docs: sync brand keyword tables across all three READMEs
Add 9 missing trigger keywords that were present in brandIcons.js
but absent from the documentation: tp link, maria db, raspberrypi,
kde desktop, paperless-ng, uptimekuma, material for mkdocs, hass,
hue hub.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:41:43 +02:00
olivier c729cec54d feat: add smart TV and TV box brand icons (13 brands)
TV manufacturers: Samsung, LG, Sony (hex overridden #1A1A1A — white
would be invisible), Panasonic, Sharp, Toshiba, Vestel.
Hisense is absent from simple-icons.

TV boxes: Chromecast/Google TV, Android TV, Apple TV, Amazon Fire TV,
Roku, Kodi.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 13:33:29 +02:00
olivier a4f276a5eb feat: add French ISP logos, Guacamole and generic bastion icon
French ISPs: Orange (#FF7900, keywords: orange/sosh/livebox),
OVH (#123F6D, keywords: ovh/ovhcloud/kimsufi/soyoustart).
Free, SFR and Bouygues are absent from simple-icons.

Bastion: Apache Guacamole (#578B34, keyword: guacamole) + generic
shield-lock icon (#1E3A8A) for bastion/jumphost/teleport/bastillion.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:51:10 +02:00
olivier dc04567c48 feat: expand VLAN color palette to 50 presets in a 5×10 grid
Replace the 10-color row with a 5-row × 10-column palette covering
red, rose, orange, amber, yellow, green, teal, cyan, blue, indigo,
violet, purple, fuchsia and gray families. Selected swatch is
highlighted with a border ring.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:47:47 +02:00
olivier fb6bcdb968 feat: add generic archive server icon
Custom archive-box icon (stone #78716C) triggered by: archive, archiver
(FR/EN), archivage (FR), archivar (ES), archivebox.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:44:17 +02:00
olivier 379f258ffb feat: add generic mail server icon
Custom envelope icon (slate #64748B) triggered by: mail, smtp, imap,
postfix, dovecot, mailcow, mailu, roundcube. Uses the same {title, hex,
path} format as simple-icons so no consumer changes are needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:33:54 +02:00
olivier ea1d96f99e feat: add brand icons for CMS/blog engines and analytics
CMS/Blog: WordPress, Ghost, Grav, Jekyll, Hugo, Hexo, Drupal, Joomla,
TYPO3, OctoberCMS, Textpattern
Analytics: Matomo, Plausible

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:29:35 +02:00
olivier 5eb3860201 feat: add brand icons for IDP, password vaults and media apps
Auth/SSO: Keycloak, Authentik, Okta, Auth0 (Authelia already present)
Password vaults: Vaultwarden, Bitwarden, 1Password, KeePassXC, HashiCorp Vault
Media/torrent: Radarr, Sonarr, Transmission

Jackett, Zitadel and Prowlarr are absent from simple-icons.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:26:35 +02:00
olivier 3e2d9e6a77 feat: add Authelia brand logo detection
Trigger keyword: authelia. Icon colour: #113155.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 12:22:53 +02:00
olivier 9fe6b25786 fix: add smart_tv, printer, smartphone to backend _VALID_TYPES
The backend validator was rejecting the three new device types added
in the previous commit, returning HTTP 422.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 11:54:17 +02:00
olivier 7b32e9b4fd feat: add smart_tv, printer and smartphone device types
Add three new device types (21 total) with Lucide icons (Tv2, Printer,
Smartphone), colour-coded badges, and translations in fr/en/es.
No backend migration needed — type is a free string field.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 11:48:23 +02:00
olivier 8b39554982 docs: add brand logo detection section to all READMEs
Documents keyword-based detection mechanism and lists all 34 supported
brands with their trigger keywords, organised by category.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 11:39:46 +02:00
olivier cd1be8eaa5 docs: add update procedure section to all READMEs
Explains that db_data/ is preserved across container rebuilds and that
database migrations run automatically on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:41:30 +02:00
olivier 44c502dc50 feat(i18n): pluralize sidebar network/device counters
Show singular form when count is 1 (Network, Device, Réseau, Équip., Red, Equipo)
across all three supported languages (fr, en, es).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:40:11 +02:00
olivier 89a77e0e9e docs: add GPL v3 license and AI attribution section to all READMEs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:30:56 +02:00
olivier bda8ac0546 docs: add Traefik reverse proxy examples (labels and file provider) to all READMEs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:23:23 +02:00
olivier 53417985ba docs: redesign all READMEs with centered header, emojis and language links
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:21:23 +02:00
olivier 9adaf28faa docs: add brand logo detection to features in all READMEs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:14:24 +02:00
olivier 5828f6c46b docs: add French and Spanish translations of README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:11:04 +02:00
olivier 74fcc6d6e7 docs: add topology screenshot to README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 10:08:18 +02:00
olivier 4e7f6840a0 README: size logo to cap-height for natural baseline alignment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:48:51 +02:00
olivier a771a14c76 README: restore inline logo using native align attribute for cross-renderer compatibility
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:47:24 +02:00
olivier e70b0ff0b9 README: move logo above title as centered block for reliable rendering
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:46:27 +02:00
olivier 18c95b9b3f README: fix logo vertical alignment using flexbox on h1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:44:06 +02:00
olivier 0b2e6983e7 README : ajout du logo de l'application devant le titre principal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:39:02 +02:00
olivier af2a01b169 Ajout de BIND_ADDRESS pour le déploiement derrière un reverse-proxy distant
Permet de restreindre l'écoute à l'interface réseau exposée au reverse-proxy,
sans toucher aux interfaces non concernées (ex. loopback, interfaces LAN).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:35:30 +02:00
olivier 448160ef0a README : ajout des badges de stack technique
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:32:19 +02:00
olivier 481dde6ac5 README : Quick start et section Features
- URL de clone réelle (Gitea)
- Nom de dossier correct après clone
- Suppression de la commande open (macOS-only)
- Ajout d'une section Features pour les visiteurs du dépôt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:29:37 +02:00
olivier b17e31bdb9 gitignore : exclure CLAUDE.md, AGENTS.md et SECURITY*.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:26:22 +02:00
olivier 423413a282 Retrait des fichiers internes du suivi git
CLAUDE.md, AGENTS.md et SECURITY*.md sont des documents de travail
qui n'ont pas vocation à être publiés sur le dépôt distant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 09:26:16 +02:00
olivier 88cf6458d0 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>
2026-05-17 09:19:19 +02:00