uhttpd: added uhttpd.docroot
[openwrt/openwrt.git] / package / uhttpd / src / uhttpd.h
index 0e9f1ee88639bcdddab8d797a4ba9018546798f7..c03d1ae6510737d9cc10b4c3809cd30dd33f5142 100644 (file)
 #include <sys/select.h>
 #include <sys/wait.h>
 #include <netinet/in.h>
+#include <netinet/tcp.h>
 #include <arpa/inet.h>
 #include <linux/limits.h>
 #include <netdb.h>
 #include <ctype.h>
-
+#include <errno.h>
 #include <dlfcn.h>
 
 
 #include <openssl/ssl.h>
 #endif
 
+/* uClibc... */
+#ifndef SOL_TCP
+#define SOL_TCP        6
+#endif
+
 
 #define UH_LIMIT_MSGHEAD       4096
 #define UH_LIMIT_HEADERS       64
 
-#define UH_LIMIT_LISTENERS     16
 #define UH_LIMIT_CLIENTS       64
-#define UH_LIMIT_AUTHREALMS    8
 
 #define UH_HTTP_MSG_GET                0
 #define UH_HTTP_MSG_HEAD       1
 
 struct listener;
 struct client;
+struct interpreter;
 struct http_request;
 
 struct config {
        char docroot[PATH_MAX];
        char *realm;
        char *file;
+       char *index_file;
+       char *error_handler;
+       int no_symlinks;
+       int no_dirlists;
+       int network_timeout;
+       int rfc1918_filter;
+       int tcp_keepalive;
 #ifdef HAVE_CGI
        char *cgi_prefix;
 #endif
 #ifdef HAVE_LUA
        char *lua_prefix;
        char *lua_handler;
-       lua_State * (*lua_init) (const char *handler);
+       lua_State *lua_state;
+       lua_State * (*lua_init) (const struct config *conf);
        void (*lua_close) (lua_State *L);
        void (*lua_request) (struct client *cl, struct http_request *req, lua_State *L);
 #endif
@@ -85,7 +98,7 @@ struct config {
        int (*tls_cert) (SSL_CTX *c, const char *file);
        int (*tls_key) (SSL_CTX *c, const char *file);
        void (*tls_free) (struct listener *l);
-       void (*tls_accept) (struct client *c);
+       int (*tls_accept) (struct client *c);
        void (*tls_close) (struct client *c);
        int (*tls_recv) (struct client *c, void *buf, int len);
        int (*tls_send) (struct client *c, void *buf, int len);
@@ -99,6 +112,7 @@ struct listener {
 #ifdef HAVE_TLS
        SSL_CTX *tls;
 #endif
+       struct listener *next;
 };
 
 struct client {
@@ -111,17 +125,20 @@ struct client {
 #ifdef HAVE_TLS
        SSL *tls;
 #endif
+       struct client *next;
 };
 
 struct auth_realm {
        char path[PATH_MAX];
        char user[32];
        char pass[128];
+       struct auth_realm *next;
 };
 
 struct http_request {
        int     method;
        float version;
+       int redirect_status;
        char *url;
        char *headers[UH_LIMIT_HEADERS];
        struct auth_realm *realm;
@@ -133,5 +150,12 @@ struct http_response {
        char *headers[UH_LIMIT_HEADERS];
 };
 
+#ifdef HAVE_CGI
+struct interpreter {
+       char path[PATH_MAX];
+       char extn[32];
+       struct interpreter *next;
+};
 #endif
 
+#endif