1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00
samba-mirror/source4/web_server/web_server.h
Andrew Tridgell ebb0b35242 r7013: added tls support to the builtin web server. It auto-detects if the client
is using tls by looking at the first byte on the connection. This allows
both https and http services to be on the same port
(This used to be commit 6369dfb658)
2007-10-10 13:17:06 -05:00

80 lines
2.0 KiB
C

/*
Unix SMB/CIFS implementation.
Copyright (C) Andrew Tridgell 2005
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "request.h"
#include "smbd/process_model.h"
/*
context of one open web connection
*/
struct websrv_context {
struct task_server *task;
struct stream_connection *conn;
struct {
BOOL tls_detect;
BOOL tls_first_char;
uint8_t first_byte;
DATA_BLOB partial;
BOOL end_of_headers;
char *url;
unsigned content_length;
BOOL post_request;
const char *content_type;
const char *query_string;
const char *user_agent;
const char *referer;
const char *host;
const char *accept_encoding;
const char *accept_language;
const char *accept_charset;
const char *cookie;
const char *session_key;
} input;
struct {
BOOL output_pending;
DATA_BLOB content;
int fd;
unsigned nsent;
int response_code;
const char **headers;
} output;
void *tls_session;
struct session_data *session;
};
/*
context for long term storage in the web server, to support session[]
and application[] data. Stored in task->private.
*/
struct esp_data {
struct session_data {
struct session_data *next, *prev;
struct esp_data *edata;
const char *id;
struct MprVar *data;
struct timed_event *te;
int lifetime;
} *sessions;
struct MprVar *application_data;
void *tls_data;
};