web 42 source4/web_server/web_server.c static int websrv_destructor(struct websrv_context *web)
web 55 source4/web_server/web_server.c struct websrv_context *web = talloc_get_type(private_data, struct websrv_context);
web 56 source4/web_server/web_server.c struct stream_connection *conn = web->conn;
web 57 source4/web_server/web_server.c web->conn = NULL;
web 66 source4/web_server/web_server.c void http_error(struct websrv_context *web, const char *status, const char *info)
web 69 source4/web_server/web_server.c s = talloc_asprintf(web,"<HTML><HEAD><TITLE>Error %s</TITLE></HEAD><BODY><H1>Error %s</H1><pre>%s</pre><p></BODY></HTML>\r\n\r\n",
web 72 source4/web_server/web_server.c stream_terminate_connection(web->conn, "http_error: out of memory");
web 75 source4/web_server/web_server.c websrv_output_headers(web, status, NULL);
web 76 source4/web_server/web_server.c websrv_output(web, s, strlen(s));
web 79 source4/web_server/web_server.c void websrv_output_headers(struct websrv_context *web, const char *status, struct http_header *headers)
web 85 source4/web_server/web_server.c s = talloc_asprintf(web, "HTTP/1.0 %s\r\n", status);
web 93 source4/web_server/web_server.c b = web->output.content;
web 94 source4/web_server/web_server.c web->output.content = data_blob_string_const(s);
web 95 source4/web_server/web_server.c websrv_output(web, b.data, b.length);
web 99 source4/web_server/web_server.c void websrv_output(struct websrv_context *web, void *data, size_t length)
web 101 source4/web_server/web_server.c data_blob_append(web, &web->output.content, data, length);
web 102 source4/web_server/web_server.c EVENT_FD_NOT_READABLE(web->conn->event.fde);
web 103 source4/web_server/web_server.c EVENT_FD_WRITEABLE(web->conn->event.fde);
web 104 source4/web_server/web_server.c web->output.output_pending = true;
web 111 source4/web_server/web_server.c NTSTATUS http_parse_header(struct websrv_context *web, const char *line)
web 114 source4/web_server/web_server.c web->input.end_of_headers = true;
web 116 source4/web_server/web_server.c web->input.url = talloc_strndup(web, &line[4], strcspn(&line[4], " \t"));
web 118 source4/web_server/web_server.c web->input.post_request = true;
web 119 source4/web_server/web_server.c web->input.url = talloc_strndup(web, &line[5], strcspn(&line[5], " \t"));
web 121 source4/web_server/web_server.c http_error(web, "400 Bad request", "This server only accepts GET and POST requests");
web 124 source4/web_server/web_server.c web->input.content_length = strtoul(&line[16], NULL, 10);
web 126 source4/web_server/web_server.c struct http_header *hdr = talloc_zero(web, struct http_header);
web 129 source4/web_server/web_server.c http_error(web, "500 Internal Server Error", "invalidly formatted header");
web 135 source4/web_server/web_server.c DLIST_ADD(web->input.headers, hdr);
web 148 source4/web_server/web_server.c struct websrv_context *web = talloc_get_type(conn->private_data,
web 161 source4/web_server/web_server.c if (!data_blob_append(web, &web->input.partial, buf, nread))
web 165 source4/web_server/web_server.c b = web->input.partial;
web 166 source4/web_server/web_server.c while (!web->input.end_of_headers &&
web 173 source4/web_server/web_server.c status = http_parse_header(web, line);
web 183 source4/web_server/web_server.c b = data_blob_talloc(web, b.data, b.length);
web 184 source4/web_server/web_server.c data_blob_free(&web->input.partial);
web 185 source4/web_server/web_server.c web->input.partial = b;
web 190 source4/web_server/web_server.c if (web->input.end_of_headers &&
web 191 source4/web_server/web_server.c web->input.partial.length >= web->input.content_length) {
web 192 source4/web_server/web_server.c if (web->input.partial.length > web->input.content_length) {
web 193 source4/web_server/web_server.c web->input.partial.data[web->input.content_length] = 0;
web 195 source4/web_server/web_server.c EVENT_FD_NOT_READABLE(web->conn->event.fde);
web 204 source4/web_server/web_server.c if (!talloc_reference(web->task, web)) goto failed;
web 205 source4/web_server/web_server.c wdata = talloc_get_type(web->task->private_data, struct web_server_data);
web 207 source4/web_server/web_server.c wdata->http_process_input(wdata, web);
web 208 source4/web_server/web_server.c talloc_unlink(web->task, web);
web 223 source4/web_server/web_server.c struct websrv_context *web = talloc_get_type(conn->private_data,
web 229 source4/web_server/web_server.c b = web->output.content;
web 230 source4/web_server/web_server.c b.data += web->output.nsent;
web 231 source4/web_server/web_server.c b.length -= web->output.nsent;
web 235 source4/web_server/web_server.c stream_terminate_connection(web->conn, "socket_send: failed");
web 242 source4/web_server/web_server.c web->output.nsent += nsent;
web 244 source4/web_server/web_server.c if (web->output.content.length == web->output.nsent) {
web 245 source4/web_server/web_server.c stream_terminate_connection(web->conn, "websrv_send: finished sending");
web 256 source4/web_server/web_server.c struct websrv_context *web;
web 259 source4/web_server/web_server.c web = talloc_zero(conn, struct websrv_context);
web 260 source4/web_server/web_server.c if (web == NULL) goto failed;
web 262 source4/web_server/web_server.c web->task = task;
web 263 source4/web_server/web_server.c web->conn = conn;
web 264 source4/web_server/web_server.c conn->private_data = web;
web 265 source4/web_server/web_server.c talloc_set_destructor(web, websrv_destructor);
web 267 source4/web_server/web_server.c event_add_timed(conn->event.ctx, web,
web 269 source4/web_server/web_server.c websrv_timeout, web);
web 27 source4/web_server/web_server.h struct websrv_context *web);
web 36 source4/web_server/wsgi.c struct websrv_context *web;
web 48 source4/web_server/wsgi.c struct websrv_context *web = py_web->web;
web 63 source4/web_server/wsgi.c struct http_header *hdr = talloc_zero(web, struct http_header);
web 95 source4/web_server/wsgi.c websrv_output_headers(web, status, headers);
web 173 source4/web_server/wsgi.c struct websrv_context *web;
web 189 source4/web_server/wsgi.c size = self->web->input.partial.length-self->offset;
web 191 source4/web_server/wsgi.c size = MIN(size, self->web->input.partial.length-self->offset);
web 193 source4/web_server/wsgi.c ret = PyString_FromStringAndSize((char *)self->web->input.partial.data+self->offset, size);
web 245 source4/web_server/wsgi.c static PyObject *Py_InputHttpStream(struct websrv_context *web)
web 248 source4/web_server/wsgi.c ret->web = web;
web 323 source4/web_server/wsgi.c struct websrv_context *web)
web 330 source4/web_server/wsgi.c py_web->web = web;
web 332 source4/web_server/wsgi.c socket_address = socket_get_my_addr(web->conn->socket, web);
web 333 source4/web_server/wsgi.c py_environ = create_environ(tls_enabled(web->conn->socket),
web 334 source4/web_server/wsgi.c web->input.content_length,
web 335 source4/web_server/wsgi.c web->input.headers,
web 336 source4/web_server/wsgi.c web->input.post_request?"POST":"GET",
web 339 source4/web_server/wsgi.c Py_InputHttpStream(web),
web 340 source4/web_server/wsgi.c web->input.url
web 361 source4/web_server/wsgi.c websrv_output(web, PyString_AsString(item), PyString_Size(item));