235 lines
10 KiB
Markdown
235 lines
10 KiB
Markdown
# Modèles actuels du module d'intégration UniFi
|
|
|
|
Ce document décrit les modèles de données actuellement implémentés dans le module d'intégration UniFi pour Odoo.
|
|
|
|
## Structure générale
|
|
|
|
Les modèles du module sont organisés de manière hiérarchique, avec le modèle `udm.site` comme entité centrale. Tous les autres modèles sont liés à un site spécifique et sont supprimés automatiquement lorsque le site est supprimé (via le mécanisme `ondelete='cascade'`).
|
|
|
|
## Modèles principaux
|
|
|
|
### 1. udm.site
|
|
|
|
**Fichier :** `udm_site.py`
|
|
**Description :** Représente un site UniFi géré par un ou plusieurs contrôleurs UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `name` (Char) : Nom du site
|
|
- `site_id` (Char) : Identifiant du site dans UniFi (généralement 'default')
|
|
- `description` (Text) : Description du site
|
|
- `host` (Char) : Adresse IP ou nom d'hôte du contrôleur
|
|
- `port` (Integer) : Port du contrôleur (par défaut 443)
|
|
- `username` (Char) : Nom d'utilisateur pour l'authentification
|
|
- `password` (Char) : Mot de passe pour l'authentification (stocké de manière sécurisée)
|
|
- `verify_ssl` (Boolean) : Indique si la vérification SSL doit être effectuée
|
|
- `last_sync` (Datetime) : Date et heure de la dernière synchronisation
|
|
- `sync_interval` (Integer) : Intervalle de synchronisation en minutes
|
|
|
|
**Relations :**
|
|
- `network_ids` (One2many) : Réseaux associés au site
|
|
- `device_ids` (One2many) : Appareils associés au site
|
|
- `user_ids` (One2many) : Utilisateurs associés au site
|
|
- `vlan_ids` (One2many) : VLANs associés au site
|
|
- `firewall_rule_ids` (One2many) : Règles de pare-feu associées au site
|
|
- `port_forward_ids` (One2many) : Règles de redirection de port associées au site
|
|
- `system_info_id` (One2many) : Informations système associées au site
|
|
|
|
**Fonctionnalités :**
|
|
- Authentification au contrôleur UniFi
|
|
- Récupération et synchronisation des données
|
|
- Gestion des sessions et des cookies
|
|
- Journalisation des activités et des erreurs
|
|
|
|
### 2. udm.device
|
|
|
|
**Fichier :** `udm_device.py`
|
|
**Description :** Représente un appareil réseau dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel l'appareil appartient
|
|
- `name` (Char) : Nom ou hostname de l'appareil
|
|
- `mac_address` (Char) : Adresse MAC de l'appareil
|
|
- `ip_address` (Char) : Adresse IP actuelle
|
|
- `device_type` (Selection) : Type d'appareil (point d'accès, switch, passerelle, etc.)
|
|
- `model` (Char) : Modèle de l'appareil
|
|
- `firmware` (Char) : Version du firmware
|
|
- `last_seen` (Datetime) : Dernière fois que l'appareil a été vu en ligne
|
|
- `uptime` (Integer) : Temps de fonctionnement en secondes
|
|
- `status` (Selection) : État de l'appareil (en ligne, hors ligne, provisionnement)
|
|
- `adopted` (Boolean) : Indique si l'appareil a été adopté par le contrôleur
|
|
|
|
### 3. udm.network
|
|
|
|
**Fichier :** `udm_network.py`
|
|
**Description :** Représente un réseau dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel le réseau appartient
|
|
- `name` (Char) : Nom du réseau
|
|
- `purpose` (Selection) : Objectif du réseau (entreprise, invité, IoT, autre)
|
|
- `subnet` (Char) : Sous-réseau au format CIDR
|
|
- `vlan_id_number` (Integer) : Identifiant VLAN
|
|
- `vlan_id` (Many2one) : Relation avec le modèle VLAN
|
|
- `dhcp_enabled` (Boolean) : Indique si DHCP est activé
|
|
- `dhcp_start` (Char) : Adresse de début de la plage DHCP
|
|
- `dhcp_stop` (Char) : Adresse de fin de la plage DHCP
|
|
- `dhcp_lease_time` (Integer) : Durée du bail DHCP en secondes
|
|
- `domain_name` (Char) : Nom de domaine pour le réseau
|
|
- `dns_servers` (Char) : Serveurs DNS (séparés par des virgules)
|
|
- `enabled` (Boolean) : Indique si le réseau est activé
|
|
|
|
### 4. udm.user
|
|
|
|
**Fichier :** `udm_user.py`
|
|
**Description :** Représente un utilisateur dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel l'utilisateur appartient
|
|
- `name` (Char) : Nom complet de l'utilisateur
|
|
- `email` (Char) : Adresse email de l'utilisateur
|
|
- `mac_address` (Char) : Adresse MAC de l'appareil
|
|
- `ip_address` (Char) : Adresse IP actuelle
|
|
- `network_id` (Many2one) : Réseau auquel l'utilisateur est connecté
|
|
- `device_id` (Many2one) : Appareil associé à l'utilisateur
|
|
- `role` (Selection) : Rôle de l'utilisateur (admin, opérateur, visualiseur)
|
|
- `blocked` (Boolean) : Indique si l'utilisateur est bloqué
|
|
- `last_seen` (Datetime) : Dernière fois que l'utilisateur a été vu en ligne
|
|
- `upload_usage` (Float) : Utilisation de la bande passante en upload
|
|
- `download_usage` (Float) : Utilisation de la bande passante en download
|
|
- `total_usage` (Float) : Utilisation totale de la bande passante
|
|
|
|
### 5. udm.vlan
|
|
|
|
**Fichier :** `udm_vlan.py`
|
|
**Description :** Représente un VLAN dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel le VLAN appartient
|
|
- `name` (Char) : Nom du VLAN
|
|
- `vlan_id` (Integer) : Identifiant du VLAN
|
|
- `description` (Text) : Description du VLAN
|
|
- `enabled` (Boolean) : Indique si le VLAN est activé
|
|
- `network_ids` (One2many) : Réseaux associés à ce VLAN
|
|
|
|
### 6. udm.firewall.rule
|
|
|
|
**Fichier :** `udm_firewall.py`
|
|
**Description :** Représente une règle de pare-feu dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel la règle appartient
|
|
- `name` (Char) : Nom de la règle
|
|
- `description` (Text) : Description détaillée de l'objectif de la règle
|
|
- `enabled` (Boolean) : Indique si la règle est active
|
|
- `sequence` (Integer) : Ordre dans lequel les règles sont évaluées
|
|
- `action` (Selection) : Action à effectuer (accepter, rejeter, abandonner)
|
|
- `protocol` (Selection) : Protocole concerné (TCP, UDP, ICMP, tous)
|
|
- `source_type` (Selection) : Type de source (adresse, réseau, groupe)
|
|
- `source_address` (Char) : Adresse source
|
|
- `source_port` (Char) : Port source
|
|
- `destination_type` (Selection) : Type de destination (adresse, réseau, groupe)
|
|
- `destination_address` (Char) : Adresse de destination
|
|
- `destination_port` (Char) : Port de destination
|
|
- `direction` (Selection) : Direction du trafic (entrant, sortant, les deux)
|
|
- `logging` (Boolean) : Indique si la journalisation est activée pour cette règle
|
|
|
|
## Modèles de configuration
|
|
|
|
### 7. udm.port_forward
|
|
|
|
**Fichier :** `udm_port_forward.py`
|
|
**Description :** Représente une règle de redirection de port dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel la règle appartient
|
|
- `name` (Char) : Nom de la règle
|
|
- `enabled` (Boolean) : Indique si la règle est active
|
|
- `source_port` (Integer) : Port source
|
|
- `destination_port` (Integer) : Port de destination
|
|
- `forward_ip` (Char) : Adresse IP de destination
|
|
- `protocol` (Selection) : Protocole (TCP, UDP, TCP et UDP)
|
|
- `log` (Boolean) : Indique si la journalisation est activée
|
|
|
|
### 8. udm.system_info
|
|
|
|
**Fichier :** `udm_system_info.py`
|
|
**Description :** Représente les informations système du contrôleur UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel les informations appartiennent
|
|
- `version` (Char) : Version du logiciel
|
|
- `hardware_model` (Char) : Modèle matériel
|
|
- `hostname` (Char) : Nom d'hôte du système
|
|
- `uptime` (Integer) : Temps de fonctionnement en secondes
|
|
- `cpu_usage` (Float) : Utilisation du CPU en pourcentage
|
|
- `memory_usage` (Float) : Utilisation de la mémoire en pourcentage
|
|
- `disk_usage` (Float) : Utilisation du disque en pourcentage
|
|
- `temperature` (Float) : Température du système
|
|
|
|
### 9. udm.dns et udm.dns_config
|
|
|
|
**Fichiers :** `udm_dns.py` et `udm_dns_config.py`
|
|
**Description :** Représentent les configurations DNS dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel la configuration appartient
|
|
- `hostname` (Char) : Nom d'hôte
|
|
- `ip_address` (Char) : Adresse IP associée
|
|
- `description` (Text) : Description de l'entrée DNS
|
|
- `enabled` (Boolean) : Indique si l'entrée est active
|
|
|
|
### 10. udm.routing et udm.routing_config
|
|
|
|
**Fichiers :** `udm_routing.py` et `udm_routing_config.py`
|
|
**Description :** Représentent les configurations de routage dans le système UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel la configuration appartient
|
|
- `name` (Char) : Nom de la route
|
|
- `destination` (Char) : Destination de la route
|
|
- `gateway` (Char) : Passerelle
|
|
- `interface` (Char) : Interface réseau
|
|
- `enabled` (Boolean) : Indique si la route est active
|
|
|
|
## Modèles de tableau de bord
|
|
|
|
### 11. udm.dashboard_metric, udm.dashboard_stat, udm.dashboard_data_point
|
|
|
|
**Fichiers :** `udm_dashboard_metric.py`, `udm_dashboard_stat.py`, `udm_dashboard_data_point.py`
|
|
**Description :** Représentent les métriques et statistiques pour le tableau de bord.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel les données appartiennent
|
|
- `name` (Char) : Nom de la métrique
|
|
- `value` (Float) : Valeur de la métrique
|
|
- `unit` (Char) : Unité de mesure
|
|
- `timestamp` (Datetime) : Horodatage de la mesure
|
|
- `category` (Selection) : Catégorie de la métrique (réseau, système, sécurité)
|
|
|
|
## Modèle de configuration du site
|
|
|
|
### 12. udm.site_configuration
|
|
|
|
**Fichier :** `udm_site_configuration.py`
|
|
**Description :** Représente la configuration d'un site UniFi.
|
|
|
|
**Champs principaux :**
|
|
- `site_id` (Many2one) : Site auquel la configuration appartient
|
|
- `config_type` (Selection) : Type de configuration
|
|
- `config_data` (Text) : Données de configuration au format JSON
|
|
- `version` (Char) : Version de la configuration
|
|
- `timestamp` (Datetime) : Horodatage de la configuration
|
|
|
|
## Relations entre les modèles
|
|
|
|
Le modèle `udm.site` est au centre de l'architecture et toutes les autres entités lui sont liées. Les relations principales sont :
|
|
|
|
1. **Site → Réseaux** : Un site peut avoir plusieurs réseaux
|
|
2. **Site → Appareils** : Un site peut avoir plusieurs appareils
|
|
3. **Site → Utilisateurs** : Un site peut avoir plusieurs utilisateurs
|
|
4. **Site → VLANs** : Un site peut avoir plusieurs VLANs
|
|
5. **Réseau → VLAN** : Un réseau peut être associé à un VLAN
|
|
6. **Utilisateur → Réseau** : Un utilisateur peut être connecté à un réseau
|
|
7. **Utilisateur → Appareil** : Un utilisateur peut être associé à un appareil
|
|
|
|
Cette architecture permet une gestion complète et cohérente des environnements UniFi dans Odoo, avec une séparation claire des différentes composantes du système.
|