Tâche DNS Lookup
Résumé
- Nom interne :
DnsLookup - Catégorie : Communication
- Objectif : Résoudre un nom de domaine en adresse IP en utilisant des stratégies DNS configurables. Retourne l'adresse IP résolue sous forme de chaîne.
- Type de tâche : Normale
Compatibilité
-
Version AndroMate minimale :
1.1.0 -
Version AndroMate maximale :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android testé maximum :
Android 16 (API 36) -
Permissions requises :
INTERNETACCESS_NETWORK_STATE
Description détaillée
La tâche DNS Lookup résout le nom de domaine ou l'adresse IP fourni dans url en une adresse IP résolue. Si l'entrée est déjà une adresse IPv4 ou IPv6 valide, aucune requête DNS n'est effectuée — l'adresse est retournée directement.
Pour une résolution de domaine réelle, la tâche applique la stratégie sélectionnée par resolve_ops (une clé entière). Un dns_server optionnel peut être spécifié ; s'il est vide, le serveur DNS par défaut du système est utilisé. Toutes les requêtes DNS ont un délai fixe de 5000 ms.
En cas de succès, la chaîne d'adresse IP résolue est stockée dans value_output depuis StrTaskResult.
Paramètres d'entrée
| Paramètre | Type | Obligatoire | Valeurs possibles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
url |
Chaîne | Oui | Nom de domaine ou adresse IP à résoudre — supporte les références $variable |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
dns_server |
Chaîne | Non | Adresse IP d'un serveur DNS personnalisé — chaîne vide utilise le défaut du système | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
resolve_ops |
Entier | Non | Stratégie de résolution : 1 = FORCE_IPV4, 2 = FORCE_IPV6, 3 = PREFER_IPV6_FALLBACK_IPV4, 4 = HAPPY_EYEBALLS |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | 0 (PREFER_IPV6_FALLBACK_IPV4) |
Clés de stratégie resolve_ops
| Valeur | Stratégie | Description |
|---|---|---|
1 |
FORCE_IPV4 | Requête A records uniquement |
2 |
FORCE_IPV6 | Requête AAAA records uniquement |
3 |
PREFER_IPV6_FALLBACK_IPV4 | Essayer IPv6 d'abord, repli sur IPv4 si absent |
4 |
HAPPY_EYEBALLS | RFC 8305 — requêtes IPv6 + IPv4 concurrentes |
0 ou omis |
PREFER_IPV6_FALLBACK_IPV4 | Comportement par défaut |
Paramètres de sortie
| Champ | Type | Condition de déclenchement | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|
value_output |
Chaîne | Toujours en cas de succès — adresse IP résolue | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | <ANDROMATE_NULL_VALUE> |
Exceptions
| Code | Nom de l'exception | Description |
|---|---|---|
DNS-LOOK-UP-001 |
URL vide | Le champ url est vide (depuis AndromateExceptionTypes.DNS_LOOKUP_EMPTY_URL). |
DNS-LOOK-UP-002 |
Résolution DNS échouée | La recherche DNS a échoué pour le domaine — aucun enregistrement A/AAAA trouvé ou erreur serveur DNS (depuis AndromateExceptionTypes.DNS_LOOKUP_FAILED). |
Diagramme d'exécution
flowchart TD
Start([▶ DnsLookup]) --> ResolveParams[🔄 Résoudre url, dns_server,\nresolve_ops]
ResolveParams --> ValidateURL{url vide ?}
ValidateURL -->|Oui| E1[❌ DNS-LOOK-UP-001\nURL vide]
ValidateURL -->|Non| CheckIP{Déjà une adresse\nIPv4 ou IPv6 valide ?}
CheckIP -->|Oui| ReturnIP[📍 Retourner l'IP directement\nAucune requête DNS effectuée]
CheckIP -->|Non| Strategy{Stratégie\nresolve_ops}
Strategy -->|1 = FORCE_IPV4| ForceIPV4[🔍 Requête A records uniquement]
Strategy -->|2 = FORCE_IPV6| ForceIPV6[🔍 Requête AAAA records uniquement]
Strategy -->|3 ou défaut = PREFER_IPV6_FALLBACK_IPV4| PreferIPV6[🔄 Essayer IPv6 d'abord\nrepli sur IPv4]
Strategy -->|4 = HAPPY_EYEBALLS| HappyEyeballs[⚡ RFC 8305\nIPv6 + IPv4 concurrents]
ForceIPV4 --> DNSQuery[📡 Requête DNS\nTimeout : 5000ms]
ForceIPV6 --> DNSQuery
PreferIPV6 --> DNSQuery
HappyEyeballs --> DNSQuery
ReturnIP --> StoreResult[💾 Définir value_output\nStrTaskResult]
DNSQuery -->|Succès| GetIP[📥 Extraire l'adresse IP résolue]
DNSQuery -->|Échec| E2[❌ DNS-LOOK-UP-002\nRésolution DNS échouée]
GetIP --> StoreResult
StoreResult --> LogReport[📋 Journaliser le rapport]
LogReport --> Success([✅ StrTaskResult])
E1 --> Error([❌ Exception])
E2 --> Error
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style E1 fill:#ffcdd2
style E2 fill:#ffcdd2
style ResolveParams fill:#fff9c4
style DNSQuery fill:#f3e5f5
style StoreResult fill:#c8e6c9
style CheckIP fill:#fff9c4
style Strategy fill:#fff9c4
Fonctionnement :
- Résoudre les paramètres :
url,dns_serveretresolve_opssont résolus depuis le contexte workflow - Valider l'URL : lève
DNS-LOOK-UP-001siurlest vide - Vérifier si déjà une IP : si l'entrée est déjà une adresse IPv4 ou IPv6 valide, elle est retournée directement dans
value_output— aucune requête DNS n'est effectuée - Sélectionner la stratégie : choisit la stratégie DNS en fonction de la valeur entière de
resolve_ops - Requête DNS : effectue la recherche DNS avec un délai fixe de 5000 ms ; utilise
dns_serversi spécifié, sinon le défaut du système - En cas d'échec : lève
DNS-LOOK-UP-002 - Extraire l'IP : récupère l'adresse IP résolue
- Stocker le résultat : définit
value_outputavec la chaîne IP résolue - Résultat : retourne
StrTaskResult
Exemples de code
Exemple 1 — Résoudre un domaine avec la stratégie par défaut
{
"DnsLookup": [
{
"id": "1",
"title": "Résoudre domaine API",
"url": "api.example.com",
"value_output": "$ip_resolue"
}
]
}
Exemple 2 — Forcer la résolution IPv4
{
"DnsLookup": [
{
"id": "2",
"title": "Résolution IPv4 forcée",
"url": "api.example.com",
"resolve_ops": 1,
"value_output": "$adresse_ipv4"
}
]
}
Exemple 3 — Serveur DNS personnalisé avec Happy Eyeballs
{
"DnsLookup": [
{
"id": "3",
"title": "Happy Eyeballs avec DNS personnalisé",
"url": "$domaine_a_resoudre",
"dns_server": "1.1.1.1",
"resolve_ops": 4,
"value_output": "$ip_resolue"
}
]
}
Exemple 4 — Forcer IPv6 avec DNS personnalisé
{
"DnsLookup": [
{
"id": "4",
"title": "Résolution IPv6 uniquement",
"url": "ipv6.example.com",
"dns_server": "8.8.8.8",
"resolve_ops": 2,
"value_output": "$adresse_ipv6"
}
]
}
Détails des paramètres d'entrée
1. url — Domaine ou IP à résoudre
Le nom de domaine ou l'adresse IP à traiter. Si déjà une adresse IPv4 ou IPv6 valide, retournée directement sans requête DNS. Supporte les références $variable_workflow.
| Valide | Comportement |
|---|---|
api.example.com |
Requête DNS effectuée |
192.168.1.1 |
Retournée directement (pas de requête DNS) |
2001:db8::1 |
Retournée directement (pas de requête DNS) |
$domaine |
Résolue depuis la variable, puis traitée |
"" |
Lève DNS-LOOK-UP-001 |
- Défaut :
""
2. dns_server — Serveur DNS personnalisé
L'adresse IP d'un serveur DNS personnalisé à utiliser pour la résolution. Si vide (""), le serveur DNS par défaut du système est utilisé (depuis les paramètres réseau de l'appareil).
| Exemple | Description |
|---|---|
"8.8.8.8" |
Google DNS |
"1.1.1.1" |
Cloudflare DNS |
"208.67.222.222" |
OpenDNS |
"" |
Défaut système (paramètres DNS de l'appareil) |
- Défaut :
""(défaut système)
3. resolve_ops — Stratégie de résolution
Une clé entière sélectionnant la stratégie DNS. Le comportement par défaut (valeur 0 ou omis) est PREFER_IPV6_FALLBACK_IPV4.
| Valeur | Stratégie | Description |
|---|---|---|
1 |
FORCE_IPV4 | A records uniquement — adresse IPv4 retournée |
2 |
FORCE_IPV6 | AAAA records uniquement — adresse IPv6 retournée |
3 |
PREFER_IPV6_FALLBACK_IPV4 | IPv6 d'abord ; repli sur IPv4 si pas de AAAA |
4 |
HAPPY_EYEBALLS | RFC 8305 requêtes concurrentes — première réponse gagne |
0 ou omis |
PREFER_IPV6_FALLBACK_IPV4 | Par défaut |
- Type : Entier
- Défaut :
0(PREFER_IPV6_FALLBACK_IPV4)
Détails des paramètres de sortie
value_output — Adresse IP résolue
Stocke la chaîne d'adresse IP résolue (depuis StrTaskResult) dans la variable workflow spécifiée.
- Pour les entrées domaine : l'adresse IP résolue par DNS
- Pour les entrées IP déjà passées : la même adresse IP retournée directement
- Peut être IPv4 (ex.
"93.184.216.34") ou IPv6 (ex."2606:2800:220:1:248:1893:25c8:1946") selon la stratégie de résolution
Stratégies de résolution DNS
Stratégie 1 : FORCE_IPV4 (resolve_ops: 1)
Interroge uniquement les enregistrements A. Retourne la première adresse IPv4 trouvée. Lève DNS-LOOK-UP-002 si aucun enregistrement A n'est disponible.
Cas d'usage : Systèmes hérités nécessitant IPv4 uniquement.
Stratégie 2 : FORCE_IPV6 (resolve_ops: 2)
Interroge uniquement les enregistrements AAAA. Retourne la première adresse IPv6 trouvée. Lève DNS-LOOK-UP-002 si aucun enregistrement AAAA n'est disponible.
Cas d'usage : Environnements réseau IPv6 uniquement.
Stratégie 3 : PREFER_IPV6_FALLBACK_IPV4 (resolve_ops: 3 ou par défaut)
Interroge d'abord les enregistrements AAAA. Si une adresse IPv6 est trouvée, elle est retournée. Si aucun enregistrement AAAA n'existe, repli sur la requête d'enregistrements A. Lève DNS-LOOK-UP-002 si aucun des deux n'est trouvé.
Cas d'usage : Réseaux modernes préférant IPv6 avec compatibilité descendante.
Stratégie 4 : HAPPY_EYEBALLS (resolve_ops: 4)
Implémente RFC 8305. Démarre une requête IPv6 (AAAA), puis après un court délai démarre une requête IPv4 (A) en parallèle. La première requête à retourner un résultat gagne. Lève DNS-LOOK-UP-002 si les deux échouent.
Cas d'usage : Performance optimale sur tout type de réseau.
Comparaison des stratégies
| Stratégie | resolve_ops |
IPv4 | IPv6 | Cas d'usage |
|---|---|---|---|---|
| FORCE_IPV4 | 1 |
✅ | ❌ | Systèmes hérités |
| FORCE_IPV6 | 2 |
❌ | ✅ | Réseaux IPv6 uniquement |
| PREFER_IPV6_FALLBACK_IPV4 | 3 ou 0 |
✅ (repli) | ✅ (préféré) | Réseaux modernes équilibrés |
| HAPPY_EYEBALLS | 4 |
✅ | ✅ | Optimisé (RFC 8305) |