Commit 9ab6d084 authored by Dmitry Frank's avatar Dmitry Frank Committed by Cesanta Bot

Expose digest auth checking functions

PUBLISHED_FROM=1bfc6e332f56b68eb6155bb729a97a0d8d5a316c
parent cf8d0a25
...@@ -5,6 +5,8 @@ decl_name: "http.h" ...@@ -5,6 +5,8 @@ decl_name: "http.h"
items: items:
- { name: mg_connect_ws.md } - { name: mg_connect_ws.md }
- { name: mg_connect_ws_opt.md } - { name: mg_connect_ws_opt.md }
- { name: mg_http_is_authorized.md }
- { name: mg_http_send_digest_auth_request.md }
- { name: mg_printf_websocket_frame.md } - { name: mg_printf_websocket_frame.md }
- { name: mg_send_websocket_frame.md } - { name: mg_send_websocket_frame.md }
- { name: mg_send_websocket_framev.md } - { name: mg_send_websocket_framev.md }
......
---
title: "mg_http_is_authorized()"
decl_name: "mg_http_is_authorized"
symbol_kind: "func"
signature: |
int mg_http_is_authorized(struct http_message *hm, struct mg_str path,
int is_directory, const char *domain,
const char *passwords_file, int is_global_pass_file);
---
Checks whether an http request is authorized. `domain` is the authentication
realm, `passwords_file` is a htdigest file (can be created e.g. with
`htdigest` utility). If either `domain` or `passwords_file` is NULL, this
function always returns 1; otherwise checks the authentication in the
http request and returns 1 only if there is a match; 0 otherwise.
---
title: "mg_http_send_digest_auth_request()"
decl_name: "mg_http_send_digest_auth_request"
symbol_kind: "func"
signature: |
void mg_http_send_digest_auth_request(struct mg_connection *c,
const char *domain);
---
Sends 401 Unauthorized response.
...@@ -7363,10 +7363,9 @@ int mg_check_digest_auth(struct mg_str method, struct mg_str uri, ...@@ -7363,10 +7363,9 @@ int mg_check_digest_auth(struct mg_str method, struct mg_str uri,
return 0; return 0;
} }
static int mg_http_is_authorized(struct http_message *hm, struct mg_str path, int mg_http_is_authorized(struct http_message *hm, struct mg_str path,
int is_directory, const char *domain, int is_directory, const char *domain,
const char *passwords_file, const char *passwords_file, int is_global_pass_file) {
int is_global_pass_file) {
char buf[MG_MAX_PATH]; char buf[MG_MAX_PATH];
const char *p; const char *p;
FILE *fp; FILE *fp;
...@@ -7399,10 +7398,9 @@ static int mg_http_is_authorized(struct http_message *hm, struct mg_str path, ...@@ -7399,10 +7398,9 @@ static int mg_http_is_authorized(struct http_message *hm, struct mg_str path,
return authorized; return authorized;
} }
#else #else
static int mg_http_is_authorized(struct http_message *hm, int mg_http_is_authorized(struct http_message *hm, const struct mg_str path,
const struct mg_str path, int is_directory, int is_directory, const char *domain,
const char *domain, const char *passwords_file, const char *passwords_file, int is_global_pass_file) {
int is_global_pass_file) {
(void) hm; (void) hm;
(void) path; (void) path;
(void) is_directory; (void) is_directory;
...@@ -7942,7 +7940,7 @@ MG_INTERNAL int mg_is_not_modified(struct http_message *hm, cs_stat_t *st) { ...@@ -7942,7 +7940,7 @@ MG_INTERNAL int mg_is_not_modified(struct http_message *hm, cs_stat_t *st) {
} }
} }
static void mg_http_send_digest_auth_request(struct mg_connection *c, void mg_http_send_digest_auth_request(struct mg_connection *c,
const char *domain) { const char *domain) {
mg_printf(c, mg_printf(c,
"HTTP/1.1 401 Unauthorized\r\n" "HTTP/1.1 401 Unauthorized\r\n"
......
...@@ -4541,6 +4541,23 @@ extern void mg_hash_md5_v(size_t num_msgs, const uint8_t *msgs[], ...@@ -4541,6 +4541,23 @@ extern void mg_hash_md5_v(size_t num_msgs, const uint8_t *msgs[],
extern void mg_hash_sha1_v(size_t num_msgs, const uint8_t *msgs[], extern void mg_hash_sha1_v(size_t num_msgs, const uint8_t *msgs[],
const size_t *msg_lens, uint8_t *digest); const size_t *msg_lens, uint8_t *digest);
/*
* Checks whether an http request is authorized. `domain` is the authentication
* realm, `passwords_file` is a htdigest file (can be created e.g. with
* `htdigest` utility). If either `domain` or `passwords_file` is NULL, this
* function always returns 1; otherwise checks the authentication in the
* http request and returns 1 only if there is a match; 0 otherwise.
*/
int mg_http_is_authorized(struct http_message *hm, struct mg_str path,
int is_directory, const char *domain,
const char *passwords_file, int is_global_pass_file);
/*
* Sends 401 Unauthorized response.
*/
void mg_http_send_digest_auth_request(struct mg_connection *c,
const char *domain);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment