/**************************************************************************/
// websrv.h -
/***************************************************************************
* The Dawn of Time v1.69r (c)1997-2004 Michael Garratt *
* >> A number of people have contributed to the Dawn codebase, with the *
* majority of code written by Michael Garratt - www.dawnoftime.org *
* >> To use this source code, you must fully comply with the dawn license *
* in licenses.txt... In particular, you may not remove this copyright *
* notice. *
**************************************************************************/
#ifndef WEBSRV_H
#define WEBSRV_H
// #define VALIDATE_HTML
// Validate HTML is turned on when pages are to be put
// thru an HTML validator.... leave it off because otherwise
// the HTML code uses <TT> and 'nbsp' (non breaking spaces) to
// format the code instead of <PRE> (since <FONT COLOR="..">
// sections shouldn't be within a <PRE> section
#define WEBIN_HEADER_BUF 7000
#define WEBIN_BODY_BUF 30000
#ifdef VALIDATE_HTML
#define WEBOUT_HEADER_BUF 50000
#define WEBOUT_BODY_BUF 100000
#else
#define WEBOUT_HEADER_BUF 5000
#define WEBOUT_BODY_BUF 20000
#endif
#define MAXLOCATION 50
#define MAXPASSLENGTH 20
#define MAXTITLE 100
#ifndef DOCTYPE
#define DOCTYPE "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n"
#endif
// prototypes
char * decodeBase64(char *);
enum requestTypes { UNDEFINED, GET, HEAD, POST };
enum contentTypes { CONTENT_TYPE_HTML, CONTENT_TEXT_PLAIN };
struct web_request_data{
bool receivingHeader;
char inHeaderBuf [WEBIN_HEADER_BUF];
int inHeaderLen;
char firstline[1024];
char referer[1024];
char user_agent[1024];
char inBodyBuf [WEBIN_BODY_BUF];
int inBodyLen;
char outHeaderBuf[WEBOUT_HEADER_BUF];
int outHeaderLen;
char outBodyBuf[WEBOUT_BODY_BUF];
int outBodyLen;
int IPnum;
int contentLength;
contentTypes contentType;
// web specific data
char username[MAXPASSLENGTH+1];
char password[MAXPASSLENGTH+1];
// HTTP version
char version[MAXPASSLENGTH+1];
int statusCode;
// int HTTPvMajor;
// int HTTPvMinor;
// requestinfo
requestTypes requestType;
char requestedLocation[MAXLOCATION+1];
};
#ifndef UMIN
#define UMIN(a, b) ((a) < (b) ? (a) : (b))
#define UMAX(a, b) ((a) > (b) ? (a) : (b))
#endif
#ifndef EWOULDBLOCK
#define EWOULDBLOCK 35
#endif
// stuff from the muds code
char *one_argument( const char *argument, char *arg_first );
bool str_cmp( const char *astr, const char *bstr );
bool str_prefix( const char *astr, const char *bstr );
#endif // WEBSRV_H