summaryrefslogtreecommitdiffstats
path: root/c/src/libnetworking/rtems_webserver/wsIntrn.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-10-27 12:50:33 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-10-27 12:50:33 +0000
commitc1cdaa0ce8017b075487e6670f89eb4e715258ea (patch)
treed4571a02595d6cf6a24d40d6968d83ece3b7a574 /c/src/libnetworking/rtems_webserver/wsIntrn.h
parentNew files created by split of old imfs_handlers.c. (diff)
downloadrtems-c1cdaa0ce8017b075487e6670f89eb4e715258ea.tar.bz2
Patch from Emmanuel Raguet <raguet@crf.canon.fr> and Eric Valette
<valette@crf.canon.fr> 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 <nickb@goahead.com> on 26 Oct 1999 about this port and got verbal approval to include it in RTEMS distributions.
Diffstat (limited to '')
-rw-r--r--c/src/libnetworking/rtems_webserver/wsIntrn.h268
1 files changed, 268 insertions, 0 deletions
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 <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+#if WIN
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <io.h>
+#endif
+
+#if CE
+#if ! UEMF
+ #include <io.h>
+#endif
+#endif
+
+#if NW
+ #include <fcntl.h>
+ #include <sys/stat.h>
+#endif
+
+#if LYNX
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <signal.h>
+ #include <unistd.h>
+#endif
+
+#if UNIX
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <signal.h>
+ #include <unistd.h>
+#endif
+
+#if QNX4
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <signal.h>
+ #include <unistd.h>
+ #include <unix.h>
+#endif
+
+#if UW
+ #include <fcntl.h>
+ #include <sys/stat.h>
+#endif
+
+#if VXW486
+ #include <vxWorks.h>
+ #include <fcntl.h>
+ #include <sys/stat.h>
+#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 */
+
+/******************************************************************************/