]> arthur.barton.de Git - netdata.git/blobdiff - src/web_client.h
registry server side operational
[netdata.git] / src / web_client.h
old mode 100755 (executable)
new mode 100644 (file)
index 76b32e2..d08b907
@@ -1,4 +1,8 @@
+
+#ifdef NETDATA_WITH_ZLIB
 #include <zlib.h>
+#endif
+
 #include <sys/time.h>
 #include <string.h>
 #include <sys/socket.h>
 #include <netdb.h>
 
 #include "web_buffer.h"
+#include "dictionary.h"
 
 #define DEFAULT_DISCONNECT_IDLE_WEB_CLIENTS_AFTER_SECONDS 60
 extern int web_client_timeout;
+extern int web_enable_gzip;
 
 #ifndef NETDATA_WEB_CLIENT_H
 #define NETDATA_WEB_CLIENT_H 1
 
 #define WEB_CLIENT_MODE_NORMAL         0
 #define WEB_CLIENT_MODE_FILECOPY       1
+#define WEB_CLIENT_MODE_OPTIONS                2
 
 #define URL_MAX 8192
 #define ZLIB_CHUNK     16384
-#define MAX_HTTP_HEADER_SIZE 16384
-
-/*
-struct name_value {
-       char *name;
-       char *value;
-       unsigned long hash;
-       struct name_value *next;
-};
+#define HTTP_RESPONSE_HEADER_SIZE 4096
+#define COOKIE_MAX 1024
+
+struct response {
+       BUFFER *header;                                 // our response header
+       BUFFER *header_output;                  // internal use
+       BUFFER *data;                                   // our response data buffer
+
+       int code;                                               // the HTTP response code
 
-struct web_request {
-       char *protocol;
-       char *hostname;
-       char *path;
-       char *query_string;
+       size_t rlen;                                    // if non-zero, the excepted size of ifd (input)
+       size_t sent;                                    // current data length sent to output
+
+       int zoutput;                                    // if set to 1, web_client_send() will send compressed data
+#ifdef NETDATA_WITH_ZLIB
+       z_stream zstream;                               // zlib stream for sending compressed output to client
+       Bytef zbuffer[ZLIB_CHUNK];              // temporary buffer for storing compressed output
+       long zsent;                                             // the compressed bytes we have sent to the client
+       long zhave;                                             // the compressed bytes that we have to send
+       int zinitialized;
+#endif
 
-       struct name_value *headers;
-       struct name_value *query_parameters;
-       struct name_value *post_parameters;
 };
-*/
 
 struct web_client {
        unsigned long long id;
@@ -49,10 +58,10 @@ struct web_client {
 
        char last_url[URL_MAX+1];
 
-       struct web_request *request;
-
        struct timeval tv_in, tv_ready;
 
+       char cookie[COOKIE_MAX+1];
+
        int mode;
        int keepalive;
 
@@ -64,26 +73,20 @@ struct web_client {
        int ifd;
        int ofd;
 
-       struct web_buffer *data;
-
-       int zoutput;                                    // if set to 1, web_client_send() will send compressed data
-       z_stream zstream;                               // zlib stream for sending compressed output to client
-       Bytef zbuffer[ZLIB_CHUNK];              // temporary buffer for storing compressed output
-       long zsent;                                     // the compressed bytes we have sent to the client
-       long zhave;                                     // the compressed bytes that we have to send
-       int zinitialized;
+       struct response response;
 
        int wait_receive;
        int wait_send;
 
-       char response_header[MAX_HTTP_HEADER_SIZE+1];
-
        struct web_client *prev;
        struct web_client *next;
 };
 
 extern struct web_client *web_clients;
 
+extern uid_t web_files_uid(void);
+extern uid_t web_files_gid(void);
+
 extern struct web_client *web_client_create(int listener);
 extern struct web_client *web_client_free(struct web_client *w);