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));