RTEMS CPU Kit with SuperCore
Data Structures | Macros | Typedefs | Enumerations | Functions
mongoose.c File Reference
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <time.h>
#include <stdlib.h>
#include <stdarg.h>
#include <assert.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include <stddef.h>
#include <stdio.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include <stdint.h>
#include <inttypes.h>
#include <netdb.h>
#include <pwd.h>
#include <unistd.h>
#include <dirent.h>
#include <dlfcn.h>
#include <pthread.h>
#include "mongoose.h"
Include dependency graph for mongoose.c:

Data Structures

struct  pollfd
 
struct  ssl_func
 
union  usa
 
struct  vec
 
struct  file
 
struct  socket
 
struct  mg_context
 
struct  mg_connection
 
struct  de
 
struct  MD5Context
 
struct  ah
 
struct  dir_scan_data
 
struct  cgi_env_block
 

Macros

#define _LARGEFILE_SOURCE
 
#define __STDC_FORMAT_MACROS
 
#define __STDC_LIMIT_MACROS
 
#define SSL_LIB   "libssl.so"
 
#define CRYPTO_LIB   "libcrypto.so"
 
#define O_BINARY   0
 
#define closesocket(a)   close(a)
 
#define mg_mkdir(x, y)   mkdir(x, y)
 
#define mg_remove(x)   remove(x)
 
#define mg_sleep(x)   usleep((x) * 1000)
 
#define ERRNO   errno
 
#define INVALID_SOCKET   (-1)
 
#define INT64_FMT   PRId64
 
#define WINCDECL
 
#define POLLIN   1
 
#define MONGOOSE_VERSION   "3.9"
 
#define PASSWORDS_FILE_NAME   ".htpasswd"
 
#define CGI_ENVIRONMENT_SIZE   4096
 
#define MAX_CGI_ENVIR_VARS   64
 
#define MG_BUF_LEN   8192
 
#define MAX_REQUEST_SIZE   16384
 
#define ARRAY_SIZE(array)   (sizeof(array) / sizeof(array[0]))
 
#define DEBUG_TRACE(x)
 
#define _DARWIN_UNLIMITED_SELECT
 
#define IP_ADDR_STR_LEN   50
 
#define MSG_NOSIGNAL   0
 
#define SOMAXCONN   100
 
#define PATH_MAX   4096
 
#define MGSQLEN   20
 
#define SSL_free   (* (void (*)(SSL *)) ssl_sw[0].ptr)
 
#define SSL_accept   (* (int (*)(SSL *)) ssl_sw[1].ptr)
 
#define SSL_connect   (* (int (*)(SSL *)) ssl_sw[2].ptr)
 
#define SSL_read   (* (int (*)(SSL *, void *, int)) ssl_sw[3].ptr)
 
#define SSL_write   (* (int (*)(SSL *, const void *,int)) ssl_sw[4].ptr)
 
#define SSL_get_error   (* (int (*)(SSL *, int)) ssl_sw[5].ptr)
 
#define SSL_set_fd   (* (int (*)(SSL *, SOCKET)) ssl_sw[6].ptr)
 
#define SSL_new   (* (SSL * (*)(SSL_CTX *)) ssl_sw[7].ptr)
 
#define SSL_CTX_new   (* (SSL_CTX * (*)(SSL_METHOD *)) ssl_sw[8].ptr)
 
#define SSLv23_server_method   (* (SSL_METHOD * (*)(void)) ssl_sw[9].ptr)
 
#define SSL_library_init   (* (int (*)(void)) ssl_sw[10].ptr)
 
#define SSL_CTX_use_PrivateKey_file
 
#define SSL_CTX_use_certificate_file
 
#define SSL_CTX_set_default_passwd_cb   (* (void (*)(SSL_CTX *, mg_callback_t)) ssl_sw[13].ptr)
 
#define SSL_CTX_free   (* (void (*)(SSL_CTX *)) ssl_sw[14].ptr)
 
#define SSL_load_error_strings   (* (void (*)(void)) ssl_sw[15].ptr)
 
#define SSL_CTX_use_certificate_chain_file   (* (int (*)(SSL_CTX *, const char *)) ssl_sw[16].ptr)
 
#define SSLv23_client_method   (* (SSL_METHOD * (*)(void)) ssl_sw[17].ptr)
 
#define SSL_pending   (* (int (*)(SSL *)) ssl_sw[18].ptr)
 
#define SSL_CTX_set_verify   (* (void (*)(SSL_CTX *, int, int)) ssl_sw[19].ptr)
 
