ZoneMaster is a tool for zone file and name server management. It is designed for large name servers and makes configuration much easier. You should be able to run ZoneMaster on any UNIX-based system that uses the Internet Software Consortium's (ISC) implementation of Berkeley Internet Name Domain (BIND) as its name service daemon, which is the case for most large name servers on the net.
The software can be used to create new zones and to delete or modify existing ones in a variety of ways. All changes will take place in a database. A job handler then actually makes the changes take effect on the machines under control. The user interaction is possible with a standard compliant web browser. Because of the highly modular application design other types of interaction are possible. One such possibility are command line utilities or standalone applications with a more comfortable user interface.
The ZoneMaster project consists of a library that can configure BIND and a webfrontend that is used to access the data that is stored in a database like MySQL. A bootstrap script allows to initialize the database with all necessary information retrieved from an existing configuration. This means that an existing named.conf and all referenced zone files are read and the relevant information is stored in the database.
The software is already used in production. If you want to evaluate the software you can use a copy of your current configuration or create some test data with a script supplied for that purpose.
The management of multiple name servers with a large number of active zones is quite a complex task and tool support is required. Most of the tools that I knew when starting this project were either closed-source or very specific and non-modular. Therefore I decided to start building an open-source tool that is designed to be flexible and scalable.
Although I have written programs in lots of different languages in the past there is a strong relationship to Perl and Java. As Perl is widely used in system administration and as it is already available on most modern systems I decided to use object-oriented Perl. The project comprises perl modules (classes) that can manage zone files and BIND configuration. These modules are quite independent from the project and I intend to extract them into standalone libraries that will be published on the Comprehensive Perl Archive Network (CPAN).
Based on these modules, a web-interface allows to manage the data and a persistence framework keeps the information in a database. As all modules involved are kept as independent as possible.
To make the user-interface respond quickly a job handler takes care of all actions. This allows the decoupling of the user-interface from the database and from the name servers in use. The implemented mechanism will allow an undo functionality and an action history in a future release.
The whole project is designed to work in a distributed environment. This means that the user-interface might run on a different server (the web server) than the database and the name service.
The user-interface is built on XSLT-stylesheets. This means that the CGI produces XML data and sends it through an XSLT processor. It will therefore be possible in a future version to configure what stylesheet to use for every user. An individual look and feel for different users and user groups will be possible.