diff --git a/AGENTS.md b/AGENTS.md index 9ec47b9..9b30f7b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # RustProxy source and documentation maintenance -Current source version: **0.36.3**. The Cargo package and binary are named `rust-proxy`. +Current source version: **0.36.4**. The Cargo package and binary are named `rust-proxy`. Before editing, read [README.md](README.md), the relevant [documentation guide](docs/README.md) and the actual code and tests. Historical release experiments are not current specifications. Use the bundled `src/admin/openapi.json` for API routes and payloads; the source implementation is authoritative for runtime behavior. diff --git a/CHANGELOG.md b/CHANGELOG.md index 9036bb1..ec2f22f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ Release history focused on **features, settings, default behavior, compatibility and fixes**. Changes to internal code structure and preliminary performance experiments are intentionally omitted. Historical descriptions reflect their respective releases; consult the current documentation for the settings available in the latest release. +## 0.36.4 — cache readability and editor UX polish + +- **Cache → Domains and effectiveness:** decision counters are one compact line (`name count`, top three, the rest in a `+N` tooltip) instead of a wall of chips; the rest of the table keeps its 0.36.3 look. +- **Cache → Static response transformation:** the "Transformations by type" and "Vhost effectiveness" tables use the same presentation as Domains and effectiveness (right-aligned tabular numbers, emphasised vhost name, non-zero errors in red, reduction meter) and the skip reasons are compact `name count` lines. +- **Cache → Stored objects:** the tier is a badge in the same style as the other badges (follows the corner-radius setting), numeric columns are right-aligned, long targets and cache keys are truncated (full text on hover, click still copies), rows highlight on hover, and the Previous / range / Next pager is a single segmented control. +- **Docker vhosts:** the per-service link is now **Open** (same wording as in Vhosts); the expandable per-application forms and their protocol, ACL, timeout and health sections have a chevron, keyboard focus outline and a framed panel when open. +- **Automatic IDs:** when creating a vhost, web service, stream, redirect, 404 host or ACL profile, the ID is generated from the name (for vhosts, from the first host name) as a unique slug; the ID field comes after the name (after the hosts for vhosts) and is shown as a plain value with a **Change** link — the input only appears when you ask for it (or when validation needs it) — `example.com` becomes `example-com`, Polish and other accented letters are folded to ASCII, and `-2`, `-3`… is appended when the ID is taken. Typing in the ID field switches to a manual ID; a "Generate automatically" button (or clearing the field) restores it. Existing IDs are never changed. +- **Vhost, Web service, Stream, Redirect and ACL forms:** section tabs wrap onto a second line instead of scrolling horizontally, and use a readable 12 px underlined tab style with a clear active state and hover; form action bars are aligned consistently. + ## 0.36.3 — settings, cache and dashboard layout polish - **More chart styles:** Settings → Appearance → Chart style now offers eight additional presets: **Sunset**, **Aurora**, **Ocean**, **Forest**, **Pastel**, **Terminal** (green phosphor, square lines), **Blueprint** (thin technical lines on a blue tint) and **Colorblind safe** (Okabe–Ito palette with dashed grid). The `chart_style` preference accepts the new values (`sunset`, `aurora`, `ocean`, `forest`, `pastel`, `terminal`, `blueprint`, `colorblind`); existing values and the default are unchanged. diff --git a/Cargo.lock b/Cargo.lock index 9c74734..e6d4c28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1943,7 +1943,7 @@ dependencies = [ [[package]] name = "rust-proxy" -version = "0.36.3" +version = "0.36.4" dependencies = [ "anyhow", "arc-swap", diff --git a/Cargo.toml b/Cargo.toml index 22de792..463808d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust-proxy" -version = "0.36.3" +version = "0.36.4" edition = "2021" rust-version = "1.99.1" description = "RustProxy - independent reverse proxy with local administration" diff --git a/SHA256SUMS b/SHA256SUMS index de974ff..a01d867 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -1,572 +1,572 @@ -61bf40a0572889dc8b0dda9eae4e93e44b0de9364b3c798106c85700ffb37c23 .dockerignore -4140a2956264b44f259e6a37fc00ba02097bbe68b09296e04d3d243c1287129b .env.example -e76e688874828e3743d03693b1d2872b9633b4db09909673786caf30f7cfe489 .gitignore -a68d2e8a774443f5ba359ba1362144162573e895829297f55e924dd6debd98a7 AGENTS.md -10eb102a2a819deb15f46dca91fb2c1cc5c6354ad757da34ebcfca8a6f325b10 CHANGELOG.md -5d74dab9713870cfdf2d0220736a47e07f322529cf7321b06599953cbc7930c3 Cargo.lock -ca01b36019447f539eb4f6fa2abd4125db2593c03989f46efacf5f3bc2f05928 Cargo.toml -25c7f3c8162cbf5cc156439774118a81dae9fdc52b611ec7e40c230fc99a772c Dockerfile -0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0 LICENSE -82d1dee2fc68158f0ea73259151461e64c8b18d807cd1fecfb1ed99dc30cf5f4 README.md -da8311e3db945290666324a2f24bf4521b365272d7ac3f862ded1be993eea646 UPDATE_CHECK.toml -c0df6b46bf795d49d00fcd9e2a9247aed0d3a99b6cae1dc5ab6614e8b3d30009 build.rs -95ececaba550a4bcfd6754073877ba0633373b1e1451521b9ac905a51e8ca6eb deploy/README.md -13d514de5042a230cacf8c10abe1ef183c94ac799a89b8e2c111152ac7c69b48 deploy/rustproxy.service -c111f5b20484707b80efb7dd9176acbaa27b63ac78db497261ac234821e1fade dev.sh -d213e774a9cd07bff0c79324722bd05c0aca18cc033d50b2c0558cdb72972bca docker-agent/README.md -e9f18b358a740f1fe16e369ed16ee37581b8ce4c94ddeb34a1a37b89a49b5a06 docker-agent/certificate.go -600d5aebc8557d6987158969d494bade1ba46ccf9d1cd573d357d0106db26b2b docker-agent/cli_test.go -067793eee01fd284da66f79c6f8b6f19f8773e64f84af03168c8f751ff044685 docker-agent/credentials.go -5e4f565c3c9de4dba897af2e801ea646a83395e72eae4717a6d502dff2fcec10 docker-agent/docker-agent.env.example -ae660c2a90f193167b166977277abfc86a25e043ab4def4c273b2a13d5a51b8b docker-agent/docker.go -9e9f3f17f38f9b0730f598f65988ce8ef562d2182ef6778fc7292b990e9cf22f docker-agent/go.mod -7b70bd43a7f39bae8968decf4cd76af80fe0d08bf1bc53b894d89ead80581d56 docker-agent/install.sh -b7d0466f70b541a705d234fc8a88b99b6197fdd5e682d3a288a78c76764358cf docker-agent/main.go -d660f46f7ef8c539dd3f5486a31d5a1254b9737be8a278c7f9352c254558f8ac docker-agent/main_test.go -351bcd0321c823694e12d578f96dc68ceb929979a70146d12af5394f639a486f docker-agent/model.go -e52b31d0abf65ae3034f6cb367cca113633014ce8d1d799ad4dd5624d2c7b8bb docker-agent/network.go -634790f35ff4627df2a78cec2ed371f6e9ec9df00afb386075595fc7f3ed72eb docker-agent/rustproxy-docker-agent.service -5220d669171ec3ad65f50e0bc8de5178dadaa4904def8e1a4f61002aa9e9a55b docker-agent/server.go -60d108fd168064e4d6980ed7499f3219017f9878c743697e77f2efc592e4d629 docs/ACCESS.md -5a8821f28a1f529263db462a0ed1f7c082ad91b5936491806913e5cb5b274fd9 docs/API.md -728b15b9825f547f34c4121219784798dd046fbbdd72ece8906d0cd77e8efc64 docs/BACKUP.md -4fb55a549535f37467f14536cbf0db7be027ca8a019c2919a384af4f23655300 docs/CACHE.md -32599d67a11fd0ebbc612e82b9f602789f4ed4103cda482c6870d8741100c8b4 docs/CERTIFICATES.md -02bb383b5c3bce22616c3cc3db30a9469806dc16decb509973e84c60aa30fc5b docs/CONFIGURATION.md -fec29ce846d6705eb45819d85d382f28e28a146b265feab2e4c7cce2a35e5883 docs/CUSTOM_LOCATIONS.md -9c54b8da03adb1bc1a3db96a72fb99924dca25eed5ac662989aba18ca226d066 docs/DASHBOARD.md -11a08bf2110bbeabc924eb049a30177a216af5607ccdaf8be9178e751f78a2c4 docs/DOCKER_DISCOVERY.md -3e7e63d1d8f5d5019d5e4fdbabfe44fb39c2b75e7141d9c94846d946f34849f2 docs/FEATURES.md -3939c14e83ef6856a421f358a3f7fce3d50ea375bc1b9f0419f27a3eed658f6f docs/INSTALL.md -6e37859bf0dced99d4a7db93790cb38fcd90191932827946d5223eaa4c784fce docs/LOGS.md -0e9ae9509a78d00951d2c7c3f13eaf518d1f3448a29b048f5933e1f5f8440275 docs/MIGRATION.md -0972248b7062b37e61edcc34dab5fe73ee9bb50195a0aa475c72efa0dd311aa9 docs/MONITORING.md -e2e8fc307885bd02c177aea5740b2ac767fc7bdcfe7034dd75b8646f3014b39f docs/PERFORMANCE.md -d5894c07c68ec4230987767198434abee13b0e525842fea21bcbe752fa82742b docs/PHP_FPM.md -954b1602c865e157c867f1c81dca615f2beaa33c34de0b0fa8a6069db2aae7d0 docs/README.md -490a6dbe870f2b1fd4ec7816768dde6c86fa7957fc9de2d2f075e123c9222222 docs/RESPONSE_DELIVERY.md -70e8c8f3352629f5600537058b1997739d9e465747cf3051da8a2cc779c3b728 docs/SCREENSHOTS.md -3a48184b36d225757fc5e2d22c629f89bfe5d4007ff087f0be0ce02a5fb04c28 docs/SECURITY.md -bbef60ff1771da9f48af812987766e1e479408873ae2f079b13f1d5c62ecc6ff docs/STREAMS.md -8cfcda59060106151f13e93ca25c1280b4390433b3fbe2921a6eb3c13bf9766d docs/TRANSPORT.md -be6e8af62a7bf958b94ec15e9e3263263e511d1d33abae4e45d114833fa52b07 docs/TROUBLESHOOTING.md -b4abb86942f665230904fad570c1487bc173aa84633801e2999f2bfa197de4a7 docs/VHOSTS.md -e67928a9d044e71b681c3e52f9dd8b151d6b72f965d16d5da8b0eadde98b70e9 docs/WEB_SERVER.md -3769f97c74b1a4a2f14d82a6f9c30fa3ee48892f423bf82dbd2ec1bd9280e45a docs/images/about.png -a85a7b9d8cac74fb1b231471d313e6587ccfc2e8abd2885a79067704176c724b docs/images/api.png -1ec8e47b6c10a905d8ce63a060be3f51efa3bf2c12529456a8c3d3a0653db95f docs/images/cache.png -02b4ec5bc7e39aeb8f8928a015779b431ee12c4c16733954631de0e6699388f6 docs/images/certificates.png -40d0a4d28c3938612c93425a308c895dea0659f50c661849ec5bde606a141a97 docs/images/documentation.png -6e7f634d6c0cfe8f9fbeba129d745fff00cb8bc6f388de10c4c158ae4a854a17 docs/images/login.png -1f921d98aa16da3a43bdcaa46ade68eb921b1d88d95a8fa87f0b51b6f2a8db9c docs/images/logs.png -74c23173c2299f8ee150fd8fe160ffec0cbfb5f63b89d8debb1789fa4526fb19 docs/images/overview.png -585f7f450bb7dbbf32ce146edbee6555f849903d1abbcf665a75b5fb12ef36b8 docs/images/settings.png -fcfc9f1b932e243e2133061aa996d8ca6f8fede830190865b771482f4ab01ca5 docs/images/traffic.png -d50eff63d8c11af616a794d24967ca16a2ad827d9c3ec47299d578419b3c449f docs/images/vhost-editor.png -bb977580c5d93bd7f2eb931c795ae7f4b8676f316d0fbd1552f78e2757dd79b1 docs/images/vhosts.png -28549d423d6976181d9b4ff9e13626ccee3b4c44db36d442eb6b3e20e9f90d6a docs/images/web-server.png -5502e8ce44276213803b66c58e3a4d804a1354f5ed5d83f47ee805e8c44ab088 examples/acl-headers.json -2431dd88a2d9ad2cf3cd4b8fcdfa602563ab1013c612d8917fddbe7febfb2dc3 examples/cache-dashboard.json -e31ac05a99615e4ea6c4c9a8b2e090968583fe3959f838a600b5740cb170f8c5 examples/config.json -39cad993003930febf98460311d185a278e7a9508b6b591299d9339d0f0c51cf examples/empty.json -695cc7621aa403148fcd0868f351b6e9ccc076fe35610e779af4a72f94d7d5f4 examples/http3-vhost.json -b26833cb4251f9390a44192ecc827ff7f052fd19016a5ccf7498c94503ab4ce3 examples/mock-vhost.json -a6b835dc07defc12b8f0e48491d5f413843c8be2ba4501d7c28140a2822b034f examples/oidc-vhost.json -134d4a59727b27accb3141d4cee26a4a74157d236de4996bfd682e639462b2b5 examples/tinyauth-vhost.json -5a8f3a8a054abc89c6e78896b9fe2f903212199a24dc3d2d2bcbd0696a31bcde examples/transport.json -d242de9614fbb52933b4accd32f4715ca94107abe4a3b1d7e088362b07a6ba60 examples/vhosts-balanced.json -af2bdb1343a8141069e94ccd2c7f92574ad848437e2f9fdb5c7576a9a18ef4a5 examples/vhosts-private.json -35e4f3acc652ac23a9442600c4c76173ae34966592031b3e942b62c249fc869e grafana/README.md -0d389faa4f64f095e9ec62cbae329658682b96f5e4d02ead79c7d2892ab89fa8 grafana/rustproxy-overview.json -1a041c505669625a7f0f8011484cf5b6d2ec69a7de859801312e4fcf4c8d3555 install-debian13.sh -909e9ab94617ace74a425f15084bf85f3086cc52ba5b28f2b441ff800abc6ef9 install.sh -42f9f1d18c021fc7734b5bd020844bf678725a0e539e2fcbe05ec676f6239eae integrations/README.md -ba753f69557bd9fa990e56beabebccf39f93b5f6fb7e66a2e241c8c461dfd763 integrations/opnsense-acme/README.md -3a1f8c326618a4613bb35f9e83428f6d1cf668b9e37b4731e5d38c3081fc94d8 integrations/opnsense-acme/actions_rustproxy_cert.conf -de6550ab8f48d556d752c252212c38ba65491fd224f972c10fbe552f91ed7520 integrations/opnsense-acme/opnsense-rustproxy-cert-deploy.sh -73784ac652708b04ca6c91aeed4524f51f50d63715bbeefe7f5590b353e78943 integrations/opnsense-acme/rustproxy-acme.conf.example -45be151cd85fc2ef2f1fdc3003ace63381af262e73af8a685ab48cb697cc0de1 integrations/routeros-oci-build/.env.routeros.example -11aa102de1089ecc375f20c4bd5420fcfd3b2ef23fe0c8bdf04953fcfaf40ef0 integrations/routeros-oci-build/Dockerfile.routeros -7c7a3e51f43b43e1c962a4b0bb591f99c1f06977bf77f23719f7f867dfe7eb8e integrations/routeros-oci-build/Dockerfile.routeros.dockerignore -06a2f64af5372b12eb9421ab2b42fe7d7ce1ea39dc076f85d5af24fe38e7cc74 integrations/routeros-oci-build/README.md -3f092a9ab80221eddd67be4d1a776acbc6e04c1eb6011b588280c28e83b2582f integrations/routeros-oci-build/build-routeros-oci.sh -3f267cafa16006e5456ade78ee2d5fae02cc7ce747839523068ffd8d7c98798a integrations/routeros-oci-build/docker-entrypoint.sh -13189fa546c3488dddd8efc80c47f6da5241e5fc28b79cbfe795414ea05c7a4f langs/README.md -052717c1d67c2b33084dae9d0e6f24c3a3ec4f16f0b7871f2a58773529961415 langs/en_US.json -7bb35391fb52cdcce6f03c0610f67e08cfa1798fee345ee7b6edd64b041d3f9f langs/pl_pl.json -9664543e4d03422788a65e42f968c1f026c2235cb5be6fc3e0ad318997077538 make_zip.py -e830d37dd1f81a4b0aa7d535f5bba69e34e433b0fd99cc8ee0b296786c32379a migrations/0002_admin.sql -20112cc82192098b8d602f1c4f7ca08712e9e1366c845fabb92753187c370d35 migrations/0003_certificate_renewals.sql -5c62da30fa9db594a4d656c77ae676d3c388072b6a85f91170ec7d911d7cde43 migrations/0004_admin_preferences.sql -57dc28982f416874d5d00d1d438a18846d1ce35cb940c4bcf67fd9a8bc57339c migrations/0005_certificate_api.sql -faa7e50922bf180c363f7627fbcfe8079831e36282220d17481cf69bc64b57f1 migrations/0006_certificate_api_credentials.sql -f093aef9639a959a2522946995a02d2e67c464e794c3ef665261a9a5b348c968 migrations/0007_secret_store.sql -90f6dce865496e018c047133d3bc1721fc2a19b2f4ced22e2a3625d9e9ff18ac migrations/0008_config_history.sql -fc7585fdcbe99fe3496f0e62f4c4e2161f4a0173222ba4950331aec6c44e50f8 migrations/0009_certificate_api_grants.sql -d58a464870895cbefcaa2b4adfd6fcd0d5182d19f2528eef6509e190046cc9fe migrations/0010_dashboard_presets.sql -e56ac3718ea7d73fd9afb1c3b44ca95c9bea424c32166e37ce913bee0e67a277 migrations/0011_tokens.sql -273ce62a518657853428ca44dfe4dd2a56abbbbba684e905a2d0147d08359888 migrations/0012_admin_preferences_size.sql -478220552ffeea3de00e2866d427d9f87f4cfc4ae5232e5c3a774e62425b1e0c nagios/README.md -91233910aa4dab07ae917fef93d018a7a0beaab697f9a0bb889ac613e595cca4 nagios/check_rustproxy.py -a42e01b341725c9da0928edf40c8c3b9c814ef90592f208c52b1f2c56a2ad383 nagios/check_rustproxy_api -ee50f38c037765fab742e888d4b9fc4d874c31c785c6064d4eca3d2c4d24d944 nagios/check_rustproxy_backends -1465396cf1358067e9fe48b3d61f28fd4ac65c577b67c502950ce6b42ecbe3b3 nagios/check_rustproxy_latency -6e036f736a2b40feb78eec17bf34871771524190f283591d1c89e48e6d2271e6 nagios/check_rustproxy_queues -7458b2d74495e6fb1c1edeea4d5a793705476431dadb60627187111f91441e13 rust-toolchain.toml -fd1c34599f725ad5f7c3c0cc89e08b11917baef02c83af054ac8528b2e01dd8e scripts/README.md -1d63e9cea61a744f1bf2085cbb7c3d8755b3eda1569c8532574dd4fb6a840678 scripts/__init__.py -292c65ad2a7f0ca13da4a00a836df17c3192728dc02034b75a6a70eb6b5eb25c scripts/audit_css_usage.py -5fc5c7f274aa5a6c07970f7b2e548acabae3dc2a24d598308fd768a8d9de2510 scripts/build/__init__.py -c3066f40f152a2655f88314fd9cf784eddbfa6c3238a494da13d972ef9ad930c scripts/build/panel_css.py -5e98d6c30047512825f5dc1c42709b82f0f6342fc0db8346a67ae85ffeb40c90 scripts/build/swagger_assets.py -e4d15aa6aa864d04b9b30aca33826b833632af02ca643f8b23e219a5ea1298dd scripts/deploy/deploy.py -618603239b000bbe4af36a6a6ee268758af632c761fc53fc6b7f44a4a818bdf1 scripts/deploy/deploy_core.py -992c9a806464fa10902de5be102f1609469986331fc0ae223a5b5f8507153574 scripts/deploy/deploy_runtime.py -a59587ce8ad41b1bbb431356b58398f9c8ff7cb96a613a91752e907a70e10c2e scripts/deploy/upgrade.py -2cc658faaa610b21b48942c59b955525539ad4503fd60f2a49c7e626a22faaff scripts/migration/migrate_npm.py -a459d95bbb0076f33ade8b273b813308167f9d8d45242b309a2d18320ca0093c scripts/migration/migrate_npm_api.py -4c905a387f210c30fbf12a7738676fd39819bc96bc4a272da1db5f18a2d3013e scripts/migration/migrate_npm_core.py -960fdf97ec899107a567405e9b9c2b70ee16951d5ea26c37d885a7920f7b3aa1 scripts/preflight.py -3d6a0503afc25beab79ddc86864bcbb15248ded7368d33aa64321b8cdff59933 scripts/resolve_dependencies_0312.sh -d759315babd9971b354d6f702d4c861eb1cd5c41b1e2e0f1a94ad4d2c2db49a3 scripts/runtime/acme_provider.py -e69813fb1d3a4cdcfb7243964cc323fc21a603087bf2e84188fa42b9d3cee4b5 scripts/runtime/acme_rfc2136.py -91c883cfdce94c8c22c98749f611317f538a112d29be4f3fb1fa460b8f29ceaa scripts/start_stream_backends.sh -046b4282550f5cb4e53906665c91c7442be70fc68fd0743466fd832582f7c979 scripts/test_stream_tcp.py -f0b48ec0cc4411755cc0b4128eebce710375afa99344cb76198cf31074f8eb63 scripts/test_stream_udp.py -22e880e98c7b9d700c7a4c02b9b1d543e5dbd1f4ecdca42813a1083165b32a19 scripts/version.py -78efae6c43732c0f5527d467bf07d1f890da361925416c89b58bc449d852fc2b src/acl.rs -1d55ecb2e104be1d3b19623a1380584724c106ed234d2e79fd2a2fef1d891ee3 src/acl/dynamic/mod.rs -1eee2ea2c8dd6068dd0bbb058a06d26436f14767d8efbc2010bbdb4e3e523672 src/acl/dynamic/tests.rs -50d9a0009cdcee6dd34a6215755d98f38ea18fa39b9faf070d1a7649eeac6aae src/acl/tests.rs -6189029ba493982acc38c9dc1f47fa1f0c933dec5ecfb95b60f8be83d33b5aa3 src/acme.rs -b9eff08fddf9b8787aa04e72288ea2ca0033965e4563d060ca51f267e4963918 src/acme/jobs.rs -f7f737aa28d2d209f4f20a221885e3bb3596dfc8e3c8c9a22ba53bb975c52df8 src/acme/model.rs -b77026ad33be84706112881dde840e0fe4694b150dd3087d8e106737d07dd464 src/acme/providers/mod.rs -d1dcb7bdfb7cfdc9c3b88cfb6908201c58532bc888744a13f45853079f214659 src/acme/providers/tests.rs -c51fd51177a476be6462ca980e9bc13f0d0b41538f520118b80a685130f0dbf0 src/acme/runtime_bootstrap.rs -5a684eff5f3539c7bb8f66c3b83e7fb62527c52c61da727079d3897e0943f952 src/acme/runtime_env.rs -2f02b08d88ad3c1fc9827e5bd3ef463effba633834d9c05e9c0d6d2a0e8869c5 src/acme/runtime_versions.rs -cfc13a293c126bb511745859669719a14c72dd7ff6be197bc9e0d0e560deebbd src/acme/tests.rs -b28a08ea996befe10949676f40fab5f1036a274c7d0ab1175cf5c43c59849dc3 src/admin/access.rs -3afefdc6640d35bd55f20981e842647573f1ba80248680f99ba79eec9a7c4ce5 src/admin/api_token_access.rs -5f5b150bb8f51f57462e519650093354ae7b40fcb80c4380fd3391a33f4b30f2 src/admin/api_tokens.rs -34e851f725e8605e3c5d9946e56ac035996f3bd9d608169cba3408060d229c9b src/admin/certificate_api.rs -4a8b6406a44508b8ba102fef0d8309e871dbe0cbdbee1e6c8721baaca0c1aee1 src/admin/certificate_inspection_tests.rs -aefbef9839f9914ba05ea62bceff1463da3042b52ee851181ee39d4fbf7b91c3 src/admin/certificates.rs -521ac794501570cfa2e8e50c3a5cec2ca08ee4dbce8ac9c0e0310c09612f1062 src/admin/config_reload.rs -b7b0d3f0df7683b031136c05b314e206f7864e70514fe25165e41fd7a9382854 src/admin/config_sections.rs -b1119d6e713fd3af967f0058b2af9ae5c3ccb9d0be66454872e1f6cbd1a7d552 src/admin/dashboard_presets.rs -aae1ca0e70d987830bd63948d431f54302083148177c1b551565be12df7fe771 src/admin/documentation.rs -928ba7aa54ea742877cf267ee7ede798f95fb75839f21492063ba53e5e989882 src/admin/documentation/documents.rs -b9c2952e3fcfca540d0ad64f2d3acc5c1f5240e707f4f23ef4d452f46fcb520f src/admin/documentation/tests.rs -1ce779b84aa8f47bdb3c34f83593c1f2f06d2235f0319847096cfcd035434168 src/admin/file_log_search.rs -059218501907355b22bc84e7e0c41ec72565af283f5e97170ce7707ea5874009 src/admin/file_logs.rs -d58a2ed83319176de4e66790ed292447c9497ae031464ec55cfe27174acb639a src/admin/file_logs_io.rs -77b8c05645969834cc8a58e249a7b60a57d6c47ad1c5cd92ffa5e4a9b5a8e73c src/admin/file_logs_query.rs -743bb7436f77e04015328a0e7e7d425e43ef8aa8d61467bde157e462c1dcdc2e src/admin/logging_api.rs -243f4a9c3fa99781e19c3952354d2632c0ce65e1dafac729567cbe3c177f94cb src/admin/mod.rs -4ffdef6e47ce31633b08e090477c289e719cd829eb4991d598824dcb909dc389 src/admin/openapi.json -f7a356109786635dd58cba590c71c796dbf36b47f25845190c75ee5c6a9fcb86 src/admin/operations.rs -257d93a29d0bda96462bcf695aba8d0ec0f9412c379e066ec46ae8ee034e3a53 src/admin/panel_assets.rs -f5127855c2994d052678865df36d703b74f4a0afc633daf7718b10da18d26e37 src/admin/panel_content.rs -229efd2691e51755f402ee04bcd9b806e3d3176c39526b9f7c2381ce779a7ba5 src/admin/preferences.rs -35a7f99c7448c90b8637f4b3a7becca138f1f378fe5dc3f87122151525bb20f9 src/admin/preferences_columns.rs -a238feee9afce314b8f6f7257e5488a53c4d680f33450a4e3e460fccbe54de88 src/admin/preferences_tests.rs -62ecbae5dee00aeeca3eb806e2605372471dfab971cde8f66f11e711df8fcea1 src/admin/public/mod.rs -7a00e4ab943f74d2b1bdcbfab7f9cd3f584e9f59536b4aca6c4c31f5f5508d12 src/admin/public/tests.rs -6930b4f4b45257772b321b20a9becdf9bc4610274852948ba38c2d0cdf02dfaf src/admin/refresh_preferences.rs -fb4ae8f958e136f46c50a3db8347ea10123c2a3a775dbea7e261aa0b3c7e7994 src/admin/router.rs -e135431cb078ddb483165581123c64af8f00ea67acb3a395ec3e53c85d0d0d45 src/admin/session.rs -7aeb784a3ef58795c8fe26467bb4e1a00e61420911f798a584ab09c12f73a754 src/admin/status.rs -2d5b4c28fd0bd48b06890fa8ec44a2296de948c1f88eb2909f4b495710d4e13e src/admin/status_live.rs -8315c856cd50f1072593ecb30c274d42d82f078b5fb93e7c68a8857cd81b0841 src/admin/status_system.rs -cadd7dca29b9aad8c77c7bc23dd249ea37a15adfa4d636a8ef00273a91ce35dc src/admin/tail.rs -d8693d5341ff5be2dcda5a12bf55f173773cb9eb642862d9f4b03c4760ebf8fc src/admin/tests.rs -c18c369124368f58524652565102817ed69fd25b222b0c5e737ef7632b45dcfb src/admin/web/acl-picker.js -48fcd818c522fe80f2c7b2e218f87de6a7772ffd0a24e93502780b03ec78e335 src/admin/web/acme.js -86abf50f39862d821cd2e43ca425671aa85289272915132c5a9a5dd1fc4182e2 src/admin/web/api-tokens.js -faa9735c2a02746b2954bc4955eb609f94afebb685cd5521d2629640cea2777a src/admin/web/app/backend-dashboard.js -aed3aea4eef0011c6b51d39736782e7d1ec52662e422f40e0c7b9ddfc19d0378 src/admin/web/app/certificate-inspection.js -f6b0533ffd6d0e6471519120c440619a7fb4b255854ba3dd23d81cb35cd21afb src/admin/web/app/chart-scales.js -e5b39b5592ba81292571033f26934ac0cd42bcdca7395e91094973cecb3eeaf8 src/admin/web/app/config-history.js -fcce3b0204ca2c679f5d8049d020619664a3c0a45889975681258d82ae329988 src/admin/web/app/core.js -d695ec90fb5c98c27d7ba1d2bebf54f9840985fc530efcec3fcaf48d74b36c6b src/admin/web/app/dashboard-inline-layout.js -e4238322a985d3e8b7f2de94b7af31e1c718775590b2c7b3428b878cd43337b7 src/admin/web/app/dashboard-layout-editor.js -a184c50e1ca6bb5a14954e31b15f09ff9978fb939064ca724851bbb4e661dc56 src/admin/web/app/dashboard-presets.js -0be1024d9ff657044e04ed71f275cff3b432406d5fdcdeac726daaee54444abd src/admin/web/app/icons.js -e5a92fa1cb7e049082f0764b245560c41a9a34bcd8a9536fd872d9169fa5465d src/admin/web/app/logo-animation.js -32aa11f041eafdf16e66adef6f5847a67413785224da2c19ecbf825996622aff src/admin/web/app/overview-extra-metrics.js -5e62cccf6a9507fe208e9f41bbd08453c3d8c6a6b83c56d93a2bb22550ea6e9a src/admin/web/app/overview-masonry.js -4d1d4760cdff44771c9d880a7c0da81d7233ef6e3a4868111a522703831a7a54 src/admin/web/app/overview-samples.js -db9012546cae8c58fc2bcbee71c9a95956a13a6db9e6d126c6a3770d45a4e4d2 src/admin/web/app/overview-wide-metrics.js -bfd9fafb3112197e8f875dbf87a9a66c81aef0fe83687601a84a66f5e13f69bc src/admin/web/app/path-permissions.js -e540119edc555cefbe5147d97e06527adf49c984ba7a4dd51dc67603d3a46041 src/admin/web/app/preferences.js -9e2b12d34ab1fb29716645720577ad49b16c03b46c482a03695e8f645d170e79 src/admin/web/app/rate-sampling.js -3b8e566d81a5b94ef21c73e7805ae128454f085554de9358040de266bcbdb0e0 src/admin/web/app/refresh.js -5d1e805787530644b8853bd7f48d0efb1dc3f4829ca8b11eaa80c57434b8841d src/admin/web/app/runtime.js -31201586925e6f4792071d7d03fb05dcc4a69a03c02a4e85eb0746f45af68074 src/admin/web/app/session-resume.js -c7a18238ac426de4d1cf84a395ee4dc66410d60a57a3822695dc10adc668d956 src/admin/web/app/settings.js -b7ead49224a4ec67181d3f24f9d9634bd6d76756f826a4d5d993300637d1d8f3 src/admin/web/app/stream-dashboard.js -7de070cc8cdde45d7e0932259299e341e25b32c9ffbd87e4fcce934d0f090de4 src/admin/web/app/web-overview.js -d330e3351a55561ceb36573b0df91a663ca4765c3165ea340b6ba95c28f23a9b src/admin/web/cache-panel.js -9f323507649910561518b63cf6632e81b3ecc4b09501ae53b635705f34ea6587 src/admin/web/certificate-api.js -4810137aa4217a86770617d442cf5dc6bec0d9f19e20bb2155e932a9a111cedf src/admin/web/css/00-tokens.css -ec3ff1b7824a7f03ee6d6b7ae9b6e0cbdb300e4891d44f982b6c04b3870f5c2b src/admin/web/css/10-base.css -8a1996d37f138790c12a704deedde9de74f733e7dcbb6be816fd68c281e8e0a9 src/admin/web/css/20-shell.css -9495c1b9f6a2cc72c1d99b4ea8c3cf3706835cb4670b53d5d7d71ef41ad62006 src/admin/web/css/30-overview.css -2d703473f7b751b587c32af6954c838a3160e9efa448236b6abe291832486b72 src/admin/web/css/40-editors.css -87df062d7478176641364c07de396ca988a37b1a8bcb892b53cc578fe8471850 src/admin/web/css/50-settings.css -606d460ec901a095c9537dca6a0e56ece76142fdb25c59490703e62691d60356 src/admin/web/css/60-monitoring.css -8ea9eb91ca422699e8b4a0cba8b3dbf71be57fc99b10cedc48fb5ec04d6dd609 src/admin/web/css/70-responsive.css -8009afdb04d5170687816730cc930a22fead1fe0248835ca7e8de81d6907395d src/admin/web/css/README.md -8241bd9489dfed082863948829a44a49bf0a8e9cd63c55809655109e393e0918 src/admin/web/css/manifest.json -ee51ab0912e0ade6a3e1c2ea6f533bb2f65a6d3e6ec9087e25b9f0df009c19b2 src/admin/web/dashboard-defaults.json -20d65b22900d0de2f71dbafee2fe9a237e0a76515b386022b94c75d50bdfd926 src/admin/web/dashboard-widgets.json -50d1ebcbaf4d0b2968da23bb943fc3f67131c5d32df3f61d23ff37aad9da5b81 src/admin/web/demo.html -3283eb1f0bc29a02590d150b41247bcfd881f88febc6c9df5bdf6086730b786d src/admin/web/docker.js -fec062a5959450b1711948adf3189ceb37edca6fbead2e5bfc03b7ce397c70b1 src/admin/web/docs.css -aeffd403fa1823df7d9fa4c48280b4033b2d15e4cb9f66608caff89290de0a52 src/admin/web/docs.html -fd8506a91f769b57b62d9d8e389fb67764599354bf702958a913be79f779707b src/admin/web/docs.js -c52c430b9a6e584012e6014709e1e16ae7e775b2a5aedff8eb767fa867c1cbdd src/admin/web/drafts.js -007c24189ad7b497d4da024fc52e6c51393f91ee135f525a356e1f14882b7632 src/admin/web/error_400.html -232b766f278ae4424705af351910677fcd7ac9a20bb8320d9a12b763c91219a2 src/admin/web/error_401.html -16293363c7848471d866092fec5e83023df087aa824989e87450cee7b7ca1263 src/admin/web/error_403.html -f7d0955ab18c15e04369204e789f341d2e832f927c1ff20a3b2b9e35e7898f00 src/admin/web/error_404.html -64126ffcb39dd9bac7772fe737267f8d9391ee6b750d8b84f024f87a6123db3a src/admin/web/error_408.html -4ba01f7a53e9ca914e7b2100c1d439bc56e46be698a9c020dae20159759120ac src/admin/web/error_410.html -f2cb26eec86b6c03151072f847153df8aea612d840ca8b76367f41b9605bce64 src/admin/web/error_413.html -7dc3634e3d508176545936f77db9deb3dc51f0abb71985e1950aa91b81b6f44f src/admin/web/error_429.html -6fdb616c086b2769e3b484133415a6f8e9274a74d03ad95657eec480b3a28b9f src/admin/web/error_500.html -ff72fc4c6a11907a16234c4b3c7d7f7bcf82eb72868dc3fbf654b04aff806fc8 src/admin/web/error_502.html -386b9dc3aecebe7727f7cf7bbd2a02ab036a3abf01315975111a51559128df73 src/admin/web/error_503.html -e6c4d91d1542d0a5b47bb8736f9539d43a6713df5a473b635519d5b7eac2eb9c src/admin/web/error_504.html -003d382cc8dd69ad7237679632c04a9389366bb71dd7dca8ee64ee06614aa9a5 src/admin/web/error_auth_provider.html -0a5fff35555153f59d4346933030a67b6e1a8768cee7a47cfa2fcf1a2c564f63 src/admin/web/favicon.svg -7cbdef9192a9dee1f8eac42b85f52b3190f7f6efae50004aa7ad116a910e4036 src/admin/web/file-logs.js -3f0525ca1d4e088ccd4988b8a117b26a8cf8c12213b24c37081d41b68d2b0ff2 src/admin/web/host404.js -feca752133d6a1300c5161af91124d5841e803a77f62231159b4b82b22db9dd9 src/admin/web/index.html -7979c490b7fcfcd8f5e52e99fcf7757d78509337a625341c98f62c6da50da374 src/admin/web/integrations.js -7a12f020fc587205694978ab41b660e9a80487d413fbf6e34fc525eabc58308f src/admin/web/login-keys.json -ac9f667273918e18406df06cb2613c923f50a88897693a03a18f500e22dc6ec2 src/admin/web/login.html -c2e5f554810b8e34fb47361fb90a01073a2e332ee26d82e030956fad3ec1f83e src/admin/web/login.js -16d848a25f744e55d18757ce82cfd80e85bcc5b1777342c41e7bd732e13d8913 src/admin/web/management.js -1f3d10e389c9c20e6eb019509fa6e82b50c6b43bbf988c1210a4d42bb73985d0 src/admin/web/partials/overview-charts.html -32b3f9b3ce9d1de928d2f23265d09b65a135fd045d1d24b98e830922be21432f src/admin/web/partials/overview-metrics.html -3928afce2ed6d5f2d3e29475dd29e4c3bd3c6df180ad5119beaff0c7a58e3b3b src/admin/web/prometheus-token.js -2d491fe9a547fe109dc5db6a74806d50b08c3daca15a6622c79c9fea33b10c63 src/admin/web/redirects.js -76a01f590d49649dcb1f554c221290919b2a8438e6001737f3c096fa6daec74d src/admin/web/settings.js -8eadbada619b15087783dcfa0e889a81f88e78034d084c5ab616f7912b835940 src/admin/web/status_200.html -1ea78a6e5b5d813febf2359ecec7fde42dc1278531053e91428f4d72b8a1d62b src/admin/web/streams.js -ae0259cf32f53d69a22a640b1c34562018d4ffb3864494012de3a31c0bb4ac1e src/admin/web/traffic-panel.js -59ffba513c543ce2dc0b7c33a3401474f8963874fa234a0a37e7e26344092508 src/admin/web/transform-panel.js -87917b0388090f2b27ec6460be56fea96dc09b42735319e0a91330748848e288 src/admin/web/vhosts/core.js -9bb38cdb8c0f49144d6058e007e375fb3b2e47359988029fe28addc6a900d0ca src/admin/web/vhosts/editor.js -3776f72d7051af86ac5fbdd4581040dd88a424c0c6cde789301b032b159094d8 src/admin/web/vhosts/health.js -b3239e67901f1796d7a974ade0796f2e3590ff8064628a5629b78c7f6ce2f32e src/admin/web/vhosts/protocol.js -8c3da49973c62333559b0e3588c02beb0b425c025eac5cfa82a1bb968f70d9dd src/admin/web/vhosts/rates.js -903df941cfd04bd2e34178b5b72911f5c0a6be9aa593ce544c685aacbd757da2 src/admin/web/vhosts/render.js -4dfdeb7c73c2775eacaca65fd8ef1dc80b275421b15522d319d338f5b96288cc src/admin/web/web-server-profiles.js -dafce3a59a6007e59d7a4018fce96a14cd8e8cedb3ce77f02ee229a280c122d8 src/admin/web/web-server.js -2d40c2cb32d7365df0c9cd6c8cb6f0483c7a799786c648f4836a0d9740c6c5ef src/auth/files/mod.rs -b2f948bcc3dbd24952c7b1b02d41d06757f49f0c38a78caf51f8f8a687d8480d src/auth/files/tests.rs -50ef648351271d78310e00caa6d246e0009171ed036a3e4e1144737df8c064c2 src/auth/mod.rs -cc4ddd57a264d12bffab131bf04b5cd22df75d38b61e21ce669f5a8a97b109ac src/auth/store.rs -745226cabb007819370fc6aa680995a03a8a13fa057dacfab0fcc21d0c43bbe4 src/auth/tests.rs -a4c14df927c22a7fa46023f25cfe48d3aa3c245bec97fce834999d9bcc8d75e1 src/auth_provider/choice.rs -514e99e0d3da21abd633d53872234bc4d7d0178583ab291e53cf4b1802fd5337 src/auth_provider/errors.rs -d3d9b756f8dd0444ce6937376f27fa2eae7eb4b9304a2ff039d272c929592bdb src/auth_provider/mod.rs -72a6e245cef078585bc39932033c05cd866ee518e9cb4e7b89bca87ce941e971 src/auth_provider/testing.rs -59e1af728770d28265198844b3dd5740328bcb1df96d170aae575d3d97ac42d8 src/authelia/mod.rs -36f87348cf1fbe557f6e94296d30e5b36ae4817b6a18071767d96ea21e43f498 src/authelia/tests.rs -0137e66fb7127f1ce023b1c6cfe3fac3fb1e8be17f1de722f8ef4e66d2594a13 src/authentik/mod.rs -d4a388f0897e50ad26e1d8ea527eccdf656557abb4b88fe714cc2b1969d8715e src/authentik/tests.rs -32a25e53ac9542424debeaf1b637155bd4e60abd8692df082729d81232eb90b3 src/backup.rs -5e8b1d7cf8280bec54521cec9e4a8cb9cdbed5deaca07e3a79c43d2336f22a80 src/backup/archive.rs -15213c87d4393739328ebf0eacfcb45f864ac12d7bd7509f750a241032f6c7e9 src/backup/ownership.rs -6edb5aabd210ff2d121e435815b5501c9eccbd7a8ba230c843c6335a3e24f94b src/backup/snapshot.rs -859cec0bcd604f205d7d8e14d1c810e33d97fd7cf00ddcc30877bcea7c5fc2b5 src/backup/tests.rs -5293e1b06f82654929805b53b9092a82b7503a54b34da3e882a999c5f14ee579 src/backup/validation.rs -eec564a7ef886d18ab75289025a47d62bb702f07d63f92d2f83b7afeecebbb15 src/balance.rs -9158a2bbb303c53bd3d2c779d9eb6e4470d028c4f28f8e329788e9c8c830f843 src/balance/health.rs -458733ad4ec56d58112de6ffa3539ca7e9fa8311048a4e120da96b5f899d5dae src/balance/lease_runtime.rs -bd693ea1d15d8da2abc08c6b5b50d42b693d9d4e9344205e9ad7ae779c19387e src/balance/model.rs -ced69832cb32e7dbd0203d74f5a9c60c2cdc682729f4c5e2c01e7c082e7adc24 src/balance/pool_core.rs -477132dd381e23f1be197c32ff58a0925f41d3e6aa63fe77c10973cefb2b76f6 src/balance/pool_selection.rs -d789bf40cf9433e2fd16409d112210fe93154588b1ac9bddc9c7f78e1db14426 src/balance/pool_view.rs -a361c341932ffd186c0b21356c91ab1fe8043f5020d40798266d15ae896a114e src/balance/tests.rs -ae06d238b1451328c751a511476ef39c012f3a397393f939ca02f96ecd0119a6 src/basic_auth/mod.rs -9a8858b7ff461a4d961ba701ca3ed6eaec15c3f7f05eef8e0e30edc63617605a src/basic_auth/tests.rs -90f26bcd36720076f874cd0a21230316b7303f68e23839e987cf51e13c23352b src/cache/cache_regression_tests.rs -7def03ace07dc38a4806277d75b6ce673d33ddaaf1c4855fa0a3372be1cf9489 src/cache/cold.rs -b75ff512a1c6344483e00d2c67578ceea6b5472c279da0246f3622daa68d7e16 src/cache/cold/cleanup.rs -5fde9e9f77277d557372e4614264512804192bb51f3d2eae785988c17b2e7253 src/cache/cold/cold_tier_tests.rs -3c3897980c31a69d96f9295689d1ae19f2190da758c69ee7a0541f4171288bb8 src/cache/cold/demotion.rs -17b2a157b03f43f49ed05f1f3391aef025a453b748056c67229cb3ceaa53bb7a src/cache/cold/startup.rs -83095bc93132f306c537b31ba929669fedac99af3c4f133d0533b5ed7ac4e6ed src/cache/cold/worker.rs -c6c54984cf3460e6227d40d8d6917d7ca5d809ac364c80effe354c64133c765d src/cache/collapse.rs -346fdb40d85627b583a01fa17c65e45c822dc7216198cdeadbb3d07904286fa3 src/cache/dashboard.rs -be3d80cd340edb47755190a668e2f2a2776940665f95ae7110893b706eb94faa src/cache/dashboard_tests.rs -847c660e6cb7d752f9dac2807c5045a000172c25b0e437cbade06ad7b101dcba src/cache/fill.rs -675d18afb53f25c56cba49bbb431fa39ecd9d7bdd192c7b39b0698225de7a2a2 src/cache/invalidation.rs -c1357a13658e1ed5158084d3a41ba9ea906512774a5863ce9c56cb508d3fa6c8 src/cache/invalidation/ban.rs -bbd9f372648d89b5e14d5b58029582d37f66a89752caf2c14eb1cbf8f24bb7a0 src/cache/invalidation/http_invalidation_tests.rs -6223eaea3f061b111330cc26b28d85b9b239bef30328025f2ef337291e22a445 src/cache/invalidation/invalidate.rs -c1ee3d13b373672c53b5c9ebfe5c4b66b89f2f2913c328defd5cf6502f96a654 src/cache/lifecycle.rs -bd831807ca4720b3a41a6ea1d9a6c0ed2d935225e2dacbd9313be064f2e4a20e src/cache/lookup.rs -c2e258da25fbf6df7da3de5a80a04d74e85c03ab22c175d7c9a6340b8ea1f1b5 src/cache/lookup/hot.rs -4148106b9baf70e41eeba24233b1edbe8dd6f927c11f2c7647e89fbbfb60555e src/cache/lookup/hot_hit_034_tests.rs -e9c6ab0c2be9f96573f826e6a1b9e4c2b8b526f779e72e95a6463ae07e45ab55 src/cache/lookup/insert.rs -7f02dc8eeb6123cb22307b76985b606afda2d87b7f845894685cfe4a9aee8b2a src/cache/lookup/tiered.rs -639d5be6258699ec7e9f260ec33bd2c366203b6655bf0e98f30517c2e12ceeeb src/cache/mod.rs -0c8b0d550e94d4474dcdf991aa0340228dc5f2f904f39350e6e666a16f16fe87 src/cache/model.rs -b96e30ef2b12ad7647915457f087a4d11b6141847bc5e971a75c2739c88c3d8c src/cache/model/cache.rs -0ec4f6d0adea1ed80a3ca17c68c9c85502491da2904d9d690b4169ab9b025b21 src/cache/model/cold_metadata.rs -f52123b588205ae96c7cded93569e99a1b4db4b361e1f7a91fc703afa6b6f6e5 src/cache/model/entry.rs -ff1c3a1a3bc0d26218dcc943ef951c2a212c180bbf6e4bf1c542ffbf12a9f150 src/cache/model/http_invalidation.rs -ee9508498d420a726abee1d12ca21fd5117c1908ff53c2ce29f01de4380f26ac src/cache/model/maintenance.rs -723c6f0580db70b1ef40269b28a4aadc89f024b25be00afe73a971950663d252 src/cache/model/settings.rs -14f3f8ae5252a2dc13fcf9556523ffb945b77ee92a5fb4939cd27e113fc61660 src/cache/model/views.rs -e26dce02df9c043329ca164fed215d271781bce8fb03240f528331bf3df6b9d7 src/cache/policy.rs -70c255e15f2b8c030988a2263b0e07b5c16e7e26770c72becbcec6da4550fcd9 src/cache/policy/request.rs -6ae7a79886dbee537d15830c4647f59f158a2b31425d1c0f06218590c261c968 src/cache/policy/response.rs -12a6d5d9d6711e956391b4b952e8149658b8bf64cfcc0a4c59c281f2630a6aac src/cache/policy/scope_tests.rs -c3a4300f7cdb6b2b7c16fbc489d49ba2451331bb4a55a2d9f618c684fd61eecb src/cache/range.rs -e1d3f0512d6290b0ac4998f47398a0a7c404db249c5bbdbc4ad4767071013a72 src/cache/stats.rs -8a300f5dad44815401eb23f4f5a157893761852ba4f3005041e0eb3f16892ce3 src/cache/tests.rs -98af70ada3b14f3ecc94c9c76b028c1b0de1ffd43d9836a0749de763f64d5402 src/cache/tickets.rs -a1132b980833b1b4ce2bba9aa681ff255a0e2d61faaa65a316860da503ea1e27 src/cache/v022_cache_tests.rs -4ba0a2e1c21a79cf68bf34cca1f2c2a3d7b20aef38f3b9f510743e60bc1d425f src/cache/varnish_compatible_tests.rs -1a2eb6684d9ea4a7e90970d936c75f7c8bbec46a4181fdf273be9bdac8eec847 src/compression/mod.rs -8de82d9188c9c337690c6ec4afdad9fff20651c358e34602a93d8bb8c3d2489a src/compression/tests.rs -e695079333ebdc2a6e7b3337cfabef171b3a0a01da0597b77feff70d417f833e src/config.rs -d727e5ebd6c6184943d5f773c6b5244954832139c744851c1357614880f09c6d src/config/backend.rs -367b46f2b57143db17044378b1f5a55bab1eae3ad6ba40f388896995d1b2a13d src/config/compile.rs -fbea01fea1213d98aea812c1b78d5db289e09200b98ae514d742235cd3fa70e1 src/config/internal_routing.rs -cc75698be2828000e88f2c482bd26f2fa4050e3432bec1b5a581dca17fef4a37 src/config/model.rs -75839458ddbc7480ec4492a95eeb67b617ba7d62f7b67e7a767a3453b74dbcbc src/config/route_policy_tests.rs -736b46108c72220b8142f4f2ab128876b6bd82e0d09891578abdce6aa03c82f3 src/config/routing.rs -dd9a6ad8f58e0cdd1ae74f3f972fee0ac14383cd8b8f518403b9a36c169f35bd src/config/snapshot.rs -477cddaa1e1c0b9b605a2f550971a04cf30287519cba70cfbb2e1860e3a93ff2 src/config/tests.rs -f35de0ee1516ece6bbfd2b2a7db7d1e0f5048b0ec47cf2a3765dffb799abfd93 src/config/transport_tests.rs -a09f361d70510d6226f4dd6785e649c3dc01ccafc70a4c8b0dcd098e224129b7 src/db.rs -c290d0cb02dfa5d2c60ecabac1cfb20c8884e3d14cca1944906c6d8e677f1784 src/db/api_tokens.rs -892ec0e5985700cca399c861197f6c9d2f1c823d8d95b88abac9d27ae15a069a src/db/certificate_api.rs -5491dd7bb9b3fceac97c4dea63aba6d5c7abcb0fbd06e36ae986e00c79bc07d0 src/db/dashboard_presets.rs -2ff744223934685439374572b83fd639bb3eabdbac168bea4a6501a6e9ce0ee0 src/db/history.rs -c05a02618d476e4670b4f9930555f199cac776cdf09edb8fcc1a675695b8f99f src/db/tests.rs -dada314e1709e960eb2e225b4d10c3cd12606c62c4bc2c0220aec1ba133e4ade src/demo.rs -daf8f4dd4bc4dc4d1c69fa583165f88fbc299eee9c10edba75609424b0539ab9 src/diagnostics.rs -045593a42a6e4f632e5052c655788f0843faa313fc929265b89509f6dfff91ed src/docker.rs -9a68e0d5bd98541314f1ab5a4c2e344e9837f315bd39ea3988ffab6a0f0425ab src/docker/client.rs -8feba6d9eb7fde798cbe8a9e339d6a5346cfef039980fce46727386717635eec src/docker/model.rs -f095e5e3c564df409874019c647f7cec2156bf5a845b5b84864879fd07cf80ce src/docker/reconcile.rs -2e8d4841665cc1d29e6262a1789bb64ced1cecd0036681cc1ef7b5d5bfe22065 src/docker/tests.rs -0b6831d03841a1dd2d6ea73d8268d0b3fda678c6d9332447e269f1e45c60c0d3 src/forward_auth/mod.rs -6c25951cf69e972c47cdf815f22a5062916b2b768e39d55a26a5fc9e625a2344 src/forward_auth/tests.rs -5d32cf9177a33d6fb50452541805b10ae1b0833e709d833f5bd1fc6907193ffb src/forwarding.rs -b266c0a464bb0c6b581e423d08304a0121f126e8e42ef3a8469cadad42810fdf src/forwarding/peer_formatting.rs -b821e2efd2939cb13d01e402532f33feba6682acb6a7a3223be086c1cd171820 src/forwarding/tests.rs -0541ad50b7bde1fd958fca59d2a4f9a0fde197bcaef68e6bf892ffdeaac46be2 src/geoip.rs -e3646c044604bbc169aeba549d973d37b8ac52f88bbab4a0ef74c6ea69681eaa src/geoip/mmdb.rs -1e8777b295e6a2de15b55548e8c4c3a4166b1c5af18d4d33bf067d8bece1b590 src/geoip/mmdb_tests.rs -cfc75486e69c310fa6e7bf0448ed39a20cdad9dd8afe75e01592fc7c76a380db src/geoip/tests.rs -3376ea3d018faa5cb8a69da2f1d5b7cdae4bb4b8f28f373f8a0a2996410e1bb7 src/geoip/update.rs -86a16add6757a377264ae6afe071039851d5996e80baca9d4882b71889d7c2d2 src/geoip/update_http.rs -8c72a10f07f82e2c0864551a3c95e261129c23cf6072f902d063564b6ea6770f src/geoip/update_tests.rs -61a2b01db9010f9debfb38b43a26bf588438a5e470dff938e4e54f9d7ba46732 src/headers/mod.rs -3e9a19c221fa7e63d097c185470b17313da7c200a73ce50f6c069b4dddd37a96 src/headers/tests.rs -027d414f51e910ff20fbf3a924ab6b136178858f27819a046a922b1d8f349cd0 src/http3.rs -2554fc93a555e1f39d12d8c172097a4a4571d79db2b6b871a5a1bad0e8dd2778 src/http3/body.rs -741972222414c280104acbcd8f8071bed9cbfcfa2f503c487c11c56f553f53cd src/http3/diagnostics.rs -49ce4452ef7973cafa2e4071e2e14be0e16000e931a6501e4dc613652e49e230 src/http3/identity.rs -0b41072f6bcf28725c80f471584cd55d4900424ce5d55ac7f6909813788c63fd src/http3/settings.rs -5c550075c7b0fe687ad02095c1cad57b46b579fe21dc5371525b6c77db459886 src/http3/tests.rs -ad0fc77b4065e4e59e97db60d77970c7336386e43b779198abcc727245f8c791 src/lib.rs -e8399753a6ff49b7de19edb0a268bf871c9979a518354160cf07b4669051fcbb src/logging.rs -e4be3ad758c3d93ce52dd3b1ab1a87810e5226339400ed997607a5b746354751 src/logging/error_runtime.rs -e9795eaa3e743c09f5ab0e18e6d359bc97a3aee55510c74923532d64df90c873 src/logging/format.rs -66c4596e644d9dd539d468575e2de6459bac2624fb1e1064cdae61a21c2e0240 src/logging/model.rs -bf898b318feb9bd3dd2c335b6b1bad172da63fd5cefbff3e267421ce37c076fb src/logging/runtime.rs -3d6ea5508bc9609c6ce99a3a1d3fec2fafb95a2a8de579a80262b73c6eed3a63 src/logging/tests.rs -cdcb3806669207c17279da959bbfcfacf18cc192f24e862c0afa0c389a41631a src/main.rs -87e69b46c548b861e9d90d9d2e42dfc2630891f4583800b1942f9065d25e29cd src/main/admin_runtime.rs -224da3127b5f846a8932fb7f4b6e23d0dd590dc0170506267381d66042c64666 src/main/bootstrap.rs -5a98d0e249338e73aa57ae2e352dc16db2f79c2d042c1544ce1c2022da76a31c src/main/proxy_runtime.rs -b240033715323e7cb7b9bcaf92edd481f7089b4da6bab25005ca6733da8756dc src/main/shutdown/mod.rs -0a6578a0f4023b9f8d73043bf942dc5e096ef9afb8c0d2f131c14f65d08ac01d src/main/shutdown/tests.rs -ff491043180085800b786b77e6bd3c400b60051012482918440cd5dc6493d1e7 src/main/tasks.rs -a719c51aebcba0f16f8810c37618201954e79d6806da085ee6c5e4697a05b521 src/metrics.rs -9c7ed78345abc33d260f8d5cd52339bf8de748c08b53eaa2bdea8a32a0ea2a20 src/metrics/global.rs -31154052757c2bb975b8ce8cad67f3fad7b5132b615a73d5b0d7bf1b5311722b src/metrics/rate_sampling.rs -f27f1f8bed769883d1a7ae6a48f89f7712394dfab65d05702b0f944f0a45bd8e src/metrics/vhost/mod.rs -ee401f943bd8b2706c33419ed69102269c08dcb4ceba6f4be2ac0861115874a7 src/metrics/vhost/tests.rs -9c96c3e4edb20dd0c36b5c373f1925dd60368e75853002206523072d418d5417 src/not_found/mod.rs -fa2fc6c6987a8356a9da92cade10db62426d8863e9cef3c0d4324c45780c5b33 src/not_found/tests.rs -c19998732c2d65b464f43d17a58644db5bcf7b4a6dd4c31a65a091c57692a5bb src/oidc/mod.rs -c4dbe0f8ded237d45b6a3977bdc7544296e4408996815cae9e28af028419d0b7 src/oidc/tests.rs -992f49379e44361d98088d8f8ca1013d62846a54a5a35c089a5e0e1a9488e08d src/oidc/token.rs -eb95c68c8639ce3ae658eea3334795cdb5e129fb2ba10955f7dffe06d8909b57 src/pages/mod.rs -86008e469c84a7242b7d4947e2116694ababa2cb26120f246d00923a7c019720 src/pages/tests.rs -5650a3f70162abd97021e0a51a92cac2c4dd39004426ef99dff36cbb0741aeac src/prometheus.rs -6c97eb9c593a7802422100e8130921e63b6b9b1b0387b6860af9f49581cd50b3 src/prometheus/core.rs -2321ee667569803dfe6c92c0e98adba0ac8fcdc6a3eacd5857233f1acae93daf src/prometheus/docker_misc.rs -cc909edf740a091f9057912f555dd888b644fa1cb49647fe0e2e1f5dba8ff5af src/prometheus/json.rs -f9aab3297fcf647295849f77cbf99197f4dd27efd6817e54c03451e04972430c src/prometheus/model.rs -f8a9541b568ade946dfc0b3353548a773a0126f705b537815ce0523439b07ef4 src/prometheus/tests.rs -028e1dd9f2ec2afaf699a6b21c2d4b0d96e76f11f5e4ed009c233dadf0f3be51 src/prometheus/traffic.rs -cdbfa0e7f49200dc70ea6df8f0594399ee3e0c5fc3d279cc336e2d83d0f8a535 src/prometheus/vhosts_backends.rs -f1b0254f53b1a4336bd8170ad441ba072b49a114e497b985cb20699b4e375044 src/prometheus/web_php.rs -315cdf2ec1479433aabee00f616e8c0a9ebe4697bd4928885433b80e52a706cd src/proxy/body/mod.rs -5beeac12ca7f041bdb9b74b2dbc9781f5d5524fcf51294b8b6ad88284754ef20 src/proxy/body/tests.rs -1ecfebeff9a6b933368095b84762e2816fae8a99339e0b854e67e9e95a937e3f src/proxy/cache_helpers.rs -2d39552aa01ce3d048560944975243d0a58ae762d838e547f5fa65007d871dc4 src/proxy/cache_http_invalidation.rs -a86b10ce0707b51e925e11ea14f7f40fa108a196166f62cf40007a97f9e17203 src/proxy/cache_http_invalidation_tests.rs -df239d37b008691d54e257626009684310e6e3712e777094b8450579d56f732f src/proxy/cache_plan/mod.rs -811a00b55b24638b4bf8a6bea9ed7c0ffe2a758f76bfe63a95e1d31bce1c2c9c src/proxy/cache_plan/tests.rs -d6bd4aafab7b1371c31b3d22ddf949a08ea942489649ca12c7615b3b2d5a109a src/proxy/error_fallback.rs -d0d64fd4dd89efd4a9fe089ff4551815cbeaf5b883ddcff803f1b13b5e918dc2 src/proxy/forward/cache_fast_path_tests.rs -7611390a02341d5f9fd223626e57e0f2f129ab45e03fb1bc105be68d46b86a9a src/proxy/forward/cache_lookup.rs -287012c81144d8f15af4a148ce3ca911d431bc59adff44e697567561aa372bb3 src/proxy/forward/h3_navigation_tests.rs -728576f7a42292386eca9cf450779364da87f94dc0031ba46c6f4d5302755949 src/proxy/forward/response.rs -0ba6b62e8560d6f7b99ca7e387f058412fd44456f5874a8258c1c24595c435f4 src/proxy/forward/route_cache.rs -28aecd57891ef67a618a0f8e4df0aee95d0cb6090facf37e531cd190331d06e7 src/proxy/forward/success_finish.rs -ccc54869ffbcf1edae9ddb96f6dc2191739f8804ee0318b7a6844def6c4693e5 src/proxy/forward/success_prepare.rs -c965dba1d2639b338f3f3cfc17f760786a30abab708dfb7920ea3bc94d4d734b src/proxy/forward/upstream.rs -5d72200f3b5308215b7a3d7b1f910932eaa4712f9e2954afdfbe2f252e2a2d3c src/proxy/forward/web_source.rs -0b03eed32b00d709e5887c179e49f7bdf0926ac19d2055af511333262039ed19 src/proxy/forward_entry.rs -9b25f5e3ea4443a63ee6f45d12e1957dd316fe8e85325fc00ea416faaab1025a src/proxy/h2_graceful.rs -30057732c35c369740a176f7da285e35a4157571a04328f6c6f1494d4ec8550b src/proxy/headers/authority_tests.rs -e87437ccf80e50e0159d204dfdd1f8dc0739b6e375be192fce0af749810258cf src/proxy/headers/mod.rs -af9b044761a56e8a6dc57f9d760b289ff4a6bf37db11dbfcd3ec4da5b8f426b6 src/proxy/headers/tests.rs -2bc63579975387c92a9459a9677b4a49e76df382b1ee19de12c8341a3ead57e8 src/proxy/identity.rs -a08ee061e146cb7a08311106f73a04468c89f77b6ad05a2c623621a2ae9faf2a src/proxy/mod.rs -92806ce1802da9b6771ece474d91a3458eba3f6ed19b0817b897e828a02e7e32 src/proxy/redirect_helpers.rs -de1763b89d98607e20f0f6e3c9b546483927cbe5450efc2e5634fe691fd52ad6 src/proxy/request_id/mod.rs -78bbc1263bcd600527bf71acdf5af92bf186267a9084b076d1f75ad6492df659 src/proxy/request_id/tests.rs -9d7cc19e78f50c9b96e8ada076e12ba96d7a19a51975a13e554c4463e624ee92 src/proxy/types.rs -e44430c54038a7dc26f327b5d7085e965241da2ffef42c1526ebfc5168981f72 src/proxy/upstream_helpers.rs -c3887e344249ce492862c365896731127b7b6fc51bbfda274d7e7aad3a70be0c src/proxy/web_cache_revalidation/mod.rs -5522456cc85948228250feac92308d53b130c4a7af98d24f669aca4dfe6999b6 src/proxy/web_cache_revalidation/tests.rs -3d591201595a3b1e928ded20a8736477a47e5acc3bcbde158f7c17547ce155ba src/proxy/websocket.rs -aa58bacc35458ac615680e774a235191f80abf0db978b68095571fce94c2b502 src/proxy/websocket/handshake.rs -c02d42b5c7eeedbc54c58e98691f7d8e39f8e9be63a48f6d6b4ad6b8ea431b7e src/proxy/websocket/http2_tests.rs -faedf6cc2bd4c42f342a0aa188b634d6b8d280ca0e121032977eadaecb88e9d7 src/proxy/websocket/http3_tests.rs -7e9c4d4c207badabf90630223964bb2ad641f06d4149843cab751f192b8b4adf src/proxy/websocket/tests.rs -a44421714aab37f7ceda19e3ec2512c645d2a3ce5dcb3da5bc7a0d87a442d6a8 src/proxy/websocket/tunnel.rs -999cbf85cb6e917db529e30ba4a5eed1cc9e95a054da7b3039c730bb80061449 src/proxy/websocket/validation.rs -80d0f744f7ad9f0d1edeb0d5c23b13cb40431f6b6f4d10d534ed34d4198e3dfd src/rate_limit/mod.rs -c85c9f05dac65cde6878bef3ef7258eb9de79ca14c26ca2492e0e13839c40fc3 src/rate_limit/tests.rs -e53c40b85792d4804a432e3c97dc13af8e29304bb0d250ee9ab9018bde522eeb src/redirect/mod.rs -811c83ae9fd0f5a13d35b5443cd37843f82b9d600bee4bb136ba9b87732a5347 src/redirect/tests.rs -244d72b3dab36ec505c96d26a967420714fd3807268820f680fb3dcea0e88c0f src/runtime.rs -3c71d8eef9ccb49ad93cf6014c5c27756ce0eaeddfca116048f24c483fda68e2 src/runtime/certificates.rs -2d610dc36f746215ad3bc1d860ee624a9233886d73a019fd243e51901503fc53 src/runtime/constructors.rs -eb2b0eeeb617cad704732d87acb667530144836e26edb0189929b1f25f35c6b5 src/runtime/docker.rs -18f7460e3738386e070f66932cd77240001255447a769d6e19a40573254a1473 src/runtime/external_config.rs -5999d7e91ee4231da88c5e9c6d8a12ea9f92d20d6dcdb24319f9f90891d7253b src/runtime/tests.rs -bab3044f4ad8957b65476a0c307bb8a364825b91d2100233b7bd6efa52e771be src/runtime/types.rs -11e99eb425887ad12b73d949f4b497fabc6897fee8fc7647fcb3766269c2fdc0 src/runtime/updates.rs -e3dbd60953db5a976985dd796e4268b41a0f3df59764c4664015bd41e2578058 src/secret_store/mod.rs -b0c4a46b40b09794fd8a037afca380ee3b95941bf75a0e1102a4e520a4bd8be3 src/secret_store/tests.rs -53bc7b1fcc1eab8860ebafccd0c9ed2aadf75363323891a4a4a22114c323b22a src/security/mod.rs -0e5fc2aff856bf6fd959cba12b5ddd1e3b3cbeb0fbaadde906c811cdfafdaae7 src/security/tests.rs -0e8589f56e3229dec556b427b87c2cc5a5a9ffaa9ea84fc2522dc72d3239027d src/server.rs -4cb5afb53c824f5c87abaa65ba5dc85e937255c4a3dd14af16df9af7e01afb10 src/server/http.rs -533342fb3bf8b52743d3a7102ffe345be9f86d553b16a1ec322e468b44b0a7eb src/server/http1_connection.rs -22fca56396333ee7a5031da35b15c3258e93aea4ead6af733fcbb1716e21654e src/server/listeners.rs -1c4b84a4aa9f120ed3b7669a145ef51e90d825c559d40088a2b4074bd84a4912 src/server/sendfile.rs -5f6a59c6085c1250a93a70020661d1e8174d3b600b494d16f8eaf7941ee3bb99 src/server/serve/mod.rs -048a05a46108f50bef7da50b0c03b752d76e586b411de8ca3f55313bbdb08aee src/server/serve/tests.rs -669ea1041c103cb952f7a516363c8fe7baf51622f721aabdd57015e0e0279530 src/server/tls_runtime.rs -38abd50db3c5742ee6514654bcfa0b854fdf6e2a29e034ac2e5d36c4b95b00ae src/settings.rs -b2e2924047019b1ada59c58a4060476151c99be12c0b4092f2cfd201c0756255 src/settings/public_origin.rs -c599d1cdca84ac18da7e7cdf6e2d1556d4df770481a0607edb96f6068cc051e2 src/settings/tests.rs -2ad7888b263e1dd9f0bd588dc35590c9eb232f8fbacd10ea7554cb55b4dbd25b src/stream.rs -c7771539fbb94544947e958e410c46b73f9647011e56b1b229ce7035fe21851f src/stream/health.rs -4b9cb1135c53f4a159bf2fdc1b0c7900653d7651612568f38c12f06e70b8ca72 src/stream/model.rs -42aee5900c3c8697c80220c77a6af0435358e3b1fdaf1a246784aca4f62edaaa src/stream/pool.rs -6ec42b8647c95a0c2025462e0be29c71481ce1c3b1f4d4193926471f1cf06be0 src/stream/runtime.rs -9346cbd71e006e41a7188f28eb86f9b00bac822e4cb31c76c8d6d2ec5d4c4711 src/stream/tests.rs -63924d279f5fdfde24d2e0663518a123dd673cc6ed9ce52233c4b6851bfb1efd src/system_stats/linux/mod.rs -d9123c623e2a97d09e41edaa29993b4b2c8cba39a3abdf2b48a205aa9a9c2939 src/system_stats/linux/tests.rs -e0676801259fb09a73825d959b89630bfa0b6f1fd1efd3006af29f60537a2fdf src/system_stats/mod.rs -050aa831b1012c4aaade63863f433f01bfacf5d3f95787e57975572116a30ab2 src/system_stats/tests.rs -6b955b13ef848e90dae1ec2906176336a775e9511f3688779203d922ff7d23a8 src/tinyauth/mod.rs -3d40febfbaf38ca2725630eed6b33106e353086081ea811107e4ec9d24f7de11 src/tinyauth/tests.rs -df98becda799b6bf4ff5e2fec7d0e0a486e6b7eca6f9f5ad49ffdafd49a4f498 src/tls.rs -2af2164ecdf2b7fd9eef7c6e358dec053dfac9aedaa501dbb75df742d18638b2 src/tls/acme_tests.rs -93e0576ac9077e645a72d164bad34cd75fe6032dd0516284d08bddd2fbda4b7c src/tls/certificates.rs -68cc35b3cae43b0321cf667a613310a4b9ec5d8994461d6f3543b1852771bf08 src/tls/external_paths.rs -937b95bb8621ab98d7cad3d223e4dee305350fbd0149b7527396d3bdcc28a68b src/tls/external_paths_tests.rs -f02bb2775e662b2d75810f631ad3da4e0b56a64ae72b36c0edeae37e979b0fb5 src/tls/server_config.rs -94b70c52fdc7bd6e32fba9eed9124d030c692246f6990d61e01b891765275add src/tls/tests.rs -ce51a3280331d67c8406d2c5bc156ac0b492afa58e1f328bcda76db0720a6a9d src/tls/types.rs -a897c48e3528565fef8d4e32f0c3c078adfb68655c80e1af011f44a8bcfac6f6 src/traffic/mod.rs -bd62b4ecdcf831d183c7720766a11703c8612d614e3abf38d2bff28df34710fd src/traffic/tests.rs -bfbbaa3b949ae946fa929bfbae3fd9a25f2ce792abbd0ed370ccf5683250bc4d src/transform/apply.rs -ae30a984fa39d5c45a676effbc880c923078ba8120adff1bff10e108350b31b5 src/transform/compile.rs -ffc0740462e5566a96912ab3089f18fc28f1c093ca65eec860fc6ea801fd907d src/transform/css.rs -2b9d5c11d4c02b4a3ad3b9bb1a18c63693f245b854084f5eba16595df47b47f8 src/transform/html/mod.rs -aa99b0d3029ef92c78371cb90e11f2026cce890d1be8e10ebd7fa9bc5cb13287 src/transform/html/tests.rs -047acd7209c1db19709801abbe3ee1076c1fc33f0fe80cc5d9b60669d5f1bae4 src/transform/js/mod.rs -cf5195ab6bacccae0082da7b3f1bd0382b73fdeb3607f4ae569ca6daab9d10d0 src/transform/js/tests.rs -b0d20cf6784bf31457ea5a853e2fa5d85f6452395a78a538392703d97e687a11 src/transform/json/mod.rs -216e24e29ea87be4a124f95f898e155f127fd959d7d5d9b30f8cd0b2b5018f30 src/transform/json/tests.rs -d13fa462d6df516a4cfaee9f4e184044c5b6345e311aeb3d9058efafe54e4c5e src/transform/mod.rs -1a56c6af6d48d52e2a73036b9bfa3cf16b5fa5b057593821e1229269b7ea4c08 src/transform/model.rs -4b52257e1a3643910b5e7043852d7218230c0021c31215d90d0f8e384f2ae233 src/transform/svg/mod.rs -0f53c64f442390ee20a59087a10f8f9ffb58053263e9aa848ddabfae1a6f3f51 src/transform/svg/tests.rs -753047a1a731596f4c87351873c48f37b39f54e730795ff7d6895c3e2f0d56fb src/transform/tests.rs -8d38f2f7d4ca4dd453cd0e2337614ec704fbd0a36d3e2374cda43f05dfcad663 src/update_check/mod.rs -c42d000d1d576721af3ffe930589388693001b8113554a7658f6dcbc665b5d1b src/update_check/tests.rs -70e6cdf339da86183b4cd07567a4bb99135dccea5b0fb4a6c37c4098ec4762cd src/upstream.rs -fe9d4deb34cea2408ac5a1030315989f29a6a7d078a46ac1b59d12aa07f67878 src/upstream/client.rs -80e9952b6a4b2241aff8ee259d286f0381b3c974032adc2c276764d14878fc67 src/upstream/client_tests.rs -56b1e4242f8153391cd9a01fbb3017a2dbda9d02e83da6bbfb39ed44854534b5 src/upstream/protocol_tests.rs -ae880b40197454ea3fbf4d2113984dc372098b2e54b97e87c83cc319de253377 src/upstream/tests.rs -5c42f1befec267293b6f03eada118a11c90adfb4b32e0134d7f0033c7453c7cc src/user_agent/mod.rs -696a2783a24f7f3d69fb820dc3a772ec49ea46ee017087952a8253363a9b7374 src/user_agent/tests.rs -d61c427c1e9cf457f1232b822d73e846e9f329cfbe61215e7ca061d53762155d src/vhost.rs -846707452ccf10962f1763be66b8f56c050b0398b48968015fb799dac289c0d6 src/vhost/error_fallback.rs -a8c5ec5095178a0656a001b0d7100e240d1f32b052ea60df37f8681269638ab3 src/vhost/model.rs -fc8af7342a3b147921e9040116af5dfe680b3df910db2416ada18198bbeea7df src/vhost/redirect.rs -2651d7e3e3fadf3de74a75eafe2bbad8d02939551ccc0504c1a092a0b33b0db5 src/vhost/tests.rs -190b2bbdc7ef5181ae4dbe1659f6f0c7ead5d09936b109d0c5be7ea2e7edd681 src/vhost/validation.rs -8d1eff4b24f01d137414ef5419f75dd281879228adb70409645b11b3c78c20e9 src/web_server/config.rs -9744e8c29ae72a4d9fbc9a76166a97f8292c4c312295ea40d1cb699e03d80a9d src/web_server/config/compile.rs -5ed79fa5b9c53f95ca200d89a9ba927dda816b61fbdf3b852bd3c9670e3d2d4f src/web_server/config/model.rs -a863ad1337fbc353c0f42caea4ac8b3644792e2aa08c37f992b7882b4b8dc6d5 src/web_server/config/validation.rs -86c744216d7132d8294a6e90ba9be5fd871646006313d1c62506d40c81db9b12 src/web_server/fastcgi.rs -54aa2dc94df97faabd4859a9dafe6a7cb1ba3337bfef5fa51a4432097a985d88 src/web_server/fastcgi/protocol.rs -fbaf972f9dd2842ec7df2878f0105c9ef4a877817f037f2332c4d5baabf2ead9 src/web_server/fastcgi/response.rs -92d2ab4d7ecb766bbc705f8eba94c1ca33347ffb84b36e0ad0eccfed5915473f src/web_server/filesystem.rs -d4fec3682532b0f2d11a0aefcd024f69fb623a39922ddb6c528a2d2de265347d src/web_server/htaccess.rs -b4646f705e532f682d6152b6827cc7f4f915766ebcb4af89eba9950965673772 src/web_server/htaccess/model.rs -a484113f2c1fea4e98a437acd8a28be6490d7e612f160a8728ceeaadd363f8ee src/web_server/htaccess/parse.rs -6e58e2674940bb0284035856fe9299a0555fee4c566de75e174deb373c3b164f src/web_server/htaccess/rewrite.rs -8ca74d9cc4470045301f70eb4a9fbabd0dbfe74434429148d2230df9f996c06c src/web_server/htaccess/tests.rs -7fe32af33b4d8e079ad724665aa1cfb62f6e98b9406b77168feaac55dac36137 src/web_server/metrics.rs -0f74d1fad9bc20a5f2ea1753381459c072cd8068cb13e7dfbc74e33eb3ace593 src/web_server/mod.rs -e9ba6e09ba2c8f8a33410c219d5ea29214cc53e279a43b17c110d24f17a5a71d src/web_server/request.rs -d98c80663847d6d83073df074ebff65952755415574708abcc153bd8d3adfaa9 src/web_server/response.rs -b38a1c9e648e3606a534ebdf74f6315863a326c6de1ca8edc433abe9c1fed7b4 src/web_server/response/file.rs -4733bb1824dd0a12b8804fb8d00791c3f9fda4c09b41503d5d8079d9607df058 src/web_server/response/file_body/mod.rs -e5f5fbe702f66bfcbcbc1d1f3cd3d89bdbb929bb86aed94868a2a06a4b9e59e3 src/web_server/response/file_body/tests.rs -7da903c1a69be0ae6b85772b3208c518679efa8ed9d3e98adb694483518156b6 src/web_server/response/headers.rs -2665d4eac9a6430d68224874784cb65d9b9d424353af77735caf044401d08cb4 src/web_server/routing.rs -9e584eb4455a18641c2c89f9e9725745c93f32877abf0f0f2fbea9e3d5ef38c3 src/web_server/security.rs -b791762b4ab7a43c3be19df84e523faf3dfb4df055f66d02178f93edb60d2204 src/web_server/serve.rs -714418c86ab241020a561fcf662a8fe324a6a70cc2fd3a313c56d7939c14b9e8 src/web_server/tests.rs -f00743af2cf4a5952caef7a1dcf68e7817b5599a252a9973e1c22045517c0b0e tests/fixtures/argon2id.json -102b83171a6429b6375d8001d6c5294702385cd58ee55727cb657b1f3566e877 tests/panel_icons_browser.py -52e61c389a60d147184ee76925cac76e454f8f2e3cb91039bb06e17787ab900f tests/panel_icons_contract.js -01af3008be27fabb486c141c67099af104f2725cc56f4c656aea9741a3c150cd tests/panel_interface_contract.py -d6731b46a5a22605cd5bcf996d9f5dbb921aaa455395ed0098bc808c6428c514 tests/panel_refresh_contract.js -e24a0f84f1bfc46964df865ac387d651f7b384d781cbc8f3a9a5b0b60f3d69ca tests/vhost_auth_selection.js -eca68a07c2b1e45fdb8f512294f5a432db3ae5a6aec8fb200b47f155cd9a31d6 tools/README.md -7c30c280d0b0a8bf855eeffab583ca34dc161255f7ef6124148aa979c17c26d3 tools/dev/memory_load.py -d1418f8e574a7390fd45a2aa879bdf5720b773162d65e295ab0350506aa5220a tools/dev/mock_auth.py -2d3ff92300b09ce9cecbbaaa9309b4d33160fa4b2291c9952b784e8cfb599ab5 tools/dev/mock_server.py -c711154a9df425a56607bd88f03815ffb408213a31a2b66ed1c1c9a6301a2fc6 tools/legacy/backup.py -5421082e24f3794356331157e30b428f3221a0d74c0b5d060bd4d3989e0bcf3a update.sh -56c702111022e1ca2c8f6b72c635c749b05936ffe6387bdb0a202691614cbc96 upgrade.sh +61bf40a0572889dc8b0dda9eae4e93e44b0de9364b3c798106c85700ffb37c23 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/.dockerignore +4140a2956264b44f259e6a37fc00ba02097bbe68b09296e04d3d243c1287129b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/.env.example +e76e688874828e3743d03693b1d2872b9633b4db09909673786caf30f7cfe489 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/.gitignore +8007bd50f172afa9030b44e46d7c7030af387466c7c31c365dd9521a0171a58c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/AGENTS.md +e4a89126bee0eb26f4e598f4bd6ceb38b649415afd21781071aed918948c63e3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/CHANGELOG.md +ec5374a1dfe13f26d45d55e94a6e8d53a9ae9aea31d4dea8599ba07010da0a2d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/Cargo.lock +a3656e331f57811d45ab37ce4c48c069e92fb5aa9b756ffc07ce993d202d11ff /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/Cargo.toml +25c7f3c8162cbf5cc156439774118a81dae9fdc52b611ec7e40c230fc99a772c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/Dockerfile +0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/LICENSE +82d1dee2fc68158f0ea73259151461e64c8b18d807cd1fecfb1ed99dc30cf5f4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/README.md +da8311e3db945290666324a2f24bf4521b365272d7ac3f862ded1be993eea646 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/UPDATE_CHECK.toml +c0df6b46bf795d49d00fcd9e2a9247aed0d3a99b6cae1dc5ab6614e8b3d30009 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/build.rs +95ececaba550a4bcfd6754073877ba0633373b1e1451521b9ac905a51e8ca6eb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/deploy/README.md +13d514de5042a230cacf8c10abe1ef183c94ac799a89b8e2c111152ac7c69b48 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/deploy/rustproxy.service +c111f5b20484707b80efb7dd9176acbaa27b63ac78db497261ac234821e1fade /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/dev.sh +d213e774a9cd07bff0c79324722bd05c0aca18cc033d50b2c0558cdb72972bca /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/README.md +e9f18b358a740f1fe16e369ed16ee37581b8ce4c94ddeb34a1a37b89a49b5a06 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/certificate.go +600d5aebc8557d6987158969d494bade1ba46ccf9d1cd573d357d0106db26b2b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/cli_test.go +067793eee01fd284da66f79c6f8b6f19f8773e64f84af03168c8f751ff044685 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/credentials.go +5e4f565c3c9de4dba897af2e801ea646a83395e72eae4717a6d502dff2fcec10 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/docker-agent.env.example +ae660c2a90f193167b166977277abfc86a25e043ab4def4c273b2a13d5a51b8b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/docker.go +9e9f3f17f38f9b0730f598f65988ce8ef562d2182ef6778fc7292b990e9cf22f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/go.mod +7b70bd43a7f39bae8968decf4cd76af80fe0d08bf1bc53b894d89ead80581d56 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/install.sh +b7d0466f70b541a705d234fc8a88b99b6197fdd5e682d3a288a78c76764358cf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/main.go +d660f46f7ef8c539dd3f5486a31d5a1254b9737be8a278c7f9352c254558f8ac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/main_test.go +351bcd0321c823694e12d578f96dc68ceb929979a70146d12af5394f639a486f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/model.go +e52b31d0abf65ae3034f6cb367cca113633014ce8d1d799ad4dd5624d2c7b8bb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/network.go +634790f35ff4627df2a78cec2ed371f6e9ec9df00afb386075595fc7f3ed72eb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/rustproxy-docker-agent.service +5220d669171ec3ad65f50e0bc8de5178dadaa4904def8e1a4f61002aa9e9a55b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docker-agent/server.go +60d108fd168064e4d6980ed7499f3219017f9878c743697e77f2efc592e4d629 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/ACCESS.md +5a8821f28a1f529263db462a0ed1f7c082ad91b5936491806913e5cb5b274fd9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/API.md +728b15b9825f547f34c4121219784798dd046fbbdd72ece8906d0cd77e8efc64 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/BACKUP.md +4fb55a549535f37467f14536cbf0db7be027ca8a019c2919a384af4f23655300 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/CACHE.md +32599d67a11fd0ebbc612e82b9f602789f4ed4103cda482c6870d8741100c8b4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/CERTIFICATES.md +02bb383b5c3bce22616c3cc3db30a9469806dc16decb509973e84c60aa30fc5b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/CONFIGURATION.md +fec29ce846d6705eb45819d85d382f28e28a146b265feab2e4c7cce2a35e5883 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/CUSTOM_LOCATIONS.md +9c54b8da03adb1bc1a3db96a72fb99924dca25eed5ac662989aba18ca226d066 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/DASHBOARD.md +11a08bf2110bbeabc924eb049a30177a216af5607ccdaf8be9178e751f78a2c4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/DOCKER_DISCOVERY.md +3e7e63d1d8f5d5019d5e4fdbabfe44fb39c2b75e7141d9c94846d946f34849f2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/FEATURES.md +3939c14e83ef6856a421f358a3f7fce3d50ea375bc1b9f0419f27a3eed658f6f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/INSTALL.md +6e37859bf0dced99d4a7db93790cb38fcd90191932827946d5223eaa4c784fce /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/LOGS.md +0e9ae9509a78d00951d2c7c3f13eaf518d1f3448a29b048f5933e1f5f8440275 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/MIGRATION.md +0972248b7062b37e61edcc34dab5fe73ee9bb50195a0aa475c72efa0dd311aa9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/MONITORING.md +e2e8fc307885bd02c177aea5740b2ac767fc7bdcfe7034dd75b8646f3014b39f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/PERFORMANCE.md +d5894c07c68ec4230987767198434abee13b0e525842fea21bcbe752fa82742b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/PHP_FPM.md +954b1602c865e157c867f1c81dca615f2beaa33c34de0b0fa8a6069db2aae7d0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/README.md +490a6dbe870f2b1fd4ec7816768dde6c86fa7957fc9de2d2f075e123c9222222 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/RESPONSE_DELIVERY.md +70e8c8f3352629f5600537058b1997739d9e465747cf3051da8a2cc779c3b728 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/SCREENSHOTS.md +3a48184b36d225757fc5e2d22c629f89bfe5d4007ff087f0be0ce02a5fb04c28 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/SECURITY.md +bbef60ff1771da9f48af812987766e1e479408873ae2f079b13f1d5c62ecc6ff /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/STREAMS.md +8cfcda59060106151f13e93ca25c1280b4390433b3fbe2921a6eb3c13bf9766d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/TRANSPORT.md +be6e8af62a7bf958b94ec15e9e3263263e511d1d33abae4e45d114833fa52b07 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/TROUBLESHOOTING.md +b4abb86942f665230904fad570c1487bc173aa84633801e2999f2bfa197de4a7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/VHOSTS.md +e67928a9d044e71b681c3e52f9dd8b151d6b72f965d16d5da8b0eadde98b70e9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/WEB_SERVER.md +3769f97c74b1a4a2f14d82a6f9c30fa3ee48892f423bf82dbd2ec1bd9280e45a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/about.png +a85a7b9d8cac74fb1b231471d313e6587ccfc2e8abd2885a79067704176c724b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/api.png +1ec8e47b6c10a905d8ce63a060be3f51efa3bf2c12529456a8c3d3a0653db95f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/cache.png +02b4ec5bc7e39aeb8f8928a015779b431ee12c4c16733954631de0e6699388f6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/certificates.png +40d0a4d28c3938612c93425a308c895dea0659f50c661849ec5bde606a141a97 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/documentation.png +6e7f634d6c0cfe8f9fbeba129d745fff00cb8bc6f388de10c4c158ae4a854a17 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/login.png +1f921d98aa16da3a43bdcaa46ade68eb921b1d88d95a8fa87f0b51b6f2a8db9c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/logs.png +74c23173c2299f8ee150fd8fe160ffec0cbfb5f63b89d8debb1789fa4526fb19 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/overview.png +585f7f450bb7dbbf32ce146edbee6555f849903d1abbcf665a75b5fb12ef36b8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/settings.png +fcfc9f1b932e243e2133061aa996d8ca6f8fede830190865b771482f4ab01ca5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/traffic.png +d50eff63d8c11af616a794d24967ca16a2ad827d9c3ec47299d578419b3c449f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/vhost-editor.png +bb977580c5d93bd7f2eb931c795ae7f4b8676f316d0fbd1552f78e2757dd79b1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/vhosts.png +28549d423d6976181d9b4ff9e13626ccee3b4c44db36d442eb6b3e20e9f90d6a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/docs/images/web-server.png +5502e8ce44276213803b66c58e3a4d804a1354f5ed5d83f47ee805e8c44ab088 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/acl-headers.json +2431dd88a2d9ad2cf3cd4b8fcdfa602563ab1013c612d8917fddbe7febfb2dc3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/cache-dashboard.json +e31ac05a99615e4ea6c4c9a8b2e090968583fe3959f838a600b5740cb170f8c5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/config.json +39cad993003930febf98460311d185a278e7a9508b6b591299d9339d0f0c51cf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/empty.json +695cc7621aa403148fcd0868f351b6e9ccc076fe35610e779af4a72f94d7d5f4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/http3-vhost.json +b26833cb4251f9390a44192ecc827ff7f052fd19016a5ccf7498c94503ab4ce3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/mock-vhost.json +a6b835dc07defc12b8f0e48491d5f413843c8be2ba4501d7c28140a2822b034f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/oidc-vhost.json +134d4a59727b27accb3141d4cee26a4a74157d236de4996bfd682e639462b2b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/tinyauth-vhost.json +5a8f3a8a054abc89c6e78896b9fe2f903212199a24dc3d2d2bcbd0696a31bcde /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/transport.json +d242de9614fbb52933b4accd32f4715ca94107abe4a3b1d7e088362b07a6ba60 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/vhosts-balanced.json +af2bdb1343a8141069e94ccd2c7f92574ad848437e2f9fdb5c7576a9a18ef4a5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/examples/vhosts-private.json +35e4f3acc652ac23a9442600c4c76173ae34966592031b3e942b62c249fc869e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/grafana/README.md +0d389faa4f64f095e9ec62cbae329658682b96f5e4d02ead79c7d2892ab89fa8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/grafana/rustproxy-overview.json +1a041c505669625a7f0f8011484cf5b6d2ec69a7de859801312e4fcf4c8d3555 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/install-debian13.sh +909e9ab94617ace74a425f15084bf85f3086cc52ba5b28f2b441ff800abc6ef9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/install.sh +42f9f1d18c021fc7734b5bd020844bf678725a0e539e2fcbe05ec676f6239eae /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/README.md +ba753f69557bd9fa990e56beabebccf39f93b5f6fb7e66a2e241c8c461dfd763 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/opnsense-acme/README.md +3a1f8c326618a4613bb35f9e83428f6d1cf668b9e37b4731e5d38c3081fc94d8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/opnsense-acme/actions_rustproxy_cert.conf +de6550ab8f48d556d752c252212c38ba65491fd224f972c10fbe552f91ed7520 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/opnsense-acme/opnsense-rustproxy-cert-deploy.sh +73784ac652708b04ca6c91aeed4524f51f50d63715bbeefe7f5590b353e78943 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/opnsense-acme/rustproxy-acme.conf.example +45be151cd85fc2ef2f1fdc3003ace63381af262e73af8a685ab48cb697cc0de1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/.env.routeros.example +11aa102de1089ecc375f20c4bd5420fcfd3b2ef23fe0c8bdf04953fcfaf40ef0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/Dockerfile.routeros +7c7a3e51f43b43e1c962a4b0bb591f99c1f06977bf77f23719f7f867dfe7eb8e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/Dockerfile.routeros.dockerignore +97b7819edfaed798a9eb51f8feed74e68c45f697e85420da8c3444e328106aa1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/README.md +3f092a9ab80221eddd67be4d1a776acbc6e04c1eb6011b588280c28e83b2582f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/build-routeros-oci.sh +3f267cafa16006e5456ade78ee2d5fae02cc7ce747839523068ffd8d7c98798a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/integrations/routeros-oci-build/docker-entrypoint.sh +13189fa546c3488dddd8efc80c47f6da5241e5fc28b79cbfe795414ea05c7a4f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/langs/README.md +d86c6082998e8c68100b16b0550454df577452fe2ff37d487b25957204463ede /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/langs/en_US.json +96d6cd26c0d6b425b2fc4952cc0b0b51c749ce46e7471fbb794000431a34b51a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/langs/pl_pl.json +9664543e4d03422788a65e42f968c1f026c2235cb5be6fc3e0ad318997077538 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/make_zip.py +e830d37dd1f81a4b0aa7d535f5bba69e34e433b0fd99cc8ee0b296786c32379a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0002_admin.sql +20112cc82192098b8d602f1c4f7ca08712e9e1366c845fabb92753187c370d35 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0003_certificate_renewals.sql +5c62da30fa9db594a4d656c77ae676d3c388072b6a85f91170ec7d911d7cde43 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0004_admin_preferences.sql +57dc28982f416874d5d00d1d438a18846d1ce35cb940c4bcf67fd9a8bc57339c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0005_certificate_api.sql +faa7e50922bf180c363f7627fbcfe8079831e36282220d17481cf69bc64b57f1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0006_certificate_api_credentials.sql +f093aef9639a959a2522946995a02d2e67c464e794c3ef665261a9a5b348c968 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0007_secret_store.sql +90f6dce865496e018c047133d3bc1721fc2a19b2f4ced22e2a3625d9e9ff18ac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0008_config_history.sql +fc7585fdcbe99fe3496f0e62f4c4e2161f4a0173222ba4950331aec6c44e50f8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0009_certificate_api_grants.sql +d58a464870895cbefcaa2b4adfd6fcd0d5182d19f2528eef6509e190046cc9fe /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0010_dashboard_presets.sql +e56ac3718ea7d73fd9afb1c3b44ca95c9bea424c32166e37ce913bee0e67a277 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0011_tokens.sql +273ce62a518657853428ca44dfe4dd2a56abbbbba684e905a2d0147d08359888 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/migrations/0012_admin_preferences_size.sql +478220552ffeea3de00e2866d427d9f87f4cfc4ae5232e5c3a774e62425b1e0c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/README.md +91233910aa4dab07ae917fef93d018a7a0beaab697f9a0bb889ac613e595cca4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/check_rustproxy.py +a42e01b341725c9da0928edf40c8c3b9c814ef90592f208c52b1f2c56a2ad383 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/check_rustproxy_api +ee50f38c037765fab742e888d4b9fc4d874c31c785c6064d4eca3d2c4d24d944 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/check_rustproxy_backends +1465396cf1358067e9fe48b3d61f28fd4ac65c577b67c502950ce6b42ecbe3b3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/check_rustproxy_latency +6e036f736a2b40feb78eec17bf34871771524190f283591d1c89e48e6d2271e6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/nagios/check_rustproxy_queues +7458b2d74495e6fb1c1edeea4d5a793705476431dadb60627187111f91441e13 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/rust-toolchain.toml +fd1c34599f725ad5f7c3c0cc89e08b11917baef02c83af054ac8528b2e01dd8e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/README.md +1d63e9cea61a744f1bf2085cbb7c3d8755b3eda1569c8532574dd4fb6a840678 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/__init__.py +292c65ad2a7f0ca13da4a00a836df17c3192728dc02034b75a6a70eb6b5eb25c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/audit_css_usage.py +5fc5c7f274aa5a6c07970f7b2e548acabae3dc2a24d598308fd768a8d9de2510 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/build/__init__.py +c3066f40f152a2655f88314fd9cf784eddbfa6c3238a494da13d972ef9ad930c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/build/panel_css.py +5e98d6c30047512825f5dc1c42709b82f0f6342fc0db8346a67ae85ffeb40c90 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/build/swagger_assets.py +e4d15aa6aa864d04b9b30aca33826b833632af02ca643f8b23e219a5ea1298dd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/deploy/deploy.py +618603239b000bbe4af36a6a6ee268758af632c761fc53fc6b7f44a4a818bdf1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/deploy/deploy_core.py +992c9a806464fa10902de5be102f1609469986331fc0ae223a5b5f8507153574 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/deploy/deploy_runtime.py +a59587ce8ad41b1bbb431356b58398f9c8ff7cb96a613a91752e907a70e10c2e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/deploy/upgrade.py +2cc658faaa610b21b48942c59b955525539ad4503fd60f2a49c7e626a22faaff /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/migration/migrate_npm.py +a459d95bbb0076f33ade8b273b813308167f9d8d45242b309a2d18320ca0093c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/migration/migrate_npm_api.py +4c905a387f210c30fbf12a7738676fd39819bc96bc4a272da1db5f18a2d3013e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/migration/migrate_npm_core.py +960fdf97ec899107a567405e9b9c2b70ee16951d5ea26c37d885a7920f7b3aa1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/preflight.py +3d6a0503afc25beab79ddc86864bcbb15248ded7368d33aa64321b8cdff59933 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/resolve_dependencies_0312.sh +d759315babd9971b354d6f702d4c861eb1cd5c41b1e2e0f1a94ad4d2c2db49a3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/runtime/acme_provider.py +e69813fb1d3a4cdcfb7243964cc323fc21a603087bf2e84188fa42b9d3cee4b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/runtime/acme_rfc2136.py +91c883cfdce94c8c22c98749f611317f538a112d29be4f3fb1fa460b8f29ceaa /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/start_stream_backends.sh +046b4282550f5cb4e53906665c91c7442be70fc68fd0743466fd832582f7c979 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/test_stream_tcp.py +f0b48ec0cc4411755cc0b4128eebce710375afa99344cb76198cf31074f8eb63 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/test_stream_udp.py +22e880e98c7b9d700c7a4c02b9b1d543e5dbd1f4ecdca42813a1083165b32a19 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/scripts/version.py +78efae6c43732c0f5527d467bf07d1f890da361925416c89b58bc449d852fc2b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acl.rs +1d55ecb2e104be1d3b19623a1380584724c106ed234d2e79fd2a2fef1d891ee3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acl/dynamic/mod.rs +1eee2ea2c8dd6068dd0bbb058a06d26436f14767d8efbc2010bbdb4e3e523672 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acl/dynamic/tests.rs +50d9a0009cdcee6dd34a6215755d98f38ea18fa39b9faf070d1a7649eeac6aae /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acl/tests.rs +6189029ba493982acc38c9dc1f47fa1f0c933dec5ecfb95b60f8be83d33b5aa3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme.rs +b9eff08fddf9b8787aa04e72288ea2ca0033965e4563d060ca51f267e4963918 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/jobs.rs +f7f737aa28d2d209f4f20a221885e3bb3596dfc8e3c8c9a22ba53bb975c52df8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/model.rs +b77026ad33be84706112881dde840e0fe4694b150dd3087d8e106737d07dd464 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/providers/mod.rs +d1dcb7bdfb7cfdc9c3b88cfb6908201c58532bc888744a13f45853079f214659 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/providers/tests.rs +c51fd51177a476be6462ca980e9bc13f0d0b41538f520118b80a685130f0dbf0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/runtime_bootstrap.rs +5a684eff5f3539c7bb8f66c3b83e7fb62527c52c61da727079d3897e0943f952 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/runtime_env.rs +2f02b08d88ad3c1fc9827e5bd3ef463effba633834d9c05e9c0d6d2a0e8869c5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/runtime_versions.rs +cfc13a293c126bb511745859669719a14c72dd7ff6be197bc9e0d0e560deebbd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/acme/tests.rs +b28a08ea996befe10949676f40fab5f1036a274c7d0ab1175cf5c43c59849dc3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/access.rs +3afefdc6640d35bd55f20981e842647573f1ba80248680f99ba79eec9a7c4ce5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/api_token_access.rs +5f5b150bb8f51f57462e519650093354ae7b40fcb80c4380fd3391a33f4b30f2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/api_tokens.rs +34e851f725e8605e3c5d9946e56ac035996f3bd9d608169cba3408060d229c9b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/certificate_api.rs +4a8b6406a44508b8ba102fef0d8309e871dbe0cbdbee1e6c8721baaca0c1aee1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/certificate_inspection_tests.rs +aefbef9839f9914ba05ea62bceff1463da3042b52ee851181ee39d4fbf7b91c3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/certificates.rs +521ac794501570cfa2e8e50c3a5cec2ca08ee4dbce8ac9c0e0310c09612f1062 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/config_reload.rs +b7b0d3f0df7683b031136c05b314e206f7864e70514fe25165e41fd7a9382854 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/config_sections.rs +b1119d6e713fd3af967f0058b2af9ae5c3ccb9d0be66454872e1f6cbd1a7d552 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/dashboard_presets.rs +aae1ca0e70d987830bd63948d431f54302083148177c1b551565be12df7fe771 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/documentation.rs +928ba7aa54ea742877cf267ee7ede798f95fb75839f21492063ba53e5e989882 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/documentation/documents.rs +b9c2952e3fcfca540d0ad64f2d3acc5c1f5240e707f4f23ef4d452f46fcb520f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/documentation/tests.rs +1ce779b84aa8f47bdb3c34f83593c1f2f06d2235f0319847096cfcd035434168 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/file_log_search.rs +059218501907355b22bc84e7e0c41ec72565af283f5e97170ce7707ea5874009 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/file_logs.rs +d58a2ed83319176de4e66790ed292447c9497ae031464ec55cfe27174acb639a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/file_logs_io.rs +77b8c05645969834cc8a58e249a7b60a57d6c47ad1c5cd92ffa5e4a9b5a8e73c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/file_logs_query.rs +743bb7436f77e04015328a0e7e7d425e43ef8aa8d61467bde157e462c1dcdc2e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/logging_api.rs +243f4a9c3fa99781e19c3952354d2632c0ce65e1dafac729567cbe3c177f94cb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/mod.rs +28fc4617820aca52a552534184b74a07c4ef09a259ac45dc754b44934cb20bef /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/openapi.json +f7a356109786635dd58cba590c71c796dbf36b47f25845190c75ee5c6a9fcb86 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/operations.rs +257d93a29d0bda96462bcf695aba8d0ec0f9412c379e066ec46ae8ee034e3a53 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/panel_assets.rs +f5127855c2994d052678865df36d703b74f4a0afc633daf7718b10da18d26e37 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/panel_content.rs +229efd2691e51755f402ee04bcd9b806e3d3176c39526b9f7c2381ce779a7ba5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/preferences.rs +35a7f99c7448c90b8637f4b3a7becca138f1f378fe5dc3f87122151525bb20f9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/preferences_columns.rs +a238feee9afce314b8f6f7257e5488a53c4d680f33450a4e3e460fccbe54de88 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/preferences_tests.rs +62ecbae5dee00aeeca3eb806e2605372471dfab971cde8f66f11e711df8fcea1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/public/mod.rs +7a00e4ab943f74d2b1bdcbfab7f9cd3f584e9f59536b4aca6c4c31f5f5508d12 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/public/tests.rs +6930b4f4b45257772b321b20a9becdf9bc4610274852948ba38c2d0cdf02dfaf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/refresh_preferences.rs +fb4ae8f958e136f46c50a3db8347ea10123c2a3a775dbea7e261aa0b3c7e7994 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/router.rs +e135431cb078ddb483165581123c64af8f00ea67acb3a395ec3e53c85d0d0d45 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/session.rs +7aeb784a3ef58795c8fe26467bb4e1a00e61420911f798a584ab09c12f73a754 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/status.rs +2d5b4c28fd0bd48b06890fa8ec44a2296de948c1f88eb2909f4b495710d4e13e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/status_live.rs +8315c856cd50f1072593ecb30c274d42d82f078b5fb93e7c68a8857cd81b0841 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/status_system.rs +cadd7dca29b9aad8c77c7bc23dd249ea37a15adfa4d636a8ef00273a91ce35dc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/tail.rs +d8693d5341ff5be2dcda5a12bf55f173773cb9eb642862d9f4b03c4760ebf8fc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/tests.rs +c18c369124368f58524652565102817ed69fd25b222b0c5e737ef7632b45dcfb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/acl-picker.js +48fcd818c522fe80f2c7b2e218f87de6a7772ffd0a24e93502780b03ec78e335 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/acme.js +86abf50f39862d821cd2e43ca425671aa85289272915132c5a9a5dd1fc4182e2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/api-tokens.js +faa9735c2a02746b2954bc4955eb609f94afebb685cd5521d2629640cea2777a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/backend-dashboard.js +aed3aea4eef0011c6b51d39736782e7d1ec52662e422f40e0c7b9ddfc19d0378 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/certificate-inspection.js +f6b0533ffd6d0e6471519120c440619a7fb4b255854ba3dd23d81cb35cd21afb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/chart-scales.js +e5b39b5592ba81292571033f26934ac0cd42bcdca7395e91094973cecb3eeaf8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/config-history.js +2e4a18d1aebe9e35255ed15ba2fa17015bf5d7f3996867394aec756f2b7c67da /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/core.js +d695ec90fb5c98c27d7ba1d2bebf54f9840985fc530efcec3fcaf48d74b36c6b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/dashboard-inline-layout.js +e4238322a985d3e8b7f2de94b7af31e1c718775590b2c7b3428b878cd43337b7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/dashboard-layout-editor.js +a184c50e1ca6bb5a14954e31b15f09ff9978fb939064ca724851bbb4e661dc56 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/dashboard-presets.js +0be1024d9ff657044e04ed71f275cff3b432406d5fdcdeac726daaee54444abd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/icons.js +e5a92fa1cb7e049082f0764b245560c41a9a34bcd8a9536fd872d9169fa5465d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/logo-animation.js +32aa11f041eafdf16e66adef6f5847a67413785224da2c19ecbf825996622aff /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/overview-extra-metrics.js +5e62cccf6a9507fe208e9f41bbd08453c3d8c6a6b83c56d93a2bb22550ea6e9a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/overview-masonry.js +4d1d4760cdff44771c9d880a7c0da81d7233ef6e3a4868111a522703831a7a54 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/overview-samples.js +db9012546cae8c58fc2bcbee71c9a95956a13a6db9e6d126c6a3770d45a4e4d2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/overview-wide-metrics.js +bfd9fafb3112197e8f875dbf87a9a66c81aef0fe83687601a84a66f5e13f69bc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/path-permissions.js +e540119edc555cefbe5147d97e06527adf49c984ba7a4dd51dc67603d3a46041 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/preferences.js +9e2b12d34ab1fb29716645720577ad49b16c03b46c482a03695e8f645d170e79 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/rate-sampling.js +3b8e566d81a5b94ef21c73e7805ae128454f085554de9358040de266bcbdb0e0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/refresh.js +5d1e805787530644b8853bd7f48d0efb1dc3f4829ca8b11eaa80c57434b8841d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/runtime.js +31201586925e6f4792071d7d03fb05dcc4a69a03c02a4e85eb0746f45af68074 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/session-resume.js +c7a18238ac426de4d1cf84a395ee4dc66410d60a57a3822695dc10adc668d956 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/settings.js +b7ead49224a4ec67181d3f24f9d9634bd6d76756f826a4d5d993300637d1d8f3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/stream-dashboard.js +7de070cc8cdde45d7e0932259299e341e25b32c9ffbd87e4fcce934d0f090de4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/app/web-overview.js +0625f3bfdd8f67d375fbb7204fbed3108fb5091cc12c4dcc2b60b26ad97223da /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/cache-panel.js +9f323507649910561518b63cf6632e81b3ecc4b09501ae53b635705f34ea6587 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/certificate-api.js +4810137aa4217a86770617d442cf5dc6bec0d9f19e20bb2155e932a9a111cedf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/00-tokens.css +ec3ff1b7824a7f03ee6d6b7ae9b6e0cbdb300e4891d44f982b6c04b3870f5c2b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/10-base.css +8a1996d37f138790c12a704deedde9de74f733e7dcbb6be816fd68c281e8e0a9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/20-shell.css +9495c1b9f6a2cc72c1d99b4ea8c3cf3706835cb4670b53d5d7d71ef41ad62006 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/30-overview.css +2d703473f7b751b587c32af6954c838a3160e9efa448236b6abe291832486b72 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/40-editors.css +87df062d7478176641364c07de396ca988a37b1a8bcb892b53cc578fe8471850 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/50-settings.css +eed482c4b7dd247682c135fac132bb66e501511423ca53d50e9a79f4314cbac5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/60-monitoring.css +d9ea4824dca9e355521de8d49f0dbf5fd23fa9c0d9a91fb8719498858cb1a80e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/70-responsive.css +8009afdb04d5170687816730cc930a22fead1fe0248835ca7e8de81d6907395d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/README.md +8241bd9489dfed082863948829a44a49bf0a8e9cd63c55809655109e393e0918 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/css/manifest.json +ee51ab0912e0ade6a3e1c2ea6f533bb2f65a6d3e6ec9087e25b9f0df009c19b2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/dashboard-defaults.json +20d65b22900d0de2f71dbafee2fe9a237e0a76515b386022b94c75d50bdfd926 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/dashboard-widgets.json +50d1ebcbaf4d0b2968da23bb943fc3f67131c5d32df3f61d23ff37aad9da5b81 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/demo.html +3283eb1f0bc29a02590d150b41247bcfd881f88febc6c9df5bdf6086730b786d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/docker.js +fec062a5959450b1711948adf3189ceb37edca6fbead2e5bfc03b7ce397c70b1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/docs.css +aeffd403fa1823df7d9fa4c48280b4033b2d15e4cb9f66608caff89290de0a52 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/docs.html +fd8506a91f769b57b62d9d8e389fb67764599354bf702958a913be79f779707b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/docs.js +c52c430b9a6e584012e6014709e1e16ae7e775b2a5aedff8eb767fa867c1cbdd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/drafts.js +007c24189ad7b497d4da024fc52e6c51393f91ee135f525a356e1f14882b7632 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_400.html +232b766f278ae4424705af351910677fcd7ac9a20bb8320d9a12b763c91219a2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_401.html +16293363c7848471d866092fec5e83023df087aa824989e87450cee7b7ca1263 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_403.html +f7d0955ab18c15e04369204e789f341d2e832f927c1ff20a3b2b9e35e7898f00 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_404.html +64126ffcb39dd9bac7772fe737267f8d9391ee6b750d8b84f024f87a6123db3a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_408.html +4ba01f7a53e9ca914e7b2100c1d439bc56e46be698a9c020dae20159759120ac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_410.html +f2cb26eec86b6c03151072f847153df8aea612d840ca8b76367f41b9605bce64 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_413.html +7dc3634e3d508176545936f77db9deb3dc51f0abb71985e1950aa91b81b6f44f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_429.html +6fdb616c086b2769e3b484133415a6f8e9274a74d03ad95657eec480b3a28b9f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_500.html +ff72fc4c6a11907a16234c4b3c7d7f7bcf82eb72868dc3fbf654b04aff806fc8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_502.html +386b9dc3aecebe7727f7cf7bbd2a02ab036a3abf01315975111a51559128df73 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_503.html +e6c4d91d1542d0a5b47bb8736f9539d43a6713df5a473b635519d5b7eac2eb9c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_504.html +003d382cc8dd69ad7237679632c04a9389366bb71dd7dca8ee64ee06614aa9a5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/error_auth_provider.html +0a5fff35555153f59d4346933030a67b6e1a8768cee7a47cfa2fcf1a2c564f63 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/favicon.svg +7cbdef9192a9dee1f8eac42b85f52b3190f7f6efae50004aa7ad116a910e4036 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/file-logs.js +cc9bcae4d2fe37f64cb2dfdd4d91d59bdf6fee27049896f33b899555b30e7f2c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/host404.js +0a7bd0afcc0f65fced7dcfc1dfa1469a8ed6051af274701c23f94885d8e9107d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/index.html +7979c490b7fcfcd8f5e52e99fcf7757d78509337a625341c98f62c6da50da374 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/integrations.js +7a12f020fc587205694978ab41b660e9a80487d413fbf6e34fc525eabc58308f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/login-keys.json +ac9f667273918e18406df06cb2613c923f50a88897693a03a18f500e22dc6ec2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/login.html +c2e5f554810b8e34fb47361fb90a01073a2e332ee26d82e030956fad3ec1f83e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/login.js +a74b0d8d9a5aedb4d1ee4b7f7805693ee3cf2152054e35a310bd72e81ea1ca4f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/management.js +1f3d10e389c9c20e6eb019509fa6e82b50c6b43bbf988c1210a4d42bb73985d0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/partials/overview-charts.html +32b3f9b3ce9d1de928d2f23265d09b65a135fd045d1d24b98e830922be21432f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/partials/overview-metrics.html +3928afce2ed6d5f2d3e29475dd29e4c3bd3c6df180ad5119beaff0c7a58e3b3b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/prometheus-token.js +ff8222eae4e11a3d85b77705128e064aa6c8cafc83afcd3dc194299a3dbf3911 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/redirects.js +76a01f590d49649dcb1f554c221290919b2a8438e6001737f3c096fa6daec74d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/settings.js +8eadbada619b15087783dcfa0e889a81f88e78034d084c5ab616f7912b835940 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/status_200.html +792d59e169991749bd119ec6acb9386182f4fc9be1705e5f9f3f24d7d2bfc057 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/streams.js +ae0259cf32f53d69a22a640b1c34562018d4ffb3864494012de3a31c0bb4ac1e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/traffic-panel.js +675ea169d4cc55fda5e291af536338b882bede1eaa6c9d5cc7dfde0779c7c4d1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/transform-panel.js +87917b0388090f2b27ec6460be56fea96dc09b42735319e0a91330748848e288 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/core.js +28961dba1537265f795911bfc6826065ab00b154a295f47f5b78b9235a06d43d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/editor.js +3776f72d7051af86ac5fbdd4581040dd88a424c0c6cde789301b032b159094d8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/health.js +b3239e67901f1796d7a974ade0796f2e3590ff8064628a5629b78c7f6ce2f32e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/protocol.js +8c3da49973c62333559b0e3588c02beb0b425c025eac5cfa82a1bb968f70d9dd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/rates.js +903df941cfd04bd2e34178b5b72911f5c0a6be9aa593ce544c685aacbd757da2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/vhosts/render.js +4dfdeb7c73c2775eacaca65fd8ef1dc80b275421b15522d319d338f5b96288cc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/web-server-profiles.js +9e8e99e3cdfc32097d0c63dabb19d1e439b3be2264baa67678b46715b3a5bb4e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/admin/web/web-server.js +2d40c2cb32d7365df0c9cd6c8cb6f0483c7a799786c648f4836a0d9740c6c5ef /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth/files/mod.rs +b2f948bcc3dbd24952c7b1b02d41d06757f49f0c38a78caf51f8f8a687d8480d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth/files/tests.rs +50ef648351271d78310e00caa6d246e0009171ed036a3e4e1144737df8c064c2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth/mod.rs +cc4ddd57a264d12bffab131bf04b5cd22df75d38b61e21ce669f5a8a97b109ac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth/store.rs +745226cabb007819370fc6aa680995a03a8a13fa057dacfab0fcc21d0c43bbe4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth/tests.rs +a4c14df927c22a7fa46023f25cfe48d3aa3c245bec97fce834999d9bcc8d75e1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth_provider/choice.rs +514e99e0d3da21abd633d53872234bc4d7d0178583ab291e53cf4b1802fd5337 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth_provider/errors.rs +d3d9b756f8dd0444ce6937376f27fa2eae7eb4b9304a2ff039d272c929592bdb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth_provider/mod.rs +72a6e245cef078585bc39932033c05cd866ee518e9cb4e7b89bca87ce941e971 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/auth_provider/testing.rs +59e1af728770d28265198844b3dd5740328bcb1df96d170aae575d3d97ac42d8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/authelia/mod.rs +36f87348cf1fbe557f6e94296d30e5b36ae4817b6a18071767d96ea21e43f498 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/authelia/tests.rs +0137e66fb7127f1ce023b1c6cfe3fac3fb1e8be17f1de722f8ef4e66d2594a13 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/authentik/mod.rs +d4a388f0897e50ad26e1d8ea527eccdf656557abb4b88fe714cc2b1969d8715e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/authentik/tests.rs +32a25e53ac9542424debeaf1b637155bd4e60abd8692df082729d81232eb90b3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup.rs +5e8b1d7cf8280bec54521cec9e4a8cb9cdbed5deaca07e3a79c43d2336f22a80 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup/archive.rs +15213c87d4393739328ebf0eacfcb45f864ac12d7bd7509f750a241032f6c7e9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup/ownership.rs +6edb5aabd210ff2d121e435815b5501c9eccbd7a8ba230c843c6335a3e24f94b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup/snapshot.rs +859cec0bcd604f205d7d8e14d1c810e33d97fd7cf00ddcc30877bcea7c5fc2b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup/tests.rs +5293e1b06f82654929805b53b9092a82b7503a54b34da3e882a999c5f14ee579 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/backup/validation.rs +eec564a7ef886d18ab75289025a47d62bb702f07d63f92d2f83b7afeecebbb15 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance.rs +9158a2bbb303c53bd3d2c779d9eb6e4470d028c4f28f8e329788e9c8c830f843 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/health.rs +458733ad4ec56d58112de6ffa3539ca7e9fa8311048a4e120da96b5f899d5dae /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/lease_runtime.rs +bd693ea1d15d8da2abc08c6b5b50d42b693d9d4e9344205e9ad7ae779c19387e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/model.rs +ced69832cb32e7dbd0203d74f5a9c60c2cdc682729f4c5e2c01e7c082e7adc24 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/pool_core.rs +477132dd381e23f1be197c32ff58a0925f41d3e6aa63fe77c10973cefb2b76f6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/pool_selection.rs +d789bf40cf9433e2fd16409d112210fe93154588b1ac9bddc9c7f78e1db14426 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/pool_view.rs +a361c341932ffd186c0b21356c91ab1fe8043f5020d40798266d15ae896a114e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/balance/tests.rs +ae06d238b1451328c751a511476ef39c012f3a397393f939ca02f96ecd0119a6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/basic_auth/mod.rs +9a8858b7ff461a4d961ba701ca3ed6eaec15c3f7f05eef8e0e30edc63617605a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/basic_auth/tests.rs +90f26bcd36720076f874cd0a21230316b7303f68e23839e987cf51e13c23352b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cache_regression_tests.rs +7def03ace07dc38a4806277d75b6ce673d33ddaaf1c4855fa0a3372be1cf9489 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold.rs +b75ff512a1c6344483e00d2c67578ceea6b5472c279da0246f3622daa68d7e16 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold/cleanup.rs +5fde9e9f77277d557372e4614264512804192bb51f3d2eae785988c17b2e7253 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold/cold_tier_tests.rs +3c3897980c31a69d96f9295689d1ae19f2190da758c69ee7a0541f4171288bb8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold/demotion.rs +17b2a157b03f43f49ed05f1f3391aef025a453b748056c67229cb3ceaa53bb7a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold/startup.rs +83095bc93132f306c537b31ba929669fedac99af3c4f133d0533b5ed7ac4e6ed /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/cold/worker.rs +c6c54984cf3460e6227d40d8d6917d7ca5d809ac364c80effe354c64133c765d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/collapse.rs +346fdb40d85627b583a01fa17c65e45c822dc7216198cdeadbb3d07904286fa3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/dashboard.rs +be3d80cd340edb47755190a668e2f2a2776940665f95ae7110893b706eb94faa /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/dashboard_tests.rs +847c660e6cb7d752f9dac2807c5045a000172c25b0e437cbade06ad7b101dcba /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/fill.rs +675d18afb53f25c56cba49bbb431fa39ecd9d7bdd192c7b39b0698225de7a2a2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/invalidation.rs +c1357a13658e1ed5158084d3a41ba9ea906512774a5863ce9c56cb508d3fa6c8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/invalidation/ban.rs +bbd9f372648d89b5e14d5b58029582d37f66a89752caf2c14eb1cbf8f24bb7a0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/invalidation/http_invalidation_tests.rs +6223eaea3f061b111330cc26b28d85b9b239bef30328025f2ef337291e22a445 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/invalidation/invalidate.rs +c1ee3d13b373672c53b5c9ebfe5c4b66b89f2f2913c328defd5cf6502f96a654 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lifecycle.rs +bd831807ca4720b3a41a6ea1d9a6c0ed2d935225e2dacbd9313be064f2e4a20e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lookup.rs +c2e258da25fbf6df7da3de5a80a04d74e85c03ab22c175d7c9a6340b8ea1f1b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lookup/hot.rs +4148106b9baf70e41eeba24233b1edbe8dd6f927c11f2c7647e89fbbfb60555e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lookup/hot_hit_034_tests.rs +e9c6ab0c2be9f96573f826e6a1b9e4c2b8b526f779e72e95a6463ae07e45ab55 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lookup/insert.rs +7f02dc8eeb6123cb22307b76985b606afda2d87b7f845894685cfe4a9aee8b2a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/lookup/tiered.rs +639d5be6258699ec7e9f260ec33bd2c366203b6655bf0e98f30517c2e12ceeeb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/mod.rs +0c8b0d550e94d4474dcdf991aa0340228dc5f2f904f39350e6e666a16f16fe87 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model.rs +b96e30ef2b12ad7647915457f087a4d11b6141847bc5e971a75c2739c88c3d8c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/cache.rs +0ec4f6d0adea1ed80a3ca17c68c9c85502491da2904d9d690b4169ab9b025b21 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/cold_metadata.rs +f52123b588205ae96c7cded93569e99a1b4db4b361e1f7a91fc703afa6b6f6e5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/entry.rs +ff1c3a1a3bc0d26218dcc943ef951c2a212c180bbf6e4bf1c542ffbf12a9f150 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/http_invalidation.rs +ee9508498d420a726abee1d12ca21fd5117c1908ff53c2ce29f01de4380f26ac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/maintenance.rs +723c6f0580db70b1ef40269b28a4aadc89f024b25be00afe73a971950663d252 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/settings.rs +14f3f8ae5252a2dc13fcf9556523ffb945b77ee92a5fb4939cd27e113fc61660 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/model/views.rs +e26dce02df9c043329ca164fed215d271781bce8fb03240f528331bf3df6b9d7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/policy.rs +70c255e15f2b8c030988a2263b0e07b5c16e7e26770c72becbcec6da4550fcd9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/policy/request.rs +6ae7a79886dbee537d15830c4647f59f158a2b31425d1c0f06218590c261c968 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/policy/response.rs +12a6d5d9d6711e956391b4b952e8149658b8bf64cfcc0a4c59c281f2630a6aac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/policy/scope_tests.rs +c3a4300f7cdb6b2b7c16fbc489d49ba2451331bb4a55a2d9f618c684fd61eecb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/range.rs +e1d3f0512d6290b0ac4998f47398a0a7c404db249c5bbdbc4ad4767071013a72 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/stats.rs +8a300f5dad44815401eb23f4f5a157893761852ba4f3005041e0eb3f16892ce3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/tests.rs +98af70ada3b14f3ecc94c9c76b028c1b0de1ffd43d9836a0749de763f64d5402 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/tickets.rs +a1132b980833b1b4ce2bba9aa681ff255a0e2d61faaa65a316860da503ea1e27 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/v022_cache_tests.rs +4ba0a2e1c21a79cf68bf34cca1f2c2a3d7b20aef38f3b9f510743e60bc1d425f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/cache/varnish_compatible_tests.rs +1a2eb6684d9ea4a7e90970d936c75f7c8bbec46a4181fdf273be9bdac8eec847 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/compression/mod.rs +8de82d9188c9c337690c6ec4afdad9fff20651c358e34602a93d8bb8c3d2489a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/compression/tests.rs +e695079333ebdc2a6e7b3337cfabef171b3a0a01da0597b77feff70d417f833e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config.rs +d727e5ebd6c6184943d5f773c6b5244954832139c744851c1357614880f09c6d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/backend.rs +367b46f2b57143db17044378b1f5a55bab1eae3ad6ba40f388896995d1b2a13d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/compile.rs +fbea01fea1213d98aea812c1b78d5db289e09200b98ae514d742235cd3fa70e1 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/internal_routing.rs +cc75698be2828000e88f2c482bd26f2fa4050e3432bec1b5a581dca17fef4a37 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/model.rs +75839458ddbc7480ec4492a95eeb67b617ba7d62f7b67e7a767a3453b74dbcbc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/route_policy_tests.rs +736b46108c72220b8142f4f2ab128876b6bd82e0d09891578abdce6aa03c82f3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/routing.rs +dd9a6ad8f58e0cdd1ae74f3f972fee0ac14383cd8b8f518403b9a36c169f35bd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/snapshot.rs +477cddaa1e1c0b9b605a2f550971a04cf30287519cba70cfbb2e1860e3a93ff2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/tests.rs +f35de0ee1516ece6bbfd2b2a7db7d1e0f5048b0ec47cf2a3765dffb799abfd93 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/config/transport_tests.rs +a09f361d70510d6226f4dd6785e649c3dc01ccafc70a4c8b0dcd098e224129b7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db.rs +c290d0cb02dfa5d2c60ecabac1cfb20c8884e3d14cca1944906c6d8e677f1784 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db/api_tokens.rs +892ec0e5985700cca399c861197f6c9d2f1c823d8d95b88abac9d27ae15a069a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db/certificate_api.rs +5491dd7bb9b3fceac97c4dea63aba6d5c7abcb0fbd06e36ae986e00c79bc07d0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db/dashboard_presets.rs +2ff744223934685439374572b83fd639bb3eabdbac168bea4a6501a6e9ce0ee0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db/history.rs +c05a02618d476e4670b4f9930555f199cac776cdf09edb8fcc1a675695b8f99f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/db/tests.rs +dada314e1709e960eb2e225b4d10c3cd12606c62c4bc2c0220aec1ba133e4ade /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/demo.rs +daf8f4dd4bc4dc4d1c69fa583165f88fbc299eee9c10edba75609424b0539ab9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/diagnostics.rs +045593a42a6e4f632e5052c655788f0843faa313fc929265b89509f6dfff91ed /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/docker.rs +9a68e0d5bd98541314f1ab5a4c2e344e9837f315bd39ea3988ffab6a0f0425ab /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/docker/client.rs +8feba6d9eb7fde798cbe8a9e339d6a5346cfef039980fce46727386717635eec /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/docker/model.rs +f095e5e3c564df409874019c647f7cec2156bf5a845b5b84864879fd07cf80ce /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/docker/reconcile.rs +2e8d4841665cc1d29e6262a1789bb64ced1cecd0036681cc1ef7b5d5bfe22065 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/docker/tests.rs +0b6831d03841a1dd2d6ea73d8268d0b3fda678c6d9332447e269f1e45c60c0d3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/forward_auth/mod.rs +6c25951cf69e972c47cdf815f22a5062916b2b768e39d55a26a5fc9e625a2344 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/forward_auth/tests.rs +5d32cf9177a33d6fb50452541805b10ae1b0833e709d833f5bd1fc6907193ffb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/forwarding.rs +b266c0a464bb0c6b581e423d08304a0121f126e8e42ef3a8469cadad42810fdf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/forwarding/peer_formatting.rs +b821e2efd2939cb13d01e402532f33feba6682acb6a7a3223be086c1cd171820 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/forwarding/tests.rs +0541ad50b7bde1fd958fca59d2a4f9a0fde197bcaef68e6bf892ffdeaac46be2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip.rs +e3646c044604bbc169aeba549d973d37b8ac52f88bbab4a0ef74c6ea69681eaa /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/mmdb.rs +1e8777b295e6a2de15b55548e8c4c3a4166b1c5af18d4d33bf067d8bece1b590 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/mmdb_tests.rs +cfc75486e69c310fa6e7bf0448ed39a20cdad9dd8afe75e01592fc7c76a380db /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/tests.rs +3376ea3d018faa5cb8a69da2f1d5b7cdae4bb4b8f28f373f8a0a2996410e1bb7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/update.rs +86a16add6757a377264ae6afe071039851d5996e80baca9d4882b71889d7c2d2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/update_http.rs +8c72a10f07f82e2c0864551a3c95e261129c23cf6072f902d063564b6ea6770f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/geoip/update_tests.rs +61a2b01db9010f9debfb38b43a26bf588438a5e470dff938e4e54f9d7ba46732 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/headers/mod.rs +3e9a19c221fa7e63d097c185470b17313da7c200a73ce50f6c069b4dddd37a96 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/headers/tests.rs +027d414f51e910ff20fbf3a924ab6b136178858f27819a046a922b1d8f349cd0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3.rs +2554fc93a555e1f39d12d8c172097a4a4571d79db2b6b871a5a1bad0e8dd2778 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3/body.rs +741972222414c280104acbcd8f8071bed9cbfcfa2f503c487c11c56f553f53cd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3/diagnostics.rs +49ce4452ef7973cafa2e4071e2e14be0e16000e931a6501e4dc613652e49e230 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3/identity.rs +0b41072f6bcf28725c80f471584cd55d4900424ce5d55ac7f6909813788c63fd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3/settings.rs +5c550075c7b0fe687ad02095c1cad57b46b579fe21dc5371525b6c77db459886 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/http3/tests.rs +ad0fc77b4065e4e59e97db60d77970c7336386e43b779198abcc727245f8c791 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/lib.rs +e8399753a6ff49b7de19edb0a268bf871c9979a518354160cf07b4669051fcbb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging.rs +e4be3ad758c3d93ce52dd3b1ab1a87810e5226339400ed997607a5b746354751 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging/error_runtime.rs +e9795eaa3e743c09f5ab0e18e6d359bc97a3aee55510c74923532d64df90c873 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging/format.rs +66c4596e644d9dd539d468575e2de6459bac2624fb1e1064cdae61a21c2e0240 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging/model.rs +bf898b318feb9bd3dd2c335b6b1bad172da63fd5cefbff3e267421ce37c076fb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging/runtime.rs +3d6ea5508bc9609c6ce99a3a1d3fec2fafb95a2a8de579a80262b73c6eed3a63 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/logging/tests.rs +cdcb3806669207c17279da959bbfcfacf18cc192f24e862c0afa0c389a41631a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main.rs +87e69b46c548b861e9d90d9d2e42dfc2630891f4583800b1942f9065d25e29cd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/admin_runtime.rs +224da3127b5f846a8932fb7f4b6e23d0dd590dc0170506267381d66042c64666 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/bootstrap.rs +5a98d0e249338e73aa57ae2e352dc16db2f79c2d042c1544ce1c2022da76a31c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/proxy_runtime.rs +b240033715323e7cb7b9bcaf92edd481f7089b4da6bab25005ca6733da8756dc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/shutdown/mod.rs +0a6578a0f4023b9f8d73043bf942dc5e096ef9afb8c0d2f131c14f65d08ac01d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/shutdown/tests.rs +ff491043180085800b786b77e6bd3c400b60051012482918440cd5dc6493d1e7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/main/tasks.rs +a719c51aebcba0f16f8810c37618201954e79d6806da085ee6c5e4697a05b521 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/metrics.rs +9c7ed78345abc33d260f8d5cd52339bf8de748c08b53eaa2bdea8a32a0ea2a20 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/metrics/global.rs +31154052757c2bb975b8ce8cad67f3fad7b5132b615a73d5b0d7bf1b5311722b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/metrics/rate_sampling.rs +f27f1f8bed769883d1a7ae6a48f89f7712394dfab65d05702b0f944f0a45bd8e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/metrics/vhost/mod.rs +ee401f943bd8b2706c33419ed69102269c08dcb4ceba6f4be2ac0861115874a7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/metrics/vhost/tests.rs +9c96c3e4edb20dd0c36b5c373f1925dd60368e75853002206523072d418d5417 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/not_found/mod.rs +fa2fc6c6987a8356a9da92cade10db62426d8863e9cef3c0d4324c45780c5b33 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/not_found/tests.rs +c19998732c2d65b464f43d17a58644db5bcf7b4a6dd4c31a65a091c57692a5bb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/oidc/mod.rs +c4dbe0f8ded237d45b6a3977bdc7544296e4408996815cae9e28af028419d0b7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/oidc/tests.rs +992f49379e44361d98088d8f8ca1013d62846a54a5a35c089a5e0e1a9488e08d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/oidc/token.rs +eb95c68c8639ce3ae658eea3334795cdb5e129fb2ba10955f7dffe06d8909b57 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/pages/mod.rs +86008e469c84a7242b7d4947e2116694ababa2cb26120f246d00923a7c019720 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/pages/tests.rs +5650a3f70162abd97021e0a51a92cac2c4dd39004426ef99dff36cbb0741aeac /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus.rs +6c97eb9c593a7802422100e8130921e63b6b9b1b0387b6860af9f49581cd50b3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/core.rs +2321ee667569803dfe6c92c0e98adba0ac8fcdc6a3eacd5857233f1acae93daf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/docker_misc.rs +cc909edf740a091f9057912f555dd888b644fa1cb49647fe0e2e1f5dba8ff5af /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/json.rs +f9aab3297fcf647295849f77cbf99197f4dd27efd6817e54c03451e04972430c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/model.rs +f8a9541b568ade946dfc0b3353548a773a0126f705b537815ce0523439b07ef4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/tests.rs +028e1dd9f2ec2afaf699a6b21c2d4b0d96e76f11f5e4ed009c233dadf0f3be51 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/traffic.rs +cdbfa0e7f49200dc70ea6df8f0594399ee3e0c5fc3d279cc336e2d83d0f8a535 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/vhosts_backends.rs +f1b0254f53b1a4336bd8170ad441ba072b49a114e497b985cb20699b4e375044 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/prometheus/web_php.rs +315cdf2ec1479433aabee00f616e8c0a9ebe4697bd4928885433b80e52a706cd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/body/mod.rs +5beeac12ca7f041bdb9b74b2dbc9781f5d5524fcf51294b8b6ad88284754ef20 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/body/tests.rs +1ecfebeff9a6b933368095b84762e2816fae8a99339e0b854e67e9e95a937e3f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/cache_helpers.rs +2d39552aa01ce3d048560944975243d0a58ae762d838e547f5fa65007d871dc4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/cache_http_invalidation.rs +a86b10ce0707b51e925e11ea14f7f40fa108a196166f62cf40007a97f9e17203 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/cache_http_invalidation_tests.rs +df239d37b008691d54e257626009684310e6e3712e777094b8450579d56f732f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/cache_plan/mod.rs +811a00b55b24638b4bf8a6bea9ed7c0ffe2a758f76bfe63a95e1d31bce1c2c9c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/cache_plan/tests.rs +d6bd4aafab7b1371c31b3d22ddf949a08ea942489649ca12c7615b3b2d5a109a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/error_fallback.rs +d0d64fd4dd89efd4a9fe089ff4551815cbeaf5b883ddcff803f1b13b5e918dc2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/cache_fast_path_tests.rs +7611390a02341d5f9fd223626e57e0f2f129ab45e03fb1bc105be68d46b86a9a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/cache_lookup.rs +287012c81144d8f15af4a148ce3ca911d431bc59adff44e697567561aa372bb3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/h3_navigation_tests.rs +728576f7a42292386eca9cf450779364da87f94dc0031ba46c6f4d5302755949 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/response.rs +0ba6b62e8560d6f7b99ca7e387f058412fd44456f5874a8258c1c24595c435f4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/route_cache.rs +28aecd57891ef67a618a0f8e4df0aee95d0cb6090facf37e531cd190331d06e7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/success_finish.rs +ccc54869ffbcf1edae9ddb96f6dc2191739f8804ee0318b7a6844def6c4693e5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/success_prepare.rs +c965dba1d2639b338f3f3cfc17f760786a30abab708dfb7920ea3bc94d4d734b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/upstream.rs +5d72200f3b5308215b7a3d7b1f910932eaa4712f9e2954afdfbe2f252e2a2d3c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward/web_source.rs +0b03eed32b00d709e5887c179e49f7bdf0926ac19d2055af511333262039ed19 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/forward_entry.rs +9b25f5e3ea4443a63ee6f45d12e1957dd316fe8e85325fc00ea416faaab1025a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/h2_graceful.rs +30057732c35c369740a176f7da285e35a4157571a04328f6c6f1494d4ec8550b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/headers/authority_tests.rs +e87437ccf80e50e0159d204dfdd1f8dc0739b6e375be192fce0af749810258cf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/headers/mod.rs +af9b044761a56e8a6dc57f9d760b289ff4a6bf37db11dbfcd3ec4da5b8f426b6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/headers/tests.rs +2bc63579975387c92a9459a9677b4a49e76df382b1ee19de12c8341a3ead57e8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/identity.rs +a08ee061e146cb7a08311106f73a04468c89f77b6ad05a2c623621a2ae9faf2a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/mod.rs +92806ce1802da9b6771ece474d91a3458eba3f6ed19b0817b897e828a02e7e32 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/redirect_helpers.rs +de1763b89d98607e20f0f6e3c9b546483927cbe5450efc2e5634fe691fd52ad6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/request_id/mod.rs +78bbc1263bcd600527bf71acdf5af92bf186267a9084b076d1f75ad6492df659 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/request_id/tests.rs +9d7cc19e78f50c9b96e8ada076e12ba96d7a19a51975a13e554c4463e624ee92 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/types.rs +e44430c54038a7dc26f327b5d7085e965241da2ffef42c1526ebfc5168981f72 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/upstream_helpers.rs +c3887e344249ce492862c365896731127b7b6fc51bbfda274d7e7aad3a70be0c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/web_cache_revalidation/mod.rs +5522456cc85948228250feac92308d53b130c4a7af98d24f669aca4dfe6999b6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/web_cache_revalidation/tests.rs +3d591201595a3b1e928ded20a8736477a47e5acc3bcbde158f7c17547ce155ba /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket.rs +aa58bacc35458ac615680e774a235191f80abf0db978b68095571fce94c2b502 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/handshake.rs +c02d42b5c7eeedbc54c58e98691f7d8e39f8e9be63a48f6d6b4ad6b8ea431b7e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/http2_tests.rs +faedf6cc2bd4c42f342a0aa188b634d6b8d280ca0e121032977eadaecb88e9d7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/http3_tests.rs +7e9c4d4c207badabf90630223964bb2ad641f06d4149843cab751f192b8b4adf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/tests.rs +a44421714aab37f7ceda19e3ec2512c645d2a3ce5dcb3da5bc7a0d87a442d6a8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/tunnel.rs +999cbf85cb6e917db529e30ba4a5eed1cc9e95a054da7b3039c730bb80061449 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/proxy/websocket/validation.rs +80d0f744f7ad9f0d1edeb0d5c23b13cb40431f6b6f4d10d534ed34d4198e3dfd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/rate_limit/mod.rs +c85c9f05dac65cde6878bef3ef7258eb9de79ca14c26ca2492e0e13839c40fc3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/rate_limit/tests.rs +e53c40b85792d4804a432e3c97dc13af8e29304bb0d250ee9ab9018bde522eeb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/redirect/mod.rs +811c83ae9fd0f5a13d35b5443cd37843f82b9d600bee4bb136ba9b87732a5347 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/redirect/tests.rs +244d72b3dab36ec505c96d26a967420714fd3807268820f680fb3dcea0e88c0f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime.rs +3c71d8eef9ccb49ad93cf6014c5c27756ce0eaeddfca116048f24c483fda68e2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/certificates.rs +2d610dc36f746215ad3bc1d860ee624a9233886d73a019fd243e51901503fc53 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/constructors.rs +eb2b0eeeb617cad704732d87acb667530144836e26edb0189929b1f25f35c6b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/docker.rs +18f7460e3738386e070f66932cd77240001255447a769d6e19a40573254a1473 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/external_config.rs +5999d7e91ee4231da88c5e9c6d8a12ea9f92d20d6dcdb24319f9f90891d7253b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/tests.rs +bab3044f4ad8957b65476a0c307bb8a364825b91d2100233b7bd6efa52e771be /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/types.rs +11e99eb425887ad12b73d949f4b497fabc6897fee8fc7647fcb3766269c2fdc0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/runtime/updates.rs +e3dbd60953db5a976985dd796e4268b41a0f3df59764c4664015bd41e2578058 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/secret_store/mod.rs +b0c4a46b40b09794fd8a037afca380ee3b95941bf75a0e1102a4e520a4bd8be3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/secret_store/tests.rs +53bc7b1fcc1eab8860ebafccd0c9ed2aadf75363323891a4a4a22114c323b22a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/security/mod.rs +0e5fc2aff856bf6fd959cba12b5ddd1e3b3cbeb0fbaadde906c811cdfafdaae7 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/security/tests.rs +0e8589f56e3229dec556b427b87c2cc5a5a9ffaa9ea84fc2522dc72d3239027d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server.rs +4cb5afb53c824f5c87abaa65ba5dc85e937255c4a3dd14af16df9af7e01afb10 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/http.rs +533342fb3bf8b52743d3a7102ffe345be9f86d553b16a1ec322e468b44b0a7eb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/http1_connection.rs +22fca56396333ee7a5031da35b15c3258e93aea4ead6af733fcbb1716e21654e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/listeners.rs +1c4b84a4aa9f120ed3b7669a145ef51e90d825c559d40088a2b4074bd84a4912 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/sendfile.rs +5f6a59c6085c1250a93a70020661d1e8174d3b600b494d16f8eaf7941ee3bb99 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/serve/mod.rs +048a05a46108f50bef7da50b0c03b752d76e586b411de8ca3f55313bbdb08aee /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/serve/tests.rs +669ea1041c103cb952f7a516363c8fe7baf51622f721aabdd57015e0e0279530 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/server/tls_runtime.rs +38abd50db3c5742ee6514654bcfa0b854fdf6e2a29e034ac2e5d36c4b95b00ae /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/settings.rs +b2e2924047019b1ada59c58a4060476151c99be12c0b4092f2cfd201c0756255 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/settings/public_origin.rs +c599d1cdca84ac18da7e7cdf6e2d1556d4df770481a0607edb96f6068cc051e2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/settings/tests.rs +2ad7888b263e1dd9f0bd588dc35590c9eb232f8fbacd10ea7554cb55b4dbd25b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream.rs +c7771539fbb94544947e958e410c46b73f9647011e56b1b229ce7035fe21851f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream/health.rs +4b9cb1135c53f4a159bf2fdc1b0c7900653d7651612568f38c12f06e70b8ca72 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream/model.rs +42aee5900c3c8697c80220c77a6af0435358e3b1fdaf1a246784aca4f62edaaa /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream/pool.rs +6ec42b8647c95a0c2025462e0be29c71481ce1c3b1f4d4193926471f1cf06be0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream/runtime.rs +9346cbd71e006e41a7188f28eb86f9b00bac822e4cb31c76c8d6d2ec5d4c4711 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/stream/tests.rs +63924d279f5fdfde24d2e0663518a123dd673cc6ed9ce52233c4b6851bfb1efd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/system_stats/linux/mod.rs +d9123c623e2a97d09e41edaa29993b4b2c8cba39a3abdf2b48a205aa9a9c2939 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/system_stats/linux/tests.rs +e0676801259fb09a73825d959b89630bfa0b6f1fd1efd3006af29f60537a2fdf /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/system_stats/mod.rs +050aa831b1012c4aaade63863f433f01bfacf5d3f95787e57975572116a30ab2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/system_stats/tests.rs +6b955b13ef848e90dae1ec2906176336a775e9511f3688779203d922ff7d23a8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tinyauth/mod.rs +3d40febfbaf38ca2725630eed6b33106e353086081ea811107e4ec9d24f7de11 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tinyauth/tests.rs +df98becda799b6bf4ff5e2fec7d0e0a486e6b7eca6f9f5ad49ffdafd49a4f498 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls.rs +2af2164ecdf2b7fd9eef7c6e358dec053dfac9aedaa501dbb75df742d18638b2 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/acme_tests.rs +93e0576ac9077e645a72d164bad34cd75fe6032dd0516284d08bddd2fbda4b7c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/certificates.rs +68cc35b3cae43b0321cf667a613310a4b9ec5d8994461d6f3543b1852771bf08 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/external_paths.rs +937b95bb8621ab98d7cad3d223e4dee305350fbd0149b7527396d3bdcc28a68b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/external_paths_tests.rs +f02bb2775e662b2d75810f631ad3da4e0b56a64ae72b36c0edeae37e979b0fb5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/server_config.rs +94b70c52fdc7bd6e32fba9eed9124d030c692246f6990d61e01b891765275add /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/tests.rs +ce51a3280331d67c8406d2c5bc156ac0b492afa58e1f328bcda76db0720a6a9d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/tls/types.rs +a897c48e3528565fef8d4e32f0c3c078adfb68655c80e1af011f44a8bcfac6f6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/traffic/mod.rs +bd62b4ecdcf831d183c7720766a11703c8612d614e3abf38d2bff28df34710fd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/traffic/tests.rs +bfbbaa3b949ae946fa929bfbae3fd9a25f2ce792abbd0ed370ccf5683250bc4d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/apply.rs +ae30a984fa39d5c45a676effbc880c923078ba8120adff1bff10e108350b31b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/compile.rs +ffc0740462e5566a96912ab3089f18fc28f1c093ca65eec860fc6ea801fd907d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/css.rs +2b9d5c11d4c02b4a3ad3b9bb1a18c63693f245b854084f5eba16595df47b47f8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/html/mod.rs +aa99b0d3029ef92c78371cb90e11f2026cce890d1be8e10ebd7fa9bc5cb13287 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/html/tests.rs +047acd7209c1db19709801abbe3ee1076c1fc33f0fe80cc5d9b60669d5f1bae4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/js/mod.rs +cf5195ab6bacccae0082da7b3f1bd0382b73fdeb3607f4ae569ca6daab9d10d0 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/js/tests.rs +b0d20cf6784bf31457ea5a853e2fa5d85f6452395a78a538392703d97e687a11 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/json/mod.rs +216e24e29ea87be4a124f95f898e155f127fd959d7d5d9b30f8cd0b2b5018f30 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/json/tests.rs +d13fa462d6df516a4cfaee9f4e184044c5b6345e311aeb3d9058efafe54e4c5e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/mod.rs +1a56c6af6d48d52e2a73036b9bfa3cf16b5fa5b057593821e1229269b7ea4c08 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/model.rs +4b52257e1a3643910b5e7043852d7218230c0021c31215d90d0f8e384f2ae233 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/svg/mod.rs +0f53c64f442390ee20a59087a10f8f9ffb58053263e9aa848ddabfae1a6f3f51 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/svg/tests.rs +753047a1a731596f4c87351873c48f37b39f54e730795ff7d6895c3e2f0d56fb /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/transform/tests.rs +8d38f2f7d4ca4dd453cd0e2337614ec704fbd0a36d3e2374cda43f05dfcad663 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/update_check/mod.rs +c42d000d1d576721af3ffe930589388693001b8113554a7658f6dcbc665b5d1b /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/update_check/tests.rs +70e6cdf339da86183b4cd07567a4bb99135dccea5b0fb4a6c37c4098ec4762cd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/upstream.rs +fe9d4deb34cea2408ac5a1030315989f29a6a7d078a46ac1b59d12aa07f67878 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/upstream/client.rs +80e9952b6a4b2241aff8ee259d286f0381b3c974032adc2c276764d14878fc67 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/upstream/client_tests.rs +56b1e4242f8153391cd9a01fbb3017a2dbda9d02e83da6bbfb39ed44854534b5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/upstream/protocol_tests.rs +ae880b40197454ea3fbf4d2113984dc372098b2e54b97e87c83cc319de253377 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/upstream/tests.rs +5c42f1befec267293b6f03eada118a11c90adfb4b32e0134d7f0033c7453c7cc /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/user_agent/mod.rs +696a2783a24f7f3d69fb820dc3a772ec49ea46ee017087952a8253363a9b7374 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/user_agent/tests.rs +d61c427c1e9cf457f1232b822d73e846e9f329cfbe61215e7ca061d53762155d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost.rs +846707452ccf10962f1763be66b8f56c050b0398b48968015fb799dac289c0d6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost/error_fallback.rs +a8c5ec5095178a0656a001b0d7100e240d1f32b052ea60df37f8681269638ab3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost/model.rs +fc8af7342a3b147921e9040116af5dfe680b3df910db2416ada18198bbeea7df /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost/redirect.rs +2651d7e3e3fadf3de74a75eafe2bbad8d02939551ccc0504c1a092a0b33b0db5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost/tests.rs +190b2bbdc7ef5181ae4dbe1659f6f0c7ead5d09936b109d0c5be7ea2e7edd681 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/vhost/validation.rs +8d1eff4b24f01d137414ef5419f75dd281879228adb70409645b11b3c78c20e9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/config.rs +9744e8c29ae72a4d9fbc9a76166a97f8292c4c312295ea40d1cb699e03d80a9d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/config/compile.rs +5ed79fa5b9c53f95ca200d89a9ba927dda816b61fbdf3b852bd3c9670e3d2d4f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/config/model.rs +a863ad1337fbc353c0f42caea4ac8b3644792e2aa08c37f992b7882b4b8dc6d5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/config/validation.rs +86c744216d7132d8294a6e90ba9be5fd871646006313d1c62506d40c81db9b12 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/fastcgi.rs +54aa2dc94df97faabd4859a9dafe6a7cb1ba3337bfef5fa51a4432097a985d88 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/fastcgi/protocol.rs +fbaf972f9dd2842ec7df2878f0105c9ef4a877817f037f2332c4d5baabf2ead9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/fastcgi/response.rs +92d2ab4d7ecb766bbc705f8eba94c1ca33347ffb84b36e0ad0eccfed5915473f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/filesystem.rs +d4fec3682532b0f2d11a0aefcd024f69fb623a39922ddb6c528a2d2de265347d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/htaccess.rs +b4646f705e532f682d6152b6827cc7f4f915766ebcb4af89eba9950965673772 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/htaccess/model.rs +a484113f2c1fea4e98a437acd8a28be6490d7e612f160a8728ceeaadd363f8ee /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/htaccess/parse.rs +6e58e2674940bb0284035856fe9299a0555fee4c566de75e174deb373c3b164f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/htaccess/rewrite.rs +8ca74d9cc4470045301f70eb4a9fbabd0dbfe74434429148d2230df9f996c06c /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/htaccess/tests.rs +7fe32af33b4d8e079ad724665aa1cfb62f6e98b9406b77168feaac55dac36137 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/metrics.rs +0f74d1fad9bc20a5f2ea1753381459c072cd8068cb13e7dfbc74e33eb3ace593 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/mod.rs +e9ba6e09ba2c8f8a33410c219d5ea29214cc53e279a43b17c110d24f17a5a71d /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/request.rs +d98c80663847d6d83073df074ebff65952755415574708abcc153bd8d3adfaa9 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/response.rs +b38a1c9e648e3606a534ebdf74f6315863a326c6de1ca8edc433abe9c1fed7b4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/response/file.rs +4733bb1824dd0a12b8804fb8d00791c3f9fda4c09b41503d5d8079d9607df058 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/response/file_body/mod.rs +e5f5fbe702f66bfcbcbc1d1f3cd3d89bdbb929bb86aed94868a2a06a4b9e59e3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/response/file_body/tests.rs +7da903c1a69be0ae6b85772b3208c518679efa8ed9d3e98adb694483518156b6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/response/headers.rs +2665d4eac9a6430d68224874784cb65d9b9d424353af77735caf044401d08cb4 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/routing.rs +9e584eb4455a18641c2c89f9e9725745c93f32877abf0f0f2fbea9e3d5ef38c3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/security.rs +b791762b4ab7a43c3be19df84e523faf3dfb4df055f66d02178f93edb60d2204 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/serve.rs +714418c86ab241020a561fcf662a8fe324a6a70cc2fd3a313c56d7939c14b9e8 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/src/web_server/tests.rs +f00743af2cf4a5952caef7a1dcf68e7817b5599a252a9973e1c22045517c0b0e /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/fixtures/argon2id.json +102b83171a6429b6375d8001d6c5294702385cd58ee55727cb657b1f3566e877 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/panel_icons_browser.py +52e61c389a60d147184ee76925cac76e454f8f2e3cb91039bb06e17787ab900f /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/panel_icons_contract.js +01af3008be27fabb486c141c67099af104f2725cc56f4c656aea9741a3c150cd /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/panel_interface_contract.py +2346b7de3a705e1128794fa89ce4811cdf240e1105f982520f3c4eed1358eafa /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/panel_refresh_contract.js +e24a0f84f1bfc46964df865ac387d651f7b384d781cbc8f3a9a5b0b60f3d69ca /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tests/vhost_auth_selection.js +eca68a07c2b1e45fdb8f512294f5a432db3ae5a6aec8fb200b47f155cd9a31d6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tools/README.md +7c30c280d0b0a8bf855eeffab583ca34dc161255f7ef6124148aa979c17c26d3 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tools/dev/memory_load.py +d1418f8e574a7390fd45a2aa879bdf5720b773162d65e295ab0350506aa5220a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tools/dev/mock_auth.py +2d3ff92300b09ce9cecbbaaa9309b4d33160fa4b2291c9952b784e8cfb599ab5 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tools/dev/mock_server.py +c711154a9df425a56607bd88f03815ffb408213a31a2b66ed1c1c9a6301a2fc6 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/tools/legacy/backup.py +5421082e24f3794356331157e30b428f3221a0d74c0b5d060bd4d3989e0bcf3a /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/update.sh +56c702111022e1ca2c8f6b72c635c749b05936ffe6387bdb0a202691614cbc96 /sessions/rcw-01mmsgszuju6d7f2h8egrxc4/mnt/RustProxy/upgrade.sh diff --git a/integrations/routeros-oci-build/README.md b/integrations/routeros-oci-build/README.md index 935c5cf..b424870 100644 --- a/integrations/routeros-oci-build/README.md +++ b/integrations/routeros-oci-build/README.md @@ -77,10 +77,10 @@ ENV_FILE=integrations/routeros-oci-build/.env \ bash integrations/routeros-oci-build/build-routeros-oci.sh push ``` -For example, with RustProxy version `0.36.3` and the defaults this publishes: +For example, with RustProxy version `0.36.4` and the defaults this publishes: ```text -zot.example.net/network/rustproxy:0.36.3 +zot.example.net/network/rustproxy:0.36.4 zot.example.net/network/rustproxy:latest zot.example.net/network/rustproxy:routeros ``` diff --git a/langs/en_US.json b/langs/en_US.json index f98b98f..b37f1af 100644 --- a/langs/en_US.json +++ b/langs/en_US.json @@ -1726,7 +1726,12 @@ "dockerAliasesShort": "aliases", "dockerAgentDetails": "Agent details", "dockerServices": "Services", - "dockerOpenApp": "Open app", + "dockerOpenApp": "Open", + "autoIdHint": "Generated automatically from the name. Edit it to set your own ID.", + "autoIdReset": "Generate automatically", + "autoIdChange": "Change", + "autoIdPending": "Generated from the name", + "autoIdBadge": "auto", "dockerLiveAccessLogsHelp": "Live HTTP access logs for this Docker vhost, not the container stdout/stderr.", "networkInterfacesHistory": "Traffic by interface", "networkInterfaceRate": "RX / TX", diff --git a/langs/pl_pl.json b/langs/pl_pl.json index 9bcf660..a71bf4c 100644 --- a/langs/pl_pl.json +++ b/langs/pl_pl.json @@ -1726,7 +1726,12 @@ "dockerAliasesShort": "aliasów", "dockerAgentDetails": "Szczegóły agenta", "dockerServices": "Usługi", - "dockerOpenApp": "Otwórz aplikację", + "dockerOpenApp": "Otwórz", + "autoIdHint": "Generowane automatycznie z nazwy. Zmień, aby ustawić własne ID.", + "autoIdReset": "Generuj automatycznie", + "autoIdChange": "Zmień", + "autoIdPending": "Generowane z nazwy", + "autoIdBadge": "auto", "dockerLiveAccessLogsHelp": "Logi żądań HTTP dla tego Docker vhosta, nie stdout/stderr kontenera.", "networkInterfacesHistory": "Ruch według interfejsów", "networkInterfaceRate": "RX / TX", diff --git a/src/admin/openapi.json b/src/admin/openapi.json index 4be3bb8..3887b37 100644 --- a/src/admin/openapi.json +++ b/src/admin/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "RustProxy Administration API", - "version": "0.36.3", + "version": "0.36.4", "description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust. The API also permits explicitly scoped GeneralApiBearer tokens on a narrow route allowlist, with RO/RW and source CIDR checks; API-token management and Prometheus-token management are browser-session-only." }, "servers": [ diff --git a/src/admin/web/app/core.js b/src/admin/web/app/core.js index 63edc0d..dc62d81 100644 --- a/src/admin/web/app/core.js +++ b/src/admin/web/app/core.js @@ -668,3 +668,62 @@ $("tunnels-dialog").addEventListener("close", stopTunnelRefresh); $("config-editor").addEventListener("input", () => setSettingsDirty("config-editor")); $("save-json").addEventListener("click", async event => { const editor = $("config-editor"), page = editor.closest("[data-settings-page]"); if (!envelope || busy) return; try { await withFormSubmitState(page, event.currentTarget, async () => { let config; try { config = JSON.parse(editor.value); } catch { throw fieldError(editor, t("vhJsonInvalid")); } if (await save(config)) setSettingsDirty("config-editor", false); }); } catch (e) { toast(e.message, true); } }); $("export-config").addEventListener("click", () => { const url = URL.createObjectURL(new Blob([JSON.stringify(envelope.config, null, 2) + "\n"], { type: "application/json" })); const a = el("a"); a.href = url; a.download = `RustProxy-config-r${envelope.revision}.json`; a.click(); setTimeout(() => URL.revokeObjectURL(url), 1000); }); + +// Auto-generated identifiers: a new entry's ID follows its name (or first host) as a unique slug until the user edits the ID by hand. +const rustProxyAutoId = (() => { + const FOLD = { "ł": "l", "đ": "d", "ø": "o", "ß": "ss", "æ": "ae", "œ": "oe", "þ": "th", "ð": "d" }; + const states = new WeakMap(); + function slugify(value, max = 64) { + let slug = String(value ?? "").trim().toLowerCase().replace(/^\*\./, "").replace(/[łđøßæœþð]/g, ch => FOLD[ch]).normalize("NFKD").replace(/[̀-ͯ]/g, ""); + slug = slug.replace(/[^a-z0-9_-]+/g, "-").replace(/-{2,}/g, "-").replace(/^[-_]+/, "").slice(0, max).replace(/[-_]+$/, ""); + return slug; + } + function unique(base, taken) { + if (!base) return ""; + const used = new Set([...taken].map(value => String(value).toLowerCase())); + if (!used.has(base)) return base; + for (let n = 2; n < 10000; n++) { const suffix = `-${n}`, candidate = base.slice(0, 64 - suffix.length).replace(/[-_]+$/, "") + suffix; if (!used.has(candidate)) return candidate; } + return base; + } + const locked = input => input.readOnly || input.disabled; + function suggestion(state) { return unique(slugify(state.text()), state.taken()); } + // The ID is shown as a plain value with a "Change" link; the input only appears after the user asks for it (or when validation needs it). + function paint(input, state) { + const isLocked = locked(input), wanted = suggestion(state), value = input.value.trim(), compact = !state.open || isLocked; + state.holder.classList.toggle("is-compact", compact); + state.value.textContent = value || t("autoIdPending"); + state.value.classList.toggle("is-pending", !value); + state.badge.hidden = !state.auto || !value; state.badge.textContent = t("autoIdBadge"); + state.change.hidden = isLocked; state.change.textContent = t("autoIdChange"); + state.row.hidden = !compact; + state.hint.hidden = compact || !state.auto; state.hint.textContent = t("autoIdHint"); + state.reset.hidden = compact || state.auto || state.resettable === false || !wanted || wanted === value; state.reset.textContent = t("autoIdReset"); + } + function regenerate(input, state) { if (!state.auto || locked(input)) return; input.value = suggestion(state); input.setCustomValidity?.(""); paint(input, state); } + // options: { elements: inputs whose changes drive the ID, text: () => source string, taken: () => existing IDs } + function attach(input, options) { + let state = states.get(input); + if (!state) { + state = { auto: true, open: false, holder: input.closest("label") || input.parentElement, hint: document.createElement("small"), reset: document.createElement("button"), row: document.createElement("div"), value: document.createElement("code"), badge: document.createElement("span"), change: document.createElement("button") }; + state.holder.classList.add("auto-id-field"); + state.hint.className = "fine auto-id-hint"; state.reset.type = "button"; state.reset.className = "quiet auto-id-reset"; + state.row.className = "auto-id-row"; state.value.className = "auto-id-value"; state.badge.className = "auto-id-badge"; state.change.type = "button"; state.change.className = "quiet auto-id-change"; + state.row.append(state.value, state.badge, state.change); state.holder.append(state.row, state.hint, state.reset); + input.addEventListener("input", event => { if (!event.isTrusted) return; state.auto = input.value.trim() === ""; if (state.auto) regenerate(input, state); else paint(input, state); }); + input.addEventListener("invalid", () => { if (!state.open) { state.open = true; paint(input, state); } }); + input.addEventListener("blur", () => { if (input.value.trim() && input.validity.valid) { state.open = false; paint(input, state); } }); + state.change.addEventListener("click", () => { state.open = true; paint(input, state); input.focus(); input.select?.(); }); + state.reset.addEventListener("mousedown", event => event.preventDefault()); + state.reset.addEventListener("click", () => { state.auto = true; regenerate(input, state); input.dispatchEvent(new Event("input", { bubbles: true })); }); + states.set(input, state); + for (const source of options.elements || []) source.addEventListener("input", () => { const current = states.get(input); if (current) regenerate(input, current); }); + } + state.text = options.text || (() => (options.elements || []).map(node => node.value).find(value => value.trim()) || ""); + state.taken = options.taken || (() => []); state.resettable = options.resettable; + state.auto = !locked(input) && input.value.trim() === ""; state.open = false; + paint(input, state); + return { refresh() { const current = states.get(input); if (current) regenerate(input, current); } }; + } + return { slugify, unique, attach }; +})(); +window.rustProxyAutoId = rustProxyAutoId; diff --git a/src/admin/web/cache-panel.js b/src/admin/web/cache-panel.js index ac0fa44..d4c3176 100644 --- a/src/admin/web/cache-panel.js +++ b/src/admin/web/cache-panel.js @@ -67,6 +67,20 @@ return groups.filter(row => cacheEnabledFor(data, row) === wanted); }; const reason = value => { const key = `cacheReason_${value}`, text = t(key); return text === key ? value : text; }; + + // Decision counters: label + count + share bar; top three visible, the rest folded into a details toggle. + function reasonsCell(reasons) { + const td = el("td", undefined, "cache-reasons"), entries = Object.entries(reasons || {}).sort((a, b) => b[1] - a[1]); + if (!entries.length) { td.append(el("span", "-", "cache-reason-none")); return td; } + const max = entries[0][1] || 1, line = ([key, count]) => { + const item = el("div", undefined, "cache-reason-line"), bar = el("i"); bar.style.width = `${Math.max(4, Math.round(count / max * 100))}%`; + const track = el("span", undefined, "cache-reason-track"); track.append(bar); + item.append(el("span", reason(key), "cache-reason-name"), el("b", number(count), "cache-reason-count"), track); item.title = key; return item; + }; + entries.slice(0, 3).forEach(entry => td.append(line(entry))); + if (entries.length > 3) { const more = el("details", undefined, "cache-reason-more"); more.append(el("summary", `+${entries.length - 3}`)); entries.slice(3).forEach(entry => more.append(line(entry))); td.append(more); } + return td; + } function resetLiveChart(selected = scope()) { liveChartScope = selected; liveChartPrevious = null; liveChartPreviousAt = null; liveChartGeneration = null; for (const values of Object.values(liveChartSamples)) values.length = 0; @@ -168,7 +182,7 @@ [[row.hits, "cache-outcome-hit"], [row.misses, "cache-outcome-miss"], [row.bypasses, "cache-outcome-bypass"]].forEach(([count, cls], index) => { if (index) outcomes.append(el("span", "/", "cache-outcome-sep")); outcomes.append(el("span", number(count), cls)); }); const ratioPercent = Math.max(0, Math.min(100, (row.hit_ratio || 0) * 100)), ratio = el("td", undefined, "cache-ratio-cell"), meter = el("span", undefined, "cache-ratio-meter"), fill = el("i"); fill.style.width = `${ratioPercent}%`; meter.append(fill); ratio.append(el("span", `${fmt(ratioPercent, 1)}%`, "cache-ratio-value"), meter); tr.append(outcomes, ratio); - const td = el("td", undefined, "cache-reasons"); for (const [key, count] of Object.entries(row.reasons || {}).sort((a, b) => b[1] - a[1])) { const tag = el("span", `${reason(key)}: ${number(count)}`, "cache-reason"); tag.title = key; td.append(tag); } tr.append(td); return tr; + tr.append(reasonsCell(row.reasons)); return tr; })); const domainEmpty = $("cache-domains-empty"); domainEmpty.textContent = groups.length ? t("cacheNoDomainsFiltered") : t("cacheNoDomains"); @@ -181,7 +195,8 @@ tr.append(target); const keyTags = `${row.cache_key || "-"}${row.tags?.length ? ` · ${row.tags.join(", ")}` : ""}`; tr.append(makeCopyCell(keyTags)); - for (const value of [row.tier === "cold" ? t("cacheCold") : t("cacheHot"), fmtBytes(body), fmtBytes(storage), fmtBytes(Math.max(0, storage - body)), number(row.hits), `${number(row.age_seconds)} s`, `${number(row.resident_age_seconds)} s`, `${number(row.remaining_ttl_seconds)} s`]) tr.append(el("td", value)); + tr.append(el("td", undefined)); tr.lastChild.append(el("span", row.tier === "cold" ? t("cacheCold") : t("cacheHot"), `cache-tier-pill ${row.tier === "cold" ? "is-cold" : "is-hot"}`)); + for (const value of [fmtBytes(body), fmtBytes(storage), fmtBytes(Math.max(0, storage - body)), number(row.hits), `${number(row.age_seconds)} s`, `${number(row.resident_age_seconds)} s`, `${number(row.remaining_ttl_seconds)} s`]) tr.append(el("td", value)); const action = el("td"), button = el("button", t("cachePurgeUrl"), "quiet"); button.type = "button"; button.addEventListener("click", () => void purgeObject(row)); action.append(button); tr.append(action); return tr; })); const bans = data.bans || []; diff --git a/src/admin/web/css/60-monitoring.css b/src/admin/web/css/60-monitoring.css index 9e4c214..607e4bc 100644 --- a/src/admin/web/css/60-monitoring.css +++ b/src/admin/web/css/60-monitoring.css @@ -1147,3 +1147,41 @@ html[data-table-density=ultra] .file-log-inline-detail pre { background: var(--panel2); color: var(--muted); } + +/* Cache → decision counters, stored objects and pager (0.36.4) */ +#panel-cache .cache-table .cache-reasons { min-width: 200px; max-width: 320px; } +.cache-reason-line { display: inline-flex; align-items: baseline; gap: 4px; margin: 0 10px 0 0; font-size: 11px; line-height: 1.5; white-space: nowrap; } +.cache-reason-name { color: var(--muted); } +.cache-reason-count { font-variant-numeric: tabular-nums; font-weight: 600; } +.cache-reason-more { color: var(--muted); cursor: help; margin-right: 0; } +.cache-reason-none { color: var(--muted); } + +#cache-object-scroll .cache-table td:nth-child(n+6):nth-child(-n+12), +#cache-object-scroll .cache-table th:nth-child(n+6):nth-child(-n+12) { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } +#cache-object-scroll .cache-table td:nth-child(3), +#cache-object-scroll .cache-table td:nth-child(4) { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; overflow-wrap: normal; } +#cache-object-scroll .cache-table td:nth-child(3):hover, +#cache-object-scroll .cache-table td:nth-child(4):hover { white-space: normal; overflow-wrap: anywhere; } +#cache-object-scroll .cache-table tbody tr:hover { background: var(--panel2); } +.cache-tier-pill { display: inline-flex; align-items: center; padding: 2px 6px; border: 1px solid var(--pill-line); border-radius: var(--rp-radius-control, 0); color: var(--muted); font: 9px var(--mono); letter-spacing: 1px; text-transform: uppercase; } +.cache-tier-pill.is-hot { color: var(--green); border-color: var(--pill-live-line); } + +.cache-pager { display: inline-flex; align-items: center; gap: 0; border: 1px solid var(--line); border-radius: var(--rp-radius-control, 6px); overflow: hidden; } +.cache-pager button { border: 0; border-radius: 0; min-width: 88px; margin: 0; } +.cache-pager button:disabled { opacity: .45; } +.cache-pager #cache-page { padding: 0 14px; min-width: 120px; text-align: center; font-variant-numeric: tabular-nums; border-inline: 1px solid var(--line); align-self: stretch; display: flex; align-items: center; justify-content: center; } +.cache-pager #cache-prev::before { content: "‹ "; } +.cache-pager #cache-next::after { content: " ›"; } + +/* Static transformation tables (0.36.4): same presentation as Cache → Domains and effectiveness */ +.transform-vhost-table :is(th, td):nth-child(n+2), .transform-type-table :is(th, td):nth-child(2) { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } +.transform-vhost-table td, .transform-type-table td { vertical-align: middle; } +.transform-vhost-table td:first-child { color: var(--text); font-weight: 600; } +.transform-type-table td:first-child { color: var(--muted); } +.transform-vhost-table tbody tr:hover, .transform-type-table tbody tr:hover { background: var(--panel2); } +.transform-zero { color: var(--muted); } +.transform-errors-nonzero { color: var(--red, #e5534b); font-weight: 600; } +.transform-reason-list { gap: 4px 12px; } +.transform-reason-list .cache-reason-line { margin: 0; } + +.cache-ratio-meter, .cache-ratio-meter>i { border-radius: var(--rp-progress-radius, 0); } diff --git a/src/admin/web/css/70-responsive.css b/src/admin/web/css/70-responsive.css index f68d039..2c13a8a 100644 --- a/src/admin/web/css/70-responsive.css +++ b/src/admin/web/css/70-responsive.css @@ -1731,3 +1731,54 @@ font-size: 11px; } } + +/* Editors lift (0.36.4): Docker per-app forms and shared vhost/web/stream/redirect/ACL form chrome */ +.docker-service-editor:not(.docker-service-metrics)>summary, +.docker-health-editor>summary, .docker-acl-editor>summary, .docker-protocol-editor>summary, .docker-timeout-editor>summary, .docker-passive-health-editor>summary { + list-style: none; +} +.docker-service-editor>summary::-webkit-details-marker, .docker-health-editor>summary::-webkit-details-marker, .docker-acl-editor>summary::-webkit-details-marker, +.docker-protocol-editor>summary::-webkit-details-marker, .docker-timeout-editor>summary::-webkit-details-marker, .docker-passive-health-editor>summary::-webkit-details-marker { display: none; } +.docker-service-editor>summary::before, .docker-health-editor>summary::before, .docker-acl-editor>summary::before, +.docker-protocol-editor>summary::before, .docker-timeout-editor>summary::before, .docker-passive-health-editor>summary::before { + content: "›"; display: inline-block; width: 14px; flex: 0 0 14px; color: var(--muted); font-size: 14px; line-height: 1; transition: transform .15s ease; +} +.docker-service-editor[open]>summary::before, .docker-health-editor[open]>summary::before, .docker-acl-editor[open]>summary::before, +.docker-protocol-editor[open]>summary::before, .docker-timeout-editor[open]>summary::before, .docker-passive-health-editor[open]>summary::before { transform: rotate(90deg); color: var(--text); } +.docker-service-editor>summary>span { flex: 0 0 auto; } +.docker-service-editor>summary .docker-config-hint { flex: 1; min-width: 0; } +.docker-service-editor:not(.docker-service-metrics)>summary:hover>span { color: var(--green); } +.docker-service-editor[open]:not(.docker-service-metrics) { border: 1px solid var(--line); border-radius: var(--rp-radius-surface, 6px); background: var(--panel2); padding: 10px 12px 12px; } +.docker-service-editor[open]:not(.docker-service-metrics)>.docker-health-editor, +.docker-service-editor[open]:not(.docker-service-metrics)>.docker-acl-editor, +.docker-service-editor[open]:not(.docker-service-metrics)>.docker-protocol-editor, +.docker-service-editor[open]:not(.docker-service-metrics)>.docker-timeout-editor { margin-top: 10px; } +.docker-service-editor>summary:focus-visible, .docker-acl-editor>summary:focus-visible, .docker-protocol-editor>summary:focus-visible, .docker-timeout-editor>summary:focus-visible, .docker-health-editor>summary:focus-visible { outline: 2px solid var(--green); outline-offset: 2px; border-radius: 4px; } + +.vh-tabs { gap: 2px; padding: 4px 0 0; border-bottom: 1px solid var(--line); margin-bottom: 12px; } +.vh-tabs button { font-size: 12px; padding: 8px 12px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); margin-bottom: -1px; } +.vh-tabs button:hover { color: var(--text); background: var(--panel2); } +.vh-tabs button.active { color: var(--text); background: transparent; border-bottom-color: var(--green); font-weight: 600; } +.vh-tabs button:focus-visible { outline: 2px solid var(--green); outline-offset: -2px; } +.vh-form>.card-heading { gap: 10px; align-items: center; } +.vh-form .form-actions { display: flex; gap: 8px; align-items: center; } +.vh-form .form-actions .primary { order: 0; } +.vh-form .form-actions .quiet { order: 1; } +.vh-setting-section>h3 { letter-spacing: .01em; } +.vh-tabs { flex-wrap: wrap; overflow: visible; row-gap: 0; } +@media (max-width:700px) { .vh-tabs button { font-size: 11px; padding: 7px 8px; } } +.auto-id-hint { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.35; } +.auto-id-reset { justify-self: start; margin-top: 3px; padding: 2px 8px; font-size: 11px; } +.auto-id-hint[hidden], .auto-id-reset[hidden] { display: none; } +.auto-id-field>span:first-child { color: var(--muted); } +.auto-id-field.is-compact>input { display: none; } +.auto-id-row { display: flex; align-items: center; gap: 8px; min-height: 32px; padding: 0 2px; } +.auto-id-value { font-family: var(--mono, monospace); font-size: 13px; color: var(--text); overflow-wrap: anywhere; } +.auto-id-value.is-pending { color: var(--muted); font-style: italic; font-family: inherit; font-size: 12px; } +.auto-id-badge { display: inline-flex; align-items: center; padding: 2px 6px; border: 1px solid var(--pill-line); border-radius: var(--rp-radius-control, 0); color: var(--accent); font: 9px var(--mono); letter-spacing: 1px; text-transform: uppercase; } +.auto-id-change { padding: 2px 8px; font-size: 11px; margin-left: auto; } +.auto-id-row[hidden], .auto-id-change[hidden], .auto-id-badge[hidden] { display: none; } +.auto-id-field input { font-family: var(--mono, monospace); font-size: 12px; } +.auto-id-hint { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.35; } +.auto-id-reset { justify-self: start; margin-top: 3px; padding: 2px 8px; font-size: 11px; } +.auto-id-hint[hidden], .auto-id-reset[hidden] { display: none; } diff --git a/src/admin/web/host404.js b/src/admin/web/host404.js index 2a0337c..4f4c134 100644 --- a/src/admin/web/host404.js +++ b/src/admin/web/host404.js @@ -44,6 +44,7 @@ editing = item.id || null; revision = envelope?.revision ?? null; dirty = false; $("notfound-editing").textContent = editing || t("notfoundNewLabel"); $("notfound-id").value = item.id || ""; $("notfound-id").disabled = Boolean(editing); $("notfound-name").value = item.name || ""; + window.rustProxyAutoId.attach($("notfound-id"), { elements: [$("notfound-name")], taken: () => (envelope?.config.not_found_hosts || []).map(value => value.id) }); $("notfound-enabled").checked = item.enabled !== false; syncEnabledControl(); $("notfound-http2").checked = item.http2_enabled !== false; $("notfound-http3").checked = item.http3_enabled !== false; const hostHolder = $("notfound-hosts-editor"); hostHolder.replaceChildren(); readHosts = window.rustProxyIntegrations.hostnames(hostHolder, item.frontend?.hosts || [], { labelKey: "notfoundHosts", helpKey: "vhHostsHelp", requiredKey: "notfoundHostsRequired", onChange: changed }); listenerChoices(item.frontend?.listener_ids || []); certificateChoices(item.certificate_id); diff --git a/src/admin/web/index.html b/src/admin/web/index.html index 9289e69..3ce7227 100644 --- a/src/admin/web/index.html +++ b/src/admin/web/index.html @@ -772,10 +772,10 @@
- +
@@ -1398,8 +1398,8 @@

