⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsapifilter.h

📁 精通tomcat书籍原代码,希望大家共同学习
💻 H
字号:
/*--------------------------------------------------------------------
 *
 *      File:      dsapifilter.h
 *
 *      Copyright (c)1999 Iris Associates
 *
 *-------------------------------------------------------------------*/

#if !defined(DSAPIFILTER_H)
#define DSAPIFILTER_H

#ifdef __cplusplus
extern "C"
{
#endif

/*---
 *      Types and Defines
 */

#define kInterfaceVersion   2
#define kMaxFilterDesc   255

    typedef unsigned char LMBCS;

    typedef enum
    {
        kFilterNotHandled = 0,
        kFilterHandledRequest = 1,
        kFilterHandledEvent = 2,
        kFilterError = 3
    }
    FilterReturnCode;

/*--
 *      Filter interface
 */

/*---
*      events to register for
*/
    typedef enum
    {
        kFilterRawRequest = 0x01,
        kFilterParsedRequest = 0x02,
        kFilterAuthUser = 0x04,
        kFilterUserNameList = 0x08,
        kFilterMapURL = 0x10,
        kFilterResponse = 0x20,
        kFilterRawWrite = 0x40,
        kFilterEndRequest = 0x80,
        kFilterAny = 0xFF
    }
    EventFlags;

/*---
 *      filter initialization data
 */
    typedef struct
    {
        unsigned int serverFilterVersion;
        unsigned int appFilterVersion;
        unsigned int eventFlags;
        unsigned int initFlags;
        char filterDesc[kMaxFilterDesc + 1];
    }
    FilterInitData;

/*---
 *      request line structure
 */
    typedef struct
    {
        unsigned int method;
        char *URL;
        char *version;
        char *userName;
        char *password;
        unsigned char *clientCert;
        unsigned int clientCertLen;
        char *contentRead;
        unsigned int contentReadLen;
    }
    FilterRequest;

/*---
 *      filter context data included in every call to filter
 */
    typedef struct _FilterContext
    {
        unsigned int contextSize;
        unsigned int revision;
        void *serverContext;
        unsigned int serverReserved;
        unsigned int securePort;
        void *privateContext;

        int (*GetRequest) (struct _FilterContext * context,
                           FilterRequest * request, unsigned int *errID);

        int (*GetRequestContents) (struct _FilterContext * context,
                                   char **contents, unsigned int *errID);

        int (*GetServerVariable) (struct _FilterContext * context, char *name,
                                  void *buffer, unsigned int bufferSize,
                                  unsigned int *errID);

        int (*WriteClient) (struct _FilterContext * context, char *buffer,
                            unsigned int bufferLen, unsigned int reserved,
                            unsigned int *errID);

        void *(*AllocMem) (struct _FilterContext * context, unsigned int size,
                           unsigned int reserved, unsigned int *errID);

        int (*ServerSupport) (struct _FilterContext * context,
                              unsigned int funcType, void *data1, void *data2,
                              unsigned int other, unsigned int *errID);
    }
    FilterContext;

    typedef unsigned int (*FilterInitFuncType) (FilterInitData * initData);
    typedef unsigned int (*FilterEventFuncType) (FilterContext * context,
                                                 unsigned int eventType,
                                                 void *eventData,
                                                 unsigned int *errID);
    typedef unsigned int (*FilterTermFuncType) (unsigned int);

/*---
 *      request methods
 */
    typedef enum
    {
        kRequestNone = 0,
        kRequestHEAD = 1,
        kRequestGET = 2,
        kRequestPOST = 3,
        kRequestPUT = 4,
        kRequestDELETE = 5
    }
    RequestMethod;

/*---
 *      server support function types
 */
    typedef enum
    {
        kWriteResponseHeaders = 1
    }
    ServerSupportTypes;

/*---
 *      'data1' for server support function 'kWriteResponseHeaders'
 */
    typedef struct
    {
        unsigned int responseCode;
        char *reasonText;
        char *headerText;
    }
    FilterResponseHeaders;

/*---
 *      raw request (headers not processed yet)
 */
    typedef struct
    {
        unsigned int requestMethod;

        int (*GetAllHeaders) (FilterContext * context, char **headers,
                              unsigned int *errID);

        int (*GetHeader) (FilterContext * context, char *name, char *buffer,
                          unsigned int bufferSize, unsigned int *errID);

        int (*SetHeader) (FilterContext * context, char *name, char *value,
                          unsigned int *errID);

        int (*AddHeader) (FilterContext * context, char *header,
                          unsigned int *errID);

        unsigned int reserved;
    }
    FilterRawRequest;

/*---
 *      parsed request
 */
    typedef struct
    {
        unsigned int requestMethod;

        int (*GetAllHeaders) (FilterContext * context, char **headers,
                              unsigned int *errID);

        int (*GetHeader) (FilterContext * context, char *name, char *buffer,
                          unsigned int bufferSize, unsigned int *errID);

        unsigned int reserved;
    }
    FilterParsedRequest;

/*---
 *      URL map
 */
    typedef struct
    {
        const char *url;
        char *pathBuffer;
        unsigned int bufferSize;
        unsigned int mapType;
    }
    FilterMapURL;

/*---
 *      URL map types
 */
    typedef enum
    {
        kURLMapUnknown = 0,
        kURLMapPass = 1,
        kURLMapExec = 2,
        kURLMapRedirect = 3,
        kURLMapService = 4,
        kURLMapDomino = 5
    }
    FilterULMapTypes;

/*---
 *      user authentication
 */
    typedef struct
    {
        LMBCS *userName;
        LMBCS *password;
        unsigned char *clientCert;
        unsigned int clientCertLen;
        unsigned int authFlags;
        unsigned int preAuthenticated;
        unsigned int foundInCache;
        unsigned int authNameSize;
        LMBCS *authName;
        unsigned int authType;

        int (*GetUserNameList) (FilterContext * context, LMBCS * buffer,
                                unsigned int bufferSize,
                                unsigned int *numNames, unsigned int reserved,
                                unsigned int *errID);

        int (*GetHeader) (FilterContext * context, char *name, char *buffer,
                          unsigned int bufferSize, unsigned int *errID);
    }
    FilterAuthenticate;

/*---
 *      user authentication types
 */
    typedef enum
    {
        kNotAuthentic = 0,
        kAuthenticBasic = 1,
        kAuthenticClientCert = 2
    }
    FilterAuthenticationTypes;

/*---
 *      authentication configuration flags
 */
    typedef enum
    {
        kAuthAllowBasic = 1,
        kAuthAllowAnonymous = 2,
        kAuthAllowSSLCert = 4,
        kAuthAllowSSLBasic = 8,
        kAuthAllowSSLAnonymous = 16,
        kAuthRedirectToSSL = 32
    }
    FilterAuthConfigFlags;

/*---
 *      user name list
 */
    typedef struct
    {
        const LMBCS *userName;

        int (*GetUserNameList) (FilterContext * context, LMBCS * buffer,
                                unsigned int bufferSize,
                                unsigned int *numNames, unsigned int reserved,
                                unsigned int *errID);

        int (*PopulateUserNameList) (FilterContext * context, LMBCS * buffer,
                                     unsigned int bufferSize,
                                     unsigned int *numNames,
                                     unsigned int reserved,
                                     unsigned int *errID);

        int (*AddGroupsToList) (FilterContext * context, LMBCS * groupNames,
                                unsigned int numGroupNames,
                                unsigned int reserved, unsigned int *errID);

        int (*RemoveGroupsFromList) (FilterContext * context,
                                     unsigned int reserved,
                                     unsigned int *errID);

        unsigned int reserved;
    }
    FilterUserNameList;

/*---
 *      request response
 */
    typedef struct
    {
        unsigned int responseCode;
        char *reasonText;

        int (*GetAllHeaders) (FilterContext * context, char **headers,
                              unsigned int *errID);

        int (*GetHeader) (FilterContext * context, char *name, char *buffer,
                          unsigned int bufferSize, unsigned int *errID);

        int (*SetHeader) (FilterContext * context, char *name, char *value,
                          unsigned int *errID);

        int (*AddHeader) (FilterContext * context, char *header,
                          unsigned int *errID);

        unsigned int reserved;
    }
    FilterResponse;

/*---
 *      write content
 */
    typedef struct
    {
        char *content;
        unsigned int contentLen;
        unsigned int reserved;
    }
    FilterRawWrite;

#ifdef __cplusplus
}
#endif

#endif                          /* DSAPIFILTER_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -