Giter VIP home page Giter VIP logo

holdr's Introduction

Semester project for subject Network Algorithmics (Algoritmy v sieťach - AvS)

Project

  • It's Authoritative DNS
  • written in C
  • stable (?)
  • with wide variety of $features = {sanity \over 13 weeks}$

Features

  • TOML configuration file
  • Zone files (using RFC-1035 format) with custom parser
  • Support for basic DNS resource record types (A/NS/CNAME/SOA/MX/TXT/AAAA)
  • Hierarchically designed database:
    • Trie - to store zones (keyed by zone name, each zone represented in form of HashTable)
    • HashTable that is keyed by each unique domain name in said zone (value stores DomainNameDB)
    • DomainNameDB that is keyed by a RR type (A/TXT/..). Value contains final ResourceRecord chain (chain in case where multiple records of the same domainname+type exist)

Development

Naming conventions

We're trying to mostly follow the sane GTK+ naming conventions in here, so basically:

  • All macros and constants in caps: MAX_BUFFER_SIZE, TRACKING_ID_PREFIX.
  • Struct names, enums and typedef's in camelcase: ArrayList, TrackingOrder.
  • Functions that operate on structs: classic C style: arraylist_init(), print_something() (note the prefix for struct-related functions).
  • Local variables/function parameters: snake_case please please please please please please

Notes

holdr's People

Contributors

jozefgalbicka avatar hjk08 avatar martinsg8 avatar

Stargazers

 avatar

Watchers

 avatar

holdr's Issues

I am new to GitHub and I have lots to say

I DONT GIVE A FUCK ABOUT THE FUCKING CODE! i just want to download this stupid fucking application and use it!

WHY IS THERE CODE??? MAKE A FUCKING .EXE FILE AND GIVE IT TO ME. these dumbfucks think that everyone is a developer and understands code. well i am not and i don't understand it. I only know to download and install applications. SO WHY THE FUCK IS THERE CODE? make an EXE file and give it to me. STUPID FUCKING SMELLY NERDS

(For those that don't know)

Data Structures - additional functionality required

We'll need these things to be implemented (regarding Trie) in preparation for DNS database:

  • each Trie-node should be able to store some universal pointer (universal pointer preferred, though it will be used just to store pointer to RedBlack Tree that will hold the zone)
  • to search for word in Trie and be able to get the pointer in the found RBT node
  • also consider editing insert_trie() function to add 3rd parameter (pointer to be set for the node)
  • being able to have iterator would be nice-to-have, considering that during shutdown of the application we have to find all the RBTs that reside in a Trie to free up the memory. Also iterator would allow us to find all the hosted zones (RBTs), so we could benefit from increased verbosity and easier debug

Also for HashTable:

  • rework it so that if I'll search for specific word/key (domain name, e.g. web.google.com), I'll get data (pointer) to my desired stored data structure directly instead of the current approach - where I have to calculate the index of the word/key in the HashTable and then manually search for my desired data in the list of synonyms

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.