Merge pull request #204 from neon-mmd/feat-rate-limiter-for-websurfx
Browse files- Cargo.lock +175 -74
- Cargo.toml +2 -1
- src/config/parser.rs +8 -12
- src/config/parser_models.rs +23 -0
- src/lib.rs +10 -8
- websurfx/config.lua +8 -1
Cargo.lock
CHANGED
|
@@ -9,7 +9,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 9 |
checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8"
|
| 10 |
dependencies = [
|
| 11 |
"bitflags 1.3.2",
|
| 12 |
-
"bytes 1.
|
| 13 |
"futures-core",
|
| 14 |
"futures-sink",
|
| 15 |
"memchr",
|
|
@@ -46,7 +46,7 @@ dependencies = [
|
|
| 46 |
"actix-web",
|
| 47 |
"askama_escape",
|
| 48 |
"bitflags 1.3.2",
|
| 49 |
-
"bytes 1.
|
| 50 |
"derive_more",
|
| 51 |
"futures-core",
|
| 52 |
"http-range",
|
|
@@ -57,6 +57,18 @@ dependencies = [
|
|
| 57 |
"pin-project-lite",
|
| 58 |
]
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
[[package]]
|
| 61 |
name = "actix-http"
|
| 62 |
version = "3.4.0"
|
|
@@ -68,10 +80,10 @@ dependencies = [
|
|
| 68 |
"actix-service",
|
| 69 |
"actix-utils",
|
| 70 |
"ahash",
|
| 71 |
-
"base64 0.21.
|
| 72 |
"bitflags 2.4.0",
|
| 73 |
"brotli",
|
| 74 |
-
"bytes 1.
|
| 75 |
"bytestring",
|
| 76 |
"derive_more",
|
| 77 |
"encoding_rs",
|
|
@@ -103,7 +115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 103 |
checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
|
| 104 |
dependencies = [
|
| 105 |
"quote 1.0.33",
|
| 106 |
-
"syn 2.0.
|
| 107 |
]
|
| 108 |
|
| 109 |
[[package]]
|
|
@@ -183,7 +195,7 @@ dependencies = [
|
|
| 183 |
"actix-utils",
|
| 184 |
"actix-web-codegen",
|
| 185 |
"ahash",
|
| 186 |
-
"bytes 1.
|
| 187 |
"bytestring",
|
| 188 |
"cfg-if 1.0.0",
|
| 189 |
"cookie 0.16.2",
|
|
@@ -216,7 +228,7 @@ dependencies = [
|
|
| 216 |
"actix-router",
|
| 217 |
"proc-macro2 1.0.66",
|
| 218 |
"quote 1.0.33",
|
| 219 |
-
"syn 2.0.
|
| 220 |
]
|
| 221 |
|
| 222 |
[[package]]
|
|
@@ -278,9 +290,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
|
|
| 278 |
|
| 279 |
[[package]]
|
| 280 |
name = "anstyle"
|
| 281 |
-
version = "1.0.
|
| 282 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 283 |
-
checksum = "
|
| 284 |
|
| 285 |
[[package]]
|
| 286 |
name = "anyhow"
|
|
@@ -314,7 +326,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
|
|
| 314 |
dependencies = [
|
| 315 |
"proc-macro2 1.0.66",
|
| 316 |
"quote 1.0.33",
|
| 317 |
-
"syn 2.0.
|
| 318 |
]
|
| 319 |
|
| 320 |
[[package]]
|
|
@@ -358,9 +370,9 @@ dependencies = [
|
|
| 358 |
|
| 359 |
[[package]]
|
| 360 |
name = "base64"
|
| 361 |
-
version = "0.21.
|
| 362 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 363 |
-
checksum = "
|
| 364 |
|
| 365 |
[[package]]
|
| 366 |
name = "bit-set"
|
|
@@ -453,9 +465,9 @@ dependencies = [
|
|
| 453 |
|
| 454 |
[[package]]
|
| 455 |
name = "bytes"
|
| 456 |
-
version = "1.
|
| 457 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 458 |
-
checksum = "
|
| 459 |
|
| 460 |
[[package]]
|
| 461 |
name = "bytestring"
|
|
@@ -463,7 +475,7 @@ version = "1.3.0"
|
|
| 463 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 464 |
checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae"
|
| 465 |
dependencies = [
|
| 466 |
-
"bytes 1.
|
| 467 |
]
|
| 468 |
|
| 469 |
[[package]]
|
|
@@ -570,7 +582,7 @@ version = "4.6.6"
|
|
| 570 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 571 |
checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
|
| 572 |
dependencies = [
|
| 573 |
-
"bytes 1.
|
| 574 |
"futures-core",
|
| 575 |
"memchr",
|
| 576 |
"pin-project-lite",
|
|
@@ -590,7 +602,7 @@ version = "0.12.0"
|
|
| 590 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 591 |
checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
|
| 592 |
dependencies = [
|
| 593 |
-
"time 0.1.
|
| 594 |
"url 1.7.2",
|
| 595 |
]
|
| 596 |
|
|
@@ -618,7 +630,7 @@ dependencies = [
|
|
| 618 |
"publicsuffix",
|
| 619 |
"serde",
|
| 620 |
"serde_json",
|
| 621 |
-
"time 0.1.
|
| 622 |
"try_from",
|
| 623 |
"url 1.7.2",
|
| 624 |
]
|
|
@@ -814,7 +826,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 814 |
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
|
| 815 |
dependencies = [
|
| 816 |
"quote 1.0.33",
|
| 817 |
-
"syn 2.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 818 |
]
|
| 819 |
|
| 820 |
[[package]]
|
|
@@ -950,9 +975,9 @@ dependencies = [
|
|
| 950 |
|
| 951 |
[[package]]
|
| 952 |
name = "error-stack"
|
| 953 |
-
version = "0.4.
|
| 954 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 955 |
-
checksum = "
|
| 956 |
dependencies = [
|
| 957 |
"anyhow",
|
| 958 |
"rustc_version 0.4.0",
|
|
@@ -1147,7 +1172,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
|
|
| 1147 |
dependencies = [
|
| 1148 |
"proc-macro2 1.0.66",
|
| 1149 |
"quote 1.0.33",
|
| 1150 |
-
"syn 2.0.
|
| 1151 |
]
|
| 1152 |
|
| 1153 |
[[package]]
|
|
@@ -1162,6 +1187,12 @@ version = "0.3.28"
|
|
| 1162 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1163 |
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
| 1164 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1165 |
[[package]]
|
| 1166 |
name = "futures-util"
|
| 1167 |
version = "0.3.28"
|
|
@@ -1225,6 +1256,24 @@ version = "0.28.0"
|
|
| 1225 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1226 |
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
| 1227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1228 |
[[package]]
|
| 1229 |
name = "h2"
|
| 1230 |
version = "0.1.26"
|
|
@@ -1249,7 +1298,7 @@ version = "0.3.21"
|
|
| 1249 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1250 |
checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
|
| 1251 |
dependencies = [
|
| 1252 |
-
"bytes 1.
|
| 1253 |
"fnv",
|
| 1254 |
"futures-core",
|
| 1255 |
"futures-sink",
|
|
@@ -1289,6 +1338,12 @@ version = "0.12.3"
|
|
| 1289 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1290 |
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
| 1291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1292 |
[[package]]
|
| 1293 |
name = "hermit-abi"
|
| 1294 |
version = "0.3.2"
|
|
@@ -1340,7 +1395,7 @@ version = "0.2.9"
|
|
| 1340 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1341 |
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
|
| 1342 |
dependencies = [
|
| 1343 |
-
"bytes 1.
|
| 1344 |
"fnv",
|
| 1345 |
"itoa 1.0.9",
|
| 1346 |
]
|
|
@@ -1363,7 +1418,7 @@ version = "0.4.5"
|
|
| 1363 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1364 |
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
| 1365 |
dependencies = [
|
| 1366 |
-
"bytes 1.
|
| 1367 |
"http 0.2.9",
|
| 1368 |
"pin-project-lite",
|
| 1369 |
]
|
|
@@ -1410,7 +1465,7 @@ dependencies = [
|
|
| 1410 |
"log",
|
| 1411 |
"net2",
|
| 1412 |
"rustc_version 0.2.3",
|
| 1413 |
-
"time 0.1.
|
| 1414 |
"tokio 0.1.22",
|
| 1415 |
"tokio-buf",
|
| 1416 |
"tokio-executor",
|
|
@@ -1428,7 +1483,7 @@ version = "0.14.27"
|
|
| 1428 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1429 |
checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
|
| 1430 |
dependencies = [
|
| 1431 |
-
"bytes 1.
|
| 1432 |
"futures-channel",
|
| 1433 |
"futures-core",
|
| 1434 |
"futures-util",
|
|
@@ -1465,7 +1520,7 @@ version = "0.5.0"
|
|
| 1465 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1466 |
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
| 1467 |
dependencies = [
|
| 1468 |
-
"bytes 1.
|
| 1469 |
"hyper 0.14.27",
|
| 1470 |
"native-tls",
|
| 1471 |
"tokio 1.32.0",
|
|
@@ -1511,7 +1566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 1511 |
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
| 1512 |
dependencies = [
|
| 1513 |
"autocfg 1.1.0",
|
| 1514 |
-
"hashbrown",
|
| 1515 |
]
|
| 1516 |
|
| 1517 |
[[package]]
|
|
@@ -1619,9 +1674,9 @@ dependencies = [
|
|
| 1619 |
|
| 1620 |
[[package]]
|
| 1621 |
name = "linux-raw-sys"
|
| 1622 |
-
version = "0.4.
|
| 1623 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1624 |
-
checksum = "
|
| 1625 |
|
| 1626 |
[[package]]
|
| 1627 |
name = "local-channel"
|
|
@@ -1672,6 +1727,15 @@ version = "0.1.1"
|
|
| 1672 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1673 |
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
| 1674 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1675 |
[[package]]
|
| 1676 |
name = "markup5ever"
|
| 1677 |
version = "0.8.1"
|
|
@@ -1723,9 +1787,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
|
| 1723 |
|
| 1724 |
[[package]]
|
| 1725 |
name = "memchr"
|
| 1726 |
-
version = "2.6.
|
| 1727 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1728 |
-
checksum = "
|
| 1729 |
|
| 1730 |
[[package]]
|
| 1731 |
name = "memoffset"
|
|
@@ -1887,6 +1951,18 @@ version = "0.5.0"
|
|
| 1887 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1888 |
checksum = "ab250442c86f1850815b5d268639dff018c0627022bc1940eb2d642ca1ce12f0"
|
| 1889 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1890 |
[[package]]
|
| 1891 |
name = "num-traits"
|
| 1892 |
version = "0.2.16"
|
|
@@ -1908,9 +1984,9 @@ dependencies = [
|
|
| 1908 |
|
| 1909 |
[[package]]
|
| 1910 |
name = "object"
|
| 1911 |
-
version = "0.32.
|
| 1912 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1913 |
-
checksum = "
|
| 1914 |
dependencies = [
|
| 1915 |
"memchr",
|
| 1916 |
]
|
|
@@ -1950,7 +2026,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
|
| 1950 |
dependencies = [
|
| 1951 |
"proc-macro2 1.0.66",
|
| 1952 |
"quote 1.0.33",
|
| 1953 |
-
"syn 2.0.
|
| 1954 |
]
|
| 1955 |
|
| 1956 |
[[package]]
|
|
@@ -1961,9 +2037,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
|
| 1961 |
|
| 1962 |
[[package]]
|
| 1963 |
name = "openssl-sys"
|
| 1964 |
-
version = "0.9.
|
| 1965 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1966 |
-
checksum = "
|
| 1967 |
dependencies = [
|
| 1968 |
"cc",
|
| 1969 |
"libc",
|
|
@@ -2069,7 +2145,7 @@ dependencies = [
|
|
| 2069 |
"pest_meta",
|
| 2070 |
"proc-macro2 1.0.66",
|
| 2071 |
"quote 1.0.33",
|
| 2072 |
-
"syn 2.0.
|
| 2073 |
]
|
| 2074 |
|
| 2075 |
[[package]]
|
|
@@ -2171,7 +2247,7 @@ dependencies = [
|
|
| 2171 |
"phf_shared 0.11.2",
|
| 2172 |
"proc-macro2 1.0.66",
|
| 2173 |
"quote 1.0.33",
|
| 2174 |
-
"syn 2.0.
|
| 2175 |
]
|
| 2176 |
|
| 2177 |
[[package]]
|
|
@@ -2218,7 +2294,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
|
| 2218 |
dependencies = [
|
| 2219 |
"proc-macro2 1.0.66",
|
| 2220 |
"quote 1.0.33",
|
| 2221 |
-
"syn 2.0.
|
| 2222 |
]
|
| 2223 |
|
| 2224 |
[[package]]
|
|
@@ -2307,6 +2383,22 @@ dependencies = [
|
|
| 2307 |
"url 2.4.1",
|
| 2308 |
]
|
| 2309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2310 |
[[package]]
|
| 2311 |
name = "quote"
|
| 2312 |
version = "0.6.13"
|
|
@@ -2461,6 +2553,15 @@ dependencies = [
|
|
| 2461 |
"rand_core 0.3.1",
|
| 2462 |
]
|
| 2463 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2464 |
[[package]]
|
| 2465 |
name = "rayon"
|
| 2466 |
version = "1.7.0"
|
|
@@ -2500,7 +2601,7 @@ checksum = "4f49cdc0bb3f412bf8e7d1bd90fe1d9eb10bc5c399ba90973c14662a27b3f8ba"
|
|
| 2500 |
dependencies = [
|
| 2501 |
"arc-swap",
|
| 2502 |
"async-trait",
|
| 2503 |
-
"bytes 1.
|
| 2504 |
"combine",
|
| 2505 |
"futures 0.3.28",
|
| 2506 |
"futures-util",
|
|
@@ -2533,9 +2634,9 @@ dependencies = [
|
|
| 2533 |
|
| 2534 |
[[package]]
|
| 2535 |
name = "regex"
|
| 2536 |
-
version = "1.9.
|
| 2537 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2538 |
-
checksum = "
|
| 2539 |
dependencies = [
|
| 2540 |
"aho-corasick",
|
| 2541 |
"memchr",
|
|
@@ -2545,9 +2646,9 @@ dependencies = [
|
|
| 2545 |
|
| 2546 |
[[package]]
|
| 2547 |
name = "regex-automata"
|
| 2548 |
-
version = "0.3.
|
| 2549 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2550 |
-
checksum = "
|
| 2551 |
dependencies = [
|
| 2552 |
"aho-corasick",
|
| 2553 |
"memchr",
|
|
@@ -2583,7 +2684,7 @@ dependencies = [
|
|
| 2583 |
"serde",
|
| 2584 |
"serde_json",
|
| 2585 |
"serde_urlencoded 0.5.5",
|
| 2586 |
-
"time 0.1.
|
| 2587 |
"tokio 0.1.22",
|
| 2588 |
"tokio-executor",
|
| 2589 |
"tokio-io",
|
|
@@ -2600,8 +2701,8 @@ version = "0.11.20"
|
|
| 2600 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2601 |
checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"
|
| 2602 |
dependencies = [
|
| 2603 |
-
"base64 0.21.
|
| 2604 |
-
"bytes 1.
|
| 2605 |
"encoding_rs",
|
| 2606 |
"futures-core",
|
| 2607 |
"futures-util",
|
|
@@ -2663,9 +2764,9 @@ dependencies = [
|
|
| 2663 |
|
| 2664 |
[[package]]
|
| 2665 |
name = "rustix"
|
| 2666 |
-
version = "0.38.
|
| 2667 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2668 |
-
checksum = "
|
| 2669 |
dependencies = [
|
| 2670 |
"bitflags 2.4.0",
|
| 2671 |
"errno",
|
|
@@ -2823,14 +2924,14 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
|
|
| 2823 |
dependencies = [
|
| 2824 |
"proc-macro2 1.0.66",
|
| 2825 |
"quote 1.0.33",
|
| 2826 |
-
"syn 2.0.
|
| 2827 |
]
|
| 2828 |
|
| 2829 |
[[package]]
|
| 2830 |
name = "serde_json"
|
| 2831 |
-
version = "1.0.
|
| 2832 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2833 |
-
checksum = "
|
| 2834 |
dependencies = [
|
| 2835 |
"itoa 1.0.9",
|
| 2836 |
"ryu",
|
|
@@ -3065,9 +3166,9 @@ dependencies = [
|
|
| 3065 |
|
| 3066 |
[[package]]
|
| 3067 |
name = "syn"
|
| 3068 |
-
version = "2.0.
|
| 3069 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3070 |
-
checksum = "
|
| 3071 |
dependencies = [
|
| 3072 |
"proc-macro2 1.0.66",
|
| 3073 |
"quote 1.0.33",
|
|
@@ -3131,22 +3232,22 @@ dependencies = [
|
|
| 3131 |
|
| 3132 |
[[package]]
|
| 3133 |
name = "thiserror"
|
| 3134 |
-
version = "1.0.
|
| 3135 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3136 |
-
checksum = "
|
| 3137 |
dependencies = [
|
| 3138 |
"thiserror-impl",
|
| 3139 |
]
|
| 3140 |
|
| 3141 |
[[package]]
|
| 3142 |
name = "thiserror-impl"
|
| 3143 |
-
version = "1.0.
|
| 3144 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3145 |
-
checksum = "
|
| 3146 |
dependencies = [
|
| 3147 |
"proc-macro2 1.0.66",
|
| 3148 |
"quote 1.0.33",
|
| 3149 |
-
"syn 2.0.
|
| 3150 |
]
|
| 3151 |
|
| 3152 |
[[package]]
|
|
@@ -3157,12 +3258,11 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820"
|
|
| 3157 |
|
| 3158 |
[[package]]
|
| 3159 |
name = "time"
|
| 3160 |
-
version = "0.1.
|
| 3161 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3162 |
-
checksum = "
|
| 3163 |
dependencies = [
|
| 3164 |
"libc",
|
| 3165 |
-
"wasi 0.10.0+wasi-snapshot-preview1",
|
| 3166 |
"winapi 0.3.9",
|
| 3167 |
]
|
| 3168 |
|
|
@@ -3245,7 +3345,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
| 3245 |
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
|
| 3246 |
dependencies = [
|
| 3247 |
"backtrace",
|
| 3248 |
-
"bytes 1.
|
| 3249 |
"libc",
|
| 3250 |
"mio 0.8.8",
|
| 3251 |
"num_cpus",
|
|
@@ -3307,7 +3407,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
|
|
| 3307 |
dependencies = [
|
| 3308 |
"proc-macro2 1.0.66",
|
| 3309 |
"quote 1.0.33",
|
| 3310 |
-
"syn 2.0.
|
| 3311 |
]
|
| 3312 |
|
| 3313 |
[[package]]
|
|
@@ -3409,7 +3509,7 @@ version = "0.7.8"
|
|
| 3409 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3410 |
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
|
| 3411 |
dependencies = [
|
| 3412 |
-
"bytes 1.
|
| 3413 |
"futures-core",
|
| 3414 |
"futures-sink",
|
| 3415 |
"pin-project-lite",
|
|
@@ -3579,9 +3679,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|
| 3579 |
|
| 3580 |
[[package]]
|
| 3581 |
name = "walkdir"
|
| 3582 |
-
version = "2.
|
| 3583 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3584 |
-
checksum = "
|
| 3585 |
dependencies = [
|
| 3586 |
"same-file",
|
| 3587 |
"winapi-util",
|
|
@@ -3609,9 +3709,9 @@ dependencies = [
|
|
| 3609 |
|
| 3610 |
[[package]]
|
| 3611 |
name = "wasi"
|
| 3612 |
-
version = "0.10.
|
| 3613 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3614 |
-
checksum = "
|
| 3615 |
|
| 3616 |
[[package]]
|
| 3617 |
name = "wasi"
|
|
@@ -3640,7 +3740,7 @@ dependencies = [
|
|
| 3640 |
"once_cell",
|
| 3641 |
"proc-macro2 1.0.66",
|
| 3642 |
"quote 1.0.33",
|
| 3643 |
-
"syn 2.0.
|
| 3644 |
"wasm-bindgen-shared",
|
| 3645 |
]
|
| 3646 |
|
|
@@ -3674,7 +3774,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
|
|
| 3674 |
dependencies = [
|
| 3675 |
"proc-macro2 1.0.66",
|
| 3676 |
"quote 1.0.33",
|
| 3677 |
-
"syn 2.0.
|
| 3678 |
"wasm-bindgen-backend",
|
| 3679 |
"wasm-bindgen-shared",
|
| 3680 |
]
|
|
@@ -3697,10 +3797,11 @@ dependencies = [
|
|
| 3697 |
|
| 3698 |
[[package]]
|
| 3699 |
name = "websurfx"
|
| 3700 |
-
version = "0.
|
| 3701 |
dependencies = [
|
| 3702 |
"actix-cors",
|
| 3703 |
"actix-files",
|
|
|
|
| 3704 |
"actix-web",
|
| 3705 |
"async-once-cell",
|
| 3706 |
"async-trait",
|
|
|
|
| 9 |
checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8"
|
| 10 |
dependencies = [
|
| 11 |
"bitflags 1.3.2",
|
| 12 |
+
"bytes 1.5.0",
|
| 13 |
"futures-core",
|
| 14 |
"futures-sink",
|
| 15 |
"memchr",
|
|
|
|
| 46 |
"actix-web",
|
| 47 |
"askama_escape",
|
| 48 |
"bitflags 1.3.2",
|
| 49 |
+
"bytes 1.5.0",
|
| 50 |
"derive_more",
|
| 51 |
"futures-core",
|
| 52 |
"http-range",
|
|
|
|
| 57 |
"pin-project-lite",
|
| 58 |
]
|
| 59 |
|
| 60 |
+
[[package]]
|
| 61 |
+
name = "actix-governor"
|
| 62 |
+
version = "0.4.1"
|
| 63 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 64 |
+
checksum = "46ff2d40f2bc627b8054c5e20fa6b0b0cf9428699b54bd41634e9ae3098ad555"
|
| 65 |
+
dependencies = [
|
| 66 |
+
"actix-http",
|
| 67 |
+
"actix-web",
|
| 68 |
+
"futures 0.3.28",
|
| 69 |
+
"governor",
|
| 70 |
+
]
|
| 71 |
+
|
| 72 |
[[package]]
|
| 73 |
name = "actix-http"
|
| 74 |
version = "3.4.0"
|
|
|
|
| 80 |
"actix-service",
|
| 81 |
"actix-utils",
|
| 82 |
"ahash",
|
| 83 |
+
"base64 0.21.4",
|
| 84 |
"bitflags 2.4.0",
|
| 85 |
"brotli",
|
| 86 |
+
"bytes 1.5.0",
|
| 87 |
"bytestring",
|
| 88 |
"derive_more",
|
| 89 |
"encoding_rs",
|
|
|
|
| 115 |
checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
|
| 116 |
dependencies = [
|
| 117 |
"quote 1.0.33",
|
| 118 |
+
"syn 2.0.32",
|
| 119 |
]
|
| 120 |
|
| 121 |
[[package]]
|
|
|
|
| 195 |
"actix-utils",
|
| 196 |
"actix-web-codegen",
|
| 197 |
"ahash",
|
| 198 |
+
"bytes 1.5.0",
|
| 199 |
"bytestring",
|
| 200 |
"cfg-if 1.0.0",
|
| 201 |
"cookie 0.16.2",
|
|
|
|
| 228 |
"actix-router",
|
| 229 |
"proc-macro2 1.0.66",
|
| 230 |
"quote 1.0.33",
|
| 231 |
+
"syn 2.0.32",
|
| 232 |
]
|
| 233 |
|
| 234 |
[[package]]
|
|
|
|
| 290 |
|
| 291 |
[[package]]
|
| 292 |
name = "anstyle"
|
| 293 |
+
version = "1.0.3"
|
| 294 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 295 |
+
checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
|
| 296 |
|
| 297 |
[[package]]
|
| 298 |
name = "anyhow"
|
|
|
|
| 326 |
dependencies = [
|
| 327 |
"proc-macro2 1.0.66",
|
| 328 |
"quote 1.0.33",
|
| 329 |
+
"syn 2.0.32",
|
| 330 |
]
|
| 331 |
|
| 332 |
[[package]]
|
|
|
|
| 370 |
|
| 371 |
[[package]]
|
| 372 |
name = "base64"
|
| 373 |
+
version = "0.21.4"
|
| 374 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 375 |
+
checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
|
| 376 |
|
| 377 |
[[package]]
|
| 378 |
name = "bit-set"
|
|
|
|
| 465 |
|
| 466 |
[[package]]
|
| 467 |
name = "bytes"
|
| 468 |
+
version = "1.5.0"
|
| 469 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 470 |
+
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
|
| 471 |
|
| 472 |
[[package]]
|
| 473 |
name = "bytestring"
|
|
|
|
| 475 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 476 |
checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae"
|
| 477 |
dependencies = [
|
| 478 |
+
"bytes 1.5.0",
|
| 479 |
]
|
| 480 |
|
| 481 |
[[package]]
|
|
|
|
| 582 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 583 |
checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
|
| 584 |
dependencies = [
|
| 585 |
+
"bytes 1.5.0",
|
| 586 |
"futures-core",
|
| 587 |
"memchr",
|
| 588 |
"pin-project-lite",
|
|
|
|
| 602 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 603 |
checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
|
| 604 |
dependencies = [
|
| 605 |
+
"time 0.1.43",
|
| 606 |
"url 1.7.2",
|
| 607 |
]
|
| 608 |
|
|
|
|
| 630 |
"publicsuffix",
|
| 631 |
"serde",
|
| 632 |
"serde_json",
|
| 633 |
+
"time 0.1.43",
|
| 634 |
"try_from",
|
| 635 |
"url 1.7.2",
|
| 636 |
]
|
|
|
|
| 826 |
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
|
| 827 |
dependencies = [
|
| 828 |
"quote 1.0.33",
|
| 829 |
+
"syn 2.0.32",
|
| 830 |
+
]
|
| 831 |
+
|
| 832 |
+
[[package]]
|
| 833 |
+
name = "dashmap"
|
| 834 |
+
version = "5.5.3"
|
| 835 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 836 |
+
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
|
| 837 |
+
dependencies = [
|
| 838 |
+
"cfg-if 1.0.0",
|
| 839 |
+
"hashbrown 0.14.0",
|
| 840 |
+
"lock_api 0.4.10",
|
| 841 |
+
"once_cell",
|
| 842 |
+
"parking_lot_core 0.9.8",
|
| 843 |
]
|
| 844 |
|
| 845 |
[[package]]
|
|
|
|
| 975 |
|
| 976 |
[[package]]
|
| 977 |
name = "error-stack"
|
| 978 |
+
version = "0.4.1"
|
| 979 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 980 |
+
checksum = "27a72baa257b5e0e2de241967bc5ee8f855d6072351042688621081d66b2a76b"
|
| 981 |
dependencies = [
|
| 982 |
"anyhow",
|
| 983 |
"rustc_version 0.4.0",
|
|
|
|
| 1172 |
dependencies = [
|
| 1173 |
"proc-macro2 1.0.66",
|
| 1174 |
"quote 1.0.33",
|
| 1175 |
+
"syn 2.0.32",
|
| 1176 |
]
|
| 1177 |
|
| 1178 |
[[package]]
|
|
|
|
| 1187 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1188 |
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
| 1189 |
|
| 1190 |
+
[[package]]
|
| 1191 |
+
name = "futures-timer"
|
| 1192 |
+
version = "3.0.2"
|
| 1193 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1194 |
+
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
|
| 1195 |
+
|
| 1196 |
[[package]]
|
| 1197 |
name = "futures-util"
|
| 1198 |
version = "0.3.28"
|
|
|
|
| 1256 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1257 |
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
| 1258 |
|
| 1259 |
+
[[package]]
|
| 1260 |
+
name = "governor"
|
| 1261 |
+
version = "0.5.1"
|
| 1262 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1263 |
+
checksum = "c390a940a5d157878dd057c78680a33ce3415bcd05b4799509ea44210914b4d5"
|
| 1264 |
+
dependencies = [
|
| 1265 |
+
"cfg-if 1.0.0",
|
| 1266 |
+
"dashmap",
|
| 1267 |
+
"futures 0.3.28",
|
| 1268 |
+
"futures-timer",
|
| 1269 |
+
"no-std-compat",
|
| 1270 |
+
"nonzero_ext",
|
| 1271 |
+
"parking_lot 0.12.1",
|
| 1272 |
+
"quanta",
|
| 1273 |
+
"rand 0.8.5",
|
| 1274 |
+
"smallvec 1.11.0",
|
| 1275 |
+
]
|
| 1276 |
+
|
| 1277 |
[[package]]
|
| 1278 |
name = "h2"
|
| 1279 |
version = "0.1.26"
|
|
|
|
| 1298 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1299 |
checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
|
| 1300 |
dependencies = [
|
| 1301 |
+
"bytes 1.5.0",
|
| 1302 |
"fnv",
|
| 1303 |
"futures-core",
|
| 1304 |
"futures-sink",
|
|
|
|
| 1338 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1339 |
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
| 1340 |
|
| 1341 |
+
[[package]]
|
| 1342 |
+
name = "hashbrown"
|
| 1343 |
+
version = "0.14.0"
|
| 1344 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1345 |
+
checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
|
| 1346 |
+
|
| 1347 |
[[package]]
|
| 1348 |
name = "hermit-abi"
|
| 1349 |
version = "0.3.2"
|
|
|
|
| 1395 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1396 |
checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
|
| 1397 |
dependencies = [
|
| 1398 |
+
"bytes 1.5.0",
|
| 1399 |
"fnv",
|
| 1400 |
"itoa 1.0.9",
|
| 1401 |
]
|
|
|
|
| 1418 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1419 |
checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
|
| 1420 |
dependencies = [
|
| 1421 |
+
"bytes 1.5.0",
|
| 1422 |
"http 0.2.9",
|
| 1423 |
"pin-project-lite",
|
| 1424 |
]
|
|
|
|
| 1465 |
"log",
|
| 1466 |
"net2",
|
| 1467 |
"rustc_version 0.2.3",
|
| 1468 |
+
"time 0.1.43",
|
| 1469 |
"tokio 0.1.22",
|
| 1470 |
"tokio-buf",
|
| 1471 |
"tokio-executor",
|
|
|
|
| 1483 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1484 |
checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
|
| 1485 |
dependencies = [
|
| 1486 |
+
"bytes 1.5.0",
|
| 1487 |
"futures-channel",
|
| 1488 |
"futures-core",
|
| 1489 |
"futures-util",
|
|
|
|
| 1520 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1521 |
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
| 1522 |
dependencies = [
|
| 1523 |
+
"bytes 1.5.0",
|
| 1524 |
"hyper 0.14.27",
|
| 1525 |
"native-tls",
|
| 1526 |
"tokio 1.32.0",
|
|
|
|
| 1566 |
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
| 1567 |
dependencies = [
|
| 1568 |
"autocfg 1.1.0",
|
| 1569 |
+
"hashbrown 0.12.3",
|
| 1570 |
]
|
| 1571 |
|
| 1572 |
[[package]]
|
|
|
|
| 1674 |
|
| 1675 |
[[package]]
|
| 1676 |
name = "linux-raw-sys"
|
| 1677 |
+
version = "0.4.7"
|
| 1678 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1679 |
+
checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128"
|
| 1680 |
|
| 1681 |
[[package]]
|
| 1682 |
name = "local-channel"
|
|
|
|
| 1727 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1728 |
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
|
| 1729 |
|
| 1730 |
+
[[package]]
|
| 1731 |
+
name = "mach"
|
| 1732 |
+
version = "0.3.2"
|
| 1733 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1734 |
+
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
|
| 1735 |
+
dependencies = [
|
| 1736 |
+
"libc",
|
| 1737 |
+
]
|
| 1738 |
+
|
| 1739 |
[[package]]
|
| 1740 |
name = "markup5ever"
|
| 1741 |
version = "0.8.1"
|
|
|
|
| 1787 |
|
| 1788 |
[[package]]
|
| 1789 |
name = "memchr"
|
| 1790 |
+
version = "2.6.3"
|
| 1791 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1792 |
+
checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
|
| 1793 |
|
| 1794 |
[[package]]
|
| 1795 |
name = "memoffset"
|
|
|
|
| 1951 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1952 |
checksum = "ab250442c86f1850815b5d268639dff018c0627022bc1940eb2d642ca1ce12f0"
|
| 1953 |
|
| 1954 |
+
[[package]]
|
| 1955 |
+
name = "no-std-compat"
|
| 1956 |
+
version = "0.4.1"
|
| 1957 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1958 |
+
checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
|
| 1959 |
+
|
| 1960 |
+
[[package]]
|
| 1961 |
+
name = "nonzero_ext"
|
| 1962 |
+
version = "0.3.0"
|
| 1963 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1964 |
+
checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
|
| 1965 |
+
|
| 1966 |
[[package]]
|
| 1967 |
name = "num-traits"
|
| 1968 |
version = "0.2.16"
|
|
|
|
| 1984 |
|
| 1985 |
[[package]]
|
| 1986 |
name = "object"
|
| 1987 |
+
version = "0.32.1"
|
| 1988 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 1989 |
+
checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
|
| 1990 |
dependencies = [
|
| 1991 |
"memchr",
|
| 1992 |
]
|
|
|
|
| 2026 |
dependencies = [
|
| 2027 |
"proc-macro2 1.0.66",
|
| 2028 |
"quote 1.0.33",
|
| 2029 |
+
"syn 2.0.32",
|
| 2030 |
]
|
| 2031 |
|
| 2032 |
[[package]]
|
|
|
|
| 2037 |
|
| 2038 |
[[package]]
|
| 2039 |
name = "openssl-sys"
|
| 2040 |
+
version = "0.9.93"
|
| 2041 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2042 |
+
checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
|
| 2043 |
dependencies = [
|
| 2044 |
"cc",
|
| 2045 |
"libc",
|
|
|
|
| 2145 |
"pest_meta",
|
| 2146 |
"proc-macro2 1.0.66",
|
| 2147 |
"quote 1.0.33",
|
| 2148 |
+
"syn 2.0.32",
|
| 2149 |
]
|
| 2150 |
|
| 2151 |
[[package]]
|
|
|
|
| 2247 |
"phf_shared 0.11.2",
|
| 2248 |
"proc-macro2 1.0.66",
|
| 2249 |
"quote 1.0.33",
|
| 2250 |
+
"syn 2.0.32",
|
| 2251 |
]
|
| 2252 |
|
| 2253 |
[[package]]
|
|
|
|
| 2294 |
dependencies = [
|
| 2295 |
"proc-macro2 1.0.66",
|
| 2296 |
"quote 1.0.33",
|
| 2297 |
+
"syn 2.0.32",
|
| 2298 |
]
|
| 2299 |
|
| 2300 |
[[package]]
|
|
|
|
| 2383 |
"url 2.4.1",
|
| 2384 |
]
|
| 2385 |
|
| 2386 |
+
[[package]]
|
| 2387 |
+
name = "quanta"
|
| 2388 |
+
version = "0.9.3"
|
| 2389 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2390 |
+
checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8"
|
| 2391 |
+
dependencies = [
|
| 2392 |
+
"crossbeam-utils 0.8.16",
|
| 2393 |
+
"libc",
|
| 2394 |
+
"mach",
|
| 2395 |
+
"once_cell",
|
| 2396 |
+
"raw-cpuid",
|
| 2397 |
+
"wasi 0.10.2+wasi-snapshot-preview1",
|
| 2398 |
+
"web-sys",
|
| 2399 |
+
"winapi 0.3.9",
|
| 2400 |
+
]
|
| 2401 |
+
|
| 2402 |
[[package]]
|
| 2403 |
name = "quote"
|
| 2404 |
version = "0.6.13"
|
|
|
|
| 2553 |
"rand_core 0.3.1",
|
| 2554 |
]
|
| 2555 |
|
| 2556 |
+
[[package]]
|
| 2557 |
+
name = "raw-cpuid"
|
| 2558 |
+
version = "10.7.0"
|
| 2559 |
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2560 |
+
checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
|
| 2561 |
+
dependencies = [
|
| 2562 |
+
"bitflags 1.3.2",
|
| 2563 |
+
]
|
| 2564 |
+
|
| 2565 |
[[package]]
|
| 2566 |
name = "rayon"
|
| 2567 |
version = "1.7.0"
|
|
|
|
| 2601 |
dependencies = [
|
| 2602 |
"arc-swap",
|
| 2603 |
"async-trait",
|
| 2604 |
+
"bytes 1.5.0",
|
| 2605 |
"combine",
|
| 2606 |
"futures 0.3.28",
|
| 2607 |
"futures-util",
|
|
|
|
| 2634 |
|
| 2635 |
[[package]]
|
| 2636 |
name = "regex"
|
| 2637 |
+
version = "1.9.5"
|
| 2638 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2639 |
+
checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
|
| 2640 |
dependencies = [
|
| 2641 |
"aho-corasick",
|
| 2642 |
"memchr",
|
|
|
|
| 2646 |
|
| 2647 |
[[package]]
|
| 2648 |
name = "regex-automata"
|
| 2649 |
+
version = "0.3.8"
|
| 2650 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2651 |
+
checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
|
| 2652 |
dependencies = [
|
| 2653 |
"aho-corasick",
|
| 2654 |
"memchr",
|
|
|
|
| 2684 |
"serde",
|
| 2685 |
"serde_json",
|
| 2686 |
"serde_urlencoded 0.5.5",
|
| 2687 |
+
"time 0.1.43",
|
| 2688 |
"tokio 0.1.22",
|
| 2689 |
"tokio-executor",
|
| 2690 |
"tokio-io",
|
|
|
|
| 2701 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2702 |
checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1"
|
| 2703 |
dependencies = [
|
| 2704 |
+
"base64 0.21.4",
|
| 2705 |
+
"bytes 1.5.0",
|
| 2706 |
"encoding_rs",
|
| 2707 |
"futures-core",
|
| 2708 |
"futures-util",
|
|
|
|
| 2764 |
|
| 2765 |
[[package]]
|
| 2766 |
name = "rustix"
|
| 2767 |
+
version = "0.38.13"
|
| 2768 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2769 |
+
checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662"
|
| 2770 |
dependencies = [
|
| 2771 |
"bitflags 2.4.0",
|
| 2772 |
"errno",
|
|
|
|
| 2924 |
dependencies = [
|
| 2925 |
"proc-macro2 1.0.66",
|
| 2926 |
"quote 1.0.33",
|
| 2927 |
+
"syn 2.0.32",
|
| 2928 |
]
|
| 2929 |
|
| 2930 |
[[package]]
|
| 2931 |
name = "serde_json"
|
| 2932 |
+
version = "1.0.106"
|
| 2933 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2934 |
+
checksum = "2cc66a619ed80bf7a0f6b17dd063a84b88f6dea1813737cf469aef1d081142c2"
|
| 2935 |
dependencies = [
|
| 2936 |
"itoa 1.0.9",
|
| 2937 |
"ryu",
|
|
|
|
| 3166 |
|
| 3167 |
[[package]]
|
| 3168 |
name = "syn"
|
| 3169 |
+
version = "2.0.32"
|
| 3170 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3171 |
+
checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
|
| 3172 |
dependencies = [
|
| 3173 |
"proc-macro2 1.0.66",
|
| 3174 |
"quote 1.0.33",
|
|
|
|
| 3232 |
|
| 3233 |
[[package]]
|
| 3234 |
name = "thiserror"
|
| 3235 |
+
version = "1.0.48"
|
| 3236 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3237 |
+
checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7"
|
| 3238 |
dependencies = [
|
| 3239 |
"thiserror-impl",
|
| 3240 |
]
|
| 3241 |
|
| 3242 |
[[package]]
|
| 3243 |
name = "thiserror-impl"
|
| 3244 |
+
version = "1.0.48"
|
| 3245 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3246 |
+
checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35"
|
| 3247 |
dependencies = [
|
| 3248 |
"proc-macro2 1.0.66",
|
| 3249 |
"quote 1.0.33",
|
| 3250 |
+
"syn 2.0.32",
|
| 3251 |
]
|
| 3252 |
|
| 3253 |
[[package]]
|
|
|
|
| 3258 |
|
| 3259 |
[[package]]
|
| 3260 |
name = "time"
|
| 3261 |
+
version = "0.1.43"
|
| 3262 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3263 |
+
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
|
| 3264 |
dependencies = [
|
| 3265 |
"libc",
|
|
|
|
| 3266 |
"winapi 0.3.9",
|
| 3267 |
]
|
| 3268 |
|
|
|
|
| 3345 |
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
|
| 3346 |
dependencies = [
|
| 3347 |
"backtrace",
|
| 3348 |
+
"bytes 1.5.0",
|
| 3349 |
"libc",
|
| 3350 |
"mio 0.8.8",
|
| 3351 |
"num_cpus",
|
|
|
|
| 3407 |
dependencies = [
|
| 3408 |
"proc-macro2 1.0.66",
|
| 3409 |
"quote 1.0.33",
|
| 3410 |
+
"syn 2.0.32",
|
| 3411 |
]
|
| 3412 |
|
| 3413 |
[[package]]
|
|
|
|
| 3509 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3510 |
checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
|
| 3511 |
dependencies = [
|
| 3512 |
+
"bytes 1.5.0",
|
| 3513 |
"futures-core",
|
| 3514 |
"futures-sink",
|
| 3515 |
"pin-project-lite",
|
|
|
|
| 3679 |
|
| 3680 |
[[package]]
|
| 3681 |
name = "walkdir"
|
| 3682 |
+
version = "2.4.0"
|
| 3683 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3684 |
+
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
| 3685 |
dependencies = [
|
| 3686 |
"same-file",
|
| 3687 |
"winapi-util",
|
|
|
|
| 3709 |
|
| 3710 |
[[package]]
|
| 3711 |
name = "wasi"
|
| 3712 |
+
version = "0.10.2+wasi-snapshot-preview1"
|
| 3713 |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3714 |
+
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
|
| 3715 |
|
| 3716 |
[[package]]
|
| 3717 |
name = "wasi"
|
|
|
|
| 3740 |
"once_cell",
|
| 3741 |
"proc-macro2 1.0.66",
|
| 3742 |
"quote 1.0.33",
|
| 3743 |
+
"syn 2.0.32",
|
| 3744 |
"wasm-bindgen-shared",
|
| 3745 |
]
|
| 3746 |
|
|
|
|
| 3774 |
dependencies = [
|
| 3775 |
"proc-macro2 1.0.66",
|
| 3776 |
"quote 1.0.33",
|
| 3777 |
+
"syn 2.0.32",
|
| 3778 |
"wasm-bindgen-backend",
|
| 3779 |
"wasm-bindgen-shared",
|
| 3780 |
]
|
|
|
|
| 3797 |
|
| 3798 |
[[package]]
|
| 3799 |
name = "websurfx"
|
| 3800 |
+
version = "0.20.0"
|
| 3801 |
dependencies = [
|
| 3802 |
"actix-cors",
|
| 3803 |
"actix-files",
|
| 3804 |
+
"actix-governor",
|
| 3805 |
"actix-web",
|
| 3806 |
"async-once-cell",
|
| 3807 |
"async-trait",
|
Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
[package]
|
| 2 |
name = "websurfx"
|
| 3 |
-
version = "0.
|
| 4 |
edition = "2021"
|
| 5 |
description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
|
| 6 |
repository = "https://github.com/neon-mmd/websurfx"
|
|
@@ -32,6 +32,7 @@ futures = {version="0.3.28"}
|
|
| 32 |
dhat = {version="0.3.2", optional = true}
|
| 33 |
mimalloc = { version = "0.1.38", default-features = false }
|
| 34 |
async-once-cell = {version="0.5.3"}
|
|
|
|
| 35 |
|
| 36 |
[dev-dependencies]
|
| 37 |
rusty-hook = "^0.11.2"
|
|
|
|
| 1 |
[package]
|
| 2 |
name = "websurfx"
|
| 3 |
+
version = "0.20.0"
|
| 4 |
edition = "2021"
|
| 5 |
description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind."
|
| 6 |
repository = "https://github.com/neon-mmd/websurfx"
|
|
|
|
| 32 |
dhat = {version="0.3.2", optional = true}
|
| 33 |
mimalloc = { version = "0.1.38", default-features = false }
|
| 34 |
async-once-cell = {version="0.5.3"}
|
| 35 |
+
actix-governor = {version="0.4.1"}
|
| 36 |
|
| 37 |
[dev-dependencies]
|
| 38 |
rusty-hook = "^0.11.2"
|
src/config/parser.rs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
|
| 4 |
use crate::handler::paths::{file_path, FileType};
|
| 5 |
|
| 6 |
-
use super::parser_models::Style;
|
| 7 |
use log::LevelFilter;
|
| 8 |
use mlua::Lua;
|
| 9 |
use std::{collections::HashMap, fs, thread::available_parallelism};
|
|
@@ -35,20 +35,10 @@ pub struct Config {
|
|
| 35 |
pub upstream_search_engines: Vec<crate::engines::engine_models::EngineHandler>,
|
| 36 |
pub request_timeout: u8,
|
| 37 |
pub threads: u8,
|
|
|
|
| 38 |
pub safe_search: u8,
|
| 39 |
}
|
| 40 |
|
| 41 |
-
/// Configuration options for the aggregator.
|
| 42 |
-
///
|
| 43 |
-
/// # Fields
|
| 44 |
-
///
|
| 45 |
-
/// * `random_delay` - It stores the option to whether enable or disable random delays between
|
| 46 |
-
/// requests.
|
| 47 |
-
#[derive(Clone)]
|
| 48 |
-
pub struct AggregatorConfig {
|
| 49 |
-
pub random_delay: bool,
|
| 50 |
-
}
|
| 51 |
-
|
| 52 |
impl Config {
|
| 53 |
/// A function which parses the config.lua file and puts all the parsed options in the newly
|
| 54 |
/// constructed Config struct and returns it.
|
|
@@ -90,6 +80,8 @@ impl Config {
|
|
| 90 |
parsed_threads
|
| 91 |
};
|
| 92 |
|
|
|
|
|
|
|
| 93 |
let parsed_safe_search: u8 = globals.get::<_, u8>("safe_search")?;
|
| 94 |
let safe_search: u8 = match parsed_safe_search {
|
| 95 |
0..=4 => parsed_safe_search,
|
|
@@ -121,6 +113,10 @@ impl Config {
|
|
| 121 |
.collect(),
|
| 122 |
request_timeout: globals.get::<_, u8>("request_timeout")?,
|
| 123 |
threads,
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
safe_search,
|
| 125 |
})
|
| 126 |
}
|
|
|
|
| 3 |
|
| 4 |
use crate::handler::paths::{file_path, FileType};
|
| 5 |
|
| 6 |
+
use super::parser_models::{AggregatorConfig, RateLimiter, Style};
|
| 7 |
use log::LevelFilter;
|
| 8 |
use mlua::Lua;
|
| 9 |
use std::{collections::HashMap, fs, thread::available_parallelism};
|
|
|
|
| 35 |
pub upstream_search_engines: Vec<crate::engines::engine_models::EngineHandler>,
|
| 36 |
pub request_timeout: u8,
|
| 37 |
pub threads: u8,
|
| 38 |
+
pub rate_limiter: RateLimiter,
|
| 39 |
pub safe_search: u8,
|
| 40 |
}
|
| 41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
impl Config {
|
| 43 |
/// A function which parses the config.lua file and puts all the parsed options in the newly
|
| 44 |
/// constructed Config struct and returns it.
|
|
|
|
| 80 |
parsed_threads
|
| 81 |
};
|
| 82 |
|
| 83 |
+
let rate_limiter = globals.get::<_, HashMap<String, u8>>("rate_limiter")?;
|
| 84 |
+
|
| 85 |
let parsed_safe_search: u8 = globals.get::<_, u8>("safe_search")?;
|
| 86 |
let safe_search: u8 = match parsed_safe_search {
|
| 87 |
0..=4 => parsed_safe_search,
|
|
|
|
| 113 |
.collect(),
|
| 114 |
request_timeout: globals.get::<_, u8>("request_timeout")?,
|
| 115 |
threads,
|
| 116 |
+
rate_limiter: RateLimiter {
|
| 117 |
+
number_of_requests: rate_limiter["number_of_requests"],
|
| 118 |
+
time_limit: rate_limiter["time_limit"],
|
| 119 |
+
},
|
| 120 |
safe_search,
|
| 121 |
})
|
| 122 |
}
|
src/config/parser_models.rs
CHANGED
|
@@ -36,3 +36,26 @@ impl Style {
|
|
| 36 |
Style { theme, colorscheme }
|
| 37 |
}
|
| 38 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
Style { theme, colorscheme }
|
| 37 |
}
|
| 38 |
}
|
| 39 |
+
|
| 40 |
+
/// Configuration options for the aggregator.
|
| 41 |
+
///
|
| 42 |
+
/// # Fields
|
| 43 |
+
///
|
| 44 |
+
/// * `random_delay` - It stores the option to whether enable or disable random delays between
|
| 45 |
+
/// requests.
|
| 46 |
+
#[derive(Clone)]
|
| 47 |
+
pub struct AggregatorConfig {
|
| 48 |
+
pub random_delay: bool,
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
/// Configuration options for the rate limiter middleware.
|
| 52 |
+
///
|
| 53 |
+
/// # Fields
|
| 54 |
+
///
|
| 55 |
+
/// * `number_of_requests` - The number of request that are allowed within a provided time limit.
|
| 56 |
+
/// * `time_limit` - The time limit in which the quantity of requests that should be accepted.
|
| 57 |
+
#[derive(Clone)]
|
| 58 |
+
pub struct RateLimiter {
|
| 59 |
+
pub number_of_requests: u8,
|
| 60 |
+
pub time_limit: u8,
|
| 61 |
+
}
|
src/lib.rs
CHANGED
|
@@ -14,12 +14,8 @@ use crate::server::routes;
|
|
| 14 |
|
| 15 |
use actix_cors::Cors;
|
| 16 |
use actix_files as fs;
|
| 17 |
-
use
|
| 18 |
-
|
| 19 |
-
http::header,
|
| 20 |
-
middleware::{Compress, Logger},
|
| 21 |
-
web, App, HttpServer,
|
| 22 |
-
};
|
| 23 |
use config::parser::Config;
|
| 24 |
use handlebars::Handlebars;
|
| 25 |
use handler::paths::{file_path, FileType};
|
|
@@ -69,11 +65,17 @@ pub fn run(listener: TcpListener, config: Config) -> std::io::Result<Server> {
|
|
| 69 |
]);
|
| 70 |
|
| 71 |
App::new()
|
|
|
|
| 72 |
.app_data(handlebars_ref.clone())
|
| 73 |
.app_data(web::Data::new(config.clone()))
|
| 74 |
.wrap(cors)
|
| 75 |
-
.wrap(
|
| 76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
// Serve images and static files (css and js files).
|
| 78 |
.service(
|
| 79 |
fs::Files::new("/static", format!("{}/static", public_folder_path))
|
|
|
|
| 14 |
|
| 15 |
use actix_cors::Cors;
|
| 16 |
use actix_files as fs;
|
| 17 |
+
use actix_governor::{Governor, GovernorConfigBuilder};
|
| 18 |
+
use actix_web::{dev::Server, http::header, middleware::Logger, web, App, HttpServer};
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
use config::parser::Config;
|
| 20 |
use handlebars::Handlebars;
|
| 21 |
use handler::paths::{file_path, FileType};
|
|
|
|
| 65 |
]);
|
| 66 |
|
| 67 |
App::new()
|
| 68 |
+
.wrap(Logger::default()) // added logging middleware for logging.
|
| 69 |
.app_data(handlebars_ref.clone())
|
| 70 |
.app_data(web::Data::new(config.clone()))
|
| 71 |
.wrap(cors)
|
| 72 |
+
.wrap(Governor::new(
|
| 73 |
+
&GovernorConfigBuilder::default()
|
| 74 |
+
.per_second(config.rate_limiter.time_limit as u64)
|
| 75 |
+
.burst_size(config.rate_limiter.number_of_requests as u32)
|
| 76 |
+
.finish()
|
| 77 |
+
.unwrap(),
|
| 78 |
+
))
|
| 79 |
// Serve images and static files (css and js files).
|
| 80 |
.service(
|
| 81 |
fs::Files::new("/static", format!("{}/static", public_folder_path))
|
websurfx/config.lua
CHANGED
|
@@ -10,6 +10,10 @@ production_use = false -- whether to use production mode or not (in other words
|
|
| 10 |
-- if production_use is set to true
|
| 11 |
-- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests.
|
| 12 |
request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds).
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-- ### Search ###
|
| 15 |
-- Filter results based on different levels. The levels provided are:
|
|
@@ -45,4 +49,7 @@ theme = "simple" -- the theme name which should be used for the website
|
|
| 45 |
redis_url = "redis://127.0.0.1:8082" -- redis connection url address on which the client should connect on.
|
| 46 |
|
| 47 |
-- ### Search Engines ###
|
| 48 |
-
upstream_search_engines = {
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
-- if production_use is set to true
|
| 11 |
-- There will be a random delay before sending the request to the search engines, this is to prevent DDoSing the upstream search engines from a large number of simultaneous requests.
|
| 12 |
request_timeout = 30 -- timeout for the search requests sent to the upstream search engines to be fetched (value in seconds).
|
| 13 |
+
rate_limiter = {
|
| 14 |
+
number_of_requests = 20, -- The number of request that are allowed within a provided time limit.
|
| 15 |
+
time_limit = 3, -- The time limit in which the quantity of requests that should be accepted.
|
| 16 |
+
}
|
| 17 |
|
| 18 |
-- ### Search ###
|
| 19 |
-- Filter results based on different levels. The levels provided are:
|
|
|
|
| 49 |
redis_url = "redis://127.0.0.1:8082" -- redis connection url address on which the client should connect on.
|
| 50 |
|
| 51 |
-- ### Search Engines ###
|
| 52 |
+
upstream_search_engines = {
|
| 53 |
+
DuckDuckGo = true,
|
| 54 |
+
Searx = false,
|
| 55 |
+
} -- select the upstream search engines from which the results should be fetched.
|