mirror of
https://github.com/cesanta/mongoose.git
synced 2025-08-06 05:26:15 +08:00
Ignoring .htpasswd file for PUT and DELETE requests. Those use separate passwords file.
This commit is contained in:
parent
8d6634ff7e
commit
eed09600f7
14
mongoose.c
14
mongoose.c
@ -4171,6 +4171,11 @@ int mg_upload(struct mg_connection *conn, const char *destination_dir) {
|
|||||||
return num_uploaded_files;
|
return num_uploaded_files;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int is_put_or_delete_request(const struct mg_connection *conn) {
|
||||||
|
const char *s = conn->request_info.request_method;
|
||||||
|
return s != NULL && (!strcmp(s, "PUT") || !strcmp(s, "DELETE"));
|
||||||
|
}
|
||||||
|
|
||||||
// This is the heart of the Mongoose's logic.
|
// This is the heart of the Mongoose's logic.
|
||||||
// This function is called when the request is read, parsed and validated,
|
// This function is called when the request is read, parsed and validated,
|
||||||
// and Mongoose must decide what action to take: serve a file, or
|
// and Mongoose must decide what action to take: serve a file, or
|
||||||
@ -4192,7 +4197,7 @@ static void handle_request(struct mg_connection *conn) {
|
|||||||
get_remote_ip(conn), ri->uri);
|
get_remote_ip(conn), ri->uri);
|
||||||
|
|
||||||
DEBUG_TRACE(("%s", ri->uri));
|
DEBUG_TRACE(("%s", ri->uri));
|
||||||
if (!check_authorization(conn, path)) {
|
if (!is_put_or_delete_request(conn) && !check_authorization(conn, path)) {
|
||||||
send_authorization_request(conn);
|
send_authorization_request(conn);
|
||||||
#if defined(USE_WEBSOCKET)
|
#if defined(USE_WEBSOCKET)
|
||||||
} else if (is_websocket_request(conn)) {
|
} else if (is_websocket_request(conn)) {
|
||||||
@ -4204,10 +4209,9 @@ static void handle_request(struct mg_connection *conn) {
|
|||||||
send_options(conn);
|
send_options(conn);
|
||||||
} else if (conn->ctx->config[DOCUMENT_ROOT] == NULL) {
|
} else if (conn->ctx->config[DOCUMENT_ROOT] == NULL) {
|
||||||
send_http_error(conn, 404, "Not Found", "Not Found");
|
send_http_error(conn, 404, "Not Found", "Not Found");
|
||||||
} else if ((!strcmp(ri->request_method, "PUT") ||
|
} else if (is_put_or_delete_request(conn) &&
|
||||||
!strcmp(ri->request_method, "DELETE")) &&
|
(conn->ctx->config[PUT_DELETE_PASSWORDS_FILE] == NULL ||
|
||||||
(conn->ctx->config[PUT_DELETE_PASSWORDS_FILE] == NULL ||
|
is_authorized_for_put(conn) != 1)) {
|
||||||
is_authorized_for_put(conn) != 1)) {
|
|
||||||
send_authorization_request(conn);
|
send_authorization_request(conn);
|
||||||
} else if (!strcmp(ri->request_method, "PUT")) {
|
} else if (!strcmp(ri->request_method, "PUT")) {
|
||||||
put_file(conn, path);
|
put_file(conn, path);
|
||||||
|
Loading…
Reference in New Issue
Block a user