repositorypackage
0.0.0-20240503144928-249d59f78d21
Repository: https://github.com/ececillo/dns-server-go.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
# README
Pour tester en local
dig @127.0.0.1 -p 2053 +noedns codecrafters.io
Détailler la commande ?
TODO
Feature
Principale
-
Parser la question.
-
Renommer les fonctions Read dans
header.go
etquestion.go
parParse
.
Answer
-
Créer le fichier
-
Définir la structure "Answer"
-
Ajouter les commentaires pour documenter les champs de la structure.
-
Définir une fonction Read qui va lire l'objet "Answer" et print avec fmt sous forme de tableau
-
Définir une fonction Write pour la structure "Answer" qui renvoie une slice de []byte.
- On utilisera les champs qui sont dans la structure de byte qui appelle la fonction Write.
-
Ajouter dans la fonction qui gère la lecture et l'écriture de la requête UDP
- Créer un objet "Answer" avec les éléments suivants:
- Name : \x0ccodecrafters\x02io followed by a null byte (that's codecrafters.io encoded as a label sequence)
- Type : 1 encoded as a 2-byte big-endian int (corresponding to the "A" record type)
- Class : 1 encoded as a 2-byte big-endian int (corresponding to the "IN" record class)
- TTL : Any value, encoded as a 4-byte big-endian int. For example: 60.
- Length : 4, encoded as a 2-byte big-endian int (corresponds to the length of the RDATA field)
- Data : Any IP address, encoded as a 4-byte big-endian int. For example: \x08\x08\x08\x08 (that's 8.8.8.8 encoded as a 4-byte integer)
- Créer un objet "Answer" avec les éléments suivants:
-
Créer un test qui réalise ce que codecraft fait.
Refactorisation
- Refactoriser le code en se basant sur la manière dont est implémenté le serveur DNS dans la net/dns.
Infra
- Créer un Dockerfile qui bundle le serveur.
- Pousser le Dockerfile sur le registry.
- Mettre en place le deployment de l'app sur le serveur VPS
Additionnel
- Créer une interface pour jouer avec le serveur.
Documentation
- Détailler en quoi consiste une serveur DNS
- Expliquer comment run le projet et tester avec
dig
par exemple.
Test
Server
- Créer une connexion avec le serveur UDP.
- Envoyer un requête TCP avec un Header et s'assurer que l'ID renvoyé est le même.
DNS Header
- Tester la construction du Header avec des valeurs incorrects d'après la spec
- Vérfiier que l'on renvoie bien une erreur et que c'est celle que l'on attend.
- Regarder sur internet quelles sont les potentiels failles que l'on peut avoir.