This commit is contained in:
rustmailer
2026-03-17 11:39:02 +08:00
parent 5028061f20
commit 8a42fcdb4a
7 changed files with 242 additions and 169 deletions
Generated
+157 -124
View File
@@ -139,9 +139,9 @@ dependencies = [
[[package]]
name = "anstream"
version = "0.6.21"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -160,9 +160,9 @@ checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
[[package]]
name = "anstyle-parse"
version = "0.2.7"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
dependencies = [
"utf8parse",
]
@@ -217,6 +217,12 @@ version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
[[package]]
name = "arrayref"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
[[package]]
name = "arrayvec"
version = "0.7.6"
@@ -225,9 +231,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "arrow"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e833808ff2d94ed40d9379848a950d995043c7fb3e81a30b383f4c6033821cc"
checksum = "e4754a624e5ae42081f464514be454b39711daae0458906dacde5f4c632f33a8"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -246,23 +252,23 @@ dependencies = [
[[package]]
name = "arrow-arith"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad08897b81588f60ba983e3ca39bda2b179bdd84dced378e7df81a5313802ef8"
checksum = "f7b3141e0ec5145a22d8694ea8b6d6f69305971c4fa1c1a13ef0195aef2d678b"
dependencies = [
"arrow-array",
"arrow-buffer",
"arrow-data",
"arrow-schema",
"chrono",
"num",
"num-traits",
]
[[package]]
name = "arrow-array"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8548ca7c070d8db9ce7aa43f37393e4bfcf3f2d3681df278490772fd1673d08d"
checksum = "4c8955af33b25f3b175ee10af580577280b4bd01f7e823d94c7cdef7cf8c9aef"
dependencies = [
"ahash 0.8.12",
"arrow-buffer",
@@ -271,29 +277,33 @@ dependencies = [
"chrono",
"half",
"hashbrown 0.16.1",
"num",
"num-complex",
"num-integer",
"num-traits",
]
[[package]]
name = "arrow-buffer"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e003216336f70446457e280807a73899dd822feaf02087d31febca1363e2fccc"
checksum = "c697ddca96183182f35b3a18e50b9110b11e916d7b7799cbfd4d34662f2c56c2"
dependencies = [
"bytes 1.11.1",
"half",
"num",
"num-bigint",
"num-traits",
]
[[package]]
name = "arrow-cast"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "919418a0681298d3a77d1a315f625916cb5678ad0d74b9c60108eb15fd083023"
checksum = "646bbb821e86fd57189c10b4fcdaa941deaf4181924917b0daa92735baa6ada5"
dependencies = [
"arrow-array",
"arrow-buffer",
"arrow-data",
"arrow-ord",
"arrow-schema",
"arrow-select",
"atoi",
@@ -302,15 +312,15 @@ dependencies = [
"comfy-table",
"half",
"lexical-core",
"num",
"num-traits",
"ryu",
]
[[package]]
name = "arrow-csv"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa9bf02705b5cf762b6f764c65f04ae9082c7cfc4e96e0c33548ee3f67012eb"
checksum = "8da746f4180004e3ce7b83c977daf6394d768332349d3d913998b10a120b790a"
dependencies = [
"arrow-array",
"arrow-cast",
@@ -323,21 +333,22 @@ dependencies = [
[[package]]
name = "arrow-data"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5c64fff1d142f833d78897a772f2e5b55b36cb3e6320376f0961ab0db7bd6d0"
checksum = "1fdd994a9d28e6365aa78e15da3f3950c0fdcea6b963a12fa1c391afb637b304"
dependencies = [
"arrow-buffer",
"arrow-schema",
"half",
"num",
"num-integer",
"num-traits",
]
[[package]]
name = "arrow-ipc"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d3594dcddccc7f20fd069bc8e9828ce37220372680ff638c5e00dea427d88f5"
checksum = "abf7df950701ab528bf7c0cf7eeadc0445d03ef5d6ffc151eaae6b38a58feff1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -349,9 +360,9 @@ dependencies = [
[[package]]
name = "arrow-json"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88cf36502b64a127dc659e3b305f1d993a544eab0d48cce704424e62074dc04b"
checksum = "0ff8357658bedc49792b13e2e862b80df908171275f8e6e075c460da5ee4bf86"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -361,19 +372,21 @@ dependencies = [
"chrono",
"half",
"indexmap",
"itoa",
"lexical-core",
"memchr",
"num",
"serde",
"num-traits",
"ryu",
"serde_core",
"serde_json",
"simdutf8",
]
[[package]]
name = "arrow-ord"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c8f82583eb4f8d84d4ee55fd1cb306720cddead7596edce95b50ee418edf66f"
checksum = "f7d8f1870e03d4cbed632959498bcc84083b5a24bded52905ae1695bd29da45b"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -384,9 +397,9 @@ dependencies = [
[[package]]
name = "arrow-row"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d07ba24522229d9085031df6b94605e0f4b26e099fb7cdeec37abd941a73753"
checksum = "18228633bad92bff92a95746bbeb16e5fc318e8382b75619dec26db79e4de4c0"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -397,32 +410,32 @@ dependencies = [
[[package]]
name = "arrow-schema"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3aa9e59c611ebc291c28582077ef25c97f1975383f1479b12f3b9ffee2ffabe"
checksum = "8c872d36b7bf2a6a6a2b40de9156265f0242910791db366a2c17476ba8330d68"
dependencies = [
"bitflags",
]
[[package]]
name = "arrow-select"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c41dbbd1e97bfcaee4fcb30e29105fb2c75e4d82ae4de70b792a5d3f66b2e7a"
checksum = "68bf3e3efbd1278f770d67e5dc410257300b161b93baedb3aae836144edcaf4b"
dependencies = [
"ahash 0.8.12",
"arrow-array",
"arrow-buffer",
"arrow-data",
"arrow-schema",
"num",
"num-traits",
]
[[package]]
name = "arrow-string"
version = "56.2.0"
version = "57.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53f5183c150fbc619eede22b861ea7c0eebed8eaac0333eaa7f6da5205fd504d"
checksum = "85e968097061b3c0e9fe3079cf2e703e487890700546b5b0647f60fca1b5a8d8"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -430,7 +443,7 @@ dependencies = [
"arrow-schema",
"arrow-select",
"memchr",
"num",
"num-traits",
"regex",
"regex-syntax",
]
@@ -459,7 +472,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -471,7 +484,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -631,7 +644,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -726,6 +739,7 @@ dependencies = [
"async-imap",
"autoconfig",
"base64 0.22.1",
"blake3",
"bytes 1.11.1",
"cacache",
"chrono",
@@ -835,6 +849,20 @@ dependencies = [
"wyz",
]
[[package]]
name = "blake3"
version = "1.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d"
dependencies = [
"arrayref",
"arrayvec",
"cc",
"cfg-if",
"constant_time_eq 0.4.2",
"cpufeatures 0.2.17",
]
[[package]]
name = "block-buffer"
version = "0.9.0"
@@ -888,7 +916,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -911,7 +939,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1146,9 +1174,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.60"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1156,9 +1184,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.60"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
dependencies = [
"anstream",
"anstyle",
@@ -1168,14 +1196,14 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "4.5.55"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1271,13 +1299,12 @@ dependencies = [
[[package]]
name = "console"
version = "0.16.2"
version = "0.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
dependencies = [
"encode_unicode",
"libc",
"once_cell",
"unicode-width 0.2.2",
"windows-sys 0.61.2",
]
@@ -1314,6 +1341,12 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
[[package]]
name = "constant_time_eq"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"
[[package]]
name = "cookie"
version = "0.14.4"
@@ -1553,7 +1586,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1567,7 +1600,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1578,7 +1611,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core 0.20.11",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1589,7 +1622,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core 0.21.3",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1650,7 +1683,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1670,7 +1703,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"unicode-xid",
]
@@ -1720,7 +1753,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1731,9 +1764,9 @@ checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc"
[[package]]
name = "duckdb"
version = "1.4.4"
version = "1.10500.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8685352ce688883098b61a361e86e87df66fc8c444f4a2411e884c16d5243a65"
checksum = "6a2048e4963a37ec458d9e93444192e0e949ac0a188d201ea53472f2c42db822"
dependencies = [
"arrow",
"cast",
@@ -1816,7 +1849,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2101,7 +2134,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2342,7 +2375,7 @@ checksum = "149e3ea90eb5a26ad354cfe3cb7f7401b9329032d0235f2687d03a35f30e5d4c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3107,9 +3140,9 @@ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
[[package]]
name = "libduckdb-sys"
version = "1.4.4"
version = "1.10500.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d78bacb8933586cee3b550c39b610d314f9b7a48701ac7a914a046165a4ad8da"
checksum = "6df9db064ff17120305ec6b7aee048f766cdf2a3ce9ffbb6953aaa3634605030"
dependencies = [
"cc",
"flate2",
@@ -3411,7 +3444,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3554,7 +3587,7 @@ checksum = "0809fa4be7c67b5fcc5aea1b43644fa4bd4fa57f5a956a84018628fba51c2b11"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3580,7 +3613,7 @@ checksum = "2f385f3d57adaea8d8868e65a0bc821bcb8ba2228bbf87a1c3c6144ac48f3791"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3765,18 +3798,18 @@ dependencies = [
[[package]]
name = "objc2-core-foundation"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [
"bitflags",
]
[[package]]
name = "objc2-io-kit"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a"
checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15"
dependencies = [
"libc",
"objc2-core-foundation",
@@ -3861,7 +3894,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3887,9 +3920,9 @@ dependencies = [
[[package]]
name = "openssl-sys"
version = "0.9.111"
version = "0.9.112"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb"
dependencies = [
"cc",
"libc",
@@ -4046,7 +4079,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4131,7 +4164,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4175,7 +4208,7 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
"syn 2.0.111",
"syn 2.0.117",
"thiserror 2.0.17",
]
@@ -4253,7 +4286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
"proc-macro2",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4273,9 +4306,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
[[package]]
name = "proc-macro2"
version = "1.0.103"
version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
dependencies = [
"unicode-ident",
]
@@ -4424,9 +4457,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.42"
version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [
"proc-macro2",
]
@@ -4703,7 +4736,7 @@ dependencies = [
"quote",
"refinery-core",
"regex",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4876,7 +4909,7 @@ dependencies = [
"proc-macro2",
"quote",
"rust-embed-utils",
"syn 2.0.111",
"syn 2.0.117",
"walkdir",
]
@@ -5153,7 +5186,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5389,23 +5422,23 @@ checksum = "d55cc1c74d3b758d7dd1fa4dc4cf694cad2732cac14f304228477c2b0ce6233a"
[[package]]
name = "snafu"
version = "0.8.9"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2"
checksum = "d1d4bced6a69f90b2056c03dcff2c4737f98d6fb9e0853493996e1d253ca29c6"
dependencies = [
"snafu-derive",
]
[[package]]
name = "snafu-derive"
version = "0.8.9"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451"
checksum = "54254b8531cafa275c5e096f62d48c81435d1015405a91198ddb11e967301d40"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5613,7 +5646,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5625,7 +5658,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5670,9 +5703,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.111"
version = "2.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
dependencies = [
"proc-macro2",
"quote",
@@ -5696,14 +5729,14 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
name = "sysinfo"
version = "0.38.2"
version = "0.38.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efc19935b4b66baa6f654ac7924c192f55b175c00a7ab72410fc24284dacda8"
checksum = "92ab6a2f8bfe508deb3c6406578252e491d299cbbf3bc0529ecc3313aee4a52f"
dependencies = [
"libc",
"memchr",
@@ -5888,9 +5921,9 @@ dependencies = [
[[package]]
name = "tempfile"
version = "3.26.0"
version = "3.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand 2.3.0",
"getrandom 0.4.1",
@@ -5935,7 +5968,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5946,7 +5979,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6075,9 +6108,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.49.0"
version = "1.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
dependencies = [
"bytes 1.11.1",
"libc",
@@ -6108,7 +6141,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6285,7 +6318,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6331,9 +6364,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
version = "0.3.22"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e"
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
dependencies = [
"matchers",
"nu-ansi-term",
@@ -6673,7 +6706,7 @@ dependencies = [
"bumpalo",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"wasm-bindgen-shared",
]
@@ -6870,7 +6903,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6881,7 +6914,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7213,7 +7246,7 @@ dependencies = [
"heck 0.5.0",
"indexmap",
"prettyplease",
"syn 2.0.111",
"syn 2.0.117",
"wasm-metadata",
"wit-bindgen-core",
"wit-component",
@@ -7229,7 +7262,7 @@ dependencies = [
"prettyplease",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"wit-bindgen-core",
"wit-bindgen-rust",
]
@@ -7354,7 +7387,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -7375,7 +7408,7 @@ checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7395,7 +7428,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -7416,7 +7449,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7449,7 +7482,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7461,7 +7494,7 @@ dependencies = [
"aes 0.8.4",
"arbitrary",
"bzip2",
"constant_time_eq",
"constant_time_eq 0.3.1",
"crc32fast",
"deflate64",
"flate2",
+12 -11
View File
@@ -28,7 +28,7 @@ codegen-units = 1
[dependencies]
chrono = "0.4.44"
clap = { version = "4.5.60", features = ["derive", "env"] }
clap = { version = "4.6.0", features = ["derive", "env"] }
mimalloc = "0.1.48"
native_db = "0.8.2"
itertools = "0.14.0"
@@ -46,12 +46,12 @@ poem-openapi = { version = "5.1.16", features = [
ring = { version = "0.17.14", features = ["std"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
tokio = { version = "1.49.0", features = ["full"] }
tokio = { version = "1.50.0", features = ["full"] }
tracing = "0.1.44"
tracing-appender = "0.2.3"
tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json"] }
tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] }
base64 = "0.22.1"
snafu = "0.8.9"
snafu = "0.9.0"
reqwest = { version = "0.12.24", default-features = false, features = [
"json",
"stream",
@@ -77,7 +77,7 @@ timeago = "0.6.0"
ahash = "0.8.12"
oauth2 = { version = "5.0.0", features = ["reqwest-blocking"] }
url = { version = "2.5.8", features = ["serde"] }
sysinfo = "0.38.2"
sysinfo = "0.38.4"
num_cpus = "1.17.0"
cacache = { version = "13.1.0", default-features = false, features = [
"tokio-runtime",
@@ -109,34 +109,35 @@ autoconfig = "0.4.0"
urlencoding = "2.1.3"
dashmap = "6.1.0"
# Statically links OpenSSL by compiling from source, avoiding system library dependencies
openssl-sys = { version = "0.9.111", optional = true, features = ["vendored"] }
openssl-sys = { version = "0.9.112", optional = true, features = ["vendored"] }
gethostname = "1.1.0"
tantivy = { version = "0.25.0", features = ["quickwit", "zstd-compression"] }
itoa = "1.0.17"
html2text = "0.16.7"
bytes = "1.11.1"
dialoguer = "0.12.0"
console = "0.16.2"
console = "0.16.3"
toml = "0.9.8"
memmap2 = "0.9.10"
outlook-pst = { git = "https://github.com/rustmailer/outlook-pst-rs.git", branch = "main" }
compressed-rtf = "1.0.0"
codepage-strings = "1.0.2"
mail-send = "0.5.2"
duckdb = { version = "1.4.4", features = [
duckdb = { version = "1.10500.0", features = [
"chrono",
"bundled",
"r2d2",
"appender-arrow",
] }
arrow = { version = "56.2.0", features = ["ffi"] }
arrow = { version = "57", features = ["ffi"] }
r2d2 = { version = "0.8", default-features = false }
refinery = { version = "0.9", default-features = false }
refinery-core = { version = "0.9", default-features = false }
rcgen = "0.14.7"
rustls-pemfile = "2.2.0"
blake3 = "1.8.3"
[dev-dependencies]
#bincode = "1.3.3"
#secret-lib = "1.0.0"
tempfile = "3.26.0"
lettre = "0.11.19"
tempfile = "3.27.0"
lettre = "0.11.19"
+1 -1
View File
@@ -101,7 +101,7 @@ impl<'x> From<&ImapAddress<'x>> for AddrVec {
fn create_rust_mailer_error(message: &str, code: ErrorCode) -> BichonError {
BichonError::Generic {
message: message.into(),
location: snafu::Location::default(),
location: snafu::location!(),
code,
}
}
+62 -26
View File
@@ -109,39 +109,75 @@ R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
}
#[tokio::test]
async fn test44() {
let path = r"C:\Users\polly\Downloads\3462966311412541.eml";
let input = std::fs::read(path).unwrap();
let message = MessageParser::default().parse(&input).unwrap();
for attachment in message.attachments() {
let content_type = attachment.content_type().unwrap();
let filename = attachment
.attachment_name()
.map(|name| name.to_string())
.unwrap_or_else(|| "unknown".to_string());
async fn test_bulk_attachment_stripping_blake3() {
let path = r"C:\Users\polly\Downloads\test666.eml";
let input = std::fs::read(path).expect("Failed to read EML file");
let disposition = attachment.content_disposition();
// 1. Initial Parse
let message = MessageParser::default()
.parse(&input)
.expect("Failed to parse EML");
let body_start = attachment.raw_body_offset() as usize;
let body_end = attachment.raw_end_offset() as usize;
// 2. Collect and cast types explicitly
// We map the u32 offsets to usize here to satisfy the Vec<(usize, usize, ...)> requirement
let mut attachments: Vec<(usize, usize, Vec<u8>)> = message
.attachments()
.map(|att| {
(
att.raw_body_offset() as usize,
att.raw_end_offset() as usize,
att.contents().to_vec(),
)
})
.collect();
if body_start < input.len() && body_end <= input.len() && body_start <= body_end {
//let raw_data = &input[body_start..body_end];
let mut file = std::fs::File::create(&filename).unwrap();
file.write_all(attachment.contents()).unwrap();
}
// 3. Sort by offset descending (BACK TO FRONT)
// This ensures that modifying the file length doesn't invalidate earlier offsets
attachments.sort_by(|a, b| b.0.cmp(&a.0));
let file_type = format!(
"{}/{}",
content_type.c_type.as_ref(),
content_type.c_subtype.as_deref().unwrap_or("")
);
let mut modified_eml = input.clone();
let inline = disposition.map(|d| d.is_inline()).unwrap_or(false);
println!(
"Processing {} attachments in reverse order...",
attachments.len()
);
for (start, end, raw_content) in attachments {
// Calculate BLAKE3 Hash
let hash = blake3::hash(&raw_content).to_hex().to_string();
let placeholder = format!("STRIPPED_BLAKE3:{}", hash);
let placeholder_bytes = placeholder.as_bytes();
// Perform the byte surgery
let mut new_buffer =
Vec::with_capacity(modified_eml.len() - (end - start) + placeholder_bytes.len());
new_buffer.extend_from_slice(&modified_eml[..start]);
new_buffer.extend_from_slice(placeholder_bytes);
new_buffer.extend_from_slice(&modified_eml[end..]);
modified_eml = new_buffer;
println!(
"filename: {}, file_type: {}, inline: {}",
filename, file_type, inline
"Stripped attachment at offset {}. New hash: {}",
start, hash
);
}
std::fs::write("test.eml", &modified_eml).unwrap();
// 4. Final Verification
let final_message = MessageParser::default().parse(&modified_eml).unwrap();
println!("\n--- Verification Report ---");
for (i, att) in final_message.attachments().enumerate() {
let content = String::from_utf8_lossy(att.contents());
println!(
"Part [{}]: {}, Content: {}",
i,
att.attachment_name().unwrap_or("unknown"),
content
);
assert!(content.contains("STRIPPED_BLAKE3:"));
}
println!("✅ All attachments replaced successfully from back to front.");
}
+2 -1
View File
@@ -106,11 +106,12 @@ macro_rules! raise_error {
($msg:expr, $code:expr) => {
$crate::modules::error::BichonError::Generic {
message: $msg,
location: snafu::Location::default(),
code: $code,
location: snafu::location!()
}
};
}
#[macro_export]
macro_rules! run_with_timeout {
($duration:expr, $task:expr, $err_msg:expr) => {{
+8 -5
View File
@@ -87,8 +87,8 @@ function CustomLabel({
alignItems: 'center',
}}
>
<FolderIcon className="mr-2" />
<span className="font-medium text-sm text-inherit">
<FolderIcon className="mr-2 h-3.5 w-3.5" />
<span className="font-medium text-xs text-inherit">
{children}
</span>
<div className="ml-auto flex items-center">
@@ -107,9 +107,9 @@ function CustomLabel({
<MoreVertical className="h-4 w-4" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-20">
<DropdownMenuContent align="end" className="w-24">
<DropdownMenuItem
className="text-destructive focus:text-destructive"
className="text-destructive focus:text-destructive flex items-center px-2 py-1 text-[11px] cursor-pointer"
onClick={(e) => {
e.stopPropagation();
}}
@@ -118,7 +118,7 @@ function CustomLabel({
onDelete(id);
}}
>
<Trash2 className="mr-2 h-4 w-4" />
<Trash2 className="mr-1 h-3 w-3" />
<span>{t('common.delete')}</span>
</DropdownMenuItem>
</DropdownMenuContent>
@@ -223,6 +223,9 @@ export function MailboxPopover() {
'&.Mui-checked': {
color: 'hsl(var(--primary))',
},
'& .MuiSvgIcon-root': {
fontSize: '1.3rem'
}
}} />
<CustomLabel
{...getLabelProps({
@@ -9,7 +9,6 @@ import { useQuery } from '@tanstack/react-query';
import { Download, Loader, Mail } from 'lucide-react';
import { useTranslation } from 'react-i18next';
import { getFileConfig } from './mail-message-view';
import { Button } from '@/components/ui/button';
const MessageHeader = ({
envelope,