12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #ifndef HTTPD_H
- #define HTTPD_H
- #define HTTPDVER "0.3"
- #define HTTPD_CGI_MORE 0
- #define HTTPD_CGI_DONE 1
- #define HTTPD_CGI_NOTFOUND 2
- #define HTTPD_CGI_AUTHENTICATED 3
- #define HTTPD_METHOD_GET 1
- #define HTTPD_METHOD_POST 2
- typedef struct HttpdPriv HttpdPriv;
- typedef struct HttpdConnData HttpdConnData;
- typedef struct HttpdPostData HttpdPostData;
- typedef int (* cgiSendCallback)(HttpdConnData *connData);
- //A struct describing a http connection. This gets passed to cgi functions.
- struct HttpdConnData {
- struct espconn *conn;
- //int remote_port;
- //uint8 remote_ip[4];
- uint32 startTime;
- char requestType; // HTTP_METHOD_GET | HTTPD_METHOD_POST
- char *url;
- char *getArgs;
- const void *cgiArg;
- void *cgiData;
- void *cgiPrivData; // Used for streaming handlers storing state between requests
- void *cgiResponse; // used for forwarding response to the CGI handler
- int32 hash; // authentication cookie
- HttpdPriv *priv;
- cgiSendCallback cgi;
- HttpdPostData *post;
- };
- //A struct describing the POST data sent inside the http connection. This is used by the CGI functions
- struct HttpdPostData {
- int len; // POST Content-Length
- int buffSize; // The maximum length of the post buffer
- int buffLen; // The amount of bytes in the current post buffer
- int received; // The total amount of bytes received so far
- char *buff; // Actual POST data buffer
- char *multipartBoundary;
- };
- //A struct describing an url. This is the main struct that's used to send different URL requests to
- //different routines.
- typedef struct {
- const char *url;
- cgiSendCallback cgiCb;
- const void *cgiArg;
- char auth;
- } HttpdBuiltInUrl;
- int ICACHE_FLASH_ATTR cgiRedirect(HttpdConnData *connData);
- int ICACHE_FLASH_ATTR httpdSetCookie(HttpdConnData *conn, char *newUrl, uint32 hash);
- int ICACHE_FLASH_ATTR httpdSendAuthCookie(HttpdConnData *conn, uint32 hash);
- void ICACHE_FLASH_ATTR httpdForbidden(HttpdConnData *conn);
- void ICACHE_FLASH_ATTR httpdRedirect(HttpdConnData *conn, char *newUrl);
- int httpdUrlDecode(char *val, int valLen, char *ret, int retLen);
- int ICACHE_FLASH_ATTR httpdFindArg(char *line, char *arg, char *buff, int buffLen);
- void ICACHE_FLASH_ATTR httpdInit(HttpdBuiltInUrl *fixedUrls, char* hostname, int port);
- const char *httpdGetMimetype(char *url);
- void ICACHE_FLASH_ATTR httpdSetOutputBuffer(HttpdConnData *conn, char *buff, short max);
- void ICACHE_FLASH_ATTR httpdStartResponse(HttpdConnData *conn, int code);
- void ICACHE_FLASH_ATTR httpdHeader(HttpdConnData *conn, const char *field, const char *val);
- void ICACHE_FLASH_ATTR httpdEndHeaders(HttpdConnData *conn);
- int ICACHE_FLASH_ATTR httpdGetHeader(HttpdConnData *conn, char *header, char *ret, int retLen);
- int ICACHE_FLASH_ATTR httpdSend(HttpdConnData *conn, const char *data, int len);
- void ICACHE_FLASH_ATTR httpdFlush(HttpdConnData *conn);
- HttpdConnData * ICACHE_FLASH_ATTR httpdLookUpConn(uint8_t * ip, int port);
- int ICACHE_FLASH_ATTR httpdSetCGIResponse(HttpdConnData * conn, void *response);
- #endif
|