Last summer, we had to do do some web programming and database design at my engineer school. Our group chose to create something more useful: an online DNS checker.
To get an idea of the project, without reading the rest of my post, head to http://www.dnsknife.com/about.php. There is a good description of the project on this page.
So, here we are, 6 months later and the website is running well. Actually it’s running on an Ubuntu 6 box hosted at school, but I’m going to transfer it to one of my CentOS boxes when I have a bit of spare time. The current server has severe memory issues and the database (PostgreSQL) goes down on a regular basis.
The website may look simple, but the code behind it is rather complicated. It’s a full MVC model coded in object oriented PHP5 and the database designs looks like that:
It’s full of dependencies everywhere as you can see, now let’s have a look at the application structure:
As you can see, it’s rather complicated (but not complex) for a PHP program. The watchdog is there to prevent any service from accessing controllers and managers it doesn’t have the right to access. This means that even if you are logged on the website, there is a full security check for each button or function you are trying to call. The “Technical” part is a module which queries DNS servers.
The whole design is very open to extensions, it was designed this way from the ground up. If you want to add a new DNS test, you can, very quickly.
Every function in the whole design has been documented with sequence diagrams. This was the most “boring” part, but in the end it is REALLY useful when you actually begin to code.
I’d like to thank my friends Simon Oulevay, Jonathan Rey and Sven Wagner for the good job, it was really a great and pleasant experience to work with you
Oh, and it’s free, we hope that it will be useful to some of you!