Stored objects

-
@@ -1519,7 +1519,7 @@

Transformations by type

- +
@@ -1546,7 +1546,7 @@

Counters are in-memory runtime diagnostics. A transformed cache HIT does not execute the transformer again.

-
Type
+
@@ -3799,10 +3799,10 @@ service ID/name and PHP-FPM endpoint are not replaced.

- + @@ -4289,10 +4289,10 @@ log_errors = On
Host and domains
- +
@@ -4347,10 +4347,10 @@ log_errors = On
Host and domains
- +
diff --git a/src/admin/web/management.js b/src/admin/web/management.js index 082df17..6e3540f 100644 --- a/src/admin/web/management.js +++ b/src/admin/web/management.js @@ -366,11 +366,12 @@ rules.placeholder = custom ? "allow 10.0.0.0/8\ndeny 10.21.0.0/16" : "10.0.0.0/8\n203.0.113.5"; syncRuleRows(convertRules); renderPreview(); } + function attachAclProfileId() { window.rustProxyAutoId.attach($("acl-profile-id"), { elements: [$("acl-profile-name")], taken: () => (envelope?.config.acl_profiles || []).map(value => value.id) }); } function clear() { - editing = null; dirty = false; form.reset(); setMode("allow_exceptions"); aclDefault.value = "deny"; countryMode.value = "off"; countryEnabled.checked = false; countriesInput.value = ""; $("acl-profile-id").readOnly = false; $("acl-profile-editing").textContent = t("aclProfileNew"); renderRuleRows([]); rules.value = ""; syncPolicy(); + editing = null; dirty = false; form.reset(); setMode("allow_exceptions"); aclDefault.value = "deny"; countryMode.value = "off"; countryEnabled.checked = false; countriesInput.value = ""; $("acl-profile-id").readOnly = false; attachAclProfileId(); $("acl-profile-editing").textContent = t("aclProfileNew"); renderRuleRows([]); rules.value = ""; syncPolicy(); } function edit(profile) { - editing = profile.id; dirty = false; $("acl-profile-id").value = profile.id; $("acl-profile-id").readOnly = true; $("acl-profile-name").value = profile.name || profile.id; + editing = profile.id; dirty = false; $("acl-profile-id").value = profile.id; $("acl-profile-id").readOnly = true; $("acl-profile-name").value = profile.name || profile.id; attachAclProfileId(); const cMode = profile.country_access?.mode || "off"; aclDefault.value = profile.acl?.default || (cMode === "allow" ? "deny" : "allow"); countryMode.value = cMode; countryEnabled.checked = cMode !== "off"; countriesInput.value = (profile.country_access?.countries || []).join("\n"); setMode(inferMode(profile)); renderRuleRows(profile.acl?.rules || []); $("acl-profile-editing").textContent = t("aclProfileEdit"); dirty = false; syncPolicy(); diff --git a/src/admin/web/redirects.js b/src/admin/web/redirects.js index d84e881..ebd9ae8 100644 --- a/src/admin/web/redirects.js +++ b/src/admin/web/redirects.js @@ -70,6 +70,7 @@ $("redirect-editing").textContent = editing ? editing : t("redirectNewLabel"); $("redirect-id").value = item.id || ""; $("redirect-id").disabled = Boolean(editing); $("redirect-name").value = item.name || ""; + window.rustProxyAutoId.attach($("redirect-id"), { elements: [$("redirect-name")], taken: () => (envelope?.config.redirects || []).map(value => value.id) }); const hostHolder = $("redirect-hosts-editor"); hostHolder.replaceChildren(); readRedirectHosts = window.rustProxyIntegrations.hostnames(hostHolder, item.frontend?.hosts || [], { labelKey: "redirectHosts", helpKey: "vhHostsHelp", requiredKey: "redirectHostsRequired", onChange: changed }); $("redirect-enabled").checked = item.enabled !== false; syncEnabledControl(); $("redirect-http2").checked = item.http2_enabled !== false; $("redirect-http3").checked = item.http3_enabled !== false; listenerChoices(item.frontend?.listener_ids || []); certificateChoices(item.certificate_id); diff --git a/src/admin/web/streams.js b/src/admin/web/streams.js index c0d3520..6d2abc5 100644 --- a/src/admin/web/streams.js +++ b/src/admin/web/streams.js @@ -127,8 +127,9 @@ editing = value.id || null; revision = envelope?.revision ?? null; dirty = false; initialized = true; container.replaceChildren(); initTabs(); $("stream-editing").textContent = t(editing ? "streamEditLabel" : "streamNewLabel"); let g = group("streamEditor", "details"); - field(g, "id", "streamId", value.id, "text", { required: true, maxLength: 64, pattern: "[A-Za-z0-9_-]{1,64}", readOnly: Boolean(editing) }); - field(g, "name", "streamName", value.name, "text", { maxLength: 96 }); + const streamName = field(g, "name", "streamName", value.name, "text", { maxLength: 96 }); + const streamIdInput = field(g, "id", "streamId", value.id, "text", { required: true, maxLength: 64, pattern: "[A-Za-z0-9_-]{1,64}", readOnly: Boolean(editing) }); + window.rustProxyAutoId.attach(streamIdInput, { elements: [streamName], taken: () => (envelope?.config.streams || []).map(item => item.id) }); const protocol = field(g, "protocol", "streamProtocol", value.protocol || "tcp", "select", { values: [["tcp", "streamTcp"], ["udp", "streamUdp"]] }); const enabledControl = field(g, "enabled", "vhEnabled", value.enabled !== false, "checkbox"); window.rustProxyEnableControl(enabledControl); diff --git a/src/admin/web/transform-panel.js b/src/admin/web/transform-panel.js index cfbbf95..2fbe2c1 100644 --- a/src/admin/web/transform-panel.js +++ b/src/admin/web/transform-panel.js @@ -103,7 +103,7 @@ function renderReasons(counters) { const entries = Object.entries(counters?.reasons || {}).sort((a, b) => b[1] - a[1]); const target = $("transform-reason-list"); target.replaceChildren(...entries.map(([key, count]) => { - const tag = el("span", `${key}: ${number(count)}`, "cache-reason"); tag.title = key; return tag; + const tag = el("span", undefined, "cache-reason-line"); tag.append(el("span", key, "cache-reason-name"), el("b", number(count), "cache-reason-count")); tag.title = key; return tag; })); $("transform-reasons-empty").hidden = entries.length > 0; $("tp-skip-top").textContent = entries.length ? entries.slice(0, 2).map(([key, count]) => `${key}: ${number(count)}`).join(" · ") : t("transformNoSkipsShort"); @@ -113,16 +113,12 @@ const rows = (data?.metrics?.scopes || []).filter(row => wanted === "*" || row.vhost === wanted); $("transform-vhost-rows").replaceChildren(...rows.map(row => { const tr = el("tr"); - for (const value of [ - row.vhost, - number(row.applied), - number(row.cache_hits), - number(row.skipped), - number(row.errors), - fmtBytes(row.saved_bytes || 0), - percent(row), - averageMs(row) - ]) tr.append(el("td", value)); + tr.append(el("td", row.vhost, "transform-vhost-name")); + for (const value of [number(row.applied), number(row.cache_hits), number(row.skipped)]) tr.append(el("td", value)); + tr.append(el("td", number(row.errors), Number(row.errors) > 0 ? "transform-errors-nonzero" : "transform-zero"), el("td", fmtBytes(row.saved_bytes || 0))); + const original = Number(row.original_bytes) || 0, share = original > 0 ? Math.max(0, Math.min(100, (Number(row.saved_bytes) || 0) / original * 100)) : 0; + const reduction = el("td", undefined, "cache-ratio-cell"), meter = el("span", undefined, "cache-ratio-meter"), fill = el("i"); fill.style.width = `${share}%`; meter.append(fill); reduction.append(el("span", percent(row), "cache-ratio-value"), meter); + tr.append(reduction, el("td", averageMs(row))); return tr; })); $("transform-vhosts-empty").hidden = rows.length > 0; diff --git a/src/admin/web/vhosts/editor.js b/src/admin/web/vhosts/editor.js index 5694f0b..6404e14 100644 --- a/src/admin/web/vhosts/editor.js +++ b/src/admin/web/vhosts/editor.js @@ -69,8 +69,9 @@ function load(value = defaults(), migrationIds = [], show = true) { editing = value.id || null; revision = envelope?.revision ?? null; dirty = false; initialized = true; container.replaceChildren(); $("vhost-editing").textContent = t(editing ? "vhEditLabel" : "vhNewLabel"); let g = group("vhEditor"); const basicFields = subsection(g, "vhGeneralDetailsSection"); - field(basicFields, "id", "vhId", value.id, "text", { required: true, maxLength: 64, pattern: "[A-Za-z0-9_-]{1,64}" }); if (editing) note(basicFields, "vhIdRenameHelp"); - let refreshCanonical = () => { }; + const vhostIdInput = field(basicFields, "id", "vhId", value.id, "text", { required: true, maxLength: 64, pattern: "[A-Za-z0-9_-]{1,64}" }); if (editing) note(basicFields, "vhIdRenameHelp"); + let refreshCanonical = () => { }, vhostAutoId = null; + vhostAutoId = window.rustProxyAutoId.attach(vhostIdInput, { text: () => lines(read("hosts")?.value || "")[0] || "", taken: () => (envelope?.config.vhosts || []).map(item => item.id), resettable: !editing }); const enabledControl = field(basicFields, "enabled", "vhEnabled", value.enabled !== false, "checkbox"); window.rustProxyEnableControl(enabledControl, "vhEnableHint"); const enabledLabel = enabledControl.closest("label"); @@ -88,7 +89,8 @@ function load(value = defaults(), migrationIds = [], show = true) { const websocketLegacy = field(websocketFields, "websocket-legacy-support", "vhWebsocketLegacySupport", value.websocket_legacy_support === true, "checkbox"); note(websocketFields, "vhWebsocketLegacySupportHelp"); g = group("vhFrontends"); - readHosts = hostTagEditor(g, value.frontend?.hosts || [], hosts => refreshCanonical(hosts)); + readHosts = hostTagEditor(g, value.frontend?.hosts || [], hosts => { refreshCanonical(hosts); vhostAutoId?.refresh(); }); + if (!editing) g.lastElementChild?.after(vhostIdInput.closest("label")); const bindingControl = window.rustProxyIntegrations.bindings(g, value.frontend?.listener_ids || [], !editing); readBindings = bindingControl.read; note(g, "listenerDefaultPortsHint"); field(g, "force-ssl", "vhForceSsl", value.force_ssl === true, "checkbox"); diff --git a/src/admin/web/web-server.js b/src/admin/web/web-server.js index a786501..3ad4e6b 100644 --- a/src/admin/web/web-server.js +++ b/src/admin/web/web-server.js @@ -330,6 +330,7 @@ $("web-service-id").value = item.id || ""; $("web-service-id").readOnly = !!editing; $("web-service-name").value = item.name || ""; + window.rustProxyAutoId.attach($("web-service-id"), { elements: [$("web-service-name")], taken: () => (envelope?.config.web_services || []).map(value => value.id) }); $("web-service-root").value = item.document_root || ""; populateSettings(item); $("web-service-preset").value = "custom"; diff --git a/tests/panel_refresh_contract.js b/tests/panel_refresh_contract.js index b23b225..69538ed 100644 --- a/tests/panel_refresh_contract.js +++ b/tests/panel_refresh_contract.js @@ -51,5 +51,5 @@ const events = openapi.paths["/api/events"].get; const logsFlag = (events.parameters || []).find(parameter => parameter.name === "logs"); assert.equal(logsFlag?.schema?.type, "boolean"); assert.equal(logsFlag?.schema?.default, true); -assert.equal(openapi.info.version, "0.36.3"); +assert.equal(openapi.info.version, "0.36.4"); console.log("Panel refresh/API contract checks: OK");
Vhost