46 #define LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT      ((1ll << 1) | \ 
   51 #define LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME              (1ll << 2) 
   53 #define LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT              ((1ll << 3) | \ 
   61 #define LWS_SERVER_OPTION_LIBEV                                  (1ll << 4) 
   63 #define LWS_SERVER_OPTION_DISABLE_IPV6                           (1ll << 5) 
   65 #define LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS                    (1ll << 6) 
   68 #define LWS_SERVER_OPTION_PEER_CERT_NOT_REQUIRED                 (1ll << 7) 
   70 #define LWS_SERVER_OPTION_VALIDATE_UTF8                          (1ll << 8) 
   72 #define LWS_SERVER_OPTION_SSL_ECDH                               ((1ll << 9) | \ 
   75 #define LWS_SERVER_OPTION_LIBUV                                 (1ll << 10) 
   77 #define LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS                ((1ll << 11) |\ 
   88 #define LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT                     (1ll << 12) 
   90 #define LWS_SERVER_OPTION_EXPLICIT_VHOSTS                        (1ll << 13) 
   93 #define LWS_SERVER_OPTION_UNIX_SOCK                              (1ll << 14) 
   95 #define LWS_SERVER_OPTION_STS                                    (1ll << 15) 
   98 #define LWS_SERVER_OPTION_IPV6_V6ONLY_MODIFY                     (1ll << 16) 
  100 #define LWS_SERVER_OPTION_IPV6_V6ONLY_VALUE                      (1ll << 17) 
  102 #define LWS_SERVER_OPTION_UV_NO_SIGSEGV_SIGFPE_SPIN              (1ll << 18) 
  108 #define LWS_SERVER_OPTION_JUST_USE_RAW_ORIGIN                    (1ll << 19) 
  115 #define LWS_SERVER_OPTION_FALLBACK_TO_RAW    (1ll << 20) 
  116 #define LWS_SERVER_OPTION_FALLBACK_TO_APPLY_LISTEN_ACCEPT_CONFIG (1ll << 20) 
  129 #define LWS_SERVER_OPTION_LIBEVENT                              (1ll << 21) 
  132 #define LWS_SERVER_OPTION_ONLY_RAW  (1ll << 22) 
  133 #define LWS_SERVER_OPTION_ADOPT_APPLY_LISTEN_ACCEPT_CONFIG      (1ll << 22) 
  146 #define LWS_SERVER_OPTION_ALLOW_LISTEN_SHARE                    (1ll << 23) 
  152 #define LWS_SERVER_OPTION_CREATE_VHOST_SSL_CTX                  (1ll << 24) 
  159 #define LWS_SERVER_OPTION_SKIP_PROTOCOL_INIT                    (1ll << 25) 
  164 #define LWS_SERVER_OPTION_IGNORE_MISSING_CERT                   (1ll << 26) 
  170 #define LWS_SERVER_OPTION_VHOST_UPG_STRICT_HOST_CHECK           (1ll << 27) 
  181 #define LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCE (1ll << 28) 
  198 #define LWS_SERVER_OPTION_ALLOW_HTTP_ON_HTTPS_LISTENER           (1ll << 29) 
  206 #define LWS_SERVER_OPTION_FAIL_UPON_UNABLE_TO_BIND               (1ll << 30) 
  211 #define LWS_SERVER_OPTION_H2_JUST_FIX_WINDOW_UPDATE_OVERFLOW     (1ll << 31) 
  215 #define LWS_SERVER_OPTION_VH_H2_HALF_CLOSED_LONG_POLL            (1ll << 32) 
  221 #define LWS_SERVER_OPTION_GLIB                                   (1ll << 33) 
  224 #define LWS_SERVER_OPTION_H2_PRIOR_KNOWLEDGE                     (1ll << 34) 
  229 #define LWS_SERVER_OPTION_NO_LWS_SYSTEM_STATES                   (1ll << 35) 
  236 #define lws_check_opt(c, f) ((((uint64_t)c) & ((uint64_t)f)) == ((uint64_t)f)) 
  240 struct lws_ss_plugin;
 
  242 typedef int (*lws_context_ready_cb_t)(
struct lws_context *context);
 
  244 typedef int (*lws_peer_limits_notify_t)(
struct lws_context *ctx,
 
  245                                         lws_sockfd_type sockfd,
 
  258 #if defined(LWS_WITH_NETWORK) 
  272 #if defined(LWS_ROLE_WS) 
  277 #if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2) 
  281         const char *http_proxy_address;
 
  299         const char *log_filepath;
 
  304         const char *server_string;
 
  308         const char *error_document_404;
 
  322         unsigned int http_proxy_port;
 
  324         unsigned int max_http_header_data2;
 
  329         unsigned int max_http_header_pool2;
 
  335         int keepalive_timeout;
 
  339         uint32_t        http2_settings[7];
 
  346         unsigned short max_http_header_data;
 
  349         unsigned short max_http_header_pool;
 
  359 #if defined(LWS_WITH_TLS) 
  360         const char *ssl_private_key_password;
 
  365         const char *ssl_cert_filepath;
 
  377         const char *ssl_private_key_filepath;
 
  391         const char *ssl_ca_filepath;
 
  400         const char *ssl_cipher_list;
 
  410         const char *ecdh_curve;
 
  413         const char *tls1_3_plus_cipher_list;
 
  421         const void *server_ssl_cert_mem;
 
  425         const void *server_ssl_private_key_mem;
 
  430         const void *server_ssl_ca_mem;
 
  435         long ssl_options_set;
 
  437         long ssl_options_clear;
 
  439         int simultaneous_ssl_restriction;
 
  442         int ssl_info_event_mask;
 
  448         unsigned int server_ssl_cert_mem_len;
 
  451         unsigned int server_ssl_private_key_mem_len;
 
  453         unsigned int server_ssl_ca_mem_len;
 
  465 #if defined(LWS_WITH_CLIENT) 
  466         const char *client_ssl_private_key_password;
 
  469         const char *client_ssl_cert_filepath;
 
  472         const void *client_ssl_cert_mem;
 
  475         unsigned int client_ssl_cert_mem_len;
 
  478         const char *client_ssl_private_key_filepath;
 
  484         const void *client_ssl_key_mem;
 
  487         const char *client_ssl_ca_filepath;
 
  489         const void *client_ssl_ca_mem;
 
  493         const char *client_ssl_cipher_list;
 
  497         const char *client_tls_1_3_plus_cipher_list;
 
  504         long ssl_client_options_set;
 
  506         long ssl_client_options_clear;
 
  510         unsigned int client_ssl_ca_mem_len;
 
  513         unsigned int client_ssl_key_mem_len;
 
  519 #if !defined(LWS_WITH_MBEDTLS) 
  520         SSL_CTX *provided_client_ssl_ctx;
 
  538         unsigned int timeout_secs;
 
  543         unsigned int connect_timeout_secs;
 
  558         unsigned int timeout_secs_ah_idle;
 
  602 #if defined(LWS_WITH_PLUGINS) 
  603         const char * 
const *plugin_dirs;
 
  622 #if defined(LWS_WITH_FILE_OPS) 
  632 #if defined(LWS_WITH_SOCKS5) 
  633         const char *socks_proxy_address;
 
  637         unsigned int socks_proxy_port;
 
  643 #if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP) 
  721 #if defined(LWS_WITH_DETAILED_LATENCY) 
  722         det_lat_buf_cb_t detailed_latency_cb;
 
  725         const char *detailed_latency_filepath;
 
  732 #if defined(LWS_WITH_SYS_STATE) 
  733         lws_state_notify_link_t * 
const *register_notifier_list;
 
  738 #if defined(LWS_WITH_SECURE_STREAMS) 
  739 #if defined(LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY) 
  743         const char *pss_policies_json; 
 
  747         const struct lws_ss_plugin **pss_plugins; 
 
  750         const char *ss_proxy_bind; 
 
  755         const char *ss_proxy_address; 
 
  757         uint16_t ss_proxy_port; 
 
  768 #if defined(LWS_WITH_PEER_LIMITS) 
  769         lws_peer_limits_notify_t pl_notify_cb;
 
  776         unsigned short ip_limit_ah;
 
  784         unsigned short ip_limit_wsi;
 
  793 #if defined(LWS_WITH_UDP) 
  794         uint8_t udp_loss_sim_tx_pc;
 
  797         uint8_t udp_loss_sim_rx_pc;
 
  802 #if defined(LWS_WITH_SYS_SMD) 
  803         lws_smd_notification_cb_t               early_smd_cb;
 
  810         void                                    *early_smd_opaque;
 
  811         lws_smd_class_t                         early_smd_class_filter;
 
  859 LWS_VISIBLE LWS_EXTERN 
struct lws_context *
 
  871 LWS_VISIBLE LWS_EXTERN 
void 
  874 typedef int (*lws_reload_func)(void);
 
  898 LWS_VISIBLE LWS_EXTERN 
void 
  901 LWS_VISIBLE LWS_EXTERN 
int 
  902 lws_context_is_deprecated(
struct lws_context *context);
 
  921 LWS_VISIBLE LWS_EXTERN 
int 
  941 LWS_VISIBLE LWS_EXTERN 
int 
  955 LWS_VISIBLE LWS_EXTERN 
struct lws_vhost *
 
  977 LWS_VISIBLE LWS_EXTERN 
void 
  994 LWS_VISIBLE LWS_EXTERN 
int 
  996                          char **config_strings, 
int *len);
 
 1013 LWS_VISIBLE LWS_EXTERN 
