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)
233 #define LWS_SERVER_OPTION_SS_PROXY (1ll << 36)
236 #define LWS_SERVER_OPTION_SDEVENT (1ll << 37)
239 #define LWS_SERVER_OPTION_ULOOP (1ll << 38)
242 #define LWS_SERVER_OPTION_DISABLE_TLS_SESSION_CACHE (1ll << 39)
249 #define lws_check_opt(c, f) ((((uint64_t)c) & ((uint64_t)f)) == ((uint64_t)f))
253 struct lws_ss_plugin;
256 typedef int (*lws_context_ready_cb_t)(
struct lws_context *context);
258 typedef int (*lws_peer_limits_notify_t)(
struct lws_context *ctx,
259 lws_sockfd_type sockfd,
272 #if defined(LWS_WITH_NETWORK)
286 #if defined(LWS_ROLE_WS)
291 #if defined(LWS_ROLE_H1) || defined(LWS_ROLE_H2)
295 const char *http_proxy_address;
313 const char *log_filepath;
318 const char *server_string;
322 const char *error_document_404;
336 unsigned int http_proxy_port;
338 unsigned int max_http_header_data2;
343 unsigned int max_http_header_pool2;
349 int keepalive_timeout;
353 uint32_t http2_settings[7];
360 unsigned short max_http_header_data;
363 unsigned short max_http_header_pool;
373 #if defined(LWS_WITH_TLS)
374 const char *ssl_private_key_password;
379 const char *ssl_cert_filepath;
391 const char *ssl_private_key_filepath;
405 const char *ssl_ca_filepath;
414 const char *ssl_cipher_list;
424 const char *ecdh_curve;
427 const char *tls1_3_plus_cipher_list;
435 const void *server_ssl_cert_mem;
439 const void *server_ssl_private_key_mem;
444 const void *server_ssl_ca_mem;
449 long ssl_options_set;
451 long ssl_options_clear;
453 int simultaneous_ssl_restriction;
456 int ssl_handshake_serialize;
459 int ssl_info_event_mask;
465 unsigned int server_ssl_cert_mem_len;
468 unsigned int server_ssl_private_key_mem_len;
470 unsigned int server_ssl_ca_mem_len;
482 #if defined(LWS_WITH_CLIENT)
483 const char *client_ssl_private_key_password;
486 const char *client_ssl_cert_filepath;
489 const void *client_ssl_cert_mem;
492 unsigned int client_ssl_cert_mem_len;
495 const char *client_ssl_private_key_filepath;
501 const void *client_ssl_key_mem;
504 const char *client_ssl_ca_filepath;
506 const void *client_ssl_ca_mem;
510 const char *client_ssl_cipher_list;
514 const char *client_tls_1_3_plus_cipher_list;
521 long ssl_client_options_set;
523 long ssl_client_options_clear;
527 unsigned int client_ssl_ca_mem_len;
530 unsigned int client_ssl_key_mem_len;
536 #if !defined(LWS_WITH_MBEDTLS)
537 SSL_CTX *provided_client_ssl_ctx;
543 const char *mbedtls_client_preload_filepath;
566 unsigned int timeout_secs;
571 unsigned int connect_timeout_secs;
586 unsigned int timeout_secs_ah_idle;
591 #if defined(LWS_WITH_TLS_SESSIONS)
592 uint32_t tls_session_timeout;
595 uint32_t tls_session_cache_max;
642 #if defined(LWS_WITH_PLUGINS)
643 const char *
const *plugin_dirs;
662 #if defined(LWS_WITH_FILE_OPS)
672 #if defined(LWS_WITH_SOCKS5)
673 const char *socks_proxy_address;
677 unsigned int socks_proxy_port;
683 #if defined(LWS_HAVE_SYS_CAPABILITY_H) && defined(LWS_HAVE_LIBCAP)
765 #if defined(LWS_WITH_SYS_STATE)
766 lws_state_notify_link_t *
const *register_notifier_list;
771 #if defined(LWS_WITH_SECURE_STREAMS)
772 #if defined(LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY)
776 const char *pss_policies_json;
784 const struct lws_ss_plugin **pss_plugins;
787 const char *ss_proxy_bind;
792 const char *ss_proxy_address;
794 uint16_t ss_proxy_port;
805 #if defined(LWS_WITH_PEER_LIMITS)
806 lws_peer_limits_notify_t pl_notify_cb;
813 unsigned short ip_limit_ah;
821 unsigned short ip_limit_wsi;
831 #if defined(LWS_WITH_SYS_FAULT_INJECTION)
841 #if defined(LWS_WITH_SYS_SMD)
842 lws_smd_notification_cb_t early_smd_cb;
849 void *early_smd_opaque;
850 lws_smd_class_t early_smd_class_filter;
851 lws_usec_t smd_ttl_us;
856 uint16_t smd_queue_depth;
861 #if defined(LWS_WITH_SYS_METRICS)
864 const char *metrics_prefix;
889 #if defined(LWS_WITH_TLS_JIT_TRUST)
890 size_t jitt_cache_max_footprint;
893 int vh_idle_grace_ms;
902 #if defined(LWS_WITH_CACHE_NSCOOKIEJAR) && defined(LWS_WITH_CLIENT)
903 const char *http_nsc_filepath;
906 size_t http_nsc_heap_max_footprint;
909 size_t http_nsc_heap_max_items;
912 size_t http_nsc_heap_max_payload;
962 LWS_VISIBLE LWS_EXTERN
struct lws_context *
974 LWS_VISIBLE LWS_EXTERN
void
977 typedef int (*lws_reload_func)(void);
1001 LWS_VISIBLE LWS_EXTERN
void
1004 LWS_VISIBLE LWS_EXTERN
int
1005 lws_context_is_deprecated(
struct lws_context *context);
1024 LWS_VISIBLE LWS_EXTERN
int
1044 LWS_VISIBLE LWS_EXTERN
int
1058 LWS_VISIBLE LWS_EXTERN
struct lws_vhost *
1080 LWS_VISIBLE LWS_EXTERN
void
1097 LWS_VISIBLE LWS_EXTERN
int
1099 char **config_strings,
int *len);
1116 LWS_VISIBLE LWS_EXTERN
int
1119 char **config_strings,
int *len);
1126 LWS_VISIBLE LWS_EXTERN
struct lws_vhost *
1134 LWS_VISIBLE LWS_EXTERN
const char *
1145 LWS_VISIBLE LWS_EXTERN
struct lws_vhost *
1153 LWS_VISIBLE LWS_EXTERN
int
1161 LWS_VISIBLE LWS_EXTERN
void *
1169 LWS_VISIBLE LWS_EXTERN
const char *
1179 LWS_VISIBLE LWS_EXTERN
int
1192 LWS_VISIBLE LWS_EXTERN
int
1204 LWS_VISIBLE LWS_EXTERN
void *
1216 LWS_VISIBLE LWS_EXTERN
void *
1219 LWS_VISIBLE LWS_EXTERN
const char *
1220 lws_vh_tag(
struct lws_vhost *vh);
1237 LWS_VISIBLE LWS_EXTERN
int
1283 #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_VISIBLE LWS_EXTERN int lws_context_is_being_destroyed(struct lws_context *context)
lws_mount_protocols
Definition: lws-context-vhost.h:1263
lws_authentication_mode
Definition: lws-context-vhost.h:1277
@ LWSMPRO_CGI
Definition: lws-context-vhost.h:1267
@ LWSMPRO_HTTP
Definition: lws-context-vhost.h:1264
@ LWSMPRO_FILE
Definition: lws-context-vhost.h:1266
@ LWSMPRO_REDIR_HTTPS
Definition: lws-context-vhost.h:1269
@ LWSMPRO_CALLBACK
Definition: lws-context-vhost.h:1270
@ LWSMPRO_REDIR_HTTP
Definition: lws-context-vhost.h:1268
@ LWSMPRO_HTTPS
Definition: lws-context-vhost.h:1265
@ LWSAUTHM_BASIC_AUTH_CALLBACK
Definition: lws-context-vhost.h:1279
@ LWSAUTHM_DEFAULT
Definition: lws-context-vhost.h:1278
Definition: lws-context-vhost.h:271
void ** foreign_loops
Definition: lws-context-vhost.h:695
void * user
Definition: lws-context-vhost.h:608
const lws_system_ops_t * system_ops
Definition: lws-context-vhost.h:758
lws_log_cx_t * log_cx
Definition: lws-context-vhost.h:898
const struct lws_plugin_evlib * event_lib_custom
Definition: lws-context-vhost.h:879
void(* finalize)(struct lws_vhost *vh, void *arg)
Definition: lws-context-vhost.h:721
gid_t gid
Definition: lws-context-vhost.h:600
unsigned int fd_limit_per_thread
Definition: lws-context-vhost.h:619
const char * listen_accept_protocol
Definition: lws-context-vhost.h:735
const struct lws_protocols ** pprotocols
Definition: lws-context-vhost.h:739
uid_t uid
Definition: lws-context-vhost.h:603
struct lws_context ** pcontext
Definition: lws-context-vhost.h:715
unsigned int pt_serv_buf_size
Definition: lws-context-vhost.h:656
int fo_listen_queue
Definition: lws-context-vhost.h:873
const char * listen_accept_role
Definition: lws-context-vhost.h:730
const char * username
Definition: lws-context-vhost.h:750
const char * groupname
Definition: lws-context-vhost.h:752
const lws_retry_bo_t * retry_and_idle_policy
Definition: lws-context-vhost.h:761
uint64_t options
Definition: lws-context-vhost.h:606
void * external_baggage_free_on_destroy
Definition: lws-context-vhost.h:647
const char * unix_socket_perms
Definition: lws-context-vhost.h:754
int rlimit_nofile
Definition: lws-context-vhost.h:801
const char * vhost_name
Definition: lws-context-vhost.h:635
void * finalize_arg
Definition: lws-context-vhost.h:726
void * _unused[2]
Definition: lws-context-vhost.h:925
void(* signal_cb)(void *event_lib_handle, int signum)
Definition: lws-context-vhost.h:709
unsigned int count_threads
Definition: lws-context-vhost.h:617
Definition: lws-ws-ext.h:139
Definition: lws-context-vhost.h:1289
const struct lws_http_mount * mount_next
Definition: lws-context-vhost.h:1290
const char * protocol
Definition: lws-context-vhost.h:1298
const struct lws_protocol_vhost_options * interpret
Definition: lws-context-vhost.h:1307
const char * origin
Definition: lws-context-vhost.h:1294
const char * basic_auth_login_file
Definition: lws-context-vhost.h:1324
int cache_max_age
Definition: lws-context-vhost.h:1312
const struct lws_protocol_vhost_options * extra_mimetypes
Definition: lws-context-vhost.h:1305
int cgi_timeout
Definition: lws-context-vhost.h:1310
unsigned int auth_mask
Definition: lws-context-vhost.h:1314
unsigned char origin_protocol
Definition: lws-context-vhost.h:1321
unsigned int cache_reusable
Definition: lws-context-vhost.h:1317
const char * mountpoint
Definition: lws-context-vhost.h:1292
unsigned int cache_intermediaries
Definition: lws-context-vhost.h:1319
unsigned char mountpoint_len
Definition: lws-context-vhost.h:1322
unsigned int cache_revalidate
Definition: lws-context-vhost.h:1318
const struct lws_protocol_vhost_options * cgienv
Definition: lws-context-vhost.h:1301
const char * def
Definition: lws-context-vhost.h:1296
Definition: lws-logs.h:80
Definition: lws-secure-streams-policy.h:82
Definition: lws-protocols-plugins.h:297
Definition: lws-context-vhost.h:1252
const char * value
Definition: lws-context-vhost.h:1256
const struct lws_protocol_vhost_options * next
Definition: lws-context-vhost.h:1253
const char * name
Definition: lws-context-vhost.h:1255
const struct lws_protocol_vhost_options * options
Definition: lws-context-vhost.h:1254
Definition: lws-protocols-plugins.h:44
Definition: lws-retry.h:25
Definition: lws-secure-streams-policy.h:247
Definition: lws-system.h:162
Definition: lws-http.h:369
Definition: lws-adopt.h:86