diff -r 000000000000 -r 6f7a81934006 lib/cgi/cgi-base.cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/cgi/cgi-base.cc Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,110 @@
+// Copyright (C) 1999,2000 Bruce Guenter CGI Error
The following error occurred while trying to process your request:\r\n" + "
\r\n" << msg << "\r\n\r\n"; + const mystring referer = getenv("HTTP_REFERER"); + if(!referer.empty()) + fout << "\n"; + fout << "\n"; +} + +static void response_message(mystring msg) +{ + content_type("text/html"); + fout << "" + "\n" + "
" << msg << "
\n"; + const mystring referer = getenv("HTTP_REFERER"); + if(!referer.empty()) + fout << "\n"; + fout << "\n"; +} + +CGI::CGI(const CGIArgs& a) + : args(a), + redirect_url(a["redirect"]), + error_redirect_url(a["error_redirect"]), + vdomain(a["vdomain"]), + password(a["password"]) +{ + must_be_defined("vdomain"); + must_be_defined("password"); +} + +void CGI::must_be_defined(mystring var) +{ + if(!args.exists(var)) + error("The input field '" + var + "' must be defined"); +} + +void CGI::success(mystring msg) +{ + if(!redirect_url) response_message(msg); + else redirect(redirect_url); + exit(0); +} + +void CGI::error(mystring msg) +{ + if(!error_redirect_url) error_message(msg); + else redirect(error_redirect_url); + exit(1); +} + +int main(void) +{ + struct timeval tv; + gettimeofday(&tv, 0); + srandom(tv.tv_usec ^ tv.tv_sec); + CGIArgs cgiargs; + if(cgiargs.error()) + error_message(cgiargs.errorstr()); + else + CGI(cgiargs).main(); +}