1stMUD4.0/bin/
1stMUD4.0/doc/MPDocs/
1stMUD4.0/player/
1stMUD4.0/win32/
1stMUD4.0/win32/rom/
/*	
 *	Web.h was made because some webmasters don't know the first thing
 *	about code.  So I saw it as a chance to dip my quill into a little
 *	more coding.
 *	
 *	What this is for is use with 'show_web_file' in websvr.c, it will
 *	do about the exact same as 'show_file' but for the WWW.  What this
 *	will do is show HTML files from a directory rather from code.
 *	
 *	The file types go like this:
 *
 *	*.ti	These are files that are just one solid page with no code
 *		before or after it.  Such as an index page or error page.
 *
 *	*.tih	This will be a header (Telnet Interface Header), that will
 *	start out a HTML file with tags or what not, before the code.
 *	Placing graphics for headers is not uncommon and leave a nice touch.
 *	
 *	*.tif	This will be a footer (Telnet Interface Footer), it will clean
 *	up the mess made by the code, and finish the HTML, providing links
 *	and so on and so forth.  This is your interface, be creative :)
 *
 *	This should make those rudy poo webmasters happy, somewhat :)
 *	Just explain that they will have to account for the middle of the html
 *	to be code generated and to format accordingly before and after.
 *
 *	-- Christopher Aaron Haslage (Yakkov) 6/3/99 (No Help)
***************************************************************************
*       1stMUD ROM Derivative (c) 2001-2003 by Ryan Jennings              *
*            http://1stmud.dlmud.com/  <r-jenn@shaw.ca>                   *
***************************************************************************/

 /* Modded for 1stMUD by Markanth 14/05/2003 */

#if !defined(WEBSERVER_H)
#define WEBSERVER_H

#if !defined(NO_WEB)

#define DOCTYPE "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n"

/*
 * Added: 21 April 2001 (Trax)
 * Moved to a .h file as some of this info is gonna be useful elsewhere
 * (and I don't like bloating merc.h/mud.h, its bad enough as it is)
 *
 * Define various places where web pages will reside for the server to serve
 * as well as any other misc files req.
 */

#define AUTH_DOMAIN     "Staff Area - Username and Password are CASE SENSITIVE."	/* Secure Area Description */
#define MAXDATA         MAX_STRING_LENGTH

#define DEFAULT_URL     "http://%s:%d/"
#define TELNET_URL		"telnet://%s:%d/"

#define WEBSERVERPORT   (port + 5)	// port the web server will run on

/* HTTP Basic Auth req. Base64 encoded/decode */
PROTOTYPE(void Base64Decode, (char *, unsigned char *, int));

typedef struct web_descriptor WEB_DESCRIPTOR;

struct web_descriptor
{
	WEB_DESCRIPTOR *next;
	WEB_DESCRIPTOR *prev;
	int fd;
	char request[MAXDATA];
	struct sockaddr_in their_addr;
	bool valid;
	bool keepalive;
};

typedef bool WEB_FUN(WEB_DESCRIPTOR * wdesc, char *path, const char *stuff);

#define HANDLE_URL(fun)	bool fun (WEB_DESCRIPTOR *wdesc, char *path, const char *stuff)

struct request_type
{
	char *req;
	char *name;
	WEB_FUN *fun;
	bool secure;
};

EXTERN const struct request_type request_table[];

/* FUNCTION DEFS */
PROTOTYPEF(int send_buf, (int, const char *, ...), 2, 3);
PROTOTYPE(void handle_web_request, (WEB_DESCRIPTOR *));

PROTOTYPE(bool init_web_server, (void));
PROTOTYPE(void update_web_server, (void));
PROTOTYPE(void shutdown_web_server, (void));

#endif
#endif