aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/http_static
AgeCommit message (Collapse)AuthorFilesLines
2025-01-21http: target parsing improvementMatus Fabian1-6/+0
Make it http version neutral, since h2 and h3 use 3 pseudo-headers. Added scheme, target_authority_offset and target_authority_len to http_msg_data_t, target_form removed. Http transport now validate if correct form of request target is received, so now we are also able to receive requests with absolute-form target in server apps like http_static. As bonus, unformat is not longer used to parse IP addresses. Type: improvement Change-Id: I369f77e2639c43cc1244d91f883c526eb88af63e Signed-off-by: Matus Fabian <matfabia@cisco.com>
2025-01-14http_static: read body only for POST requestsSemir Sionek1-2/+2
Type: improvement Change-Id: Id863f59d04d8e6f22c886e079367d06908b8b24b Signed-off-by: Semir Sionek <ssionek@cisco.com>
2025-01-09hsa: proxying UDP in HTTP/1.1Matus Fabian1-2/+3
Type: feature Change-Id: Ic0ff9b9bfbad9fbc602fbcec0d8906cd21d63a2c Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-14http: state machine improvementMatus Fabian1-0/+3
Split in two, one for rx and second for tx, which is more suitable for http tunnels. Updated state names too, some of them were bit confusing. Type: improvement Change-Id: I2310deaa49196819f9d8147a5d9af188465dbd65 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-11-13http_static: api add keepalive-timeoutMatus Fabian5-23/+38
Type: improvement Change-Id: Ia1e0dcf562fd1538794542207ac2cad97d168c6c Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-28http_static: always free ext_cfgMatus Fabian1-2/+1
Type: fix Change-Id: I655e93c0f1e1de65d6d3c3e0976e25a7ce11aafc Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-25http: pass timeout using extended configMatus Fabian2-3/+16
App can now pass http connection timeout using extended configuration, ext cfg type TRANSPORT_ENDPT_EXT_CFG_HTTP, value (in seconds) set in ext cfg member opaque. It is optional, default value is 60 seconds. Type: improvement Change-Id: Ibeff4bbd3153421be350ff564ec3c8e52e5b9639 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-25session: support of multiple extended configsMatus Fabian1-4/+5
This allow configuration for each transport protocol when combined, e.g. HTTPS=HTTP+TLS. Extended config of session endpoint config is now chunk of memory, which allow seamless integration with VCL, and internal representation is hidden behind APIs, which is better for future improvements. By default chunk is allocated to 512B if the app doesn't do so before. Type: improvement Change-Id: I323f19ec255eba31c58c06b8b83af45aab7f5bb1 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-10-07http_static: fix first and add segment sizeFlorin Coras1-1/+1
Allow segments bigger than 4GB Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I510f7cff75883fdbd6c0c22efff9a14e26c755f4
2024-09-23http_static: fix memory hss_session using after be freedXiaomingJiang1-2/+2
Type: fix Change-Id: Ic3d3de4198310361de876a8224e4f7cd0b48b698 Signed-off-by: XiaomingJiang <jiangxiaoming@outlook.com>
2024-09-13http: update body_len from u32 to u64Aritra Basu2-6/+14
Type: improvement Change-Id: I381541fb180d6d6ba42e4d231d22a73c5d33ef65 Signed-off-by: Aritra Basu <aritrbas@cisco.com>
2024-09-06session: add Source Deny ListSteven Luong2-2/+8
With this feature, session enable is now modified to have 3 modes of operation session enable -- only enable session session enable rt-backend sdl -- enable session with sdl session enable rt-backend rule-table -- enable session with rule-table session rule tables are now created on demand, upon adding first rule to the rule table. refactor session table to remove depenency from sesssion rules table. Now session rules table APIs take srtg_handle and transport proto instead of srt pointer. Type: feature Change-Id: Idde6a9b2f46b29bb931f9039636562575572aa14 Signed-off-by: Steven Luong <sluong@cisco.com>
2024-08-22http_static: added last-modified headerAdrian Villin3-11/+30
Type: improvement Change-Id: I492df92ef25f9c0cd57fc8980500b58bebaa94c6 Signed-off-by: Adrian Villin <avillin@cisco.com>
2024-08-20http_static: make max-age configurableAdrian Villin5-12/+168
Type: improvement Change-Id: I629add6e3f4219d56610c3785013f69dbe847844 Signed-off-by: Adrian Villin <avillin@cisco.com>
2024-07-29http: client code improvementMatus Fabian1-2/+2
Client app can sends request target, custom header and body to HTTP layer. In response it receives all bytes as received from transport, aditionally we provide offset and length of headers and body. In addtion client app is now able to receive response with all status codes and Host header field is set in request at protocol layer. Type: improvement Change-Id: I8c8e2c8f99cdf500126b7c2c722aebc254aa0d9f Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-07-24http_static: fix coverity warningMatus Fabian1-1/+1
Type: fix Change-Id: Ie4af8ec0c6089b5719899f3d0b670f8a2de7f8a2 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-07-23http: return more than data from server appMatus Fabian4-26/+97
Server app could return headers in front of body/data buffer. Offers apis for building and serialization of headers section. HTTP layer now only add Date, Server and Content-Lengths headers, rest is up to app. Well known header names are predefined. Type: improvement Change-Id: If778bdfc9acf6b0d11a48f0a745a3a56c96c2436 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-06-20http_static: fix reply data leakFlorin Coras1-0/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ica78044b044a78714dd9947620250f13c63320fb
2024-06-13http: return more than url to server appMatus Fabian3-76/+103
Provide all bytes as received from transport as data in the http message to server. Additionally provide offset and length of target path, target query, headers and body. Offers apis for parsing of headers, percent decoding, target path/query syntax verification. Type: improvement Change-Id: Idbe6f13afa378650cc5212ea7d3f9319183ebbbe Signed-off-by: Matus Fabian <matfabia@cisco.com>
2024-05-28http_static: sanitize path before file readMatus Fabian1-4/+7
Romove dot segments from requested target path before start reading file in file handler to prevent path traversal. Type: fix Change-Id: I3bdd3e9d7fffd33c9c8c608169c1dc73423b7078 Signed-off-by: Matus Fabian <matfabia@cisco.com>
2022-12-09http_static: clean up http redirect generationDave Barach1-1/+56
Don't redirect to "favicon.ico/index.html" if you can't find "favicon.ico". If asked to serve up a nonexistent path, see if the path ends with a known suffix: ".jpg, .html, .ico" etc. If it does, flunk the request on the spot: "Error 404 Not Found." Do not issue a redirect. This change will not break the obvious corner case: if the browser asks for "its_a_dir.mp3/index.html" - and the file exists - the server will produce it. Type: improvement Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I91aad90be05b98ba2b40e240d13d71816aed4526
2022-12-08http_static: derive mime type from file extensionsDave Barach2-1/+51
Type: improvement Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I0f087477e257f5119d7d6182d19f8796773a1f19
2022-12-07http_static: misc bug fixesDave Barach2-1/+3
The request vector generated by hss_ts_rx_callback() must be NULL terminated. The hss_main_t use_ptr_thresh member must be a u64 since unformat_memory_size() expects it. Otherwise, the adjacent u8 enable_url_handlers may have an accident. Type: fix Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I2cc08e3cbd31b225fb03799283c055515add13bf
2022-12-06http_static: fix http(s) redirectsDave Barach2-3/+3
Add an http redirect template to generate correct-looking "301 Moved Permanently" replies. Supply a default value of 1<<31 for the use_ptr_thresh config parameter. Expose hss_session_get() so friend plugins which register GET / POST handlers with the http_static server can add data to the session fifos. Type: fix Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: Ie1452eaf61c6f67311fbab092bc1fe03050bf94f
2022-09-26api: replace print functions wth formatDamjan Marion1-1/+0
Type: improvement Change-Id: I7f7050c19453a69a7fb6c5e62f8f57db847d9144 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-08-12http_static: validate session before sendingFlorin Coras1-0/+2
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I18b9d0d67f5fe4c1714427259df29026153d8dd1
2022-04-04vppinfra: make _vec_len() read-onlyDamjan Marion2-2/+2
Use of _vec_len() to set vector length breaks address sanitizer. Users should use vec_set_len(), vec_inc_len(), vec_dec_len () instead. Type: improvement Change-Id: I441ae948771eb21c23a61f3ff9163bdad74a2cb8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2022-02-23http hsa: support multiple listeners for http tpsFlorin Coras1-0/+1
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ie89326ed4e599231fc20de67c5dadbb428568bec
2022-02-13hsa: add http throughput test server appFlorin Coras1-1/+1
Can be used for throughput testing over http. For instance, start server: http tps #implicitly listens on port 80 Then, to test throughput with curl: curl <server_ip>/test_file_10g curl <server_ip>/test_file_123m Similarly, for https: http tps uri tls://<server_ip>/443 curl -k <server_ip>/test_file_1g Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I30ab7f0d94a7357b3f04546e4a3d3c410a733908
2022-02-08http_static: cleanup file handler and cacheFlorin Coras6-493/+674
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I7aff3a02315f9f92039dd2e3af1cbd8312aec662
2022-02-06http_static: fix coverity warningFlorin Coras1-2/+4
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6d5527c49e9085f35be988549c2f1460be7fd4f0
2022-02-05http_static: handle empty requestsFlorin Coras1-3/+12
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ic002444c51b1ecbbf18a49863cf01888d28c4632
2022-02-02prom: basic builtin prometheus stats exporterFlorin Coras1-0/+4
This is a vpp builtin alternative, not a replacement, for the existing vpp_prometheus_exporter. The plugin works by registering with http_static as a url handler for stats.prom and handles requests by scraping the stats segment in the main thread. It will therefore consume vpp process cpu cycles. By default the plugin is disabled. To enable, first start the http static server an then use "prom enable" cli. Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: If6888e965d1b2361f6a5546586068213d37079d1
2022-02-02http_static: add support for async tx from handlersFlorin Coras4-52/+132
URL handlers can send data asynchronously if needed. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I89eae690cb26543479c7659b5dc46604cbb22eba
2022-01-30http_static: incorporate builtinurl pluginFlorin Coras6-51/+290
External handlers can still be registered via hss_register_url_handler but url handlers must be enabled when server is created. builtinurl plugin to be removed in a future patch Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I94e103d908b9e118c7927b997a21ce3f67809889
2022-01-27http_static: code cleanupFlorin Coras3-334/+211
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ic8838c8ef558d671740094a98b5a627a18c8c808
2022-01-26http_static: refactor to use http transportFlorin Coras3-772/+252
Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I66396a1879eb3c87ef64783eab82a22896413cd0
2021-12-30svm: merge want deq and leq threshold notificationsFlorin Coras1-8/+5
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I2775af35386a4e52ba82991c68bce6c56f13410f
2021-12-29http_static: Fix timeout on large filesMichal Kalderon1-3/+19
When trying to read files that are larger than the fifo a timeout was reached on client side leading to an abort of the request and a retry (sending another GET command). The svm fifo notification request was set to notify when the fifo is no longer full, this lead to an inefficient loop of sending small amounts of data each time with a large overhead of context switch and waiting for the next notification, eventually leading to a timeout. Modifying the trigger on the svm-fifo to be notified on a preset threshold value enabled sending larger amounts of data between context switches and sending large files more efficiently. This solved the timeout issue. In addition, cap the max write from application to 4MB to avoid running into a case of trying to allocate chunks that are too large. Reproduce: Server: http static server www-root /var/www/data uri tcp://0.0.0.0/80 cache-size 5m fifo-size 300 Client: wget http://11.0.0.2/file_of_size_32M Type: fix Change-Id: Idfceedffd935da9486cde820e9dca5dad69d9ca5 Signed-off-by: Yuval Caduri <cyuval@marvell.com> Signed-off-by: Michal Kalderon <mkalderon@marvell.com>
2021-05-07session: connects seg manager is always firstFlorin Coras1-2/+2
By convention, connects segment manager will be first. Therefore it will be the one with the first segment wherein lies the app's message queue. Saves us the trouble of allocating it on first connect, if app started by listening, and we no longer need to track if it's assignable to a listener or if it can be removed. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Iba9a8ffaab618eeb41ec2144dcfee62d006dc7a2
2021-04-22vcl session: refactor passing of crypto contextFlorin Coras1-2/+18
Pass tls/quic crypto context using extended config instead of bloating conect/listen messages. Type: refactor Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I0bc637ae310e6c31ef1e16847501dcb81453ee94
2021-01-07vcl session: switch to generic cert key apisFlorin Coras2-16/+24
Remove the deprecated tls apis. Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia1e12bd813671146f0aca22e83d04c23ac13e595
2020-12-14misc: move to new pool_foreach macrosDamjan Marion1-3/+3
Type: refactor Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-19misc: don't export symbols from pluginsDamjan Marion1-1/+1
Type: improvement Change-Id: I2a176fe2871d2e54b010bffc4f1f7a3616f0c455 Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-07-28http_static: fix session cleanupFlorin Coras1-41/+30
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ibb380eecca76ed9c00ed14c167dfcf576f943db0
2020-06-16misc: fix sonarclound warningsDave Barach1-1/+1
Type: fix Ticket: VPP-1888 Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I9c2fb926a5e010658088a74051c8c3462ff61734
2020-05-06docs: clean up make docs jobPaul Vinciguerra2-5/+8
Type: docs Change-Id: I9b5e5137eb4c1e89f6e8d7a278cd11a0fd496471 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2020-04-03session: improve error reportingFlorin Coras1-1/+2
Type: improvement Change-Id: I9dd850a1ce85b0adb5136233f176117e0ee38817 Signed-off-by: Florin Coras <fcoras@cisco.com>
2020-03-12vppinfra: refactor clib_timebase_tDave Barach1-1/+2
Add a clib_time_t * argument to clib_timebase_init(...), to encourage client code to share the vlib_main_t's clib_time_t object. Display the current day / date in GMT via the "show time" debug CLI. Fix the test framework so it processes the new "show time" output format. Type: refactor Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: I5e52d57eb164b7cdb6355362d520df6928491711
2020-02-26api: improve api string safetyJakub Grajciar1-5/+2
- Remove vl_api_from_api_string to prevent use of not nul-terminated strings. - Rename vl_api_from_api_to_vec -> vl_api_from_api_to_new_vec to imply a new vector is created. NOT nul terminated. - Add vl_api_from_api_to_new_c_string. Returns nul terminated string in a new vector. - Add vl_api_c_string_to_api_string. Convert nul terminated string to vl_api_string_t - Add vl_api_vec_to_api_string. Convert NON nul terminated vector to vl_api_string_t Type: fix Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com> Change-Id: Iadd59b612c0d960a34ad0dd07a9d17f56435c6ea Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>