26 #define LWS_RECOMMENDED_MIN_HEADER_SPACE 2048
52 LWS_VISIBLE LWS_EXTERN
const char *
53 lws_get_mimetype(
const char *file,
const struct lws_http_mount *m);
73 LWS_VISIBLE LWS_EXTERN
int
74 lws_serve_http_file(
struct lws *wsi,
const char *file,
const char *content_type,
75 const char *other_headers,
int other_headers_len);
77 LWS_VISIBLE LWS_EXTERN
int
78 lws_serve_http_file_fragment(
struct lws *wsi);
83 HTTP_STATUS_CONTINUE = 100,
86 HTTP_STATUS_NO_CONTENT = 204,
87 HTTP_STATUS_PARTIAL_CONTENT = 206,
89 HTTP_STATUS_MOVED_PERMANENTLY = 301,
90 HTTP_STATUS_FOUND = 302,
91 HTTP_STATUS_SEE_OTHER = 303,
92 HTTP_STATUS_NOT_MODIFIED = 304,
94 HTTP_STATUS_BAD_REQUEST = 400,
95 HTTP_STATUS_UNAUTHORIZED,
96 HTTP_STATUS_PAYMENT_REQUIRED,
97 HTTP_STATUS_FORBIDDEN,
98 HTTP_STATUS_NOT_FOUND,
99 HTTP_STATUS_METHOD_NOT_ALLOWED,
100 HTTP_STATUS_NOT_ACCEPTABLE,
101 HTTP_STATUS_PROXY_AUTH_REQUIRED,
102 HTTP_STATUS_REQUEST_TIMEOUT,
103 HTTP_STATUS_CONFLICT,
105 HTTP_STATUS_LENGTH_REQUIRED,
106 HTTP_STATUS_PRECONDITION_FAILED,
107 HTTP_STATUS_REQ_ENTITY_TOO_LARGE,
108 HTTP_STATUS_REQ_URI_TOO_LONG,
109 HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
110 HTTP_STATUS_REQ_RANGE_NOT_SATISFIABLE,
111 HTTP_STATUS_EXPECTATION_FAILED,
113 HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
114 HTTP_STATUS_NOT_IMPLEMENTED,
115 HTTP_STATUS_BAD_GATEWAY,
116 HTTP_STATUS_SERVICE_UNAVAILABLE,
117 HTTP_STATUS_GATEWAY_TIMEOUT,
118 HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
140 typedef const char *(*lws_process_html_state_cb)(
void *data,
int index);
158 LWS_VISIBLE LWS_EXTERN
int
214 enum lws_token_indexes {
215 WSI_TOKEN_GET_URI = 0,
216 WSI_TOKEN_POST_URI = 1,
217 WSI_TOKEN_OPTIONS_URI = 2,
219 WSI_TOKEN_CONNECTION = 4,
220 WSI_TOKEN_UPGRADE = 5,
221 WSI_TOKEN_ORIGIN = 6,
223 WSI_TOKEN_CHALLENGE = 8,
224 WSI_TOKEN_EXTENSIONS = 9,
227 WSI_TOKEN_PROTOCOL = 12,
228 WSI_TOKEN_ACCEPT = 13,
229 WSI_TOKEN_NONCE = 14,
231 WSI_TOKEN_HTTP2_SETTINGS = 16,
232 WSI_TOKEN_HTTP_ACCEPT = 17,
233 WSI_TOKEN_HTTP_AC_REQUEST_HEADERS = 18,
234 WSI_TOKEN_HTTP_IF_MODIFIED_SINCE = 19,
235 WSI_TOKEN_HTTP_IF_NONE_MATCH = 20,
236 WSI_TOKEN_HTTP_ACCEPT_ENCODING = 21,
237 WSI_TOKEN_HTTP_ACCEPT_LANGUAGE = 22,
238 WSI_TOKEN_HTTP_PRAGMA = 23,
239 WSI_TOKEN_HTTP_CACHE_CONTROL = 24,
240 WSI_TOKEN_HTTP_AUTHORIZATION = 25,
241 WSI_TOKEN_HTTP_COOKIE = 26,
242 WSI_TOKEN_HTTP_CONTENT_LENGTH = 27,
243 WSI_TOKEN_HTTP_CONTENT_TYPE = 28,
244 WSI_TOKEN_HTTP_DATE = 29,
245 WSI_TOKEN_HTTP_RANGE = 30,
246 WSI_TOKEN_HTTP_REFERER = 31,
248 WSI_TOKEN_VERSION = 33,
249 WSI_TOKEN_SWORIGIN = 34,
251 WSI_TOKEN_HTTP_COLON_AUTHORITY = 35,
252 WSI_TOKEN_HTTP_COLON_METHOD = 36,
253 WSI_TOKEN_HTTP_COLON_PATH = 37,
254 WSI_TOKEN_HTTP_COLON_SCHEME = 38,
255 WSI_TOKEN_HTTP_COLON_STATUS = 39,
257 WSI_TOKEN_HTTP_ACCEPT_CHARSET = 40,
258 WSI_TOKEN_HTTP_ACCEPT_RANGES = 41,
259 WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN = 42,
260 WSI_TOKEN_HTTP_AGE = 43,
261 WSI_TOKEN_HTTP_ALLOW = 44,
262 WSI_TOKEN_HTTP_CONTENT_DISPOSITION = 45,
263 WSI_TOKEN_HTTP_CONTENT_ENCODING = 46,
264 WSI_TOKEN_HTTP_CONTENT_LANGUAGE = 47,
265 WSI_TOKEN_HTTP_CONTENT_LOCATION = 48,
266 WSI_TOKEN_HTTP_CONTENT_RANGE = 49,
267 WSI_TOKEN_HTTP_ETAG = 50,
268 WSI_TOKEN_HTTP_EXPECT = 51,
269 WSI_TOKEN_HTTP_EXPIRES = 52,
270 WSI_TOKEN_HTTP_FROM = 53,
271 WSI_TOKEN_HTTP_IF_MATCH = 54,
272 WSI_TOKEN_HTTP_IF_RANGE = 55,
273 WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE = 56,
274 WSI_TOKEN_HTTP_LAST_MODIFIED = 57,
275 WSI_TOKEN_HTTP_LINK = 58,
276 WSI_TOKEN_HTTP_LOCATION = 59,
277 WSI_TOKEN_HTTP_MAX_FORWARDS = 60,
278 WSI_TOKEN_HTTP_PROXY_AUTHENTICATE = 61,
279 WSI_TOKEN_HTTP_PROXY_AUTHORIZATION = 62,
280 WSI_TOKEN_HTTP_REFRESH = 63,
281 WSI_TOKEN_HTTP_RETRY_AFTER = 64,
282 WSI_TOKEN_HTTP_SERVER = 65,
283 WSI_TOKEN_HTTP_SET_COOKIE = 66,
284 WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY = 67,
285 WSI_TOKEN_HTTP_TRANSFER_ENCODING = 68,
286 WSI_TOKEN_HTTP_USER_AGENT = 69,
287 WSI_TOKEN_HTTP_VARY = 70,
288 WSI_TOKEN_HTTP_VIA = 71,
289 WSI_TOKEN_HTTP_WWW_AUTHENTICATE = 72,
291 WSI_TOKEN_PATCH_URI = 73,
292 WSI_TOKEN_PUT_URI = 74,
293 WSI_TOKEN_DELETE_URI = 75,
295 WSI_TOKEN_HTTP_URI_ARGS = 76,
296 WSI_TOKEN_PROXY = 77,
297 WSI_TOKEN_HTTP_X_REAL_IP = 78,
298 WSI_TOKEN_HTTP1_0 = 79,
299 WSI_TOKEN_X_FORWARDED_FOR = 80,
300 WSI_TOKEN_CONNECT = 81,
301 WSI_TOKEN_HEAD_URI = 82,
303 WSI_TOKEN_REPLAY_NONCE = 84,
304 WSI_TOKEN_COLON_PROTOCOL = 85,
305 WSI_TOKEN_X_AUTH_TOKEN = 86,
312 _WSI_TOKEN_CLIENT_SENT_PROTOCOLS,
313 _WSI_TOKEN_CLIENT_PEER_ADDRESS,
314 _WSI_TOKEN_CLIENT_URI,
315 _WSI_TOKEN_CLIENT_HOST,
316 _WSI_TOKEN_CLIENT_ORIGIN,
317 _WSI_TOKEN_CLIENT_METHOD,
318 _WSI_TOKEN_CLIENT_IFACE,
319 _WSI_TOKEN_CLIENT_ALPN,
327 WSI_TOKEN_SKIPPING_SAW_CR,
328 WSI_PARSING_COMPLETE,
329 WSI_INIT_TOKEN_MUXURL,
341 LWS_VISIBLE LWS_EXTERN
const unsigned char *
352 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
364 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
382 LWS_VISIBLE LWS_EXTERN
int
383 lws_hdr_copy(
struct lws *wsi,
char *dest,
int len,
enum lws_token_indexes h);
402 LWS_VISIBLE LWS_EXTERN
int
404 enum lws_token_indexes h,
int frag_idx);
416 LWS_VISIBLE LWS_EXTERN
const char *
436 #define LWSAHH_CODE_MASK ((1 << 16) - 1)
437 #define LWSAHH_FLAG_NO_SERVER_NAME (1 << 30)
453 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
455 unsigned int code,
unsigned char **p,
469 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
471 const unsigned char *value,
int length,
472 unsigned char **p,
unsigned char *end);
486 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
488 const unsigned char *value,
int length,
489 unsigned char **p,
unsigned char *end);
500 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
502 lws_filepos_t content_length,
503 unsigned char **p,
unsigned char *end);
513 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
528 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
530 unsigned char **p,
unsigned char *end);
532 #define LWS_ILLEGAL_HTTP_CONTENT_LEN ((lws_filepos_t)-1ll)
560 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
562 const char *content_type, lws_filepos_t content_len,
563 unsigned char **p,
unsigned char *end);
588 LWS_VISIBLE LWS_EXTERN
const char *
589 lws_urlencode(
char *escaped,
const char *
string,
int len);
612 LWS_VISIBLE LWS_EXTERN
int
613 lws_urldecode(
char *
string,
const char *escaped,
int len);
625 LWS_VISIBLE LWS_EXTERN
int
626 lws_return_http_status(
struct lws *wsi,
unsigned int code,
627 const char *html_body);
641 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
642 lws_http_redirect(
struct lws *wsi,
int code,
const unsigned char *loc,
int len,
643 unsigned char **p,
unsigned char *end);
653 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
654 lws_http_transaction_completed(
struct lws *wsi);
682 lws_http_compression_apply(
struct lws *wsi,
const char *name,
683 unsigned char **p,
unsigned char *end,
char decomp);