From d45be55a67f8b6f0eea9cf4f1845cd1433353015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20De=20Keersmaeker?= <francois.dekeersmaeker@uclouvain.be> Date: Fri, 29 Nov 2024 10:30:27 +0100 Subject: [PATCH] Support for DNS subdomains --- profile_translator_blocklist/protocols | 2 +- profile_translator_blocklist/templates/callback.c.j2 | 3 ++- profile_translator_blocklist/templates/main.c.j2 | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/profile_translator_blocklist/protocols b/profile_translator_blocklist/protocols index 9f79c30..5cf2ab5 160000 --- a/profile_translator_blocklist/protocols +++ b/profile_translator_blocklist/protocols @@ -1 +1 @@ -Subproject commit 9f79c30e33e8e2625c274c90482fddf259685b76 +Subproject commit 5cf2ab501e6fba18273a5dd4e337b1416bf88bc9 diff --git a/profile_translator_blocklist/templates/callback.c.j2 b/profile_translator_blocklist/templates/callback.c.j2 index 9fd9781..4ad54f5 100644 --- a/profile_translator_blocklist/templates/callback.c.j2 +++ b/profile_translator_blocklist/templates/callback.c.j2 @@ -215,6 +215,7 @@ uint32_t callback_{{nfqueue_name}}(int pkt_id, int pkt_len, uint8_t *payload, vo {% if "domain_name" in nfq_match["template"] %} {% set domain_name = nfq_match["match"] %} domain_name = "{{domain_name}}"; + subdomain = "{{domain_name.split('.', 1)[1]}}"; ip_list = dns_get_ip_from_name(dns_message.answers, dns_message.header.ancount, domain_name); {% endif %} {% endif %} @@ -225,7 +226,7 @@ uint32_t callback_{{nfqueue_name}}(int pkt_id, int pkt_len, uint8_t *payload, vo {% if is_dns_response.value %} if (ip_list.ip_count > 0) { // Add IP addresses to DNS map - dns_map_add(dns_map, domain_name, ip_list); + dns_map_add(dns_map, subdomain, ip_list); } {% endif %} diff --git a/profile_translator_blocklist/templates/main.c.j2 b/profile_translator_blocklist/templates/main.c.j2 index 83d9167..1ce5511 100644 --- a/profile_translator_blocklist/templates/main.c.j2 +++ b/profile_translator_blocklist/templates/main.c.j2 @@ -115,10 +115,11 @@ int main(int argc, char *argv[]) { ret = dns_receive_response(sockfd, &server_addr, &dns_response); if (ret == 0) { ip_list = dns_get_ip_from_name(dns_response.answers, dns_response.header.ancount, "{{name}}"); - dns_map_add(dns_map, "{{name}}", ip_list); + {% set subdomain = name.split(".", 1)[1] %} + dns_map_add(dns_map, "{{subdomain}}", ip_list); #ifdef DEBUG // Check DNS map has been correctly updated - dns_entry = dns_map_get(dns_map, "{{name}}"); + dns_entry = dns_map_get(dns_map, "{{subdomain}}"); dns_entry_print(dns_entry); #endif /* DEBUG */ } -- GitLab