Home | History | Annotate | Download | only in httpd

Lines Matching refs:httpd

65 content_cgihandler(bozohttpd_t *httpd, bozo_httpreq_t *request,
71 debug((httpd, DEBUG_FAT, "content_cgihandler: trying file %s", file));
72 map = bozo_match_content_map(httpd, file, 0);
82 struct bozohttpd_t *httpd = request->hr_httpd;
89 value = bozostrdup(httpd, request, str);
114 finish_cgi_output(bozohttpd_t *httpd, bozo_httpreq_t *request, int in, int nph)
128 (str = bozodgetln(httpd, in, &len, bozo_read)) != NULL) {
146 debug((httpd, DEBUG_OBESE,
149 bozo_printf(httpd, "%s %s\r\n", request->hr_proto,
151 bozo_flush(httpd, stdout);
157 hdr = bozomalloc(httpd, sizeof *hdr);
165 debug((httpd, DEBUG_OBESE,
167 bozo_printf(httpd,
169 bozo_flush(httpd, stdout);
173 debug((httpd, DEBUG_OBESE,
176 bozo_printf(httpd, "%s: %s\r\n", hdr->h_header,
181 bozo_printf(httpd, "\r\n");
182 bozo_flush(httpd, stdout);
190 wbytes = bozo_write(httpd, STDOUT_FILENO, buf,
195 bozoerr(httpd, 1,
203 append_index_html(bozohttpd_t *httpd, char **url)
205 *url = bozorealloc(httpd, *url,
206 strlen(*url) + strlen(httpd->index_html) + 1);
207 strcat(*url, httpd->index_html);
208 debug((httpd, DEBUG_NORMAL,
216 struct bozohttpd_t *httpd = request->hr_httpd;
226 str = bozostrdup(httpd, request, query);
237 args = bozomalloc(httpd, sizeof(*args) * (*args_len + 1));
327 args[i] = bozostrdup(httpd, request, args[i]);
343 bozo_cgi_setbin(bozohttpd_t *httpd, const char *path)
345 httpd->cgibin = bozostrdup(httpd, NULL, path);
346 debug((httpd, DEBUG_OBESE, "cgibin (cgi-bin directory) is %s",
347 httpd->cgibin));
352 bozo_setenv(bozohttpd_t *httpd, const char *env, const char *val,
355 char *s1 = bozomalloc(httpd, strlen(env) + strlen(val) + 2);
360 debug((httpd, DEBUG_OBESE, "bozo_setenv: %s", s1));
373 bozohttpd_t *httpd = request->hr_httpd;
388 if (!httpd->cgibin && !httpd->process_cgi)
392 if (request->hr_user && !httpd->enable_cgi_users)
402 file = bozostrdup(httpd, request, uri);
404 bozoasprintf(httpd, &file, "/%s", uri);
407 query = bozostrdup(httpd, request, request->hr_query);
411 bozoasprintf(httpd, &url, "%s%s%s",
415 debug((httpd, DEBUG_NORMAL, "%s: url `%s'", __func__, url));
428 if (!httpd->cgibin ||
430 cgihandler = content_cgihandler(httpd, request, file + 1);
432 debug((httpd, DEBUG_FAT,
437 append_index_html(httpd, &file);
438 debug((httpd, DEBUG_NORMAL, "%s: cgihandler `%s'",
441 append_index_html(httpd, &file);
449 debug((httpd, DEBUG_NORMAL, "parse_search_string args no: %zu",
452 debug((httpd, DEBUG_FAT,
456 argv = bozomalloc(httpd, sizeof(*argv) * (3 + search_string_argc));
461 path = bozostrdup(httpd, request, cgihandler);
465 info = bozostrdup(httpd, request, s);
468 path = bozomalloc(httpd,
469 strlen(httpd->cgibin) + 1 + strlen(command) + 1);
470 strcpy(path, httpd->cgibin);
498 debug((httpd, DEBUG_FAT,
504 envp = bozomalloc(httpd, sizeof(*envp) * envpsize);
512 env = bozomalloc(httpd, 6 + strlen(headp->h_header) + 1 +
526 debug((httpd, DEBUG_OBESE, "setting header %s as %s = %s",
528 bozo_setenv(httpd, env, headp->h_value, curenvp++);
536 bozo_setenv(httpd, "PATH", _PATH_DEFPATH, curenvp++);
537 bozo_setenv(httpd, "IFS", " \t\n", curenvp++);
538 bozo_setenv(httpd, "SERVER_NAME", BOZOHOST(httpd,request), curenvp++);
539 bozo_setenv(httpd, "GATEWAY_INTERFACE", "CGI/1.1", curenvp++);
540 bozo_setenv(httpd, "SERVER_PROTOCOL", request->hr_proto, curenvp++);
541 bozo_setenv(httpd, "REQUEST_METHOD", request->hr_methodstr, curenvp++);
542 bozo_setenv(httpd, "SCRIPT_NAME", file, curenvp++);
543 bozo_setenv(httpd, "SCRIPT_FILENAME", file + 1, curenvp++);
544 bozo_setenv(httpd, "SERVER_SOFTWARE", httpd->server_software,
546 bozo_setenv(httpd, "REQUEST_URI", uri, curenvp++);
547 bozo_setenv(httpd, "DATE_GMT", bozo_http_date(date, sizeof(date)),
551 bozo_setenv(httpd, "QUERY_STRING", query, curenvp++);
553 bozo_setenv(httpd, "QUERY_STRING", "", curenvp++);
555 bozo_setenv(httpd, "PATH_INFO", info, curenvp++);
557 bozo_setenv(httpd, "CONTENT_TYPE", type, curenvp++);
559 bozo_setenv(httpd, "CONTENT_LENGTH", clen, curenvp++);
561 bozo_setenv(httpd, "SERVER_PORT", request->hr_serverport,
564 bozo_setenv(httpd, "REMOTE_HOST", request->hr_remotehost,
567 bozo_setenv(httpd, "REMOTE_ADDR", request->hr_remoteaddr,
574 bozo_setenv(httpd, "REDIRECT_STATUS", "200", curenvp++);
577 debug((httpd, DEBUG_FAT, "%s: going exec %s with args:", __func__,
581 debug((httpd, DEBUG_FAT, "%s: argv[%zu] = `%s'", __func__,
586 bozoerr(httpd, 1, "child socketpair failed: %s",
600 bozoerr(httpd, 1, "child fork failed: %s", strerror(errno));
609 bozo_daemon_closefds(httpd);
613 bozo_http_error(httpd, 404, request,
619 bozoerr(httpd, 1, "child exec failed: %s: %s",
624 bozoerr(httpd, 1, "child execve returned?!");
640 bozoerr(httpd, 1, "io child fork failed: %s", strerror(errno));
644 finish_cgi_output(httpd, request, sv[0], nph);
649 debug((httpd, DEBUG_FAT, "done processing cgi output"));
655 while ((rbytes = bozo_read(httpd, STDIN_FILENO, buf, sizeof buf)) > 0) {
663 bozoerr(httpd, 1, "write failed: %s",
667 debug((httpd, DEBUG_FAT, "done processing cgi input"));
684 bozo_add_content_map_cgi(bozohttpd_t *httpd, const char *arg,
689 debug((httpd, DEBUG_NORMAL, "bozo_add_content_map_cgi: name %s cgi %s",
692 httpd->process_cgi = 1;
694 map = bozo_get_content_map(httpd, arg);