API.doc
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:3k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. API of phttpd 99.77c
  2. Init of a Module:
  3. * Read Config and set all 'module global/static' variables.
  4. int pm_init(const char **argv)
  5. Input:
  6. argv[0] -- path/name of module (demo -- path/name of module e.g.: demo.so)
  7. Return: 0    - success
  8.          else - error
  9. Exit of a module:
  10. * Free all allocated memory, pm_init has loaded.
  11. void pm_exit(void)
  12. Return: 0    - success
  13.          else - fail
  14.  
  15. Handle a request:
  16. * phttpd will call this function based on the evaluation of 'url-handlers' in
  17. its configuration file.
  18. int pm_request(struct connectioninfo *cip)
  19. Return: >= 0 (HTTP Result type e.g.: 200 etc... ) - success
  20. else '-HTTP_ERROR_CODE',  - fail and let phttpd call its error handler !
  21. struct httpinfo
  22. {
  23.     char *method;
  24.     char *url;
  25.     char *orig_url;
  26.     char *request;
  27.     char *orig_request;
  28.     char *version;
  29.     int  prelen;
  30.     char *svsname;
  31.     int svstype;
  32.  
  33.     struct mimeinfo *mip;
  34.     struct authinfo *aip;
  35.  
  36.     /* Result Parameters */
  37.     int length;
  38. };
  39. struct connectioninfo
  40. {
  41.     mutex_t lock;
  42.     int inuse;
  43.  
  44.     int request_no;
  45.     thread_t tid;
  46.     int fd;
  47.     int bytes;
  48.  
  49.     dnsinfo_t *server;
  50.     dnsinfo_t *client;
  51.  
  52.     time_t cn_time;
  53.  
  54.     struct httpinfo *hip;
  55.     struct serverinfo *sip;
  56.  
  57.     identinfo_t *ident;
  58. };
  59. struct mimeinfo
  60. {
  61.     int version;
  62.     hashtable_t table;
  63.     int headerbytes;
  64.  
  65.     unsigned int connection_flags;
  66.     unsigned int pragma_flags;
  67. };
  68. struct authinfo
  69. {
  70.     char *type;         /* Authentication type (ie "basic") */
  71.     char *data;         /* Raw, undecoded, authentication data */
  72.  
  73.     /* Type specific data */
  74.     union
  75.     {
  76.         /* Extracted data for the "basic" type of authentication stuff */
  77.         struct
  78.         {
  79.             char *username;
  80.             char *password;
  81.         } basic;
  82.     } u;
  83.  
  84.  
  85.  
  86.     int   xtype;                /* Typ of data in "xinfo" */
  87.     void *xinfo;                /* For user-defined use */
  88.     void (*xfree)(void *);      /* For freeing the data in xinfo */
  89.  
  90.     /* Called from the CGI module to export information */
  91.     void (*xsetenv)(void *xinfo,
  92.                     char *(*x_setenv)(char **, const char *, const char *),
  93.                     char **envp);
  94.  
  95.  
  96.     char *validated_username;
  97. };
  98. Global functions to call:
  99. extern int fd_flush(int fd);
  100. extern int fd_putc(int c, int fd);
  101. extern int fd_puts(const char *str, int fd);
  102. extern int fd_puti(int val, int fd);
  103. extern int fd_puts2nl(const char *s1, const char *s2, int fd);
  104. extern int fd_putsinl(const char *s1, int val, int fd);
  105.  
  106. extern int fd_vprintf(int fd, const char *format, va_list ap);
  107. extern int fd_printf(int fd, const char *format, ...);
  108.  
  109. extern int fd_getc(int fd);
  110. extern int fd_ungetc(int c, int fd);
  111. extern char *fd_gets(char *buf, int size, int fd);
  112.  
  113. extern int fd_write(int fd, const char *buf, int len);
  114. extern int fd_read(int fd, char *buf, int len);
  115.  
  116. extern int fd_relay(int fd1, int fd2, int bidir);
  117. extern int fd_nrelay(int fd1, int fd2, int bidir, int bytes);
  118.  
  119. extern int fd_written(int fd);  Returns number of bytes write fo fd
  120.  
  121. extern int fd_avail(int fd);
  122. extern int fd_wait(int fd);
  123.  
  124. (Global) Variables to set/use:
  125. rkmultimode: 0 - OFF   1 - ON
  126. softvirtserver: 0 - OFF   1 - ON
  127. cip->hip->length: Number of bytes send to output via Network