libwebsockets
Lightweight C library for HTML5 websockets
lws-callbacks.h
1 /*
2  * libwebsockets - small server side websockets and web server implementation
3  *
4  * Copyright (C) 2010-2018 Andy Green <andy@warmcat.com>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation:
9  * version 2.1 of the License.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301 USA
20  *
21  * included from libwebsockets.h
22  */
23 
36 
37 struct lws_ssl_info {
38  int where;
39  int ret;
40 };
41 
42 enum lws_cert_update_state {
43  LWS_CUS_IDLE,
44  LWS_CUS_STARTING,
45  LWS_CUS_SUCCESS,
46  LWS_CUS_FAILED,
47 
48  LWS_CUS_CREATE_KEYS,
49  LWS_CUS_REG,
50  LWS_CUS_AUTH,
51  LWS_CUS_CHALLENGE,
52  LWS_CUS_CREATE_REQ,
53  LWS_CUS_REQ,
54  LWS_CUS_CONFIRM,
55  LWS_CUS_ISSUE,
56 };
57 
58 enum {
59  LWS_TLS_REQ_ELEMENT_COUNTRY,
60  LWS_TLS_REQ_ELEMENT_STATE,
61  LWS_TLS_REQ_ELEMENT_LOCALITY,
62  LWS_TLS_REQ_ELEMENT_ORGANIZATION,
63  LWS_TLS_REQ_ELEMENT_COMMON_NAME,
64  LWS_TLS_REQ_ELEMENT_EMAIL,
65 
66  LWS_TLS_REQ_ELEMENT_COUNT,
67 
68  LWS_TLS_SET_DIR_URL = LWS_TLS_REQ_ELEMENT_COUNT,
69  LWS_TLS_SET_AUTH_PATH,
70  LWS_TLS_SET_CERT_PATH,
71  LWS_TLS_SET_KEY_PATH,
72 
73  LWS_TLS_TOTAL_COUNT
74 };
75 
77  struct lws_vhost *vh;
78  const char *element_overrides[LWS_TLS_TOTAL_COUNT]; /* NULL = use pvo */
79 };
80 
81 /*
82  * NOTE: These public enums are part of the abi. If you want to add one,
83  * add it at where specified so existing users are unaffected.
84  */
87 
88  /* ---------------------------------------------------------------------
89  * ----- Callbacks related to wsi and protocol binding lifecycle -----
90  */
91 
109  /* ---------------------------------------------------------------------
110  * ----- Callbacks related to Server TLS -----
111  */
112 
163  /* ---------------------------------------------------------------------
164  * ----- Callbacks related to Client TLS -----
165  */
166 
198  /* ---------------------------------------------------------------------
199  * ----- Callbacks related to HTTP Server -----
200  */
201 
210  LWS_CALLBACK_HTTP = 12,
328  /* ---------------------------------------------------------------------
329  * ----- Callbacks related to HTTP Client -----
330  */
331 
379  LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOL = 85,
380  LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOL = 76,
381 
382  /* ---------------------------------------------------------------------
383  * ----- Callbacks related to Websocket Server -----
384  */
385 
442  LWS_CALLBACK_WS_SERVER_BIND_PROTOCOL = 77,
443  LWS_CALLBACK_WS_SERVER_DROP_PROTOCOL = 78,
444 
445  /* ---------------------------------------------------------------------
446  * ----- Callbacks related to Websocket Client -----
447  */
448 
575  LWS_CALLBACK_WS_CLIENT_BIND_PROTOCOL = 79,
576  LWS_CALLBACK_WS_CLIENT_DROP_PROTOCOL = 80,
577 
578  /* ---------------------------------------------------------------------
579  * ----- Callbacks related to external poll loop integration -----
580  */
581 
587  /* external poll() management support */
637  /* ---------------------------------------------------------------------
638  * ----- Callbacks related to CGI serving -----
639  */
640 
641  LWS_CALLBACK_CGI = 40,
669  /* ---------------------------------------------------------------------
670  * ----- Callbacks related to Generic Sessions -----
671  */
672 
689  /* ---------------------------------------------------------------------
690  * ----- Callbacks related to RAW PROXY -----
691  */
692 
719  LWS_CALLBACK_RAW_PROXY_CLI_BIND_PROTOCOL = 97,
720  LWS_CALLBACK_RAW_PROXY_SRV_BIND_PROTOCOL = 98,
721  LWS_CALLBACK_RAW_PROXY_CLI_DROP_PROTOCOL = 99,
722  LWS_CALLBACK_RAW_PROXY_SRV_DROP_PROTOCOL = 100,
723 
724 
725  /* ---------------------------------------------------------------------
726  * ----- Callbacks related to RAW sockets -----
727  */
728 
729  LWS_CALLBACK_RAW_RX = 59,
744  LWS_CALLBACK_RAW_SKT_BIND_PROTOCOL = 81,
745  LWS_CALLBACK_RAW_SKT_DROP_PROTOCOL = 82,
746 
747  /* ---------------------------------------------------------------------
748  * ----- Callbacks related to RAW file handles -----
749  */
750 
766  LWS_CALLBACK_RAW_FILE_BIND_PROTOCOL = 83,
767  LWS_CALLBACK_RAW_FILE_DROP_PROTOCOL = 84,
768 
769  /* ---------------------------------------------------------------------
770  * ----- Callbacks related to generic wsi events -----
771  */
772 
773  LWS_CALLBACK_TIMER = 73,
793  /* ---------------------------------------------------------------------
794  * ----- Callbacks related to TLS certificate management -----
795  */
796 
817  /****** add new things just above ---^ ******/
818 
819  LWS_CALLBACK_USER = 1000,
821 };
822 
823 
824 
840 typedef int
841 lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason,
842  void *user, void *in, size_t len);
843 
844 #define LWS_CB_REASON_AUX_BF__CGI 1
845 #define LWS_CB_REASON_AUX_BF__PROXY 2
846 #define LWS_CB_REASON_AUX_BF__CGI_CHUNK_END 4
847 #define LWS_CB_REASON_AUX_BF__CGI_HEADERS 8
848 #define LWS_CB_REASON_AUX_BF__PROXY_TRANS_END 16
849 #define LWS_CB_REASON_AUX_BF__PROXY_HEADERS 32
int lws_callback_function(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
Definition: lws-callbacks.h:841
lws_callback_reasons
Definition: lws-callbacks.h:86
@ LWS_CALLBACK_FILTER_NETWORK_CONNECTION
Definition: lws-callbacks.h:563
@ LWS_CALLBACK_HTTP_BIND_PROTOCOL
Definition: lws-callbacks.h:296
@ LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS
Definition: lws-callbacks.h:121
@ LWS_CALLBACK_UNLOCK_POLL
Definition: lws-callbacks.h:634
@ LWS_CALLBACK_CLIENT_RECEIVE_PONG
Definition: lws-callbacks.h:532
@ LWS_CALLBACK_RAW_ADOPT
Definition: lws-callbacks.h:738
@ LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATION
Definition: lws-callbacks.h:167
@ LWS_CALLBACK_COMPLETED_CLIENT_HTTP
Definition: lws-callbacks.h:364
@ LWS_CALLBACK_CLIENT_CLOSED
Definition: lws-callbacks.h:506
@ LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED
Definition: lws-callbacks.h:544
@ LWS_CALLBACK_DEL_POLL_FD
Definition: lws-callbacks.h:605
@ LWS_CALLBACK_CGI
Definition: lws-callbacks.h:641
@ LWS_CALLBACK_RAW_PROXY_CLI_CLOSE
Definition: lws-callbacks.h:699
@ LWS_CALLBACK_ESTABLISHED
Definition: lws-callbacks.h:386
@ LWS_CALLBACK_RECEIVE_PONG
Definition: lws-callbacks.h:405
@ LWS_CALLBACK_HTTP_BODY_COMPLETION
Definition: lws-callbacks.h:229
@ LWS_CALLBACK_RAW_PROXY_SRV_CLOSE
Definition: lws-callbacks.h:702
@ LWS_CALLBACK_CGI_PROCESS_ATTACH
Definition: lws-callbacks.h:665
@ LWS_CALLBACK_HTTP_CONFIRM_UPGRADE
Definition: lws-callbacks.h:314
@ LWS_CALLBACK_CONFIRM_EXTENSION_OKAY
Definition: lws-callbacks.h:431
@ LWS_CALLBACK_TIMER
Definition: lws-callbacks.h:773
@ LWS_CALLBACK_HTTP_DROP_PROTOCOL
Definition: lws-callbacks.h:308
@ LWS_CALLBACK_VHOST_CERT_AGING
Definition: lws-callbacks.h:797
@ LWS_CALLBACK_RAW_ADOPT_FILE
Definition: lws-callbacks.h:751
@ LWS_CALLBACK_CLOSED
Definition: lws-callbacks.h:394
@ LWS_CALLBACK_RECEIVE
Definition: lws-callbacks.h:400
@ LWS_CALLBACK_SSL_INFO
Definition: lws-callbacks.h:156
@ LWS_CALLBACK_VHOST_CERT_UPDATE
Definition: lws-callbacks.h:810
@ LWS_CALLBACK_PROTOCOL_DESTROY
Definition: lws-callbacks.h:96
@ LWS_CALLBACK_RAW_PROXY_SRV_WRITEABLE
Definition: lws-callbacks.h:708
@ LWS_CALLBACK_CGI_STDIN_DATA
Definition: lws-callbacks.h:654
@ LWS_CALLBACK_RAW_PROXY_CLI_RX
Definition: lws-callbacks.h:693
@ LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP
Definition: lws-callbacks.h:332
@ LWS_CALLBACK_RAW_RX
Definition: lws-callbacks.h:729
@ LWS_CALLBACK_FILTER_HTTP_CONNECTION
Definition: lws-callbacks.h:241
@ LWS_CALLBACK_CLIENT_ESTABLISHED
Definition: lws-callbacks.h:502
@ LWS_CALLBACK_SERVER_WRITEABLE
Definition: lws-callbacks.h:397
@ LWS_CALLBACK_CLOSED_HTTP
Definition: lws-callbacks.h:238
@ LWS_CALLBACK_LOCK_POLL
Definition: lws-callbacks.h:621
@ LWS_CALLBACK_PROCESS_HTML
Definition: lws-callbacks.h:288
@ LWS_CALLBACK_RAW_PROXY_SRV_RX
Definition: lws-callbacks.h:696
@ LWS_CALLBACK_CLIENT_WRITEABLE
Definition: lws-callbacks.h:535
@ LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER
Definition: lws-callbacks.h:509
@ LWS_CALLBACK_USER
Definition: lws-callbacks.h:819
@ LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY
Definition: lws-callbacks.h:147
@ LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH
Definition: lws-callbacks.h:494
@ LWS_CALLBACK_HTTP_PMO
Definition: lws-callbacks.h:683
@ LWS_CALLBACK_HTTP_FILE_COMPLETION
Definition: lws-callbacks.h:232
@ LWS_CALLBACK_CHILD_CLOSING
Definition: lws-callbacks.h:788
@ LWS_CALLBACK_CHANGE_MODE_POLL_FD
Definition: lws-callbacks.h:612
@ LWS_CALLBACK_RAW_CONNECTED
Definition: lws-callbacks.h:741
@ LWS_CALLBACK_RECEIVE_CLIENT_HTTP
Definition: lws-callbacks.h:346
@ LWS_CALLBACK_ADD_POLL_FD
Definition: lws-callbacks.h:588
@ LWS_CALLBACK_EVENT_WAIT_CANCELLED
Definition: lws-callbacks.h:781
@ LWS_CALLBACK_ADD_HEADERS
Definition: lws-callbacks.h:254
@ LWS_CALLBACK_CLIENT_RECEIVE
Definition: lws-callbacks.h:528
@ LWS_CALLBACK_WS_EXT_DEFAULTS
Definition: lws-callbacks.h:554
@ LWS_CALLBACK_SESSION_INFO
Definition: lws-callbacks.h:673
@ LWS_CALLBACK_WS_PEER_INITIATED_CLOSE
Definition: lws-callbacks.h:408
@ LWS_CALLBACK_CLOSED_CLIENT_HTTP
Definition: lws-callbacks.h:336
@ LWS_CALLBACK_HTTP_BODY
Definition: lws-callbacks.h:225
@ LWS_CALLBACK_RAW_WRITEABLE_FILE
Definition: lws-callbacks.h:760
@ LWS_CALLBACK_RAW_RX_FILE
Definition: lws-callbacks.h:754
@ LWS_CALLBACK_CGI_TERMINATED
Definition: lws-callbacks.h:647
@ LWS_CALLBACK_WSI_DESTROY
Definition: lws-callbacks.h:105
@ LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION
Definition: lws-callbacks.h:418
@ LWS_CALLBACK_RAW_WRITEABLE
Definition: lws-callbacks.h:735
@ LWS_CALLBACK_RAW_PROXY_CLI_ADOPT
Definition: lws-callbacks.h:711
@ LWS_CALLBACK_RAW_CLOSE_FILE
Definition: lws-callbacks.h:763
@ LWS_CALLBACK_PROTOCOL_INIT
Definition: lws-callbacks.h:92
@ LWS_CALLBACK_CGI_STDIN_COMPLETED
Definition: lws-callbacks.h:660
@ LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ
Definition: lws-callbacks.h:339
@ LWS_CALLBACK_CLIENT_CONNECTION_ERROR
Definition: lws-callbacks.h:449
@ LWS_CALLBACK_RAW_PROXY_CLI_WRITEABLE
Definition: lws-callbacks.h:705
@ LWS_CALLBACK_GET_THREAD_ID
Definition: lws-callbacks.h:582
@ LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS
Definition: lws-callbacks.h:113
@ LWS_CALLBACK_RAW_CLOSE
Definition: lws-callbacks.h:732
@ LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION
Definition: lws-callbacks.h:128
@ LWS_CALLBACK_HTTP
Definition: lws-callbacks.h:210
@ LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED
Definition: lws-callbacks.h:202
@ LWS_CALLBACK_CLIENT_HTTP_WRITEABLE
Definition: lws-callbacks.h:369
@ LWS_CALLBACK_GS_EVENT
Definition: lws-callbacks.h:679
@ LWS_CALLBACK_CHECK_ACCESS_RIGHTS
Definition: lws-callbacks.h:281
@ LWS_CALLBACK_RAW_PROXY_SRV_ADOPT
Definition: lws-callbacks.h:715
@ LWS_CALLBACK_WSI_CREATE
Definition: lws-callbacks.h:102
@ LWS_CALLBACK_HTTP_WRITEABLE
Definition: lws-callbacks.h:235
Definition: lws-callbacks.h:76
Definition: lws-callbacks.h:37