int 
 1016                         char **config_strings, 
int *len);
 
 1023 LWS_VISIBLE LWS_EXTERN 
struct lws_vhost *
 
 1031 LWS_VISIBLE LWS_EXTERN 
const char *
 
 1042 LWS_VISIBLE LWS_EXTERN 
struct lws_vhost *
 
 1050 LWS_VISIBLE LWS_EXTERN 
int 
 1058 LWS_VISIBLE LWS_EXTERN 
void *
 
 1066 LWS_VISIBLE LWS_EXTERN 
const char *
 
 1076 LWS_VISIBLE LWS_EXTERN 
int 
 1089 LWS_VISIBLE LWS_EXTERN 
int 
 1101 LWS_VISIBLE LWS_EXTERN 
void *
 
 1113 LWS_VISIBLE LWS_EXTERN 
void *
 
 1159 #define AUTH_MODE_MASK 0xF0000000 
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost(struct lws *wsi)
 
LWS_VISIBLE LWS_EXTERN void lws_context_deprecate(struct lws_context *context, lws_reload_func cb)
 
LWS_VISIBLE LWS_EXTERN int lws_json_dump_context(const struct lws_context *context, char *buf, int len, int hide_vhosts)
 
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_vhosts(struct lws_context *context, struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
 
LWS_VISIBLE LWS_EXTERN const char * lws_get_vhost_name(struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN void * lws_get_vhost_user(struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_get_vhost_by_name(struct lws_context *context, const char *name)
 
LWS_VISIBLE LWS_EXTERN int lws_set_proxy(struct lws_vhost *vhost, const char *proxy)
 
LWS_VISIBLE LWS_EXTERN const char * lws_get_vhost_iface(struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN void lws_context_destroy(struct lws_context *context)
 
LWS_VISIBLE LWS_EXTERN int lws_json_dump_vhost(const struct lws_vhost *vh, char *buf, int len)
 
LWS_VISIBLE LWS_EXTERN int lwsws_get_config_globals(struct lws_context_creation_info *info, const char *d, char **config_strings, int *len)
 
LWS_VISIBLE LWS_EXTERN int lws_set_socks(struct lws_vhost *vhost, const char *socks)
 
LWS_VISIBLE LWS_EXTERN struct lws_context * lws_create_context(const struct lws_context_creation_info *info)
 
LWS_VISIBLE LWS_EXTERN int lws_get_vhost_port(struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN struct lws_vhost * lws_create_vhost(struct lws_context *context, const struct lws_context_creation_info *info)
 
LWS_VISIBLE LWS_EXTERN void lws_vhost_destroy(struct lws_vhost *vh)
 
LWS_VISIBLE LWS_EXTERN void * lws_vhost_user(struct lws_vhost *vhost)
 
LWS_VISIBLE LWS_EXTERN void * lws_context_user(struct lws_context *context)
 
lws_mount_protocols
Definition: lws-context-vhost.h:1139
 
lws_authentication_mode
Definition: lws-context-vhost.h:1153
 
@ LWSMPRO_CGI
Definition: lws-context-vhost.h:1143
 
@ LWSMPRO_HTTP
Definition: lws-context-vhost.h:1140
 
@ LWSMPRO_FILE
Definition: lws-context-vhost.h:1142
 
@ LWSMPRO_REDIR_HTTPS
Definition: lws-context-vhost.h:1145
 
@ LWSMPRO_CALLBACK
Definition: lws-context-vhost.h:1146
 
@ LWSMPRO_REDIR_HTTP
Definition: lws-context-vhost.h:1144
 
@ LWSMPRO_HTTPS
Definition: lws-context-vhost.h:1141
 
@ LWSAUTHM_BASIC_AUTH_CALLBACK
Definition: lws-context-vhost.h:1155
 
@ LWSAUTHM_DEFAULT
Definition: lws-context-vhost.h:1154
 
Definition: lws-context-vhost.h:257
 
void ** foreign_loops
Definition: lws-context-vhost.h:655
 
void * user
Definition: lws-context-vhost.h:571
 
const lws_system_ops_t * system_ops
Definition: lws-context-vhost.h:718
 
void(* finalize)(struct lws_vhost *vh, void *arg)
Definition: lws-context-vhost.h:681
 
unsigned int fd_limit_per_thread
Definition: lws-context-vhost.h:582
 
const char * listen_accept_protocol
Definition: lws-context-vhost.h:695
 
const struct lws_protocols ** pprotocols
Definition: lws-context-vhost.h:699
 
struct lws_context ** pcontext
Definition: lws-context-vhost.h:675
 
unsigned int pt_serv_buf_size
Definition: lws-context-vhost.h:616
 
const char * listen_accept_role
Definition: lws-context-vhost.h:690
 
const char * username
Definition: lws-context-vhost.h:710
 
const char * groupname
Definition: lws-context-vhost.h:712
 
const lws_retry_bo_t * retry_and_idle_policy
Definition: lws-context-vhost.h:728
 
int gid
Definition: lws-context-vhost.h:563
 
uint64_t options
Definition: lws-context-vhost.h:569
 
void * external_baggage_free_on_destroy
Definition: lws-context-vhost.h:607
 
const char * unix_socket_perms
Definition: lws-context-vhost.h:714
 
int rlimit_nofile
Definition: lws-context-vhost.h:764
 
int uid
Definition: lws-context-vhost.h:566
 
const char * vhost_name
Definition: lws-context-vhost.h:598
 
void * finalize_arg
Definition: lws-context-vhost.h:686
 
void * _unused[2]
Definition: lws-context-vhost.h:822
 
void(* signal_cb)(void *event_lib_handle, int signum)
Definition: lws-context-vhost.h:669
 
unsigned int count_threads
Definition: lws-context-vhost.h:580
 
Definition: lws-ws-ext.h:139
 
Definition: lws-context-vhost.h:1165
 
const struct lws_http_mount * mount_next
Definition: lws-context-vhost.h:1166
 
const char * protocol
Definition: lws-context-vhost.h:1174
 
const struct lws_protocol_vhost_options * interpret
Definition: lws-context-vhost.h:1183
 
const char * origin
Definition: lws-context-vhost.h:1170
 
const char * basic_auth_login_file
Definition: lws-context-vhost.h:1200
 
int cache_max_age
Definition: lws-context-vhost.h:1188
 
const struct lws_protocol_vhost_options * extra_mimetypes
Definition: lws-context-vhost.h:1181
 
int cgi_timeout
Definition: lws-context-vhost.h:1186
 
unsigned int auth_mask
Definition: lws-context-vhost.h:1190
 
unsigned char origin_protocol
Definition: lws-context-vhost.h:1197
 
void * _unused[2]
Definition: lws-context-vhost.h:1211
 
unsigned int cache_reusable
Definition: lws-context-vhost.h:1193
 
const char * mountpoint
Definition: lws-context-vhost.h:1168
 
unsigned int cache_intermediaries
Definition: lws-context-vhost.h:1195
 
unsigned char mountpoint_len
Definition: lws-context-vhost.h:1198
 
unsigned int cache_revalidate
Definition: lws-context-vhost.h:1194
 
const struct lws_protocol_vhost_options * cgienv
Definition: lws-context-vhost.h:1177
 
const char * def
Definition: lws-context-vhost.h:1172
 
Definition: lws-context-vhost.h:1128
 
const char * value
Definition: lws-context-vhost.h:1132
 
const struct lws_protocol_vhost_options * next
Definition: lws-context-vhost.h:1129
 
const char * name
Definition: lws-context-vhost.h:1131
 
const struct lws_protocol_vhost_options * options
Definition: lws-context-vhost.h:1130
 
Definition: lws-protocols-plugins.h:44
 
Definition: lws-retry.h:25
 
Definition: lws-secure-streams-policy.h:180
 
Definition: lws-system.h:146
 
Definition: lws-http.h:368
 
Definition: lws-network-helper.h:36