--- /dev/null
+# Iliad Project Build File
+
+cmake_minimum_required (VERSION 2.6)
+
+project(iliad)
+
+set (ILIAD_VERSION_MAJOR 1)
+set (ILIAD_VERSION_MINOR 0)
+
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -Wall -Werror")
+
+configure_file (
+ "${PROJECT_SOURCE_DIR}/include/iliad.hpp.in"
+ "${PROJECT_BINARY_DIR}/include/iliad.hpp"
+ )
+
+include_directories("include" "${PROJECT_BINARY_DIR}/include")
+
+set(CGI_HEADER_FILES
+ include/cgi/log.hpp
+ include/cgi/request.hpp
+ include/cgi/response.hpp
+ include/cgi/server.hpp
+)
+
+set(HEADER_FILES
+ include/exception.hpp
+ include/log.hpp
+ include/request.hpp
+ include/response.hpp
+ include/server.hpp
+)
+
+set(CGI_SOURCE_FILES
+ src/cgi/main.cpp
+ src/cgi/log.cpp
+ src/cgi/request.cpp
+)
+
+set(SOURCE_FILES
+ src/server.cpp
+ src/log.cpp
+ src/request.cpp
+ src/response.cpp
+)
+
+add_executable(iliad-cgi ${HEADER_FILES} ${SOURCE_FILES} ${CGI_HEADER_FILES} ${CGI_SOURCE_FILES})
+
+INSTALL(TARGETS iliad-cgi DESTINATION /usr/lib/cgi-bin)
--- /dev/null
+Iliad Internet Server.
+
+The Iliad Internet Server is a C++ Content Management System designed to manage websites.
+
+INSTALL
+-------
+
+mkdir build
+cd build
+cmake ..
+make
+sudo make install
+
+This places a copy of iliad-cgi in your /usr/lib/cgi-bin
+
+In a .htaccess file, you can setup a site with:
+
+RewriteEngine on
+RewriteRule ^(.*)$ /cgi-bin/iliad-cgi [QSA,L,E=ILIAD_CONFIG:/etc/iliad/iliad.dev]
+
--- /dev/null
+#include <iostream>
+#include <string>
+
+#include <log.hpp>
+
+namespace Iliad {
+
+namespace CGI {
+
+class Log : public Iliad::Log {
+
+public:
+ Log(std::ostream& out);
+
+ virtual void operator()(Iliad::Exception& e){
+ log << e.what() << std::endl;
+ }
+
+ virtual ~Log();
+
+private:
+ std::ostream& log;
+
+};
+
+}
+
+}
+
--- /dev/null
+#include <iostream>
+#include <vector>
+#include <string>
+
+#include <request.hpp>
+
+namespace Iliad {
+namespace CGI {
+
+class Request : public Iliad::Request {
+
+public:
+
+ Request(int argc, char** argv, std::istream& in);
+
+ Request(std::vector<std::string>& args, std::istream& in);
+
+};
+
+}
+}
+
--- /dev/null
+#include <iostream>
+
+#include <response.hpp>
+
+namespace Iliad {
+namespace CGI {
+
+class Response : public Iliad::Response {
+
+public:
+
+ Response(std::ostream& out) : Iliad::Response(){
+
+ }
+
+};
+
+
+}
+}
+
--- /dev/null
+#include <server.hpp>
+
+namespace Iliad {
+
+namespace CGI {
+
+class Server : public Iliad::Server {
+
+};
+
+}
+
+}
+
--- /dev/null
+#include <string>
+
+namespace Iliad {
+
+class Exception {
+
+public:
+ virtual ~Exception(){
+
+ }
+
+ virtual std::string what() = 0;
+
+protected:
+
+ Exception(){
+
+ }
+
+
+};
+
+}
+
--- /dev/null
+#define ILIAD_VERSION_MAJOR @ILIAD_VERSION_MAJOR@
+#define ILIAD_VERSION_MINOR @ILIAD_VERSION_MINOR@
+
+#define ILIAD "@ILIAD_VERSION_MAJOR@ @ILIAD_VERSION_MINOR@"
--- /dev/null
+#include <exception.hpp>
+
+namespace Iliad {
+
+class Log {
+
+public:
+ virtual ~Log();
+
+ virtual void operator()(Iliad::Exception& e) = 0;
+
+protected:
+ Log();
+
+};
+
+}
--- /dev/null
+#ifndef ILIAD_FILE_REQUEST
+#define ILIAD_FILE_REQUEST
+
+namespace Iliad {
+
+class Request {
+
+public:
+ Request();
+ virtual ~Request();
+
+};
+
+}
+
+#endif
+
--- /dev/null
+#ifndef ILIAD_FILE_RESPONSE
+#define ILIAD_FILE_RESPONSE
+
+namespace Iliad {
+
+class Response {
+
+public:
+ Response();
+ virtual ~Response();
+
+};
+
+}
+
+#endif
+
--- /dev/null
+#include <request.hpp>
+#include <response.hpp>
+
+namespace Iliad {
+
+class Server {
+
+public:
+ virtual ~Server();
+
+ virtual void process(Iliad::Request& req, Iliad::Response& rep);
+
+protected:
+ Server();
+
+};
+
+}
+
--- /dev/null
+#include <cgi/log.hpp>
+
+Iliad::CGI::Log::Log(std::ostream& out) : Iliad::Log::Log() , log(out){
+
+}
+
+Iliad::CGI::Log::~Log(){
+
+}
+
+
--- /dev/null
+#include <iliad.hpp>
+
+#include <iostream>
+
+#include <cgi/server.hpp>
+#include <cgi/log.hpp>
+#include <cgi/request.hpp>
+#include <cgi/response.hpp>
+
+int main(int argc, char** argv){
+
+ #ifdef DEBUG
+ std::cout << "Content-type: text/plain" << std::endl << std::endl;
+ #endif
+
+ Iliad::CGI::Log log(std::cerr);
+
+ Iliad::CGI::Request request(argc, argv, std::cin);
+
+ Iliad::CGI::Response response(std::cout);
+
+ Iliad::CGI::Server server;
+
+ try {
+ server.process(request, response);
+ return 0;
+ } catch(...){
+ return -1;
+ }
+
+}
+
--- /dev/null
+#include <cgi/request.hpp>
+
+Iliad::CGI::Request::Request(int argc, char** argv, std::istream& in) : Iliad::Request(){
+ std::vector<std::string> args;
+ for(int i = 0; i < argc; i ++){
+ args.push_back(std::string(argv[i]));
+ }
+ Request(args, in);
+}
+
+Iliad::CGI::Request::Request(std::vector<std::string>& args, std::istream& in){
+
+}
+
--- /dev/null
+#include <log.hpp>
+
+Iliad::Log::Log(){
+
+}
+
+Iliad::Log::~Log(){
+
+}
+
--- /dev/null
+#include <request.hpp>
+
+Iliad::Request::Request(){
+
+}
+
+Iliad::Request::~Request(){
+
+}
+
--- /dev/null
+#include <response.hpp>
+
+Iliad::Response::Response(){
+
+}
+
+Iliad::Response::~Response(){
+
+}
+
--- /dev/null
+#include <server.hpp>
+
+Iliad::Server::Server(){
+
+}
+
+Iliad::Server::~Server(){
+
+}
+
+void Iliad::Server::process(Iliad::Request& req, Iliad::Response& rep){
+
+}
+
+