23#ifndef CIVETWEB_HEADER_INCLUDED
24#define CIVETWEB_HEADER_INCLUDED
26#define CIVETWEB_VERSION "1.12"
27#define CIVETWEB_VERSION_MAJOR (1)
28#define CIVETWEB_VERSION_MINOR (12)
29#define CIVETWEB_VERSION_PATCH (0)
33#if defined(CIVETWEB_DLL_EXPORTS)
34#define CIVETWEB_API __declspec(dllexport)
35#elif defined(CIVETWEB_DLL_IMPORTS)
36#define CIVETWEB_API __declspec(dllimport)
41#define CIVETWEB_API __attribute__((visibility("default")))
136#define MG_MAX_HEADERS (64)
152#if defined(MG_LEGACY_INTERFACE)
206#if defined(MG_LEGACY_INTERFACE)
242 int (*
log_message)(
const struct mg_connection *,
const char *message);
246 int (*
log_access)(
const struct mg_connection *,
const char *message);
255 int (*
init_ssl)(
void *ssl_context,
void *user_data);
271#if defined(MG_LEGACY_INTERFACE)
277 int (*websocket_connect)(
const struct mg_connection *);
282 void (*websocket_ready)(
struct mg_connection *);
293 int (*websocket_data)(
struct mg_connection *,
323#if defined(MG_LEGACY_INTERFACE)
329 void (*upload)(
struct mg_connection *,
const char *file_name);
410 const char **configuration_options);
421#if defined(MG_EXPERIMENTAL_INTERFACES)
440 const char **configuration_options);
548 struct mg_context *ctx,
633#if defined(MG_LEGACY_INTERFACE)
639CIVETWEB_API const char **mg_get_valid_option_names(
void);
650#if defined(MG_LEGACY_INTERFACE)
652 CONFIG_TYPE_UNKNOWN = 0x0,
653 CONFIG_TYPE_NUMBER = 0x1,
654 CONFIG_TYPE_STRING = 0x2,
655 CONFIG_TYPE_FILE = 0x3,
656 CONFIG_TYPE_DIRECTORY = 0x4,
657 CONFIG_TYPE_BOOLEAN = 0x5,
658 CONFIG_TYPE_EXT_PATTERN = 0x6,
659 CONFIG_TYPE_STRING_LIST = 0x7,
660 CONFIG_TYPE_STRING_MULTILINE = 0x8
706#if defined(MG_LEGACY_INTERFACE)
708CIVETWEB_API size_t mg_get_ports(
const struct mg_context *ctx,
736 const char *password);
811#if defined(MG_LEGACY_INTERFACE)
812#define mg_lock mg_lock_connection
813#define mg_unlock mg_unlock_connection
824#if defined(MG_LEGACY_INTERFACE)
826 WEBSOCKET_OPCODE_CONTINUATION = 0x0,
827 WEBSOCKET_OPCODE_TEXT = 0x1,
828 WEBSOCKET_OPCODE_BINARY = 0x2,
829 WEBSOCKET_OPCODE_CONNECTION_CLOSE = 0x8,
830 WEBSOCKET_OPCODE_PING = 0x9,
831 WEBSOCKET_OPCODE_PONG = 0xa
846#undef PRINTF_FORMAT_STRING
847#if defined(_MSC_VER) && _MSC_VER >= 1400
849#if defined(_MSC_VER) && _MSC_VER > 1400
850#define PRINTF_FORMAT_STRING(s) _Printf_format_string_ s
852#define PRINTF_FORMAT_STRING(s) __format_string s
855#define PRINTF_FORMAT_STRING(s) s
859#define PRINTF_ARGS(x, y) __attribute__((format(printf, x, y)))
861#define PRINTF_ARGS(x, y)
877 unsigned int chunk_len);
937 const
char *target_url,
977 const
char *filename);
1006 const
char *additional_headers);
1057 const
char *var_name,
1087 const
char *var_name,
1107 const
char *var_name,
1132 size_t error_buffer_size,
1141#if defined(MG_LEGACY_INTERFACE)
1147 const char *destination_dir);
1174 const char *filename,
1222#if defined(MG_LEGACY_INTERFACE)
1226 FORM_FIELD_STORAGE_SKIP = 0x0,
1228 FORM_FIELD_STORAGE_GET = 0x1,
1230 FORM_FIELD_STORAGE_STORE = 0x2,
1232 FORM_FIELD_STORAGE_ABORT = 0x10
1273typedef void *(*mg_thread_func_t)(
void *);
1301 int is_form_url_encoded);
1359 size_t error_buffer_size,
1383 size_t error_buffer_size);
1399 size_t error_buffer_size);
1487#ifdef MG_EXPERIMENTAL_INTERFACES
1504CIVETWEB_API int mg_get_connection_info(
const struct mg_context *ctx,
typedef void((*Func_t)())
CIVETWEB_API void mg_lock_context(struct mg_context *ctx)
CIVETWEB_API const char * mg_version(void)
CIVETWEB_API void mg_set_websocket_handler_with_subprotocols(struct mg_context *ctx, const char *uri, struct mg_websocket_subprotocols *subprotocols, mg_websocket_connect_handler connect_handler, mg_websocket_ready_handler ready_handler, mg_websocket_data_handler data_handler, mg_websocket_close_handler close_handler, void *cbdata)
CIVETWEB_API const char * mg_get_response_code_text(const struct mg_connection *conn, int response_code)
@ MG_CONFIG_TYPE_DIRECTORY
@ MG_CONFIG_TYPE_EXT_PATTERN
@ MG_CONFIG_TYPE_STRING_MULTILINE
@ MG_CONFIG_TYPE_STRING_LIST
@ MG_CONFIG_TYPE_YES_NO_OPTIONAL
CIVETWEB_API const char * mg_get_builtin_mime_type(const char *file_name)
CIVETWEB_API int mg_get_cookie(const char *cookie, const char *var_name, char *buf, size_t buf_len)
CIVETWEB_API int mg_websocket_write(struct mg_connection *conn, int opcode, const char *data, size_t data_len)
void *(* mg_thread_func_t)(void *)
CIVETWEB_API void mg_lock_connection(struct mg_connection *conn)
CIVETWEB_API int mg_modify_passwords_file(const char *passwords_file_name, const char *realm, const char *user, const char *password)
CIVETWEB_API void * mg_get_user_data(const struct mg_context *ctx)
@ MG_FEATURES_COMPRESSION
CIVETWEB_API long long mg_store_body(struct mg_connection *conn, const char *path)
CIVETWEB_API void mg_send_mime_file(struct mg_connection *conn, const char *path, const char *mime_type)
CIVETWEB_API int mg_strncasecmp(const char *s1, const char *s2, size_t len)
CIVETWEB_API void mg_unlock_connection(struct mg_connection *conn)
CIVETWEB_API void mg_cry(const struct mg_connection *conn, PRINTF_FORMAT_STRING(const char *fmt),...) PRINTF_ARGS(2
#define PRINTF_FORMAT_STRING(s)
CIVETWEB_API void mg_set_websocket_handler(struct mg_context *ctx, const char *uri, mg_websocket_connect_handler connect_handler, mg_websocket_ready_handler ready_handler, mg_websocket_data_handler data_handler, mg_websocket_close_handler close_handler, void *cbdata)
CIVETWEB_API int mg_url_decode(const char *src, int src_len, char *dst, int dst_len, int is_form_url_encoded)
int(* mg_authorization_handler)(struct mg_connection *conn, void *cbdata)
CIVETWEB_API void mg_unlock_context(struct mg_context *ctx)
CIVETWEB_API int mg_send_file_body(struct mg_connection *conn, const char *path)
CIVETWEB_API int mg_write(struct mg_connection *, const void *buf, size_t len)
@ MG_FORM_FIELD_HANDLE_NEXT
@ MG_FORM_FIELD_HANDLE_GET
@ MG_FORM_FIELD_HANDLE_ABORT
CIVETWEB_API int mg_websocket_client_write(struct mg_connection *conn, int opcode, const char *data, size_t data_len)
@ MG_FORM_FIELD_STORAGE_GET
@ MG_FORM_FIELD_STORAGE_ABORT
@ MG_FORM_FIELD_STORAGE_STORE
@ MG_FORM_FIELD_STORAGE_SKIP
CIVETWEB_API void mg_set_user_connection_data(struct mg_connection *conn, void *data)
CIVETWEB_API const char * mg_get_header(const struct mg_connection *, const char *name)
void(* mg_websocket_ready_handler)(struct mg_connection *, void *)
CIVETWEB_API int mg_start_thread(mg_thread_func_t f, void *p)
CIVETWEB_API struct mg_connection * mg_connect_websocket_client(const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size, const char *path, const char *origin, mg_websocket_data_handler data_func, mg_websocket_close_handler close_func, void *user_data)
CIVETWEB_API int mg_send_digest_access_authentication_request(struct mg_connection *conn, const char *realm)
CIVETWEB_API struct mg_connection * mg_download(const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size, PRINTF_FORMAT_STRING(const char *request_fmt),...) PRINTF_ARGS(6
CIVETWEB_API int mg_handle_form_request(struct mg_connection *conn, struct mg_form_data_handler *fdh)
CIVETWEB_API void mg_stop(struct mg_context *)
CIVETWEB_API int mg_send_http_error(struct mg_connection *conn, int status_code, PRINTF_FORMAT_STRING(const char *fmt),...) PRINTF_ARGS(3
CIVETWEB_API const struct mg_request_info * mg_get_request_info(const struct mg_connection *)
CIVETWEB_API int mg_get_response(struct mg_connection *conn, char *ebuf, size_t ebuf_len, int timeout)
CIVETWEB_API unsigned mg_exit_library(void)
CIVETWEB_API struct mg_context * mg_get_context(const struct mg_connection *conn)
CIVETWEB_API int mg_get_context_info(const struct mg_context *ctx, char *buffer, int buflen)
CIVETWEB_API int mg_get_var2(const char *data, size_t data_len, const char *var_name, char *dst, size_t dst_len, size_t occurrence)
CIVETWEB_API int CIVETWEB_API int mg_send_http_ok(struct mg_connection *conn, const char *mime_type, long long content_length)
CIVETWEB_API int mg_get_request_link(const struct mg_connection *conn, char *buf, size_t buflen)
CIVETWEB_API int mg_printf(struct mg_connection *, PRINTF_FORMAT_STRING(const char *fmt),...) PRINTF_ARGS(2
CIVETWEB_API const struct mg_response_info * mg_get_response_info(const struct mg_connection *)
@ MG_WEBSOCKET_OPCODE_CONNECTION_CLOSE
@ MG_WEBSOCKET_OPCODE_BINARY
@ MG_WEBSOCKET_OPCODE_PONG
@ MG_WEBSOCKET_OPCODE_TEXT
@ MG_WEBSOCKET_OPCODE_CONTINUATION
@ MG_WEBSOCKET_OPCODE_PING
CIVETWEB_API const struct mg_option * mg_get_valid_options(void)
CIVETWEB_API void mg_set_auth_handler(struct mg_context *ctx, const char *uri, mg_authorization_handler handler, void *cbdata)
CIVETWEB_API int mg_check_digest_access_authentication(struct mg_connection *conn, const char *realm, const char *filename)
CIVETWEB_API void * mg_get_user_connection_data(const struct mg_connection *conn)
CIVETWEB_API char * mg_md5(char buf[33],...)
CIVETWEB_API const char * mg_get_option(const struct mg_context *ctx, const char *name)
CIVETWEB_API struct mg_connection * mg_connect_client_secure(const struct mg_client_options *client_options, char *error_buffer, size_t error_buffer_size)
CIVETWEB_API struct mg_connection CIVETWEB_API void mg_close_connection(struct mg_connection *conn)
#define PRINTF_ARGS(x, y)
CIVETWEB_API void CIVETWEB_API int mg_strcasecmp(const char *s1, const char *s2)
int(* mg_websocket_data_handler)(struct mg_connection *, int, char *, size_t, void *)
int(* mg_request_handler)(struct mg_connection *conn, void *cbdata)
CIVETWEB_API unsigned mg_init_library(unsigned features)
CIVETWEB_API void mg_send_mime_file2(struct mg_connection *conn, const char *path, const char *mime_type, const char *additional_headers)
CIVETWEB_API int mg_send_http_redirect(struct mg_connection *conn, const char *target_url, int redirect_code)
CIVETWEB_API int mg_get_var(const char *data, size_t data_len, const char *var_name, char *dst, size_t dst_len)
CIVETWEB_API struct mg_connection * mg_connect_client(const char *host, int port, int use_ssl, char *error_buffer, size_t error_buffer_size)
CIVETWEB_API unsigned mg_check_feature(unsigned feature)
void(* mg_websocket_close_handler)(const struct mg_connection *, void *)
int(* mg_websocket_connect_handler)(const struct mg_connection *, void *)
CIVETWEB_API struct mg_context * mg_start(const struct mg_callbacks *callbacks, void *user_data, const char **configuration_options)
CIVETWEB_API void mg_set_request_handler(struct mg_context *ctx, const char *uri, mg_request_handler handler, void *cbdata)
CIVETWEB_API int CIVETWEB_API int mg_send_chunk(struct mg_connection *conn, const char *chunk, unsigned int chunk_len)
CIVETWEB_API void mg_send_file(struct mg_connection *conn, const char *path)
CIVETWEB_API int mg_get_system_info(char *buffer, int buflen)
CIVETWEB_API int mg_get_server_ports(const struct mg_context *ctx, int size, struct mg_server_ports *ports)
CIVETWEB_API int mg_read(struct mg_connection *, void *buf, size_t len)
CIVETWEB_API int mg_url_encode(const char *src, char *dst, size_t dst_len)
int(* init_ssl)(void *ssl_context, void *user_data)
int(* log_message)(const struct mg_connection *, const char *message)
void(* end_request)(const struct mg_connection *, int reply_status_code)
int(* init_connection)(const struct mg_connection *conn, void **conn_data)
void(* connection_close)(const struct mg_connection *)
int(* http_error)(struct mg_connection *conn, int status, const char *errmsg)
void(* exit_context)(const struct mg_context *ctx)
void(* init_thread)(const struct mg_context *ctx, int thread_type)
int(* external_ssl_ctx)(void **ssl_ctx, void *user_data)
int(* begin_request)(struct mg_connection *)
int(* log_access)(const struct mg_connection *, const char *message)
void(* init_context)(const struct mg_context *ctx)
void(* init_lua)(const struct mg_connection *conn, void *lua_context)
const char * default_value
struct mg_header http_headers[MG_MAX_HEADERS]
const char * request_method
struct mg_client_cert * client_cert
const char * query_string
const char * http_version
const char * acceptedWebSocketSubprotocol
const char * http_version
struct mg_header http_headers[MG_MAX_HEADERS]