1/* 2 Unix SMB/CIFS implementation. 3 4 Copyright (C) Andrew Tridgell 2005 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18*/ 19 20#include "smbd/process_model.h" 21 22struct websrv_context; 23 24struct web_server_data { 25 struct tls_params *tls_params; 26 void (*http_process_input)(struct web_server_data *wdata, 27 struct websrv_context *web); 28 void *private_data; 29}; 30 31struct http_header { 32 char *name; 33 char *value; 34 struct http_header *prev, *next; 35}; 36 37/* 38 context of one open web connection 39*/ 40struct websrv_context { 41 struct task_server *task; 42 struct stream_connection *conn; 43 struct websrv_request_input { 44 bool tls_detect; 45 bool tls_first_char; 46 uint8_t first_byte; 47 DATA_BLOB partial; 48 bool end_of_headers; 49 char *url; 50 unsigned content_length; 51 bool post_request; 52 struct http_header *headers; 53 } input; 54 struct websrv_request_output { 55 bool output_pending; 56 DATA_BLOB content; 57 bool headers_sent; 58 unsigned nsent; 59 } output; 60 struct session_data *session; 61}; 62 63 64#include "web_server/proto.h" 65 66