Commit Graph
17 Commits
Author SHA1 Message Date
aykhans cd0fa453c2 fix(script): bound how deep json.encode walks a Lua table 2026-10-01 22:13:29 +04:00
aykhans 9e773a4e6c fix(script): reject a non-object headers, params or cookies in JavaScript 2026-09-30 21:18:50 +04:00
aykhans bcf2ea3446 fix(script): reject async/generator JS transforms and catch throwing getters 2026-09-30 19:53:37 +04:00
aykhans 17dfa16051 feat(script): add res.bytes() so JavaScript can read a binary body 2026-09-29 23:22:51 +04:00
aykhans 9c7b7c26a0 refactor(script): drop the per-call maxBodySize and its client cache 2026-09-29 10:58:25 +04:00
aykhans ef5907dc0c fix: cap body limits at 1GiB and key script clients by the exact size 2026-09-29 00:55:04 +04:00
aykhans 1956eb1c44 fix(script): enforce script body limits without streaming
Streaming accepted a chunked body cut at a chunk boundary as complete,
so the limit now comes from the client that reads the body, picked per
requested size. Script requests keep their own default, maxBodySize
accepts sizes like 10MiB, and files sarin downloads for itself are
capped at 64MiB.
2026-09-29 00:41:48 +04:00
aykhans f1d91e3d77 feat: limit response body sizes
fasthttp allocates the body from the declared Content-Length before
reading it, so a server could exhaust memory by declaring a size it
never sends. The new max response body config bounds every response,
defaults to 10MiB and accepts sizes like 10MiB or 2MB. Scripts get the
same as a maxBodySize option on http().
2026-09-28 22:49:39 +04:00
aykhans c32949c8e0 fix(script): convert non-string header, param and cookie values to text 2026-09-26 01:17:49 +04:00
aykhans 5d91141f80 fix(script): stringify thrown JavaScript values through Runtime.Try 2026-09-24 22:34:59 +04:00
aykhans 878ca6dfbd fix(script): bound maxRedirects to 100 and reject out of range values 2026-09-24 19:08:58 +04:00
aykhans 529420ee5a feat(script): replace followRedirects with maxRedirects http option 2026-09-20 23:18:21 +04:00
aykhans 8b437b487c feat(script): add http() and json to Lua and JS scripts 2026-09-20 23:02:51 +04:00
aykhans c1584eb47b Remove unused functions and unexport internal sentinel error 2026-02-09 00:06:01 +04:00
aykhans 6a713ef241 Build request data through RequestData struct instead of fasthttp directly
Refactor request generators to populate a script.RequestData intermediate struct, then apply it to fasthttp.Request in one step. This eliminates the round-trip conversion (fasthttp → RequestData → fasthttp) when scripts are enabled. Remove the URL field from RequestData and the now-unused fasthttp conversion functions from chain.go.
2026-02-08 03:52:39 +04:00
aykhans 6dafc082ed Introduce structured error types and bump Go/linter versions
Replace ad-hoc fmt.Errorf/errors.New calls with typed error structs across config, sarin, and script packages to enable type-based error handling. Add script-specific error handlers in CLI entry point. Fix variable shadowing bug in Worker for scriptTransformer. Bump Go to 1.25.7 and golangci-lint to v2.8.0.
2026-02-08 02:54:54 +04:00
aykhans 533ced4b54 add scripting js/lua 2026-01-28 14:21:08 +04:00