Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

clib/CGI.H

Go to the documentation of this file.
00001 /****************************************************************************
00002 * (C) 1999 by BECK IPC GmbH
00003 *
00004 *  BECK IPC GmbH
00005 *  Garbenheimerstr. 38
00006 *  D-35578 Wetzlar
00007 *
00008 *  Phone : (49)-6441-905-240
00009 *  Fax   : (49)-6441-905-245
00010 *
00011 * ---------------------------------------------------------------------------
00012 
00013 $Header: CGI.H, 6, 16.07.2002 13:24:45, Christoph Stoidner$
00014 
00015 
00016 * Function      : access to webservers cgi
00017 *
00018 *
00019 * Author        : Bartat
00020 * Date          : 05.11.99
00021 * ---------------------------------------------------------------------------
00022 * History       :
00023 *
00024 *  Vx.yy            Author  Changes
00025 *
00026 *                      mb    Create
00027 *         12.01.00     mb    added func getformitem
00028 *         04.04.00     mb    added new mimetype defines
00029 *                            ,available at SC12 BIOS V0.65
00030 *                            added cgi install func for Pascal CGI procedures
00031 
00032 $Log:
00033  5    IPC@CHIP  1.4         20.06.2002 10:45:49  Markus Bartat   added new
00034       mimetype number CGIDataTypeScaleVectGraph (21)
00035  4    IPC@CHIP  1.3         31.05.2001 16:18:22  Christoph Stoidner
00036  3    IPC@CHIP  1.2         23.05.2001 18:18:42  Christoph Stoidner
00037       Documentation of rpCgi Struct corrected (ReferPtr, AgentPtr and
00038       LanguagePtr at time not supported)
00039  2    IPC@CHIP  1.1         14.02.2001 16:26:02  Christoph Stoidner
00040  1    IPC@CHIP  1.0         14.02.2001 16:09:08  Christoph Stoidner
00041 $
00042 
00043 *****************************************************************************/
00044 #ifndef _CGI_H__
00045 #define _CGI_H__
00046 
00047 /*****************************************************************************/
00048 //CGI defines
00049 /*****************************************************************************/
00050 
00051 //Cgi HTTP requests
00052 #define CgiHttpGet  1       /*  Cgi request is HTTP GET  */
00053 #define CgiHttpHead 2       /*  Cgi request is HTTP HEAD */
00054 #define CgiHttpPost 3       /*  Cgi request is HTTP POST */
00055 
00056 
00057 //Cgi HTTP responses
00058 #define    CgiHttpOk            0 /*  Cgi returns HTTP 200 Ok                 */
00059 #define    CgiHttpOkStatic      1 /*  Cgi returns HTTP 200 Ok - Static Object */
00060 #define    CgiHttpRedirect      2 /*  Cgi returns HTTP 302 Moved Temp         */
00061 #define    CgiHttpNotModified   3 /*  Cgi returns HTTP 304 Not Modified       */
00062 #define    CgiHttpUnauthorized  4 /*  Cgi returns HTTP 401 Unauthorized       */
00063 #define    CgiHttpNotFound      5 /*  Cgi returns HTTP 404 Not Found          */
00064 #define    CgiHttpOKNoDoc       6  /* Cgi returns HTTP 204 No document follows*/
00065 
00066 
00067 //CGI constants for content types ,fDatatype
00068 
00069 #define  CGIDataTypeHtml         0       /* CGI returns  text/html */
00070 #define  CGIDataTypeImageGif     1       /* image/gif */
00071 #define  CGIDataTypeApplet       2       /* application/octet-stream */
00072 #define  CGIDataTypeText         3       /* text/plain */
00073 #define  CGIDataTypeImageJpeg    4       /* image/jpeg */
00074 #define  CGIDataTypeImagePict    5       /* image/pict */
00075 #define  CGIDataTypeImageTiff    6       /* image/tiff */
00076 #define  CGIDataTypeImagePng     7       /* image/png  */
00077 #define  CGIDataTypeForm         8       /* application/x-www-form-urlencoded */
00078 #define  CGIDataTypeIpp          9       /* application/ipp */
00079 #define  CGIDataTypeCss         10       /* text/css */
00080 #define  CGIDataTypeXml         11       /* text/xml */
00081 #define  CGIDataTypeWav         12       /* audio/wav */
00082 #define  CGIDataTypePdf         13       /* application/pdf */
00083 #define  CGIDataTypeJavaArchive 14       /* application/java-archive */
00084 #define  CGIDataTypeOctet       15       /* application/octet-stream */
00085 #define  CGIDataTypeVndWapWml        16  /* text/vnd.wap.wml */
00086 #define  CGIDataTypeVndWapWbmp       17  /* image/vnd.wap.wbmp  */
00087 #define  CGIDataTypeVndWapWmlc       18  /* application/vnd.wap.wmlc */
00088 #define  CGIDataTypeVndWapWmlscript  19  /* text/vnd.wap.wmlscript   */
00089 #define  CGIDataTypeVndWapWmlscriptc 20  /* text/vnd.wap.wmlscriptc  */
00090 #define  CGIDataTypeScaleVectGraph   21  /* image/svg+xml */
00091 
00092 /*****************************************************************************/
00093 //Cgi API calls
00094 /*****************************************************************************/
00095 #define CGI_INSTALL      1     /* Install a cgi function */
00096 #define CGI_REMOVE       2     /* Delete a cgi function  */
00097 #define CGI_SETMAIN      3     /* Set new main page name  */
00098 #define CGI_SETROOTDIR   4     /* Set webservers root directory */
00099 #define CGI_GETROOTDIR   5     /* Get webservers root directory */
00100 #define CGI_GETMAIN      6     /* Get name of main page*/
00101 #define CGI_GETFORMITEM  7     /* Split argumentbuf into formular name and value*/
00102 #define CGI_FINDNEXTITEM 8     /* Find next formitem, if one */
00103 #define CGI_INSTALL_PAS  9     /* Install a Turbo Pascal cgi procedure */
00104 
00105 
00106 /*****************************************************************************/
00107 //CGI API general Errorcodes
00108 /*****************************************************************************/
00109 #define CGI_NOT_SUPPORTED       -2
00110 #define CGI_ERROR               -1
00111 #define CGI_ENOERROR             0
00112 
00113 /*****************************************************************************/
00114 //CGI API special Errorcodes, returned at the ax-register
00115 /*****************************************************************************/
00116 
00117 #define CGI_INVALID_METHOD       -1
00118 #define CGI_INVALID_NAME         -2
00119 #define CGI_INVALID_DIR          -3
00120 #define CGI_NO_FREE_ENTRY        -4
00121 #define CGI_NOT_FOUND            -5
00122 
00123 
00124 /*****************************************************************************/
00125 //types
00126 /*****************************************************************************/
00127 typedef struct tag_cgi_table{
00128 
00129             char     * PathPtr;   //name of the page
00130       int      method;      //httpmethod: get or post
00131             void     *  CgiFuncPtr;  //ptr to callback function of this page
00132 }CGI_Entry;
00133 
00134 
00135 
00136 /*
00137    this type is needed, if the function CGI_GETFORMITEM will be used,
00138    the user must set the pointers of the structure
00139    to his own buffers look at example submit.c.
00140 */
00141 
00142 typedef struct tag_form_item{
00143 
00144             char * NamePtr;
00145             char * ValuePtr;
00146 }FormItem;
00147 
00148 
00149 
00150 /*
00151    the called cgi function gets as a parmeter
00152    a pointer of the following structure, which contains
00153    the needed http-request data and response data
00154 */
00155 
00156 typedef struct {
00157 
00158     //Request fields, read only!!!!
00159 
00160     unsigned char       fConnectionId;         // internal use only
00161     int                 fHttpRequest;          // internal use only
00162     char *              fPathPtr;              //  URL
00163     char *              fHostPtr;              //  Host:
00164     char *              fRefererPtr;           //  (at time not supported)
00165     char *              fAgentPtr;             //  (at time not supported)
00166     char *              fLanguagePtr;          //  (at time not supported)
00167     unsigned long       fBrowserDate;          //  Date:   (internal)
00168     char *              fArgumentBufferPtr;    //  Pointer at argument buffer
00169     long                fArgumentBufferLength; //  length of argument buffer, -1 buffer empty
00170     char *              fUserNamePtr;          //  Username from Authorization
00171     char *              fPasswordPtr;          //  Password from Authorization
00172 
00173 
00174     long *              fRemoteIPPtr;          //  Pointer to RemoteIP in wrong byte order
00175                                                //  , do not modify
00176 
00177     //Response fields,
00178 
00179     int                 fResponseState;          // internal, do not modify
00180     int                 fHttpResponse;           // response msg mostly CgiHttpOK
00181     int                 fDataType;               // content type mostly text/html
00182     char *              fResponseBufferPtr;      // pointer to created dynamic html page
00183     long                fResponseBufferLength;   // length of the created page
00184     unsigned long       fObjectDate;             // internal, do not modify
00185     unsigned int        fHostIndex;              // internal, do not modify
00186 } rpCgi, *rpCgiPtr;
00187 /*****************************************************************************/
00188 #endif /*_CGI_H__*/

Generated on Sun Aug 4 21:47:26 2002 for k/os mp3v2 by doxygen1.2.16