⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 response.c

📁 用于移植到嵌入式linux系统的boa http服务器
💻 C
📖 第 1 页 / 共 2 页
字号:
    print_content_type(req);    req_write(req, CRLF);    req_flush(req);}/* R_BAD_REQUEST: 400 */void send_r_bad_request(request * req){    SQUASH_KA(req);    req->response_status = R_BAD_REQUEST;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 400 Bad Request" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD)        req_write(req,                  "<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>\n"                  "<BODY><H1>400 Bad Request</H1>\nYour client has issued "                  "a malformed or illegal request.\n</BODY></HTML>\n");    req_flush(req);}/* R_UNAUTHORIZED: 401 */void send_r_unauthorized(request * req, const char *realm_name){    SQUASH_KA(req);    req->response_status = R_UNAUTHORIZED;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 401 Unauthorized" CRLF);        print_http_headers(req);        req_write(req, "WWW-Authenticate: Basic realm=\"");        req_write(req, realm_name);        req_write(req, CRLF);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>\n"                  "<BODY><H1>401 Unauthorized</H1>\nYour client does not "                  "have permission to get URL ");        req_write_escape_html(req, req->request_uri);        req_write(req, " from this server.\n</BODY></HTML>\n");    }    req_flush(req);}/* R_FORBIDDEN: 403 */void send_r_forbidden(request * req){    SQUASH_KA(req);    req->response_status = R_FORBIDDEN;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 403 Forbidden" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req, "<HTML><HEAD><TITLE>403 Forbidden</TITLE></HEAD>\n"                  "<BODY><H1>403 Forbidden</H1>\nYour client does not "                  "have permission to get URL ");        req_write_escape_html(req, req->request_uri);        req_write(req, " from this server.\n</BODY></HTML>\n");    }    req_flush(req);}/* R_NOT_FOUND: 404 */void send_r_not_found(request * req){    SQUASH_KA(req);    req->response_status = R_NOT_FOUND;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 404 Not Found" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req, "<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD>\n"                  "<BODY><H1>404 Not Found</H1>\nThe requested URL ");        req_write_escape_html(req, req->request_uri);        req_write(req, " was not found on this server.\n</BODY></HTML>\n");    }    req_flush(req);}/* R_LENGTH_REQUIRED: 411 *//* FIXME: incomplete */void send_r_length_required(request * req){    SQUASH_KA(req);    req->response_status = R_LENGTH_REQUIRED;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 411 Length Required" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF);        print_last_modified(req);        print_content_type(req);        req_write(req, CRLF);    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>411 Length Required</TITLE></HEAD>\n"                  "<BODY><H1>411 Length Required</H1>\nThe requested URL ");        req_write_escape_html(req, req->request_uri);        req_write(req,                  " requires that a valid Content-Length header be "                  "sent with it.\n</BODY></HTML>\n");    }    req_flush(req);}/* R_PRECONDITION_FAILED: 412 */void send_r_precondition_failed(request * req){    SQUASH_KA(req);    req->response_status = R_PRECONDITION_FAILED;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 412 Precondition Failed" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>412 Precondition Failed</TITLE></HEAD>\n"                  "<BODY><H1>412 Precondition Failed</H1>\n</BODY></HTML>\n");    }    req_flush(req);}/* R_BAD_REQUEST_URI_TOO_LONG: 414 */void send_r_request_uri_too_long(request * req){    char body[] =        "<HTML><HEAD><TITLE>414 Request URI Too Long</TITLE></HEAD>\n"        "<BODY><H1>414 Request URI Too Long</H1>\nYour client has issued "        "a malformed or illegal request.\n</BODY></HTML>\n";    static unsigned int len = 0;    req->response_status = R_REQUEST_URI_TOO_LONG;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 414 Request URI Too Long" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF);        req_write(req, "Content-Length: ");        if (!len)            len = strlen(body);        req_write(req, simple_itoa(len));        req_write(req, CRLF CRLF);    }    if (req->method != M_HEAD)        req_write(req, body);    req_flush(req);}/* R_INVALID_RANGE: 416 */void send_r_invalid_range(request * req){    static char body[] =        "<HTML><HEAD><TITLE>416 Invalid Range</TITLE></HEAD>\n"        "<BODY><H1>416 Invalid Range</H1>\n</BODY></HTML>\n";    static unsigned int body_len = 0;    SQUASH_KA(req);    req->response_status = R_INVALID_RANGE;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 416 Invalid Range" CRLF);        print_http_headers(req);        if (!body_len)            body_len = strlen(body);        req_write(req, "Content-Length: ");        req_write(req, simple_itoa(body_len));        req_write(req, CRLF "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req, body);    }    req_flush(req);}/* R_ERROR: 500 */void send_r_error(request * req){    SQUASH_KA(req);    req->response_status = R_ERROR;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 500 Server Error" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>500 Server Error</TITLE></HEAD>\n"                  "<BODY><H1>500 Server Error</H1>\nThe server encountered "                  "an internal error and could not complete your request.\n"                  "</BODY></HTML>\n");    }    req_flush(req);}/* R_NOT_IMP: 501 */void send_r_not_implemented(request * req){    SQUASH_KA(req);    req->response_status = R_NOT_IMP;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 501 Not Implemented" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    /* we always write the body, because we don't *KNOW*     * what the method is.     */    req_write(req,              "<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n"              "<BODY><H1>501 Not Implemented</H1>\nPOST to non-script "              "is not supported in Boa.\n</BODY></HTML>\n");    req_flush(req);}/* R_BAD_GATEWAY: 502 */void send_r_bad_gateway(request * req){    SQUASH_KA(req);    req->response_status = R_BAD_GATEWAY;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 502 Bad Gateway" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>502 Bad Gateway</TITLE></HEAD>\n"                  "<BODY><H1>502 Bad Gateway</H1>\nThe CGI was "                  "not CGI/1.1 compliant.\n" "</BODY></HTML>\n");    }    req_flush(req);}/* R_SERVICE_UNAVAILABLE: 503 */void send_r_service_unavailable(request * req){                               /* 503 */    static char body[] =        "<HTML><HEAD><TITLE>503 Service Unavailable</TITLE></HEAD>\n"        "<BODY><H1>503 Service Unavailable</H1>\n"        "There are too many connections in use right now.\n"	"Please try again later.\n"	"</BODY></HTML>\n";    static unsigned int _body_len;    static char *body_len;    if (!_body_len)        _body_len = strlen(body);    if (!body_len)        body_len = strdup(simple_itoa(_body_len));    if (!body_len) {        log_error_time();        perror("strdup of _body_len from simple_itoa");    }    SQUASH_KA(req);    req->response_status = R_SERVICE_UNAV;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 503 Service Unavailable" CRLF);        print_http_headers(req);        if (body_len) {            req_write(req, "Content-Length: ");            req_write(req, body_len);            req_write(req, CRLF);        }        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req, body);    }    req_flush(req);}/* R_NOT_IMP: 505 */void send_r_bad_version(request * req, const char *version){    SQUASH_KA(req);    req->response_status = R_BAD_VERSION;    if (req->http_version != HTTP09) {        req_write(req, http_ver_string(req->http_version));        req_write(req, " 505 HTTP Version Not Supported" CRLF);        print_http_headers(req);        req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */    }    if (req->method != M_HEAD) {        req_write(req,                  "<HTML><HEAD><TITLE>505 HTTP Version Not Supported</TITLE></HEAD>\n"                  "<BODY><H1>505 HTTP Version Not Supported</H1>\nHTTP versions "                  "other than 0.9 and 1.0 "                  "are not supported in Boa.\n<p><p>Version encountered: ");        req_write(req, version);        req_write(req, "<p><p></BODY></HTML>\n");    }    req_flush(req);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -