Google Summer of Code 2006 Project Proposal
Simplified Apache Configuration (SAC) Utility
Document Version: 1
Name: Dan Kahan
Email: <dan.kahan AT SPAMFREE gmail DOT com>
- I am currently a student at Georgetown University, where I have spent the past year and a half working on agent-based collaboration as a research assistant. As part of that project, I have spent a spent a good deal of time working on web service discovery and composition. Before that, I spent a summer with IBM's Software Group, where I did system testing and development. The one common element in the work and research I've done is the use of the use of Apache HTTP Server (and the derivative IBM HTTP Server). I have been through the process of setting up, configuring, and troubleshooting dozens, if not hundreds, of Apache HTTP Server installations. My experience doing so the motivation behind this project proposal.
When I read Matt Cutts' discussion of an Apache configuration tool as a possible SoC project, I could not help but to ask why no one had already done this. The goal of this project is thus to provide a tool to simplify the configuration of advanced features in httpd.conf and .htaccess files. The tool will be useful to novices as well as experts. Beyond simply generating the syntax to be placed in the server’s configuration files, the tool will actually attempt to make the configuration changes and will be accessible via the command-line or the Web.
- Apache HTTP Server is already a fantastic piece of software that enjoys an incredible level of popularity. However, many of its users are unfamiliar with editing configuration files and enabling some of the “power” features of the server. By offering a utility to make configuration of HTTP Server simpler, current users would be better able to take advantage of features like URL redirection and password protection and prospective users would be more likely to try the server and its advanced features.
SACSG – command-line tool to generate syntax for common configuration tasks
SACCE – command-line tool to generate syntax and make changes to configuration files
phpSAC – easy-to-use Web interface to command-line utilities
Names are subject to change, pending my ability to come up with some clever acronyms (or backronyms). More complete descriptions of each item can be found below.
Milestone 1 – Command-Line Syntax Generator
- The first development phase will consist of conducting research on webmaster forums, blogs, and elsewhere to make a list of the top ten or so most frequently-asked Apache configuration questions. From preliminary research, it seems that questions about virtual hosts, making dynamic pages appear static, and password-protecting directories are common tasks that could be simplified with the tool. Then, the solutions to these questions will be cataloged. If there are multiple solutions to a given problem, I will attempt to determine which solution represents the best practice based on several criteria, including security and efficiency. This research will be used for the creation of a multiplatform command-line utility (Simplified Apache Configuration Syntax Generator, or SACSG) which will, given a configuration task and some parameters, provide the user with the necessary syntax and brief instructions as to where it needs to go and what needs to be done for changes to take place. The tool will be fully-configurable so that new capabilities can be added.
Milestone 2 – Command-Line Configuration Editor
- The second development phase involves enabling the command-line utility to actually make the changes to the necessary configuration files. There are variables here that will have to be taken into account – platform type, file system permissions, HTTP Server version, and others.
Milestone 3 – Web Interface
- The third milestone will involve creating an easy-to-use, intuitive Web interface (“phpSAC”) for the command-line tool. At this point, the Web interface will be built using PHP, but as the needs of the project become clearer, this may change.
Milestone 4 – Hardening, Testing, and Documentation
- As the Web interface will need to have certain privileges to edit files and possibly even stop and start the HTTP Server, it is imperative that inputs are all checked and cleaned and that SACSG is developed with secure programming practices. The Web interface must take special care to ensure that arbitrary code cannot be executed on the remote system (or, in the case of a local installation, on the local system by a remote attacker). The utility will be tested to ensure that it runs on many popular platforms. Unit testing will be performed throughout the development cycle and volunteers will be solicited to run test cases once the Web interface is complete.
- Milestone 1 - June 1
- Milestone 2 - July 5
- Milestone 3 - July 29
- Milestone 4 - August 25