#define SSL_shutdown   (* (int (*)(SSL *)) ssl_sw[20].ptr)
 
#define CRYPTO_num_locks   (* (int (*)(void)) crypto_sw[0].ptr)
 
#define CRYPTO_set_locking_callback   (* (void (*)(void (*)(int, int, const char *, int))) crypto_sw[1].ptr)
 
#define CRYPTO_set_id_callback   (* (void (*)(unsigned long (*)(void))) crypto_sw[2].ptr)
 
#define ERR_get_error   (* (unsigned long (*)(void)) crypto_sw[3].ptr)
 
#define ERR_error_string   (* (char * (*)(unsigned long,char *)) crypto_sw[4].ptr)
 
#define STRUCT_FILE_INITIALIZER   {0, 0, 0, NULL, NULL, 0}
 
#define HEXTOI(x)   (isdigit(x) ? x - '0' : x - 'W')
 
#define F1(x, y, z)   (z ^ (x & (y ^ z)))
 
#define F2(x, y, z)   F1(z, x, y)
 
#define F3(x, y, z)   (x ^ y ^ z)
 
#define F4(x, y, z)   (y ^ (x | ~z))
 
#define MD5STEP(f, w, x, y, z, data, s)   ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
 

Typedefs

typedef int SOCKET
 
typedef struct ssl_st SSL
 
typedef struct ssl_method_st SSL_METHOD
 
typedef struct ssl_ctx_st SSL_CTX
 
typedef struct MD5Context MD5_CTX
 

Enumerations

enum  {
  CGI_EXTENSIONS, CGI_ENVIRONMENT, PUT_DELETE_PASSWORDS_FILE, CGI_INTERPRETER,
  PROTECT_URI, AUTHENTICATION_DOMAIN, SSI_EXTENSIONS, THROTTLE,
  ACCESS_LOG_FILE, ENABLE_DIRECTORY_LISTING, ERROR_LOG_FILE, GLOBAL_PASSWORDS_FILE,
  INDEX_FILES, ENABLE_KEEP_ALIVE, ACCESS_CONTROL_LIST, EXTRA_MIME_TYPES,
  LISTENING_PORTS, DOCUMENT_ROOT, SSL_CERTIFICATE, NUM_THREADS,
  RUN_AS_USER, REWRITE, HIDE_FILES, REQUEST_TIMEOUT,
  THREAD_STACK_SIZE, THREAD_PRIORITY, THREAD_POLICY, NUM_OPTIONS
}
 

Functions

const char ** mg_get_valid_option_names (void)
 
const char * mg_get_option (const struct mg_context *ctx, const char *name)
 
const char * mg_version (void)
 
struct mg_request_infomg_get_request_info (struct mg_connection *conn)
 
const char * mg_get_header (const struct mg_connection *conn, const char *name)
 
int mg_start_thread (mg_thread_func_t func, void *param)
 
int mg_read (struct mg_connection *conn, void *buf, size_t len)
 
int mg_write (struct mg_connection *conn, const void *buf, size_t len)
 
int mg_printf (struct mg_connection *conn, const char *fmt,...)
 
int mg_url_decode (const char *src, int src_len, char *dst, int dst_len, int is_form_url_encoded)
 
int mg_get_var (const char *data, size_t data_len, const char *name, char *dst, size_t dst_len)
 
int mg_get_cookie (const char *cookie_header, const char *var_name, char *dst, size_t dst_size)
 
const char * mg_get_builtin_mime_type (const char *path)
 
char * mg_md5 (char buf[33],...)
 
int mg_modify_passwords_file (const char *fname, const char *domain, const char *user, const char *pass)
 
void mg_send_file (struct mg_connection *conn, const char *path)
 
int mg_upload (struct mg_connection *conn, const char *destination_dir)
 
void mg_close_connection (struct mg_connection *conn)
 
struct mg_connectionmg_download (const char *host, int port, int use_ssl, char *ebuf, size_t ebuf_len, const char *fmt,...)
 
void mg_stop (struct mg_context *ctx)
 
struct mg_contextmg_start (const struct mg_callbacks *callbacks, void *user_data, const char **options)
 

Macro Definition Documentation

◆ SSL_CTX_use_certificate_file

#define SSL_CTX_use_certificate_file
Value:
(* (int (*)(SSL_CTX *, \
const char *, int)) ssl_sw[12].ptr)

◆ SSL_CTX_use_PrivateKey_file

#define SSL_CTX_use_PrivateKey_file
Value:
(* (int (*)(SSL_CTX *, \
const char *, int)) ssl_sw[11].ptr)