📄 webs.h
字号:
/* * webs.h -- GoAhead Web public header * * Copyright (c) GoAhead Software Inc., 1992-2000. All Rights Reserved. * * See the file "license.txt" for information on usage and redistribution * * $Id: webs.h,v 1.10 2003/12/01 23:52:30 hwolff Exp $ */#ifndef _h_WEBS#define _h_WEBS 1/******************************** Description *********************************//* * GoAhead Web Server header. This defines the Web public APIs. * Include this header for files that contain ASP or Form procedures. * Include wsIntrn.h when creating URL handlers. *//********************************* Includes ***********************************/#include "ej.h"#ifdef WEBS_SSL_SUPPORT #include "websSSL.h"#endif/********************************** Defines ***********************************//* * By license terms the server software name defined in the following line of * code must not be modified. */#define WEBS_NAME T("GoAhead-Webs")#define WEBS_VERSION T("2.1.8")#define WEBS_HEADER_BUFINC 512 /* Header buffer size */#define WEBS_ASP_BUFINC 512 /* Asp expansion increment */#define WEBS_MAX_PASS 32 /* Size of password */#define WEBS_BUFSIZE 1000 /* websWrite max output string */#define WEBS_MAX_HEADER (5 * 1024) /* Sanity check header */#define WEBS_MAX_URL 4096 /* Maximum URL size for sanity */#define WEBS_SOCKET_BUFSIZ 256 /* Bytes read from socket */#define WEBS_HTTP_PORT T("httpPort")#define CGI_BIN T("cgi-bin")/* * Request flags. Also returned by websGetRequestFlags(). */#define WEBS_LOCAL_PAGE 0x1 /* Request for local webs page */ #define WEBS_KEEP_ALIVE 0x2 /* HTTP/1.1 keep alive */#define WEBS_DONT_USE_CACHE 0x4 /* Not implemented cache support */#define WEBS_COOKIE 0x8 /* Cookie supplied in request */#define WEBS_IF_MODIFIED 0x10 /* If-modified-since in request */#define WEBS_POST_REQUEST 0x20 /* Post request operation */#define WEBS_LOCAL_REQUEST 0x40 /* Request from this system */#define WEBS_HOME_PAGE 0x80 /* Request for the home page */ #define WEBS_ASP 0x100 /* ASP request */ #define WEBS_HEAD_REQUEST 0x200 /* Head request */#define WEBS_CLEN 0x400 /* Request had a content length */#define WEBS_FORM 0x800 /* Request is a form */#define WEBS_REQUEST_DONE 0x1000 /* Request complete */#define WEBS_POST_DATA 0x2000 /* Already appended post data */#define WEBS_CGI_REQUEST 0x4000 /* cgi-bin request */#define WEBS_SECURE 0x8000 /* connection uses SSL */#define WEBS_AUTH_BASIC 0x10000 /* Basic authentication request */#define WEBS_AUTH_DIGEST 0x20000 /* Digest authentication request */#define WEBS_HEADER_DONE 0x40000 /* Already output the HTTP header *//* * URL handler flags */#define WEBS_HANDLER_FIRST 0x1 /* Process this handler first */#define WEBS_HANDLER_LAST 0x2 /* Process this handler last *//* * Per socket connection webs structure */typedef struct websRec { ringq_t header; /* Header dynamic string */ time_t since; /* Parsed if-modified-since time */ sym_fd_t cgiVars; /* CGI standard variables */ sym_fd_t cgiQuery; /* CGI decoded query string */ time_t timestamp; /* Last transaction with browser */ int timeout; /* Timeout handle */ char_t ipaddr[32]; /* Connecting ipaddress */ char_t type[64]; /* Mime type */ char_t *dir; /* Directory containing the page */ char_t *path; /* Path name without query */ char_t *url; /* Full request url */ char_t *host; /* Requested host */ char_t *lpath; /* Cache local path name */ char_t *query; /* Request query */ char_t *decodedQuery; /* Decoded request query */ char_t *authType; /* Authorization type (Basic/DAA) */ char_t *password; /* Authorization password */ char_t *userName; /* Authorization username */ char_t *cookie; /* Cookie string */ char_t *userAgent; /* User agent (browser) */ char_t *protocol; /* Protocol (normally HTTP) */ char_t *protoVersion; /* Protocol version */ int sid; /* Socket id (handler) */ int listenSid; /* Listen Socket id */ int port; /* Request port number */ int state; /* Current state */ int flags; /* Current flags -- see above */ int code; /* Request result code */ int clen; /* Content length */ int wid; /* Index into webs */ char_t *cgiStdin; /* filename for CGI stdin */ int docfd; /* Document file descriptor */ int numbytes; /* Bytes to transfer to browser */ int written; /* Bytes actually transferred */ void (*writeSocket)(struct websRec *wp);#ifdef DIGEST_ACCESS_SUPPORT char_t *realm; /* usually the same as "host" from websRec */ char_t *nonce; /* opaque-to-client string sent by server */ char_t *digest; /* digest form of user password */ char_t *uri; /* URI found in DAA header */ char_t *opaque; /* opaque value passed from server */ char_t *nc; /* nonce count */ char_t *cnonce; /* check nonce */ char_t *qop; /* quality operator */#endif#ifdef WEBS_SSL_SUPPORT websSSL_t *wsp; /* SSL data structure */#endif} websRec;typedef websRec *webs_t;typedef websRec websType;/******************************** Prototypes **********************************/extern int websAccept(int sid, char *ipaddr, int port, int listenSid);extern int websAspDefine(char_t *name, int (*fn)(int ejid, webs_t wp, int argc, char_t **argv));extern int websAspRequest(webs_t wp, char_t *lpath);extern void websCloseListen();extern int websDecode64(char_t *outbuf, char_t *string, int buflen);extern void websDecodeUrl(char_t *token, char_t *decoded, int len);extern void websDone(webs_t wp, int code);extern void websEncode64(char_t *outbuf, char_t *string, int buflen);extern void websError(webs_t wp, int code, char_t *msg, ...);/* function websErrorMsg() made extern 03 Jun 02 BgP */extern char_t *websErrorMsg(int code);extern void websFooter(webs_t wp);extern int websFormDefine(char_t *name, void (*fn)(webs_t wp, char_t *path, char_t *query));extern char_t *websGetDefaultDir();extern char_t *websGetDefaultPage();extern char_t *websGetHostUrl();extern char_t *websGetIpaddrUrl();extern char_t *websGetPassword();extern int websGetPort();extern char_t *websGetPublishDir(char_t *path, char_t **urlPrefix);extern char_t *websGetRealm();extern int websGetRequestBytes(webs_t wp);extern char_t *websGetRequestDir(webs_t wp);extern int websGetRequestFlags(webs_t wp);extern char_t *websGetRequestIpaddr(webs_t wp);extern char_t *websGetRequestLpath(webs_t wp);extern char_t *websGetRequestPath(webs_t wp);extern char_t *websGetRequestPassword(webs_t wp);extern char_t *websGetRequestType(webs_t wp);extern int websGetRequestWritten(webs_t wp);extern char_t *websGetVar(webs_t wp, char_t *var, char_t *def);extern int websCompareVar(webs_t wp, char_t *var, char_t *value);extern void websHeader(webs_t wp);extern int websOpenListen(int port, int retries);extern int websPageOpen(webs_t wp, char_t *lpath, char_t *path, int mode, int perm);extern void websPageClose(webs_t wp);extern int websPublish(char_t *urlPrefix, char_t *path);extern void websRedirect(webs_t wp, char_t *url);extern void websSecurityDelete();extern int websSecurityHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query);extern void websSetDefaultDir(char_t *dir);extern void websSetDefaultPage(char_t *page);extern void websSetEnv(webs_t wp);extern void websSetHost(char_t *host);extern void websSetIpaddr(char_t *ipaddr);extern void websSetPassword(char_t *password);extern void websSetRealm(char_t *realmName);extern void websSetRequestBytes(webs_t wp, int bytes);extern void websSetRequestFlags(webs_t wp, int flags);extern void websSetRequestLpath(webs_t wp, char_t *lpath);extern void websSetRequestPath(webs_t wp, char_t *dir, char_t *path);extern char_t *websGetRequestUserName(webs_t wp);extern void websSetRequestWritten(webs_t wp, int written);extern void websSetVar(webs_t wp, char_t *var, char_t *value);extern int websTestVar(webs_t wp, char_t *var);extern void websTimeoutCancel(webs_t wp);extern int websUrlHandlerDefine(char_t *urlPrefix, char_t *webDir, int arg, int (*fn)(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query), int flags);extern int websUrlHandlerDelete(int (*fn)(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t *query));extern int websUrlHandlerRequest(webs_t wp);extern int websUrlParse(char_t *url, char_t **buf, char_t **host, char_t **path, char_t **port, char_t **query, char_t **proto, char_t **tag, char_t **ext);extern char_t *websUrlType(char_t *webs, char_t *buf, int charCnt);extern int websWrite(webs_t wp, char_t* fmt, ...);extern int websWriteBlock(webs_t wp, char_t *buf, int nChars);extern int websWriteDataNonBlock(webs_t wp, char *buf, int nChars);extern int websValid(webs_t wp);extern int websValidateUrl(webs_t wp, char_t *path);extern void websSetTimeMark(webs_t wp);/* * The following prototypes are used by the SSL patch found in websSSL.c */extern int websAlloc(int sid);extern void websFree(webs_t wp);extern void websTimeout(void *arg, int id);extern void websReadEvent(webs_t wp);/* * Prototypes for functions available when running as part of the * GoAhead Embedded Management Framework (EMF) */#ifdef EMFextern void websFormExplain(webs_t wp, char_t *path, char_t *query);#endif#endif /* _h_WEBS *//******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -