mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
ebb0b35242
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
)
80 lines
2.0 KiB
C
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;
|
|
};
|
|
|