From c1cdaa0ce8017b075487e6670f89eb4e715258ea Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 27 Oct 1999 12:50:33 +0000 Subject: Patch from Emmanuel Raguet and Eric Valette to add a port of the GoAhead web server (httpd) to the RTEMS build tree. They have successfully used this BSP on i386/pc386 and PowerPC/mcp750. Mark and Joel spoke with Nick Berliner on 26 Oct 1999 about this port and got verbal approval to include it in RTEMS distributions. --- c/src/libnetworking/rtems_webserver/wsIntrn.h | 268 ++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 c/src/libnetworking/rtems_webserver/wsIntrn.h (limited to 'c/src/libnetworking/rtems_webserver/wsIntrn.h') diff --git a/c/src/libnetworking/rtems_webserver/wsIntrn.h b/c/src/libnetworking/rtems_webserver/wsIntrn.h new file mode 100644 index 0000000000..bd77ef8862 --- /dev/null +++ b/c/src/libnetworking/rtems_webserver/wsIntrn.h @@ -0,0 +1,268 @@ +/* + * wsIntrn.h -- Internal Go Ahead Web server header + * + * Copyright (c) Go Ahead Software Inc., 1992-1999. All Rights Reserved. + * + * See the file "license.txt" for information on usage and redistribution + */ + +#ifndef _h_WEBS_INTERNAL +#define _h_WEBS_INTERNAL 1 + +/******************************** Description *********************************/ + +/* + * Internal Go Ahead Web Server header. This defines the Web private APIs + * Include this header when you want to create URL handlers. + */ + +/*********************************** Defines **********************************/ + +/* + * Define this to enable login of web accesses to a file + * #define WEBS_LOG_SUPPORT 1 + * + * Define this to enable HTTP/1.1 keep alive support + * #define WEBS_KEEP_ALIVE_SUPPORT 1 + * + * Define this to enable if-modified-since support + * #define WEBS_IF_MODIFIED_SUPPORT 1 + * + * Define this to support proxy capability and track local vs remote request + * Note: this is not yet fully implemented. + * #define WEBS_PROXY_SUPPORT 1 + * + * Define this to support reading pages from ROM + * Note: this is not yet fully implemented. + * #define WEBS_PAGE_ROM 1 + * + * Define this to enable memory allocation and stack usage tracking + * #define B_STATS 1 + */ + +/********************************** Includes **********************************/ + +#include +#include +#include +#include + +#if WIN + #include + #include + #include +#endif + +#if CE +#if ! UEMF + #include +#endif +#endif + +#if NW + #include + #include +#endif + +#if LYNX + #include + #include + #include + #include +#endif + +#if UNIX + #include + #include + #include + #include +#endif + +#if QNX4 + #include + #include + #include + #include + #include +#endif + +#if UW + #include + #include +#endif + +#if VXW486 + #include + #include + #include +#endif + +#if UEMF + #include "uemf.h" + #include "ej.h" +#else + #include "emf/emfInternal.h" +#endif + +#include "webs.h" + +/********************************** Defines ***********************************/ +/* + * Read handler flags and state + */ +#define WEBS_BEGIN 0x1 /* Beginning state */ +#define WEBS_HEADER 0x2 /* Ready to read first line */ +#define WEBS_POST 0x4 /* POST without content */ +#define WEBS_POST_CLEN 0x8 /* Ready to read content for POST */ +#define WEBS_PROCESSING 0x10 /* Processing request */ +#define WEBS_KEEP_TIMEOUT 15000 /* Keep-alive timeout (15 secs) */ +#define WEBS_TIMEOUT 60000 /* General request timeout (60) */ + +#define PAGE_READ_BUFSIZE 512 /* bytes read from page files */ +#define MAX_PORT_LEN 10 /* max digits in port number */ + +/* + * URL handler structure. Stores the leading URL path and the handler + * function to call when the URL path is seen. + */ +typedef struct { + int (*handler)(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, + char_t *url, char_t *path, + char_t *query); /* Callback URL handler function */ + char_t *webDir; /* Web directory if required */ + char_t *urlPrefix; /* URL leading prefix */ + int len; /* Length of urlPrefix for speed */ + int arg; /* Argument to provide to handler */ + int flags; /* Flags */ +} websUrlHandlerType; + +/* + * Webs statistics + */ +typedef struct { + long errors; /* General errors */ + long redirects; + long net_requests; + long activeNetRequests; + long activeBrowserRequests; + long timeouts; + long access; /* Access violations */ + long localHits; + long remoteHits; + long formHits; + long handlerHits; +} websStatsType; + +extern websStatsType websStats; /* Web access stats */ + +/* + * Error code list + */ +typedef struct { + int code; /* HTTP error code */ + char_t *msg; /* HTTP error message */ +} websErrorType; + +/* + * Mime type list + */ +typedef struct { + char_t *type; /* Mime type */ + char_t *ext; /* File extension */ +} websMimeType; + +/* + * File information structure. + */ +typedef struct { + unsigned long size; /* File length */ + int isDir; /* Set if directory */ + time_t mtime; /* Modified time */ +} websStatType; + +/* + * Compiled Rom Page Index + */ +typedef struct { + char_t *path; /* Web page URL path */ + unsigned char *page; /* Web page data */ + int size; /* Size of web page in bytes */ + int pos; /* Current read position */ +} websRomPageIndexType; + +/* + * Defines for file open. + */ +#ifndef CE +#define SOCKET_RDONLY O_RDONLY +#define SOCKET_BINARY O_BINARY +#else /* CE */ +#define SOCKET_RDONLY 0x1 +#define SOCKET_BINARY 0x2 +#endif /* CE */ + +extern websRomPageIndexType websRomPageIndex[]; +extern websMimeType websMimeList[]; /* List of mime types */ +extern sym_fd_t websMime; /* Set of mime types */ +extern webs_t* webs; /* Session list head */ +extern int websMax; /* List size */ +extern char_t websHost[64]; /* Name of this host */ +extern char_t websIpaddr[64]; /* IP address of this host */ +extern char_t *websHostUrl; /* URL for this host */ +extern int websPort; /* Port number */ + +/******************************** Prototypes **********************************/ + +extern int websAspOpen(); +extern void websAspClose(); +extern void websFormOpen(); +extern void websFormClose(); +extern int websAspWrite(int ejid, webs_t wp, int argc, char_t **argv); +extern void websDefaultClose(); +extern int websDefaultHandler(webs_t wp, char_t *urlPrefix, + char_t *webDir, int arg, char_t *url, char_t *path, + char_t *query); +extern int websFormHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, + int arg, char_t *url, char_t *path, char_t *query); +extern int websOpen(int sid); +extern void websResponse(webs_t wp, int code, char_t *msg, + char_t *redirect); +extern int websJavaScriptEval(webs_t wp, char_t *script); +extern int websPageReadData(webs_t wp, char *buf, int nBytes); +extern int websPageOpen(webs_t wp, char_t *lpath, char_t *path, int mode, int perm); +extern void websPageClose(webs_t wp); +extern void websPageSeek(webs_t wp, long offset); +extern int websPageStat(webs_t wp, char_t *lpath, char_t *path, + websStatType *sbuf); +extern int websPageIsDirectory(char_t *lpath); +extern int websRomOpen(); +extern void websRomClose(); +extern int websRomPageOpen(webs_t wp, char_t *path, int mode, int perm); +extern void websRomPageClose(int fd); +extern int websRomPageReadData(webs_t wp, char *buf, int len); +extern int websRomPageStat(char_t *path, websStatType *sbuf); +extern long websRomPageSeek(webs_t wp, long offset, int origin); +extern void websSetRequestSocketHandler(webs_t wp, int mask, + void (*fn)(webs_t wp)); +extern int websSolutionHandler(webs_t wp, char_t *urlPrefix, + char_t *webDir, int arg, char_t *url, char_t *path, + char_t *query); +extern void websUrlHandlerClose(); +extern int websUrlHandlerOpen(); +extern int websOpenServer(int port, int retries); +extern void websCloseServer(); +extern char_t* websGetDateString(websStatType* sbuf); + +/* + * Prototypes for functions available when running as part of the + * GoAhead Embedded Management Framework (EMF) + */ +#if EMF +extern int websEmfOpen(); +extern void websEmfClose(); +extern void websSetEmfEnvironment(webs_t wp); +#endif + +#endif /* _h_WEBS_INTERNAL */ + +/******************************************************************************/ -- cgit v1.2.3