pomocí síťové knihovny BSD sockets (pokud není ve variantě zadání
uvedeno jinak). Projekt bude vypracován v jazyce C/C++. Pokud
individuální zadání nespecifikuje vlastní referenční systém, musí být
projekt přeložitelný a spustitelný na serveru merlin.fit.vutbr.cz pod operačním systémem Linux.
Vypracovaný projekt uložený v archívu .tar a se jménem xlogin00.tar odevzdejte elektronicky přes IS. Soubor nekomprimujte.
- Termín odevzdání je 19.11.2018 (hard deadline). Odevzdání e-mailem po uplynutí termínu, dodatečné opravy či doplnění kódu není možné.
- Odevzdaný projekt musí obsahovat:
- soubor se zdrojovým kódem (dodržujte jména souborů uvedená v konkrétním zadání),
- funkční Makefile pro překlad zdrojového souboru,
- dokumentaci (soubor manual.pdf),
která bude obsahovat uvedení do problematiky, návrhu aplikace, popis
implementace, základní informace o programu, návod na použití. V
dokumentaci se očekává následující: titulní strana, obsah, logické
strukturování textu, přehled nastudovaných informací z literatury, popis
zajímavějších pasáží implementace, použití vytvořených programů a
literatura. - soubor README obsahující krátký textový popis programu s případnými rozšířeními/omezeními, příklad spuštění a seznam odevzdaných souborů,
- další požadované soubory podle konkrétního typu zadání.
- Pokud v projektu nestihnete implementovat všechny požadované vlastnosti, je nutné veškerá omezení jasně uvést v dokumentaci a v souboru README.
- Co není v zadání jednoznačně uvedeno, můžete implementovat podle svého vlastního výběru. Zvolené řešení popište v dokumentaci.
- Při řešení projektu respektujte zvyklosti zavedené v OS unixového typu (jako je například formát textového souboru).
- Vytvořené programy by měly být použitelné a smysluplné, řádně komentované a formátované a členěné do funkcí a modulů. Program by měl obsahovat nápovědu informující uživatele o činnosti programu a jeho parametrech. Případné chyby budou intuitivně popisovány uživateli.
- Aplikace nesmí v žádném případě skončit s chybou SEGMENTATION FAULT ani jiným násilným systémovým ukončením (např. dělení nulou).
- Pokud přejímáte krátké pasáže zdrojových kódů z různých tutoriálů či příkladů z Internetu (ne mezi sebou), tak je nutné vyznačit tyto sekce a jejich autory dle licenčních podmínek, kterými se distribuce daných zdrojových kódů řídí. V případě nedodržení bude na projekt nahlíženo jako na plagiát.
- Konzultace k projektu podává vyučující, který zadání vypsal.
- Před odevzdáním zkontrolujte, zda jste dodrželi všechna jména souborů požadovaná ve společné části zadání i v zadání pro konkrétní projekt. Zkontrolujte, zda je projekt přeložitelný.
- Maximální počet bodů za projekt je 20 bodů.
- Maximálně 15 bodů za plně funkční aplikace.
- Maximálně 5 bodů za dokumentaci. Dokumentace se hodnotí pouze v případě funkčního kódu. Pokud kód není odevzdán nebo nefunguje podle zadání, dokumentace se nehodnotí.
- Příklad kriterií pro hodnocení projektů:
- nepřehledný, nekomentovaný zdrojový text: až -7 bodů
- nefunkční či chybějící Makefile: až -4 body
- nekvalitní či chybějící dokumentace: až -5 bodů
- nedodržení formátu vstupu/výstupu či konfigurace: -10 body
- odevzdaný soubor nelze přeložit, spustit a odzkoušet: 0 bodů
- odevzdáno po termínu: 0 bodů
- nedodržení zadání: 0 bodů
- nefunkční kód: 0 bodů
- opsáno: 0 bodů (pro všechny, kdo mají stejný kód), návrh na zahájení disciplinárního řízení.
Spuštění aplikace
dns-export [-r file.pcap] [-i interface] [-s syslog-server] [-t seconds]
- -r : zpracuje daný pcap soubor
- -i : naslouchá na daném síťovém rozhraní a zpracovává DNS provoz
- -s : hostname/ipv4/ipv6 adresa syslog serveru
- -t : doba výpočtu statistik, výchozí hodnota 60s
Upřesnění zadání:
Aplikace bude vytvářet následující statistiky:
domain-name rr-type rr-answer count
Pokud aplikace naslouchá na síťovém rozhraní, jsou statistiky odesílány na syslog server po vypršení definované doby dané přepínačem -t. Při zpracování pcap souboru jsou statistiky odeslány po jeho zpracování. Při obdržení signálu SIGUSR1 vypíše aplikace statistiky na standardní výstup.
Příklad:
google.com A 172.217.23.238 68
Definice syslog zprávy:
Syslog zprávy budou dodržovat syntaxi dle RFC 5424. Povinné položky je timestamp, hostname, pri, verze, název aplikace a samotná zpráva. Lze doplnit chybějící informace, jako např. PID procesu, aj. Facility je nastaveno na local0 a severity na Informational.
Příklad Syslog zprávy:
<134>1 2018-09-20T22:14:15.003Z 192.0.2.1 dns-export - - - google.com A 172.217.23.238 68
Limit pro syslog zprávy je typicky 1kB, pro efektivnost můžete sloučit více statistických zpráv do jedné syslog zprávy. V zjednodušené variantě lze posílat každou statistickou informaci jako samostatnou syslog zprávu.
Dokumentace:
Soubor Readme z obecného zadání nahraďte souborem dns-export.1 ve formátu a syntaxi manuálové stránky - viz https://liw.fi/manpages/
Dokumentaci ve formátu pdf vytvořte dle pokynu v obecném zadání.
Referenční virtuální stroj
Implementace bude testována na standardní instalaci distribuce CentOS7. Můžete použít image pro CentOS dostupný zde (user/user4lab, root/root4lab). Alternativně lze využít server merlin, kde lze otestovat zpracování pcap souboru (pro naslouchání na síťovém rozhraní je třeba root oprávnění).