diff --git a/.cargo/config.toml b/.cargo/config.toml
index cf2985e..c615b9f 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -1,5 +1,2 @@
[target.'cfg(target_arch = "x86_64")']
-rustflags = ["-C", "target-feature=+aes,+sse2"]
-
-[registries]
-spbr = { index = "sparse+https://crates.spbr.net/api/v1/crates/" }
+rustflags = ["-C", "target-feature=+aes,+sse2"]
\ No newline at end of file
diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml
index fac13f6..3b88b05 100644
--- a/.forgejo/workflows/build.yml
+++ b/.forgejo/workflows/build.yml
@@ -20,7 +20,7 @@ jobs:
submodules: recursive
- name: Cache container storage
- uses: actions/cache@v6
+ uses: actions/cache@v5
with:
path: |
/var/lib/containers/storage
diff --git a/.sqlx/query-0edf3f60bfb92912f73b6c61962e4a98b37c62d596cb0c8c3d1cc1c0199dcb2d.json b/.sqlx/query-0edf3f60bfb92912f73b6c61962e4a98b37c62d596cb0c8c3d1cc1c0199dcb2d.json
deleted file mode 100644
index 1ae8535..0000000
--- a/.sqlx/query-0edf3f60bfb92912f73b6c61962e4a98b37c62d596cb0c8c3d1cc1c0199dcb2d.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "\n UPDATE users SET\n email = $1,\n email_verified_since = NULL,\n verification_code = $2\n WHERE pid = $3\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Varchar",
- "Int4",
- "Int4"
- ]
- },
- "nullable": []
- },
- "hash": "0edf3f60bfb92912f73b6c61962e4a98b37c62d596cb0c8c3d1cc1c0199dcb2d"
-}
diff --git a/.sqlx/query-0ef5f08a84d6864291cb6125610d9d3e1961530ae963f9ab5442482d81228590.json b/.sqlx/query-0ef5f08a84d6864291cb6125610d9d3e1961530ae963f9ab5442482d81228590.json
deleted file mode 100644
index 64e253e..0000000
--- a/.sqlx/query-0ef5f08a84d6864291cb6125610d9d3e1961530ae963f9ab5442482d81228590.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "select serial from certificates where hash = $1",
- "describe": {
- "columns": [
- {
- "ordinal": 0,
- "name": "serial",
- "type_info": "Varchar",
- "origin": {
- "Table": {
- "table": "certificates",
- "name": "serial"
- }
- }
- }
- ],
- "parameters": {
- "Left": [
- "Bytea"
- ]
- },
- "nullable": [
- true
- ]
- },
- "hash": "0ef5f08a84d6864291cb6125610d9d3e1961530ae963f9ab5442482d81228590"
-}
diff --git a/.sqlx/query-3c9b1695f8ae49e4308c048de98c1c262351465b6f102e98912f67442a1f54d9.json b/.sqlx/query-3c9b1695f8ae49e4308c048de98c1c262351465b6f102e98912f67442a1f54d9.json
new file mode 100644
index 0000000..9607895
--- /dev/null
+++ b/.sqlx/query-3c9b1695f8ae49e4308c048de98c1c262351465b6f102e98912f67442a1f54d9.json
@@ -0,0 +1,21 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "SELECT nextval('pid_counter') as pid",
+ "describe": {
+ "columns": [
+ {
+ "ordinal": 0,
+ "name": "pid",
+ "type_info": "Int8",
+ "origin": "Expression"
+ }
+ ],
+ "parameters": {
+ "Left": []
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "3c9b1695f8ae49e4308c048de98c1c262351465b6f102e98912f67442a1f54d9"
+}
diff --git a/.sqlx/query-48710e0b87742cc3fef816b3c95604095f71324011e7093ec37af15da8c158f4.json b/.sqlx/query-48710e0b87742cc3fef816b3c95604095f71324011e7093ec37af15da8c158f4.json
index 96c9316..88cc28a 100644
--- a/.sqlx/query-48710e0b87742cc3fef816b3c95604095f71324011e7093ec37af15da8c158f4.json
+++ b/.sqlx/query-48710e0b87742cc3fef816b3c95604095f71324011e7093ec37af15da8c158f4.json
@@ -68,17 +68,6 @@
"name": "expires"
}
}
- },
- {
- "ordinal": 6,
- "name": "cert_hash",
- "type_info": "Bytea",
- "origin": {
- "Table": {
- "table": "tokens",
- "name": "cert_hash"
- }
- }
}
],
"parameters": {
@@ -94,8 +83,7 @@
false,
false,
true,
- false,
- true
+ false
]
},
"hash": "48710e0b87742cc3fef816b3c95604095f71324011e7093ec37af15da8c158f4"
diff --git a/.sqlx/query-48fd98db66a68865babe4ac6a453de747bba2ce1da198dda4b6f3b78eacfebf3.json b/.sqlx/query-48fd98db66a68865babe4ac6a453de747bba2ce1da198dda4b6f3b78eacfebf3.json
deleted file mode 100644
index 2619390..0000000
--- a/.sqlx/query-48fd98db66a68865babe4ac6a453de747bba2ce1da198dda4b6f3b78eacfebf3.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "SELECT username, email FROM users WHERE pid = $1",
- "describe": {
- "columns": [
- {
- "ordinal": 0,
- "name": "username",
- "type_info": "Varchar",
- "origin": {
- "Table": {
- "table": "users",
- "name": "username"
- }
- }
- },
- {
- "ordinal": 1,
- "name": "email",
- "type_info": "Varchar",
- "origin": {
- "Table": {
- "table": "users",
- "name": "email"
- }
- }
- }
- ],
- "parameters": {
- "Left": [
- "Int4"
- ]
- },
- "nullable": [
- false,
- false
- ]
- },
- "hash": "48fd98db66a68865babe4ac6a453de747bba2ce1da198dda4b6f3b78eacfebf3"
-}
diff --git a/.sqlx/query-606364c79e0990deb07dfbe6c32b3d302d083ec5333f3a5ce04113c38a041100.json b/.sqlx/query-606364c79e0990deb07dfbe6c32b3d302d083ec5333f3a5ce04113c38a041100.json
index c5e2c51..3604678 100644
--- a/.sqlx/query-606364c79e0990deb07dfbe6c32b3d302d083ec5333f3a5ce04113c38a041100.json
+++ b/.sqlx/query-606364c79e0990deb07dfbe6c32b3d302d083ec5333f3a5ce04113c38a041100.json
@@ -211,17 +211,6 @@
"name": "verification_code"
}
}
- },
- {
- "ordinal": 19,
- "name": "eula_version",
- "type_info": "Int4",
- "origin": {
- "Table": {
- "table": "users",
- "name": "eula_version"
- }
- }
}
],
"parameters": {
@@ -248,7 +237,6 @@
false,
false,
false,
- false,
false
]
},
diff --git a/.sqlx/query-6c276038b92bef06b30da32dab42256be431b361cfd36754aa41b6da220618cc.json b/.sqlx/query-6c276038b92bef06b30da32dab42256be431b361cfd36754aa41b6da220618cc.json
deleted file mode 100644
index 1e5c7eb..0000000
--- a/.sqlx/query-6c276038b92bef06b30da32dab42256be431b361cfd36754aa41b6da220618cc.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "UPDATE users SET password = $1 WHERE pid = $2",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Varchar",
- "Int4"
- ]
- },
- "nullable": []
- },
- "hash": "6c276038b92bef06b30da32dab42256be431b361cfd36754aa41b6da220618cc"
-}
diff --git a/.sqlx/query-7d5d57a9c0065301382767c85de4f25f0636ec0e7c0beed4cdb627c419e407c4.json b/.sqlx/query-7d5d57a9c0065301382767c85de4f25f0636ec0e7c0beed4cdb627c419e407c4.json
deleted file mode 100644
index 758b35a..0000000
--- a/.sqlx/query-7d5d57a9c0065301382767c85de4f25f0636ec0e7c0beed4cdb627c419e407c4.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "\n INSERT INTO device_parental_controls (serial_number, email, updated_at)\n VALUES ($1, $2, NOW())\n ON CONFLICT (serial_number)\n DO UPDATE SET email = EXCLUDED.email, updated_at = NOW()\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Varchar",
- "Varchar"
- ]
- },
- "nullable": []
- },
- "hash": "7d5d57a9c0065301382767c85de4f25f0636ec0e7c0beed4cdb627c419e407c4"
-}
diff --git a/.sqlx/query-7e74c28ce6daa8155e268756411f73f1d281a736aa5a838ad3e72fce0e9a109e.json b/.sqlx/query-7e74c28ce6daa8155e268756411f73f1d281a736aa5a838ad3e72fce0e9a109e.json
deleted file mode 100644
index f088075..0000000
--- a/.sqlx/query-7e74c28ce6daa8155e268756411f73f1d281a736aa5a838ad3e72fce0e9a109e.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "UPDATE users SET eula_version = $1 WHERE pid = $2",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Int4",
- "Int4"
- ]
- },
- "nullable": []
- },
- "hash": "7e74c28ce6daa8155e268756411f73f1d281a736aa5a838ad3e72fce0e9a109e"
-}
diff --git a/.sqlx/query-8cd49b3defe144fe73bdeee1ce000b9bb8716320c6b421395a04f12bd826a469.json b/.sqlx/query-8cd49b3defe144fe73bdeee1ce000b9bb8716320c6b421395a04f12bd826a469.json
deleted file mode 100644
index 6ec9f3a..0000000
--- a/.sqlx/query-8cd49b3defe144fe73bdeee1ce000b9bb8716320c6b421395a04f12bd826a469.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "\n UPDATE users SET\n gender = COALESCE($1, gender),\n region = COALESCE($2, region),\n country = COALESCE($3, country),\n language = COALESCE($4, language),\n timezone = COALESCE($5, timezone),\n marketing_allowed = COALESCE($6, marketing_allowed),\n off_device_allowed = COALESCE($7, off_device_allowed),\n password = COALESCE($8, password)\n WHERE pid = $9\n ",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Bpchar",
- "Int4",
- "Varchar",
- "Varchar",
- "Varchar",
- "Bool",
- "Bool",
- "Varchar",
- "Int4"
- ]
- },
- "nullable": []
- },
- "hash": "8cd49b3defe144fe73bdeee1ce000b9bb8716320c6b421395a04f12bd826a469"
-}
diff --git a/.sqlx/query-93960465bbf8f670891d49b95fc52257c0ef596eee2d9a0e6a7d0aad03de4421.json b/.sqlx/query-93960465bbf8f670891d49b95fc52257c0ef596eee2d9a0e6a7d0aad03de4421.json
index d719934..c06bdc6 100644
--- a/.sqlx/query-93960465bbf8f670891d49b95fc52257c0ef596eee2d9a0e6a7d0aad03de4421.json
+++ b/.sqlx/query-93960465bbf8f670891d49b95fc52257c0ef596eee2d9a0e6a7d0aad03de4421.json
@@ -211,17 +211,6 @@
"name": "verification_code"
}
}
- },
- {
- "ordinal": 19,
- "name": "eula_version",
- "type_info": "Int4",
- "origin": {
- "Table": {
- "table": "users",
- "name": "eula_version"
- }
- }
}
],
"parameters": {
@@ -248,7 +237,6 @@
false,
false,
false,
- false,
false
]
},
diff --git a/.sqlx/query-9d3cee43a86cead9a6d078abc1266fc2a97ac6e25a9733d1d20faf555c67abe1.json b/.sqlx/query-9d3cee43a86cead9a6d078abc1266fc2a97ac6e25a9733d1d20faf555c67abe1.json
index fd3faba..b5366a8 100644
--- a/.sqlx/query-9d3cee43a86cead9a6d078abc1266fc2a97ac6e25a9733d1d20faf555c67abe1.json
+++ b/.sqlx/query-9d3cee43a86cead9a6d078abc1266fc2a97ac6e25a9733d1d20faf555c67abe1.json
@@ -68,17 +68,6 @@
"name": "expires"
}
}
- },
- {
- "ordinal": 6,
- "name": "cert_hash",
- "type_info": "Bytea",
- "origin": {
- "Table": {
- "table": "tokens",
- "name": "cert_hash"
- }
- }
}
],
"parameters": {
@@ -94,8 +83,7 @@
false,
false,
true,
- false,
- true
+ false
]
},
"hash": "9d3cee43a86cead9a6d078abc1266fc2a97ac6e25a9733d1d20faf555c67abe1"
diff --git a/.sqlx/query-beeeea07993ba8daac1e43c985e8c840f66eec4e5458d3709c0e0f09afe51377.json b/.sqlx/query-beeeea07993ba8daac1e43c985e8c840f66eec4e5458d3709c0e0f09afe51377.json
deleted file mode 100644
index 9d62095..0000000
--- a/.sqlx/query-beeeea07993ba8daac1e43c985e8c840f66eec4e5458d3709c0e0f09afe51377.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "update certificates set serial = $1 where hash = $2",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Varchar",
- "Bytea"
- ]
- },
- "nullable": []
- },
- "hash": "beeeea07993ba8daac1e43c985e8c840f66eec4e5458d3709c0e0f09afe51377"
-}
diff --git a/.sqlx/query-c8d50662530cac49c4261fb321cd15f9e4bafdfca12d2130a873d44a88dd435b.json b/.sqlx/query-c8d50662530cac49c4261fb321cd15f9e4bafdfca12d2130a873d44a88dd435b.json
new file mode 100644
index 0000000..103f7d7
--- /dev/null
+++ b/.sqlx/query-c8d50662530cac49c4261fb321cd15f9e4bafdfca12d2130a873d44a88dd435b.json
@@ -0,0 +1,23 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "SELECT EXISTS(select 1 from users where pid = $1)",
+ "describe": {
+ "columns": [
+ {
+ "ordinal": 0,
+ "name": "exists",
+ "type_info": "Bool",
+ "origin": "Expression"
+ }
+ ],
+ "parameters": {
+ "Left": [
+ "Int4"
+ ]
+ },
+ "nullable": [
+ null
+ ]
+ },
+ "hash": "c8d50662530cac49c4261fb321cd15f9e4bafdfca12d2130a873d44a88dd435b"
+}
diff --git a/.sqlx/query-d8298703381f0e220bdbe122dbdc4dc5cd7ae99fac34ae16023f9a6a701857c9.json b/.sqlx/query-e5a2f7f28c3d7b9524d3dce48a9e47d6180ff634ebf59f3a1efd92b797170ac2.json
similarity index 72%
rename from .sqlx/query-d8298703381f0e220bdbe122dbdc4dc5cd7ae99fac34ae16023f9a6a701857c9.json
rename to .sqlx/query-e5a2f7f28c3d7b9524d3dce48a9e47d6180ff634ebf59f3a1efd92b797170ac2.json
index d7473a0..c190306 100644
--- a/.sqlx/query-d8298703381f0e220bdbe122dbdc4dc5cd7ae99fac34ae16023f9a6a701857c9.json
+++ b/.sqlx/query-e5a2f7f28c3d7b9524d3dce48a9e47d6180ff634ebf59f3a1efd92b797170ac2.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "insert into tokens (token_type, pid, title_id, cert_hash)\n values ($1, $2, $3, $4) returning token_id, random",
+ "query": "insert into tokens (token_type, pid, title_id)\n values ($1, $2, $3) returning token_id, random",
"describe": {
"columns": [
{
@@ -30,8 +30,7 @@
"Left": [
"Int4",
"Int4",
- "Varchar",
- "Bytea"
+ "Varchar"
]
},
"nullable": [
@@ -39,5 +38,5 @@
false
]
},
- "hash": "d8298703381f0e220bdbe122dbdc4dc5cd7ae99fac34ae16023f9a6a701857c9"
+ "hash": "e5a2f7f28c3d7b9524d3dce48a9e47d6180ff634ebf59f3a1efd92b797170ac2"
}
diff --git a/.sqlx/query-ffef185a4db4b101477f7a78444192a7dfa8af98c00394978a9627b5ecdae9b5.json b/.sqlx/query-ffef185a4db4b101477f7a78444192a7dfa8af98c00394978a9627b5ecdae9b5.json
deleted file mode 100644
index e9fb825..0000000
--- a/.sqlx/query-ffef185a4db4b101477f7a78444192a7dfa8af98c00394978a9627b5ecdae9b5.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "DELETE FROM users WHERE pid = $1",
- "describe": {
- "columns": [],
- "parameters": {
- "Left": [
- "Int4"
- ]
- },
- "nullable": []
- },
- "hash": "ffef185a4db4b101477f7a78444192a7dfa8af98c00394978a9627b5ecdae9b5"
-}
diff --git a/Cargo.lock b/Cargo.lock
index 2864314..381b6fc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6,9 +6,9 @@ version = 4
name = "account"
version = "0.1.0"
dependencies = [
- "aes 0.8.4",
+ "aes",
"argon2",
- "base64 0.23.1",
+ "base64",
"bcrypt",
"binrw",
"bytemuck",
@@ -21,20 +21,19 @@ dependencies = [
"gxhash",
"hex",
"hickory-resolver",
- "hmac",
+ "hmac 0.13.0",
"juniper",
"juniper_rocket",
"k256",
"lettre",
"log",
"md-5",
- "nex-account",
"once_cell",
"openssl",
"p256",
"prost",
"quick-xml",
- "rand 0.10.2",
+ "rand 0.10.1",
"reqwest",
"rocket",
"rocket_cors",
@@ -44,7 +43,7 @@ dependencies = [
"sha2 0.11.0",
"sha256",
"sqlx",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"time",
"tokio",
]
@@ -68,29 +67,33 @@ dependencies = [
[[package]]
name = "actix-http"
-version = "3.13.1"
+version = "3.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48e2faa3e7418ed780cca54829d32782a4008a077230f67457caa063415e99c2"
+checksum = "93acb4a42f64936f9b8cae4a433b237599dd6eb6ed06124eb67132ef8cc90662"
dependencies = [
"actix-codec",
"actix-rt",
"actix-service",
"actix-utils",
+ "base64",
"bitflags",
"bytes",
"bytestring",
"derive_more",
"encoding_rs",
- "foldhash 0.2.0",
+ "foldhash 0.1.4",
"futures-core",
"http 0.2.12",
"httparse",
"httpdate",
"itoa",
"language-tags",
+ "local-channel",
"mime",
"percent-encoding",
"pin-project-lite",
+ "rand 0.10.1",
+ "sha1",
"smallvec",
"tokio",
"tokio-util",
@@ -99,9 +102,9 @@ dependencies = [
[[package]]
name = "actix-router"
-version = "0.5.4"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14f8c75c51892f18d9c46150c5ac7beb81c95f78c8b83a634d49f4ca32551fe7"
+checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8"
dependencies = [
"bytestring",
"cfg-if",
@@ -113,9 +116,9 @@ dependencies = [
[[package]]
name = "actix-rt"
-version = "2.11.0"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63"
+checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208"
dependencies = [
"futures-core",
"tokio",
@@ -133,7 +136,7 @@ dependencies = [
"futures-core",
"futures-util",
"mio",
- "socket2 0.5.10",
+ "socket2 0.5.8",
"tokio",
"tracing",
]
@@ -160,9 +163,9 @@ dependencies = [
[[package]]
name = "actix-web"
-version = "4.14.0"
+version = "4.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df09e2d9239703dd64056359c920c7f3fba6535ec61a0059e0f44e095ffe02b4"
+checksum = "f2e3b15b3dc6c6ed996e4032389e9849d4ab002b1e92fbfe85b5f307d1479b4d"
dependencies = [
"actix-codec",
"actix-http",
@@ -176,7 +179,7 @@ dependencies = [
"cfg-if",
"derive_more",
"encoding_rs",
- "foldhash 0.2.0",
+ "foldhash 0.1.4",
"futures-core",
"futures-util",
"impl-more",
@@ -191,7 +194,7 @@ dependencies = [
"serde_json",
"serde_urlencoded",
"smallvec",
- "socket2 0.6.4",
+ "socket2 0.5.8",
"time",
"tracing",
"url",
@@ -199,18 +202,18 @@ dependencies = [
[[package]]
name = "addr2line"
-version = "0.25.1"
+version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
dependencies = [
"gimli",
]
[[package]]
name = "adler2"
-version = "2.0.1"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "aes"
@@ -223,22 +226,11 @@ dependencies = [
"cpufeatures 0.2.17",
]
-[[package]]
-name = "aes"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138"
-dependencies = [
- "cipher 0.5.2",
- "cpubits",
- "cpufeatures 0.3.0",
-]
-
[[package]]
name = "aho-corasick"
-version = "1.1.4"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
@@ -259,10 +251,19 @@ dependencies = [
]
[[package]]
-name = "anyhow"
-version = "1.0.103"
+name = "ansi_term"
+version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.97"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
[[package]]
name = "arcstr"
@@ -307,18 +308,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "async-trait"
-version = "0.1.89"
+version = "0.1.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -338,9 +339,9 @@ checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba"
[[package]]
name = "atomic"
-version = "0.6.1"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"
+checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994"
dependencies = [
"bytemuck",
]
@@ -353,27 +354,27 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "auto_enums"
-version = "0.8.9"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e4487600931c9a89f8db7ffbdf3fbdd45bb7bd85e26861f659a463cd0dff966"
+checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781"
dependencies = [
"derive_utils",
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "autocfg"
-version = "1.5.1"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "aws-lc-rs"
-version = "1.17.1"
+version = "1.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad"
+checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f"
dependencies = [
"aws-lc-sys",
"zeroize",
@@ -381,65 +382,21 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
-version = "0.42.0"
+version = "0.40.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444"
+checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7"
dependencies = [
"cc",
"cmake",
"dunce",
"fs_extra",
- "pkg-config",
-]
-
-[[package]]
-name = "axum"
-version = "0.8.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90"
-dependencies = [
- "axum-core",
- "bytes",
- "futures-util",
- "http 1.4.2",
- "http-body 1.0.1",
- "http-body-util",
- "itoa",
- "matchit",
- "memchr",
- "mime",
- "percent-encoding",
- "pin-project-lite",
- "serde_core",
- "sync_wrapper",
- "tower",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
-name = "axum-core"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
-dependencies = [
- "bytes",
- "futures-core",
- "http 1.4.2",
- "http-body 1.0.1",
- "http-body-util",
- "mime",
- "pin-project-lite",
- "sync_wrapper",
- "tower-layer",
- "tower-service",
]
[[package]]
name = "backtrace"
-version = "0.3.76"
+version = "0.3.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
+checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
dependencies = [
"addr2line",
"cfg-if",
@@ -447,14 +404,14 @@ dependencies = [
"miniz_oxide",
"object",
"rustc-demangle",
- "windows-link",
+ "windows-targets 0.52.6",
]
[[package]]
name = "base16ct"
-version = "1.0.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6"
+checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
[[package]]
name = "base64"
@@ -462,27 +419,21 @@ version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-[[package]]
-name = "base64"
-version = "0.23.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
-
[[package]]
name = "base64ct"
-version = "1.8.3"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
[[package]]
name = "bcrypt"
-version = "0.19.3"
+version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0cd0bd35a28836d528d2b58ad499bc3c5641d59379421b1be9eeb0c2f2b912a"
+checksum = "7f3c067aa24dd4ed5c79cf222a38f260c8f23d3b82a062fba3f28c6fe563b753"
dependencies = [
- "base64 0.23.1",
+ "base64",
"blowfish",
- "getrandom 0.4.3",
+ "getrandom 0.4.2",
"subtle",
"zeroize",
]
@@ -495,9 +446,9 @@ checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72"
[[package]]
name = "binrw"
-version = "0.15.2"
+version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ad120d555272286c1017d25165ab8bd74806f13fc85b258484ec7e4ce75458f"
+checksum = "d53195f985e88ab94d1cc87e80049dd2929fd39e4a772c5ae96a7e5c4aad3642"
dependencies = [
"array-init",
"binrw_derive",
@@ -506,22 +457,22 @@ dependencies = [
[[package]]
name = "binrw_derive"
-version = "0.15.2"
+version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6df92e0e9baae4dc82c7bad7715ca40c0a5c71539057bf2ea04a5c29c980410b"
+checksum = "5910da05ee556b789032c8ff5a61fb99239580aa3fd0bfaa8f4d094b2aee00ad"
dependencies = [
"either",
"owo-colors",
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "bitflags"
-version = "2.13.0"
+version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
+checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
dependencies = [
"serde_core",
]
@@ -546,9 +497,9 @@ dependencies = [
[[package]]
name = "block-buffer"
-version = "0.12.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
+checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be"
dependencies = [
"hybrid-array",
]
@@ -562,15 +513,6 @@ dependencies = [
"generic-array",
]
-[[package]]
-name = "block2"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
-dependencies = [
- "objc2",
-]
-
[[package]]
name = "blowfish"
version = "0.10.0"
@@ -578,33 +520,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62ce3946557b35e71d1bbe07ec385073ce9eda05043f95de134eb578fcf1a298"
dependencies = [
"byteorder",
- "cipher 0.5.2",
+ "cipher 0.5.1",
]
[[package]]
name = "bumpalo"
-version = "3.20.3"
+version = "3.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
[[package]]
name = "bytemuck"
-version = "1.25.2"
+version = "1.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
+checksum = "9134a6ef01ce4b366b50689c94f82c14bc72bc5d0386829828a2e2752ef7958c"
dependencies = [
"bytemuck_derive",
]
[[package]]
name = "bytemuck_derive"
-version = "1.10.2"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
+checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -615,15 +557,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.12.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
[[package]]
name = "bytestring"
-version = "1.5.1"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86566c496f2f47d9b8147a4c8b02ffdb69c919fe0c2b2e7195d22cbba0e635c9"
+checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f"
dependencies = [
"bytes",
]
@@ -648,9 +590,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.66"
+version = "1.2.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996"
+checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -660,9 +602,9 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.4"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
@@ -672,9 +614,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chacha20"
-version = "0.10.1"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
+checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
dependencies = [
"cfg-if",
"cpufeatures 0.3.0",
@@ -692,7 +634,7 @@ dependencies = [
"num-traits",
"serde",
"wasm-bindgen",
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -701,17 +643,17 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
dependencies = [
- "crypto-common 0.1.7",
+ "crypto-common 0.1.6",
"inout 0.1.4",
]
[[package]]
name = "cipher"
-version = "0.5.2"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c"
+checksum = "e34d8227fe1ba289043aeb13792056ff80fd6de1a9f49137a5f499de8e8c78ea"
dependencies = [
- "crypto-common 0.2.2",
+ "crypto-common 0.2.1",
"inout 0.2.2",
]
@@ -726,9 +668,9 @@ dependencies = [
[[package]]
name = "cmov"
-version = "0.5.4"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a"
+checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746"
[[package]]
name = "combine"
@@ -742,9 +684,9 @@ dependencies = [
[[package]]
name = "compact_str"
-version = "0.9.1"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab"
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
dependencies = [
"castaway",
"cfg-if",
@@ -763,21 +705,18 @@ dependencies = [
"crossbeam-utils",
]
+[[package]]
+name = "const-oid"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+
[[package]]
name = "const-oid"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
-[[package]]
-name = "convert_case"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
-dependencies = [
- "unicode-segmentation",
-]
-
[[package]]
name = "cookie"
version = "0.18.1"
@@ -815,12 +754,6 @@ version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-[[package]]
-name = "cpubits"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae"
-
[[package]]
name = "cpufeatures"
version = "0.2.17"
@@ -841,18 +774,18 @@ dependencies = [
[[package]]
name = "crc"
-version = "3.4.0"
+version = "3.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d"
+checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
dependencies = [
"crc-catalog",
]
[[package]]
name = "crc-catalog"
-version = "2.5.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crc32fast"
@@ -880,26 +813,21 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "crypto-bigint"
-version = "0.7.5"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271"
+checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
dependencies = [
- "cpubits",
- "ctutils",
- "getrandom 0.4.3",
- "hybrid-array",
- "num-traits",
- "rand_core 0.10.1",
- "serdect",
+ "generic-array",
+ "rand_core 0.6.4",
"subtle",
"zeroize",
]
[[package]]
name = "crypto-common"
-version = "0.1.7"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
@@ -907,23 +835,11 @@ dependencies = [
[[package]]
name = "crypto-common"
-version = "0.2.2"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
+checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
dependencies = [
- "getrandom 0.4.3",
"hybrid-array",
- "rand_core 0.10.1",
-]
-
-[[package]]
-name = "crypto-primes"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3633a51a39c69ebbaa4feaa694bd83d241e4093901c84a0963b19d9bb3f0cf8f"
-dependencies = [
- "crypto-bigint",
- "rand_core 0.10.1",
]
[[package]]
@@ -933,7 +849,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
dependencies = [
"cmov",
- "subtle",
]
[[package]]
@@ -952,14 +867,24 @@ dependencies = [
"uuid",
]
+[[package]]
+name = "der"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
+dependencies = [
+ "const-oid 0.9.6",
+ "pem-rfc7468 0.7.0",
+ "zeroize",
+]
+
[[package]]
name = "der"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71fd89660b2dc699704064e59e9dba0147b903e85319429e131620d022be411b"
dependencies = [
- "const-oid",
- "pem-rfc7468",
+ "pem-rfc7468 1.0.0",
"zeroize",
]
@@ -971,36 +896,34 @@ checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
[[package]]
name = "derive_more"
-version = "2.1.1"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
+checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
"derive_more-impl",
]
[[package]]
name = "derive_more-impl"
-version = "2.1.1"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
+checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
- "convert_case",
"proc-macro2",
"quote",
- "rustc_version",
- "syn 2.0.118",
+ "syn",
"unicode-xid",
]
[[package]]
name = "derive_utils"
-version = "0.15.1"
+version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "362f47930db19fe7735f527e6595e4900316b893ebf6d48ad3d31be928d57dd6"
+checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -1033,7 +956,7 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -1043,41 +966,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer 0.10.4",
- "crypto-common 0.1.7",
+ "const-oid 0.9.6",
+ "crypto-common 0.1.6",
"subtle",
]
[[package]]
name = "digest"
-version = "0.11.3"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
+checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c"
dependencies = [
- "block-buffer 0.12.1",
- "const-oid",
- "crypto-common 0.2.2",
+ "block-buffer 0.12.0",
+ "const-oid 0.10.2",
+ "crypto-common 0.2.1",
"ctutils",
]
-[[package]]
-name = "dispatch2"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
-dependencies = [
- "bitflags",
- "objc2",
-]
-
[[package]]
name = "displaydoc"
-version = "0.2.6"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -1088,18 +1002,16 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
[[package]]
name = "dsa"
-version = "0.7.0"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8573b60d07b5b5cecadc1f978c9b71d5504151e703cbb0439ee4ad301338f3"
+checksum = "48bc224a9084ad760195584ce5abb3c2c34a225fa312a128ad245a6b412b7689"
dependencies = [
- "crypto-bigint",
- "crypto-common 0.2.2",
- "crypto-primes",
- "der",
- "digest 0.11.3",
+ "digest 0.10.7",
+ "num-bigint-dig",
+ "num-traits",
"pkcs8",
"rfc6979",
- "sha2 0.11.0",
+ "sha2 0.10.9",
"signature",
"zeroize",
]
@@ -1112,44 +1024,42 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
name = "ecdsa"
-version = "0.17.0"
+version = "0.16.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0"
+checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
dependencies = [
- "der",
- "digest 0.11.3",
+ "der 0.7.9",
+ "digest 0.10.7",
"elliptic-curve",
"rfc6979",
"signature",
"spki",
- "zeroize",
]
[[package]]
name = "either"
-version = "1.16.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
dependencies = [
"serde",
]
[[package]]
name = "elliptic-curve"
-version = "0.14.1"
+version = "0.13.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65"
+checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
dependencies = [
"base16ct",
"crypto-bigint",
- "crypto-common 0.2.2",
- "digest 0.11.3",
+ "digest 0.10.7",
"ff",
+ "generic-array",
"group",
- "hybrid-array",
- "pem-rfc7468",
+ "pem-rfc7468 0.7.0",
"pkcs8",
- "rand_core 0.10.1",
+ "rand_core 0.6.4",
"sec1",
"subtle",
"zeroize",
@@ -1161,7 +1071,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9298e6504d9b9e780ed3f7dfd43a61be8cd0e09eb07f7706a945b0072b6670b6"
dependencies = [
- "base64 0.22.1",
+ "base64",
"memchr",
]
@@ -1189,7 +1099,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -1200,12 +1110,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
-version = "0.3.14"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
dependencies = [
"libc",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1220,9 +1130,9 @@ dependencies = [
[[package]]
name = "event-listener"
-version = "5.4.1"
+version = "5.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
+checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
dependencies = [
"concurrent-queue",
"parking",
@@ -1231,17 +1141,17 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.4.1"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "ff"
-version = "0.14.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f"
+checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393"
dependencies = [
- "rand_core 0.10.1",
+ "rand_core 0.6.4",
"subtle",
]
@@ -1251,7 +1161,7 @@ version = "0.10.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3"
dependencies = [
- "atomic 0.6.1",
+ "atomic 0.6.0",
"pear",
"serde",
"toml",
@@ -1277,12 +1187,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "fixedbitset"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
-
[[package]]
name = "flume"
version = "0.12.0"
@@ -1302,9 +1206,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foldhash"
-version = "0.1.5"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f"
[[package]]
name = "foldhash"
@@ -1344,9 +1248,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
name = "futures"
-version = "0.3.32"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
dependencies = [
"futures-channel",
"futures-core",
@@ -1449,67 +1353,70 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
+ "zeroize",
]
[[package]]
name = "getrandom"
-version = "0.2.17"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"js-sys",
"libc",
- "wasi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
"wasm-bindgen",
]
[[package]]
name = "getrandom"
-version = "0.3.4"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
-dependencies = [
- "cfg-if",
- "libc",
- "r-efi 5.3.0",
- "wasip2",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
+checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
dependencies = [
"cfg-if",
"js-sys",
"libc",
- "r-efi 6.0.0",
+ "wasi 0.13.3+wasi-0.2.2",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
"rand_core 0.10.1",
- "wasm-bindgen",
+ "wasip2",
+ "wasip3",
]
[[package]]
name = "gimli"
-version = "0.32.3"
+version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
[[package]]
name = "glob"
-version = "0.3.3"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
+checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
[[package]]
name = "group"
-version = "0.14.0"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4"
+checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
dependencies = [
"ff",
- "rand_core 0.10.1",
+ "rand_core 0.6.4",
"subtle",
]
@@ -1524,9 +1431,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.3.27"
+version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
+checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
dependencies = [
"bytes",
"fnv",
@@ -1543,16 +1450,16 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.4.15"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
+checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2"
dependencies = [
"atomic-waker",
"bytes",
"fnv",
"futures-core",
"futures-sink",
- "http 1.4.2",
+ "http 1.2.0",
"indexmap",
"slab",
"tokio",
@@ -1562,11 +1469,11 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.15.5"
+version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
dependencies = [
- "foldhash 0.1.5",
+ "foldhash 0.1.4",
]
[[package]]
@@ -1580,17 +1487,11 @@ dependencies = [
"foldhash 0.2.0",
]
-[[package]]
-name = "hashbrown"
-version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
-
[[package]]
name = "hashlink"
-version = "0.11.1"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f"
+checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230"
dependencies = [
"hashbrown 0.16.1",
]
@@ -1603,9 +1504,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
-version = "0.5.2"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
[[package]]
name = "hex"
@@ -1629,7 +1536,7 @@ dependencies = [
"idna",
"ipnet",
"once_cell",
- "rand 0.8.6",
+ "rand 0.8.5",
"thiserror 1.0.69",
"tinyvec",
"tokio",
@@ -1650,7 +1557,7 @@ dependencies = [
"lru-cache",
"once_cell",
"parking_lot",
- "rand 0.8.6",
+ "rand 0.8.5",
"resolv-conf",
"smallvec",
"thiserror 1.0.69",
@@ -1664,7 +1571,16 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018"
dependencies = [
- "hmac",
+ "hmac 0.13.0",
+]
+
+[[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.7",
]
[[package]]
@@ -1673,18 +1589,18 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f"
dependencies = [
- "digest 0.11.3",
+ "digest 0.11.2",
]
[[package]]
name = "hostname"
-version = "0.4.2"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd"
+checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65"
dependencies = [
"cfg-if",
"libc",
- "windows-link",
+ "windows-link 0.1.1",
]
[[package]]
@@ -1700,11 +1616,12 @@ dependencies = [
[[package]]
name = "http"
-version = "1.4.2"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
+checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
dependencies = [
"bytes",
+ "fnv",
"itoa",
]
@@ -1726,27 +1643,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
- "http 1.4.2",
+ "http 1.2.0",
]
[[package]]
name = "http-body-util"
-version = "0.1.3"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
- "futures-core",
- "http 1.4.2",
+ "futures-util",
+ "http 1.2.0",
"http-body 1.0.1",
"pin-project-lite",
]
[[package]]
name = "httparse"
-version = "1.10.1"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a"
[[package]]
name = "httpdate"
@@ -1756,14 +1673,11 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hybrid-array"
-version = "0.4.13"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
+checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5"
dependencies = [
- "bytemuck",
- "subtle",
"typenum",
- "zeroize",
]
[[package]]
@@ -1776,14 +1690,14 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.27",
+ "h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
- "socket2 0.5.10",
+ "socket2 0.5.8",
"tokio",
"tower-service",
"tracing",
@@ -1792,19 +1706,18 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.10.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
+checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"
dependencies = [
"atomic-waker",
"bytes",
"futures-channel",
"futures-core",
- "h2 0.4.15",
- "http 1.4.2",
+ "h2 0.4.8",
+ "http 1.2.0",
"http-body 1.0.1",
"httparse",
- "httpdate",
"itoa",
"pin-project-lite",
"smallvec",
@@ -1814,32 +1727,21 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.27.9"
+version = "0.27.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
+checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [
- "http 1.4.2",
- "hyper 1.10.1",
+ "futures-util",
+ "http 1.2.0",
+ "hyper 1.9.0",
"hyper-util",
"rustls",
+ "rustls-pki-types",
"tokio",
"tokio-rustls",
"tower-service",
]
-[[package]]
-name = "hyper-timeout"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
-dependencies = [
- "hyper 1.10.1",
- "hyper-util",
- "pin-project-lite",
- "tokio",
- "tower-service",
-]
-
[[package]]
name = "hyper-tls"
version = "0.6.0"
@@ -1848,7 +1750,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.9.0",
"hyper-util",
"native-tls",
"tokio",
@@ -1862,18 +1764,18 @@ version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
dependencies = [
- "base64 0.22.1",
+ "base64",
"bytes",
"futures-channel",
"futures-util",
- "http 1.4.2",
+ "http 1.2.0",
"http-body 1.0.1",
- "hyper 1.10.1",
+ "hyper 1.9.0",
"ipnet",
"libc",
"percent-encoding",
"pin-project-lite",
- "socket2 0.6.4",
+ "socket2 0.6.3",
"system-configuration",
"tokio",
"tower-service",
@@ -1883,15 +1785,14 @@ dependencies = [
[[package]]
name = "iana-time-zone"
-version = "0.1.65"
+version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
- "log",
"wasm-bindgen",
"windows-core",
]
@@ -1907,23 +1808,21 @@ dependencies = [
[[package]]
name = "icu_collections"
-version = "2.2.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
dependencies = [
"displaydoc",
- "potential_utf",
- "utf8_iter",
"yoke",
"zerofrom",
"zerovec",
]
[[package]]
-name = "icu_locale_core"
-version = "2.2.0"
+name = "icu_locid"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
dependencies = [
"displaydoc",
"litemap",
@@ -1933,65 +1832,109 @@ dependencies = [
]
[[package]]
-name = "icu_normalizer"
-version = "2.2.0"
+name = "icu_locid_transform"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
"icu_collections",
"icu_normalizer_data",
"icu_properties",
"icu_provider",
"smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
"zerovec",
]
[[package]]
name = "icu_normalizer_data"
-version = "2.2.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
[[package]]
name = "icu_properties"
-version = "2.2.0"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
dependencies = [
+ "displaydoc",
"icu_collections",
- "icu_locale_core",
+ "icu_locid_transform",
"icu_properties_data",
"icu_provider",
- "zerotrie",
+ "tinystr",
"zerovec",
]
[[package]]
name = "icu_properties_data"
-version = "2.2.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
[[package]]
name = "icu_provider"
-version = "2.2.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
dependencies = [
"displaydoc",
- "icu_locale_core",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
"writeable",
"yoke",
"zerofrom",
- "zerotrie",
"zerovec",
]
[[package]]
-name = "idna"
-version = "1.1.0"
+name = "icu_provider_macros"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "id-arena"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
+
+[[package]]
+name = "idna"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
dependencies = [
"idna_adapter",
"smallvec",
@@ -2000,9 +1943,9 @@ dependencies = [
[[package]]
name = "idna_adapter"
-version = "1.2.2"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
dependencies = [
"icu_normalizer",
"icu_properties",
@@ -2010,20 +1953,19 @@ dependencies = [
[[package]]
name = "impl-more"
-version = "0.3.1"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35a84fd5aa25fae5c0f4a33d9cac2ca017fc622cbd089be2229993514990f870"
+checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2"
[[package]]
name = "indexmap"
-version = "2.14.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
+checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
dependencies = [
"equivalent",
- "hashbrown 0.17.1",
+ "hashbrown 0.15.2",
"serde",
- "serde_core",
]
[[package]]
@@ -2057,7 +1999,7 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222"
dependencies = [
- "socket2 0.6.4",
+ "socket2 0.6.3",
"widestring",
"windows-registry",
"windows-result",
@@ -2066,9 +2008,9 @@ dependencies = [
[[package]]
name = "ipnet"
-version = "2.12.0"
+version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
+checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
[[package]]
name = "ipnetwork"
@@ -2077,14 +2019,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763"
[[package]]
-name = "is-terminal"
-version = "0.4.17"
+name = "iri-string"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
+checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"
dependencies = [
- "hermit-abi",
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37"
+dependencies = [
+ "hermit-abi 0.4.0",
"libc",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -2098,9 +2050,9 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.18"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
+checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jni"
@@ -2114,9 +2066,9 @@ dependencies = [
"jni-sys",
"log",
"simd_cesu8",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"walkdir",
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -2129,7 +2081,7 @@ dependencies = [
"quote",
"rustc_version",
"simd_cesu8",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -2148,27 +2100,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
dependencies = [
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "jobserver"
-version = "0.1.34"
+version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
dependencies = [
- "getrandom 0.3.4",
"libc",
]
[[package]]
name = "js-sys"
-version = "0.3.103"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
- "cfg-if",
- "futures-util",
+ "once_cell",
"wasm-bindgen",
]
@@ -2203,7 +2153,7 @@ dependencies = [
"derive_more",
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
"url",
]
@@ -2225,17 +2175,16 @@ dependencies = [
[[package]]
name = "k256"
-version = "0.14.0"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8"
+checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
dependencies = [
- "cpubits",
+ "cfg-if",
"ecdsa",
"elliptic-curve",
- "primeorder",
- "sha2 0.11.0",
+ "once_cell",
+ "sha2 0.10.9",
"signature",
- "wnaf",
]
[[package]]
@@ -2249,14 +2198,23 @@ name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+dependencies = [
+ "spin",
+]
+
+[[package]]
+name = "leb128fmt"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "lettre"
-version = "0.11.23"
+version = "0.11.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2c646bd5cc763b1087b15493e29a64be6147ba8f19342004fa52048ee596eae"
+checksum = "0da65617f6cb926332d039cb578aad56178da86e128db6a1b09f4c94fa5b3349"
dependencies = [
- "base64 0.23.1",
+ "base64",
"email-encoding",
"email_address",
"fastrand",
@@ -2269,7 +2227,7 @@ dependencies = [
"nom",
"percent-encoding",
"quoted_printable",
- "socket2 0.6.4",
+ "socket2 0.6.3",
"tokio",
"url",
]
@@ -2281,10 +2239,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
-name = "libsqlite3-sys"
-version = "0.37.0"
+name = "libm"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1"
+checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
+
+[[package]]
+name = "libsqlite3-sys"
+version = "0.30.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
dependencies = [
"pkg-config",
"vcpkg",
@@ -2298,15 +2262,26 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "linux-raw-sys"
-version = "0.12.1"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
+checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "litemap"
-version = "0.8.2"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
+checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"
+
+[[package]]
+name = "local-channel"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "local-waker",
+]
[[package]]
name = "local-waker"
@@ -2316,24 +2291,25 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487"
[[package]]
name = "lock_api"
-version = "0.4.14"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [
+ "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.33"
+version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
+checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
[[package]]
name = "loom"
-version = "0.5.6"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
+checksum = "b2b9df80a3804094bf49bb29881d18f6f05048db72127e84e09c26fc7c2324f5"
dependencies = [
"cfg-if",
"generator",
@@ -2341,7 +2317,7 @@ dependencies = [
"serde",
"serde_json",
"tracing",
- "tracing-subscriber",
+ "tracing-subscriber 0.2.25",
]
[[package]]
@@ -2361,19 +2337,13 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
[[package]]
name = "matchers"
-version = "0.2.0"
+version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
+checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1"
dependencies = [
- "regex-automata",
+ "regex-automata 0.1.10",
]
-[[package]]
-name = "matchit"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
-
[[package]]
name = "md-5"
version = "0.11.0"
@@ -2381,14 +2351,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98"
dependencies = [
"cfg-if",
- "digest 0.11.3",
+ "digest 0.11.2",
]
[[package]]
name = "memchr"
-version = "2.8.2"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "mime"
@@ -2398,22 +2368,22 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "miniz_oxide"
-version = "0.8.9"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5"
dependencies = [
"adler2",
]
[[package]]
name = "mio"
-version = "1.2.1"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
+checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
dependencies = [
"libc",
"log",
- "wasi",
+ "wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys 0.61.2",
]
@@ -2426,7 +2396,7 @@ dependencies = [
"bytes",
"encoding_rs",
"futures-util",
- "http 1.4.2",
+ "http 1.2.0",
"httparse",
"memchr",
"mime",
@@ -2436,12 +2406,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "multimap"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084"
-
[[package]]
name = "native-tls"
version = "0.2.18"
@@ -2459,40 +2423,6 @@ dependencies = [
"tempfile",
]
-[[package]]
-name = "nex-account"
-version = "0.2.5"
-source = "sparse+https://crates.spbr.net/api/v1/crates/"
-checksum = "7cb5867c4f4771dd7125dce1f911753cc9291b65cd7908c0e7ca182e7b2a57a3"
-dependencies = [
- "base64 0.23.1",
- "bytemuck",
- "hmac",
- "log",
- "md-5",
- "prost",
- "simplelog",
- "spbr-common",
- "sqlx",
- "thiserror 2.0.20",
- "tokio",
- "tonic",
- "tonic-prost",
- "tonic-prost-build",
-]
-
-[[package]]
-name = "nix"
-version = "0.31.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
-dependencies = [
- "bitflags",
- "cfg-if",
- "cfg_aliases",
- "libc",
-]
-
[[package]]
name = "nom"
version = "8.0.0"
@@ -2503,12 +2433,20 @@ dependencies = [
]
[[package]]
-name = "nu-ansi-term"
-version = "0.50.3"
+name = "num-bigint-dig"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
+checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
dependencies = [
- "windows-sys 0.61.2",
+ "byteorder",
+ "lazy_static",
+ "libm",
+ "num-integer",
+ "num-iter",
+ "num-traits",
+ "rand 0.8.5",
+ "smallvec",
+ "zeroize",
]
[[package]]
@@ -2517,6 +2455,26 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -2528,187 +2486,19 @@ dependencies = [
[[package]]
name = "num_cpus"
-version = "1.17.0"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
dependencies = [
- "hermit-abi",
+ "hermit-abi 0.3.9",
"libc",
]
-[[package]]
-name = "num_threads"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "objc2"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
-dependencies = [
- "objc2-encode",
-]
-
-[[package]]
-name = "objc2-cloud-kit"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
-dependencies = [
- "bitflags",
- "objc2",
- "objc2-foundation",
-]
-
-[[package]]
-name = "objc2-core-data"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
-dependencies = [
- "objc2",
- "objc2-foundation",
-]
-
-[[package]]
-name = "objc2-core-foundation"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
-dependencies = [
- "bitflags",
- "dispatch2",
- "objc2",
-]
-
-[[package]]
-name = "objc2-core-graphics"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
-dependencies = [
- "bitflags",
- "dispatch2",
- "objc2",
- "objc2-core-foundation",
- "objc2-io-surface",
-]
-
-[[package]]
-name = "objc2-core-image"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
-dependencies = [
- "objc2",
- "objc2-foundation",
-]
-
-[[package]]
-name = "objc2-core-location"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009"
-dependencies = [
- "objc2",
- "objc2-foundation",
-]
-
-[[package]]
-name = "objc2-core-text"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
-dependencies = [
- "bitflags",
- "objc2",
- "objc2-core-foundation",
- "objc2-core-graphics",
-]
-
-[[package]]
-name = "objc2-encode"
-version = "4.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
-
-[[package]]
-name = "objc2-foundation"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
-dependencies = [
- "bitflags",
- "block2",
- "libc",
- "objc2",
- "objc2-core-foundation",
-]
-
-[[package]]
-name = "objc2-io-surface"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
-dependencies = [
- "bitflags",
- "objc2",
- "objc2-core-foundation",
-]
-
-[[package]]
-name = "objc2-quartz-core"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
-dependencies = [
- "bitflags",
- "objc2",
- "objc2-core-foundation",
- "objc2-foundation",
-]
-
-[[package]]
-name = "objc2-ui-kit"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
-dependencies = [
- "bitflags",
- "block2",
- "objc2",
- "objc2-cloud-kit",
- "objc2-core-data",
- "objc2-core-foundation",
- "objc2-core-graphics",
- "objc2-core-image",
- "objc2-core-location",
- "objc2-core-text",
- "objc2-foundation",
- "objc2-quartz-core",
- "objc2-user-notifications",
-]
-
-[[package]]
-name = "objc2-user-notifications"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e"
-dependencies = [
- "objc2",
- "objc2-foundation",
-]
-
[[package]]
name = "object"
-version = "0.37.3"
+version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [
"memchr",
]
@@ -2741,7 +2531,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -2752,9 +2542,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]]
name = "openssl-src"
-version = "300.6.1+3.6.3"
+version = "300.6.0+3.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46eb8fb9fb3b61ce1c0f8a026c4c1a0714d3a9e138e7fbde78753ce2babc3846"
+checksum = "a8e8cbfd3a4a8c8f089147fd7aaa33cf8c7450c4d09f8f80698a0cf093abeff4"
dependencies = [
"cc",
]
@@ -2774,18 +2564,13 @@ dependencies = [
[[package]]
name = "os_info"
-version = "3.15.0"
+version = "3.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf20a545b305cf1da722b236b5155c9bb35f1d5ceb28c048bd96ca842f41b5b"
+checksum = "2a604e53c24761286860eba4e2c8b23a0161526476b1de520139d69cdb85a6b5"
dependencies = [
- "android_system_properties",
"log",
- "nix",
- "objc2",
- "objc2-foundation",
- "objc2-ui-kit",
"serde",
- "windows-sys 0.61.2",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -2796,15 +2581,14 @@ checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d"
[[package]]
name = "p256"
-version = "0.14.0"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a"
+checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b"
dependencies = [
"ecdsa",
"elliptic-curve",
- "primefield",
"primeorder",
- "sha2 0.11.0",
+ "sha2 0.10.9",
]
[[package]]
@@ -2815,9 +2599,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
-version = "0.12.5"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -2825,15 +2609,15 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.12"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
- "windows-link",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -2867,7 +2651,16 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.118",
+ "syn",
+]
+
+[[package]]
+name = "pem-rfc7468"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+dependencies = [
+ "base64ct",
]
[[package]]
@@ -2881,71 +2674,31 @@ dependencies = [
[[package]]
name = "percent-encoding"
-version = "2.3.2"
+version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
-
-[[package]]
-name = "petgraph"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455"
-dependencies = [
- "fixedbitset",
- "hashbrown 0.15.5",
- "indexmap",
-]
-
-[[package]]
-name = "pin-project"
-version = "1.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.118",
-]
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project-lite"
-version = "0.2.17"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pkcs8"
-version = "0.11.0"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7"
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
dependencies = [
- "der",
+ "der 0.7.9",
"spki",
]
[[package]]
name = "pkg-config"
-version = "0.3.33"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
-
-[[package]]
-name = "potential_utf"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
-dependencies = [
- "zerovec",
-]
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "powerfmt"
@@ -2955,55 +2708,37 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
-version = "0.2.21"
+version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
dependencies = [
"zerocopy",
]
[[package]]
name = "prettyplease"
-version = "0.2.37"
+version = "0.2.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a"
dependencies = [
"proc-macro2",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "primefield"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4"
-dependencies = [
- "crypto-bigint",
- "crypto-common 0.2.2",
- "ff",
- "rand_core 0.10.1",
- "subtle",
- "zeroize",
+ "syn",
]
[[package]]
name = "primeorder"
-version = "0.14.0"
+version = "0.13.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06"
+checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6"
dependencies = [
"elliptic-curve",
- "once_cell",
- "primefield",
- "serdect",
- "wnaf",
]
[[package]]
name = "proc-macro2"
-version = "1.0.106"
+version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
@@ -3016,89 +2751,39 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
"version_check",
"yansi",
]
[[package]]
name = "prost"
-version = "0.14.4"
+version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1"
+checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"
dependencies = [
"bytes",
"prost-derive",
]
-[[package]]
-name = "prost-build"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042"
-dependencies = [
- "heck",
- "itertools",
- "log",
- "multimap",
- "petgraph",
- "prettyplease",
- "prost",
- "prost-types",
- "pulldown-cmark",
- "pulldown-cmark-to-cmark",
- "regex",
- "syn 2.0.118",
- "tempfile",
-]
-
[[package]]
name = "prost-derive"
-version = "0.14.4"
+version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf"
+checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"
dependencies = [
"anyhow",
"itertools",
"proc-macro2",
"quote",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "prost-types"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a"
-dependencies = [
- "prost",
-]
-
-[[package]]
-name = "pulldown-cmark"
-version = "0.13.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e"
-dependencies = [
- "bitflags",
- "memchr",
- "unicase",
-]
-
-[[package]]
-name = "pulldown-cmark-to-cmark"
-version = "22.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90"
-dependencies = [
- "pulldown-cmark",
+ "syn",
]
[[package]]
name = "quick-xml"
-version = "0.41.0"
+version = "0.40.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1"
+checksum = "2474bd2e5029e7ccb6abb2ba48cf2383a333851dedf495901544281590c7da7f"
dependencies = [
"memchr",
"serde",
@@ -3106,9 +2791,9 @@ dependencies = [
[[package]]
name = "quinn"
-version = "0.11.11"
+version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes",
"cfg_aliases",
@@ -3117,8 +2802,8 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls",
- "socket2 0.6.4",
- "thiserror 2.0.20",
+ "socket2 0.6.3",
+ "thiserror 2.0.18",
"tokio",
"tracing",
"web-time",
@@ -3126,22 +2811,21 @@ dependencies = [
[[package]]
name = "quinn-proto"
-version = "0.11.16"
+version = "0.11.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
+checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
dependencies = [
"aws-lc-rs",
"bytes",
- "getrandom 0.4.3",
+ "getrandom 0.3.1",
"lru-slab",
- "rand 0.10.2",
- "rand_pcg",
+ "rand 0.9.4",
"ring",
"rustc-hash",
"rustls",
"rustls-pki-types",
"slab",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"tinyvec",
"tracing",
"web-time",
@@ -3149,38 +2833,32 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.15"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2 0.6.4",
+ "socket2 0.6.3",
"tracing",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
name = "quote"
-version = "1.0.46"
+version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
[[package]]
name = "quoted_printable"
-version = "0.5.2"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "478e0585659a122aa407eb7e3c0e1fa51b1d8a870038bd29f0cf4a8551eea972"
-
-[[package]]
-name = "r-efi"
-version = "5.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73"
[[package]]
name = "r-efi"
@@ -3190,9 +2868,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
name = "rand"
-version = "0.8.6"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
@@ -3206,17 +2884,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
dependencies = [
"rand_chacha 0.9.0",
- "rand_core 0.9.5",
+ "rand_core 0.9.3",
]
[[package]]
name = "rand"
-version = "0.10.2"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
+checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
dependencies = [
"chacha20",
- "getrandom 0.4.3",
+ "getrandom 0.4.2",
"rand_core 0.10.1",
]
@@ -3237,7 +2915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
- "rand_core 0.9.5",
+ "rand_core 0.9.3",
]
[[package]]
@@ -3246,16 +2924,16 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.17",
+ "getrandom 0.2.15",
]
[[package]]
name = "rand_core"
-version = "0.9.5"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
- "getrandom 0.3.4",
+ "getrandom 0.3.1",
]
[[package]]
@@ -3264,78 +2942,84 @@ version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
-[[package]]
-name = "rand_pcg"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
-dependencies = [
- "rand_core 0.10.1",
-]
-
[[package]]
name = "redox_syscall"
-version = "0.5.18"
+version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f"
dependencies = [
"bitflags",
]
[[package]]
name = "ref-cast"
-version = "1.0.25"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
+checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
-version = "1.0.25"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
+checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "regex"
-version = "1.12.4"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata",
- "regex-syntax",
+ "regex-automata 0.4.9",
+ "regex-syntax 0.8.5",
]
[[package]]
name = "regex-automata"
-version = "0.4.14"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax",
+ "regex-syntax 0.8.5",
]
[[package]]
name = "regex-lite"
-version = "0.1.9"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973"
+checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
[[package]]
name = "regex-syntax"
-version = "0.8.11"
+version = "0.6.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "reqwest"
@@ -3343,17 +3027,17 @@ version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
dependencies = [
- "base64 0.22.1",
+ "base64",
"bytes",
"encoding_rs",
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.4.15",
- "http 1.4.2",
+ "h2 0.4.8",
+ "http 1.2.0",
"http-body 1.0.1",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.9.0",
"hyper-rustls",
"hyper-tls",
"hyper-util",
@@ -3390,23 +3074,23 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7"
[[package]]
name = "rfc6979"
-version = "0.6.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b"
+checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
dependencies = [
- "crypto-bigint",
- "hmac",
+ "hmac 0.12.1",
+ "subtle",
]
[[package]]
name = "ring"
-version = "0.17.14"
+version = "0.17.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73"
dependencies = [
"cc",
"cfg-if",
- "getrandom 0.2.17",
+ "getrandom 0.2.15",
"libc",
"untrusted",
"windows-sys 0.52.0",
@@ -3433,7 +3117,7 @@ dependencies = [
"num_cpus",
"parking_lot",
"pin-project-lite",
- "rand 0.8.6",
+ "rand 0.8.5",
"ref-cast",
"rocket_codegen",
"rocket_http",
@@ -3462,7 +3146,7 @@ dependencies = [
"proc-macro2",
"quote",
"rocket_http",
- "syn 2.0.118",
+ "syn",
"unicode-xid",
"version_check",
]
@@ -3513,15 +3197,15 @@ dependencies = [
[[package]]
name = "rustc-demangle"
-version = "0.1.27"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustc-hash"
-version = "2.1.3"
+version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
+checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
[[package]]
name = "rustc_version"
@@ -3534,22 +3218,22 @@ dependencies = [
[[package]]
name = "rustix"
-version = "1.1.4"
+version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
+checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
"bitflags",
"errno",
"libc",
"linux-raw-sys",
- "windows-sys 0.61.2",
+ "windows-sys 0.59.0",
]
[[package]]
name = "rustls"
-version = "0.23.41"
+version = "0.23.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
+checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643"
dependencies = [
"aws-lc-rs",
"once_cell",
@@ -3561,9 +3245,9 @@ dependencies = [
[[package]]
name = "rustls-native-certs"
-version = "0.8.4"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"
+checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
dependencies = [
"openssl-probe",
"rustls-pki-types",
@@ -3573,12 +3257,11 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.15.0"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046"
+checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
dependencies = [
"web-time",
- "zeroize",
]
[[package]]
@@ -3610,9 +3293,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
[[package]]
name = "rustls-webpki"
-version = "0.103.13"
+version = "0.103.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
+checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435"
dependencies = [
"aws-lc-rs",
"ring",
@@ -3622,15 +3305,15 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.22"
+version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
[[package]]
name = "ryu"
-version = "1.0.23"
+version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
+checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
[[package]]
name = "same-file"
@@ -3664,14 +3347,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "sec1"
-version = "0.8.1"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d"
+checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
dependencies = [
"base16ct",
- "ctutils",
- "der",
- "hybrid-array",
+ "der 0.7.9",
+ "generic-array",
+ "pkcs8",
"subtle",
"zeroize",
]
@@ -3701,15 +3384,15 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.28"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]]
name = "sentry"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63207365db50cb817402f0ec8097d6dad3d644ef3fffd6ba30c75b3077e514da"
+checksum = "931a20b0da02350676e3d6d3c9028d58eaa448cf42a866712eec5845a505421e"
dependencies = [
"cfg_aliases",
"httpdate",
@@ -3720,7 +3403,6 @@ dependencies = [
"sentry-contexts",
"sentry-core",
"sentry-debug-images",
- "sentry-log",
"sentry-panic",
"sentry-tracing",
"tokio",
@@ -3729,9 +3411,9 @@ dependencies = [
[[package]]
name = "sentry-actix"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a0eb1ed18478fb48db007aeaa672a3de176055357feb768eee0c3471802d0ce"
+checksum = "5ffb8fd78b8f4527146013ab52293e03242770a31dcd97eee4b82b7f770ffab3"
dependencies = [
"actix-http",
"actix-web",
@@ -3742,9 +3424,9 @@ dependencies = [
[[package]]
name = "sentry-backtrace"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3bcc2497c2327998146207b7600599ef7592233920f4d4e1d41ddeeba0e4210"
+checksum = "911ee36abf5b7fa335fccd5f54361ba9c16baea5f0c3bb361a687b6c195c21cf"
dependencies = [
"backtrace",
"regex",
@@ -3753,9 +3435,9 @@ dependencies = [
[[package]]
name = "sentry-contexts"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cb04cba225b38f59d08f9e3c29ab7259d9cc94fbb2c46d613a51cb0a4a7ee05"
+checksum = "9b9d7d469e9e22741c17ca23fb8b42d79861590eb7cf330f3da34fc1e4bc1bc6"
dependencies = [
"hostname",
"libc",
@@ -3767,9 +3449,9 @@ dependencies = [
[[package]]
name = "sentry-core"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48759bc392fb5e3b36b4efcb485f51074c0ba8479711cd5c8cf79e86f9f75d41"
+checksum = "545dc562b6758d646ac19e1407f4ebc26d452111386743e03323464bc48bb2e0"
dependencies = [
"rand 0.9.4",
"sentry-types",
@@ -3780,30 +3462,19 @@ dependencies = [
[[package]]
name = "sentry-debug-images"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a5bd325059b70b21ca6e42b0f2409821272dddc1cf37923de37269af55389b5"
+checksum = "660e9def38a573a869a182f7e90f58aaaa460f38b92b31fd1755ec537193bb48"
dependencies = [
"findshlibs",
"sentry-core",
]
-[[package]]
-name = "sentry-log"
-version = "0.49.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9553a2f0f75bc8550137ebc753e8d2161af63ff780ca59983935f8df8f01655"
-dependencies = [
- "bitflags",
- "log",
- "sentry-core",
-]
-
[[package]]
name = "sentry-panic"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a685d22f672b1562ebeff3f2affceb5960595648cc936dae73da3e1d6a55fbd1"
+checksum = "772d9de150c8ca910c835353c85f434457348fdd21208f9b3da3574202b1dc5d"
dependencies = [
"sentry-backtrace",
"sentry-core",
@@ -3811,29 +3482,29 @@ dependencies = [
[[package]]
name = "sentry-tracing"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8aa7d8e0db4cccddbac01ddabd5344ad03b7c2f954b3ff850cecb1d9cf5d4758"
+checksum = "c51ec9620a4d398dcdf7ee90effbf8d8691cfa24e91978bfa8565cac039d4980"
dependencies = [
"bitflags",
"sentry-backtrace",
"sentry-core",
"tracing-core",
- "tracing-subscriber",
+ "tracing-subscriber 0.3.23",
]
[[package]]
name = "sentry-types"
-version = "0.49.1"
+version = "0.48.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fab146d15a30ab4897a95fd15d6a038b8d7fbf2661c5f8b13738ce8df7a095b7"
+checksum = "041359745a44dd2e14fe21b7510fe7ca8b5beffce6636a0b52e5bc7d5f736887"
dependencies = [
"debugid",
"hex",
"rand 0.9.4",
"serde",
"serde_json",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"time",
"url",
"uuid",
@@ -3841,9 +3512,9 @@ dependencies = [
[[package]]
name = "serde"
-version = "1.0.229"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
"serde_core",
"serde_derive",
@@ -3851,29 +3522,29 @@ dependencies = [
[[package]]
name = "serde_core"
-version = "1.0.229"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.229"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
- "syn 3.0.0",
+ "syn",
]
[[package]]
name = "serde_json"
-version = "1.0.151"
+version = "1.0.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
+checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
dependencies = [
"itoa",
"memchr",
@@ -3884,9 +3555,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.9"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
@@ -3903,16 +3574,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "serdect"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e"
-dependencies = [
- "base16ct",
- "serde",
-]
-
[[package]]
name = "sha1"
version = "0.11.0"
@@ -3921,7 +3582,7 @@ checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214"
dependencies = [
"cfg-if",
"cpufeatures 0.3.0",
- "digest 0.11.3",
+ "digest 0.11.2",
]
[[package]]
@@ -3943,7 +3604,7 @@ checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
dependencies = [
"cfg-if",
"cpufeatures 0.3.0",
- "digest 0.11.3",
+ "digest 0.11.2",
]
[[package]]
@@ -3970,28 +3631,27 @@ dependencies = [
[[package]]
name = "shlex"
-version = "2.0.1"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook-registry"
-version = "1.4.8"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [
- "errno",
"libc",
]
[[package]]
name = "signature"
-version = "3.0.0"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5"
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
dependencies = [
- "digest 0.11.3",
- "rand_core 0.10.1",
+ "digest 0.10.7",
+ "rand_core 0.6.4",
]
[[package]]
@@ -4011,36 +3671,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
-name = "simplelog"
-version = "0.12.2"
+name = "slab"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
dependencies = [
- "log",
- "termcolor",
- "time",
+ "autocfg",
]
-[[package]]
-name = "slab"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
-
[[package]]
name = "smallvec"
-version = "1.15.2"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
+checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
dependencies = [
"serde",
]
[[package]]
name = "socket2"
-version = "0.5.10"
+version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
+checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8"
dependencies = [
"libc",
"windows-sys 0.52.0",
@@ -4048,30 +3700,14 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.6.4"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
+checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [
"libc",
"windows-sys 0.61.2",
]
-[[package]]
-name = "spbr-common"
-version = "0.1.0"
-source = "sparse+https://crates.spbr.net/api/v1/crates/"
-checksum = "04f4e4710d23bb730a95d00b853e304a4c1c9e86276792cd32a92057e9833452"
-dependencies = [
- "aes 0.9.1",
- "base64 0.22.1",
- "bytemuck",
- "hmac",
- "hybrid-array",
- "md-5",
- "rand 0.10.2",
- "thiserror 2.0.20",
-]
-
[[package]]
name = "spin"
version = "0.9.8"
@@ -4083,12 +3719,12 @@ dependencies = [
[[package]]
name = "spki"
-version = "0.8.0"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f"
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
dependencies = [
"base64ct",
- "der",
+ "der 0.7.9",
]
[[package]]
@@ -4110,7 +3746,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb"
dependencies = [
- "base64 0.22.1",
+ "base64",
"bytes",
"cfg-if",
"chrono",
@@ -4134,7 +3770,7 @@ dependencies = [
"serde_json",
"sha2 0.10.9",
"smallvec",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"tokio",
"tokio-stream",
"tracing",
@@ -4151,7 +3787,7 @@ dependencies = [
"quote",
"sqlx-core",
"sqlx-macros-core",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -4174,8 +3810,8 @@ dependencies = [
"sqlx-mysql",
"sqlx-postgres",
"sqlx-sqlite",
- "syn 2.0.118",
- "thiserror 2.0.20",
+ "syn",
+ "thiserror 2.0.18",
"tokio",
"url",
]
@@ -4191,7 +3827,7 @@ dependencies = [
"bytes",
"chrono",
"crc",
- "digest 0.11.3",
+ "digest 0.11.2",
"dotenvy",
"either",
"futures-core",
@@ -4203,7 +3839,7 @@ dependencies = [
"sha1",
"sha2 0.11.0",
"sqlx-core",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"tracing",
]
@@ -4214,7 +3850,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e"
dependencies = [
"atoi",
- "base64 0.22.1",
+ "base64",
"bitflags",
"byteorder",
"chrono",
@@ -4226,20 +3862,20 @@ dependencies = [
"futures-util",
"hex",
"hkdf",
- "hmac",
+ "hmac 0.13.0",
"ipnetwork",
"itoa",
"log",
"md-5",
"memchr",
- "rand 0.10.2",
+ "rand 0.10.1",
"serde",
"serde_json",
"sha2 0.11.0",
"smallvec",
"sqlx-core",
"stringprep",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"tracing",
"whoami",
]
@@ -4264,7 +3900,7 @@ dependencies = [
"percent-encoding",
"serde",
"sqlx-core",
- "thiserror 2.0.20",
+ "thiserror 2.0.18",
"tracing",
"url",
]
@@ -4280,9 +3916,9 @@ dependencies = [
[[package]]
name = "stable_deref_trait"
-version = "1.2.1"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "state"
@@ -4318,20 +3954,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
-version = "2.0.118"
+version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "syn"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2fac314a64dc9a36e61a9eb4261a5e9bbfbc922b27e518af97bc32b926cf967"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
@@ -4349,13 +3974,13 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.13.2"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -4381,24 +4006,16 @@ dependencies = [
[[package]]
name = "tempfile"
-version = "3.27.0"
+version = "3.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
+checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
dependencies = [
+ "cfg-if",
"fastrand",
- "getrandom 0.4.3",
+ "getrandom 0.3.1",
"once_cell",
"rustix",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "termcolor"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
-dependencies = [
- "winapi-util",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -4412,11 +4029,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.20"
+version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
- "thiserror-impl 2.0.20",
+ "thiserror-impl 2.0.18",
]
[[package]]
@@ -4427,39 +4044,38 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.20"
+version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
- "syn 3.0.0",
+ "syn",
]
[[package]]
name = "thread_local"
-version = "1.1.9"
+version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
dependencies = [
"cfg-if",
+ "once_cell",
]
[[package]]
name = "time"
-version = "0.3.55"
+version = "0.3.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
+checksum = "711a53c2d47bbd818258c498c8dbfe186a2526c631495cfe7e078567f86b8469"
dependencies = [
"deranged",
- "libc",
"num-conv",
- "num_threads",
"powerfmt",
"serde_core",
"time-core",
@@ -4474,9 +4090,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
[[package]]
name = "time-macros"
-version = "0.2.32"
+version = "0.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
+checksum = "71c652a3727a9cbb9a02f707f530b618ce00d0ccd762009c8c23bd191df3c17d"
dependencies = [
"num-conv",
"time-core",
@@ -4484,9 +4100,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.8.3"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
dependencies = [
"displaydoc",
"zerovec",
@@ -4494,9 +4110,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.11.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
+checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
dependencies = [
"tinyvec_macros",
]
@@ -4509,9 +4125,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.53.1"
+version = "1.52.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
+checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
dependencies = [
"bytes",
"libc",
@@ -4519,7 +4135,7 @@ dependencies = [
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2 0.6.4",
+ "socket2 0.6.3",
"tokio-macros",
"windows-sys 0.61.2",
]
@@ -4532,7 +4148,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -4547,9 +4163,9 @@ dependencies = [
[[package]]
name = "tokio-rustls"
-version = "0.26.4"
+version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
+checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
dependencies = [
"rustls",
"tokio",
@@ -4557,9 +4173,9 @@ dependencies = [
[[package]]
name = "tokio-stream"
-version = "0.1.18"
+version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -4568,9 +4184,9 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.18"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
+checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078"
dependencies = [
"bytes",
"futures-core",
@@ -4581,9 +4197,9 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.8.23"
+version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
+checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
dependencies = [
"serde",
"serde_spanned",
@@ -4593,136 +4209,57 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.11"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-version = "0.22.27"
+version = "0.22.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
+checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
- "toml_write",
"winnow",
]
-[[package]]
-name = "toml_write"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
-
-[[package]]
-name = "tonic"
-version = "0.14.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef"
-dependencies = [
- "async-trait",
- "axum",
- "base64 0.22.1",
- "bytes",
- "h2 0.4.15",
- "http 1.4.2",
- "http-body 1.0.1",
- "http-body-util",
- "hyper 1.10.1",
- "hyper-timeout",
- "hyper-util",
- "percent-encoding",
- "pin-project",
- "socket2 0.6.4",
- "sync_wrapper",
- "tokio",
- "tokio-stream",
- "tower",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tonic-build"
-version = "0.14.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c68f61875ac5293cf72e6c8cf0158086428c82c37229e98c840878f1706b0322"
-dependencies = [
- "prettyplease",
- "proc-macro2",
- "quote",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "tonic-prost"
-version = "0.14.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50849f68853be452acf590cde0b146665b8d507b3b8af17261df47e02c209ea0"
-dependencies = [
- "bytes",
- "prost",
- "tonic",
-]
-
-[[package]]
-name = "tonic-prost-build"
-version = "0.14.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "654e5643eff75d7f8c99197ce1440ed19a3474eada74c12bbac488b2cafdae27"
-dependencies = [
- "prettyplease",
- "proc-macro2",
- "prost-build",
- "prost-types",
- "quote",
- "syn 2.0.118",
- "tempfile",
- "tonic-build",
-]
-
[[package]]
name = "tower"
-version = "0.5.3"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
dependencies = [
"futures-core",
"futures-util",
- "indexmap",
"pin-project-lite",
- "slab",
"sync_wrapper",
"tokio",
- "tokio-util",
"tower-layer",
"tower-service",
- "tracing",
]
[[package]]
name = "tower-http"
-version = "0.6.11"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
+checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
dependencies = [
"bitflags",
"bytes",
"futures-util",
- "http 1.4.2",
+ "http 1.2.0",
"http-body 1.0.1",
+ "iri-string",
"pin-project-lite",
"tower",
"tower-layer",
"tower-service",
- "url",
]
[[package]]
@@ -4739,9 +4276,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tracing"
-version = "0.1.44"
+version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"log",
"pin-project-lite",
@@ -4751,13 +4288,13 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.31"
+version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
+checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
@@ -4772,31 +4309,54 @@ dependencies = [
[[package]]
name = "tracing-log"
-version = "0.2.0"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2"
dependencies = [
"log",
"once_cell",
"tracing-core",
]
+[[package]]
+name = "tracing-serde"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+dependencies = [
+ "serde",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
+dependencies = [
+ "ansi_term",
+ "chrono",
+ "lazy_static",
+ "matchers",
+ "regex",
+ "serde",
+ "serde_json",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+ "tracing-serde",
+]
+
[[package]]
name = "tracing-subscriber"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
dependencies = [
- "matchers",
- "nu-ansi-term",
- "once_cell",
- "regex-automata",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing",
"tracing-core",
- "tracing-log",
]
[[package]]
@@ -4807,9 +4367,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "typenum"
-version = "1.20.1"
+version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
+checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
[[package]]
name = "ubyte"
@@ -4841,9 +4401,9 @@ dependencies = [
[[package]]
name = "unicase"
-version = "2.9.0"
+version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
+checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicase_serde"
@@ -4863,30 +4423,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
[[package]]
name = "unicode-ident"
-version = "1.0.24"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
[[package]]
name = "unicode-normalization"
-version = "0.1.25"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
dependencies = [
"tinyvec",
]
[[package]]
name = "unicode-properties"
-version = "0.1.4"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.13.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
+checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0"
[[package]]
name = "unicode-xid"
@@ -4906,8 +4460,8 @@ version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
dependencies = [
- "base64 0.22.1",
- "der",
+ "base64",
+ "der 0.8.0",
"log",
"native-tls",
"percent-encoding",
@@ -4923,25 +4477,30 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c"
dependencies = [
- "base64 0.22.1",
- "http 1.4.2",
+ "base64",
+ "http 1.2.0",
"httparse",
"log",
]
[[package]]
name = "url"
-version = "2.5.8"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
dependencies = [
"form_urlencoded",
"idna",
"percent-encoding",
"serde",
- "serde_derive",
]
+[[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
[[package]]
name = "utf8-zero"
version = "0.8.1"
@@ -4956,13 +4515,11 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "uuid"
-version = "1.23.4"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
+checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
dependencies = [
- "js-sys",
- "serde_core",
- "wasm-bindgen",
+ "serde",
]
[[package]]
@@ -5004,47 +4561,81 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.11.1+wasi-snapshot-preview1"
+version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasi"
+version = "0.13.3+wasi-0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
+dependencies = [
+ "wit-bindgen-rt",
+]
[[package]]
name = "wasip2"
-version = "1.0.4+wasi-0.2.12"
+version = "1.0.3+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
+checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
dependencies = [
- "wit-bindgen",
+ "wit-bindgen 0.57.1",
+]
+
+[[package]]
+name = "wasip3"
+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
+dependencies = [
+ "wit-bindgen 0.51.0",
]
[[package]]
name = "wasm-bindgen"
-version = "0.2.126"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.76"
+version = "0.4.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d"
+checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
dependencies = [
+ "cfg-if",
"js-sys",
+ "once_cell",
"wasm-bindgen",
+ "web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.126"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -5052,31 +4643,65 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.126"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
- "bumpalo",
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
+ "wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.126"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
dependencies = [
"unicode-ident",
]
[[package]]
-name = "web-sys"
-version = "0.3.103"
+name = "wasm-encoder"
+version = "0.244.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141"
+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
+dependencies = [
+ "leb128fmt",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
+dependencies = [
+ "anyhow",
+ "indexmap",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
+dependencies = [
+ "bitflags",
+ "hashbrown 0.15.2",
+ "indexmap",
+ "semver",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -5094,9 +4719,9 @@ dependencies = [
[[package]]
name = "webpki-root-certs"
-version = "1.0.8"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267"
+checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c"
dependencies = [
"rustls-pki-types",
]
@@ -5155,38 +4780,18 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.62.2"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-implement",
- "windows-interface",
- "windows-link",
- "windows-result",
- "windows-strings",
+ "windows-targets 0.52.6",
]
[[package]]
-name = "windows-implement"
-version = "0.60.2"
+name = "windows-link"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "windows-interface"
-version = "0.59.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.118",
-]
+checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-link"
@@ -5200,7 +4805,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
"windows-result",
"windows-strings",
]
@@ -5211,7 +4816,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -5220,7 +4825,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -5232,13 +4837,22 @@ dependencies = [
"windows-targets 0.52.6",
]
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-sys"
version = "0.61.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
dependencies = [
- "windows-link",
+ "windows-link 0.2.1",
]
[[package]]
@@ -5364,13 +4978,22 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.7.15"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
+checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
dependencies = [
"memchr",
]
+[[package]]
+name = "wit-bindgen"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+dependencies = [
+ "wit-bindgen-rust-macro",
+]
+
[[package]]
name = "wit-bindgen"
version = "0.57.1"
@@ -5378,21 +5001,104 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
[[package]]
-name = "wnaf"
-version = "0.14.0"
+name = "wit-bindgen-core"
+version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1"
+checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
dependencies = [
- "ff",
- "group",
- "hybrid-array",
+ "anyhow",
+ "heck",
+ "wit-parser",
]
[[package]]
-name = "writeable"
-version = "0.6.3"
+name = "wit-bindgen-rt"
+version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
+checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "wit-bindgen-rust"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
+dependencies = [
+ "anyhow",
+ "heck",
+ "indexmap",
+ "prettyplease",
+ "syn",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
+]
+
+[[package]]
+name = "wit-bindgen-rust-macro"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
+dependencies = [
+ "anyhow",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
+]
+
+[[package]]
+name = "wit-component"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
+dependencies = [
+ "anyhow",
+ "bitflags",
+ "indexmap",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
+]
+
+[[package]]
+name = "write16"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
[[package]]
name = "yansi"
@@ -5405,10 +5111,11 @@ dependencies = [
[[package]]
name = "yoke"
-version = "0.8.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
+checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
dependencies = [
+ "serde",
"stable_deref_trait",
"yoke-derive",
"zerofrom",
@@ -5416,79 +5123,69 @@ dependencies = [
[[package]]
name = "yoke-derive"
-version = "0.8.2"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
+checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
"synstructure",
]
[[package]]
name = "zerocopy"
-version = "0.8.52"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
+ "byteorder",
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.52"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
name = "zerofrom"
-version = "0.1.8"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
+checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
-version = "0.1.7"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
+checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
"synstructure",
]
[[package]]
name = "zeroize"
-version = "1.9.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
-
-[[package]]
-name = "zerotrie"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
-dependencies = [
- "displaydoc",
- "yoke",
- "zerofrom",
-]
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
[[package]]
name = "zerovec"
-version = "0.11.6"
+version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
dependencies = [
"yoke",
"zerofrom",
@@ -5497,13 +5194,13 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.11.3"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.118",
+ "syn",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 82a871b..d72c1e8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,7 +16,7 @@ incremental = false
rocket = { version = "0.5.1", features = ["json"] }
serde = { version = "1.0.218", features = ["derive"] }
log = "0.4.26"
-quick-xml = { version = "0.41.0", features = ["serialize"] }
+quick-xml = { version = "0.40.0", features = ["serialize"] }
tokio = "1.43.0"
dotenvy = "0.15.7"
once_cell = "1.20.3"
@@ -25,7 +25,7 @@ chrono = { version = "0.4.39", features = ["serde"] }
argon2 = "0.5.3"
sha2 = "0.11.0"
bytemuck = { version = "1.21.0", features = ["derive"] }
-base64 = "0.23.0"
+base64 = "0.22.1"
hex = "0.4.3"
thiserror = "2.0.11"
bcrypt = "0.19.0"
@@ -36,7 +36,7 @@ md-5 = "0.11.0"
cbc = "0.1.2"
crc32fast = "1.4.2"
gxhash = "3.4.1"
-sentry = "0.49.0"
+sentry = "0.48.0"
rocket_cors = "0.6.0"
juniper = { version = "0.17.0", features = ["chrono"] }
@@ -47,12 +47,11 @@ lettre = "0.11.15"
rand = { version = "0.10.0", features = ["std"] }
reqwest = "0.13.0"
binrw = "0.15.1"
-ecdsa = { version = "0.17.0", features = ["pem", "std", "algorithm", "digest"] }
+ecdsa = { version = "0.16.9", features = ["pem", "std", "verifying"] }
sha256 = "1.6.0"
-p256 = "0.14.0"
-k256 = "0.14.0"
-dsa = "0.7.0"
+p256 = "0.13.2"
+k256 = "0.13.4"
+dsa = "0.6.3"
openssl = {version = "0.10.78", features = ["vendored"]}
time = "0.3.47"
hickory-resolver = { version = "0.24", features = ["tokio-runtime"] }
-nex-account = { version = "0.2.4", registry = "spbr" }
diff --git a/res/agreement/DEFAULT.xml b/res/agreement/DEFAULT.xml
index e6ba92a..25d2187 100644
--- a/res/agreement/DEFAULT.xml
+++ b/res/agreement/DEFAULT.xml
@@ -1 +1 @@
-USenEnglish2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300USenEspañol2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300
\ No newline at end of file
+USenEnglish2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300USenEspañol2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300
\ No newline at end of file
diff --git a/res/agreement/EVIL.xml b/res/agreement/EVIL.xml
new file mode 100644
index 0000000..e69de29
diff --git a/res/email/confirmationTemplate.html b/res/email/confirmationTemplate.html
index ecb52b3..63753f8 100644
--- a/res/email/confirmationTemplate.html
+++ b/res/email/confirmationTemplate.html
@@ -38,7 +38,7 @@
color: #B60000 !important;
}
img.logo {
- content: url("https://spfn.spbr.net/res/img/spfn.png") !important;
+ content: url("https://spfn.net/res/img/spfn.png") !important;
}
}
@media (prefers-color-scheme: dark) {
@@ -91,8 +91,8 @@
-
-
+
+
|
@@ -122,6 +122,19 @@
Your Splatfestival Network ID activation is almost complete.
+
+ | |
+
+
+
+
+
+
+
+
+
+ | |
+
|
Enter the following 6-digit code on your console:
diff --git a/res/email/masterKeyTemplate.html b/res/email/masterKeyTemplate.html
deleted file mode 100644
index 50f3f9c..0000000
--- a/res/email/masterKeyTemplate.html
+++ /dev/null
@@ -1,190 +0,0 @@
-
-
-
-
-
-
-
-
- Hello. You have requested a reset of parental controls on your console.
-
-
-
-
-
-
-
-
- | |
-
-
-
- | |
-
-
-
-
-
-
-
-
-
- |
-
-
- | |
-
-
-
-
-
- | |
-
-
-
- | |
-
-
- |
- Hello.
- |
-
-
- | |
-
-
- |
- Your email was linked to a Wii U console with serial number {{serial}} for parental controls.
- |
-
-
- | |
-
-
- |
- You have requested a master key to reset your parental controls PIN. The master key you must enter on your Wii U is:
- |
-
-
- | |
-
-
- |
- {{mkey}}
- |
-
-
- | |
-
-
- |
- Please make sure to change your PIN as soon as possible.
- |
-
-
- |
- The SPFN team
- |
-
-
- | |
-
-
- |
- |
-
-
- |
-
-
- | |
-
-
- |
- Note: this email message was auto-generated, please do not respond. For further assistance, please join our Discord server.
- |
-
-
- | |
-
-
- |
-
-
- |
- |
-
-
- |
-
-
- |
-
-
-
-
\ No newline at end of file
diff --git a/res/email/parentalControlsTemplate.html b/res/email/parentalControlsTemplate.html
deleted file mode 100644
index 92c1cdb..0000000
--- a/res/email/parentalControlsTemplate.html
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
-
-
-
-
-
- Hello. The console with the serial number {{serial}} has been linked to your email for parental controls.
-
-
-
-
-
-
-
-
- | |
-
-
-
- | |
-
-
-
-
-
-
-
-
-
- |
-
-
- | |
-
-
-
-
-
- | |
-
-
-
- | |
-
-
- |
- Hello.
- |
-
-
- | |
-
-
- |
- Your email was linked to a Wii U console with serial number {{serial}} for parental controls.
- |
-
-
- | |
-
-
- |
- If you did not authorize this, please contact our team at support@spbr.net.
- |
-
-
- | |
-
-
- |
- The SPFN team
- |
-
-
- | |
-
-
- |
- |
-
-
- |
-
-
- | |
-
-
- |
- Note: this email message was auto-generated, please do not respond. For further assistance, please join our Discord server.
- |
-
-
- | |
-
-
- |
-
-
- |
- |
-
-
- |
-
-
- |
-
-
-
-
\ No newline at end of file
diff --git a/res/email/resetTemplate.html b/res/email/resetTemplate.html
deleted file mode 100644
index 84b899a..0000000
--- a/res/email/resetTemplate.html
+++ /dev/null
@@ -1,190 +0,0 @@
-
-
-
-
-
-
-
-
- Hello {{username}}. Your Splatfestival Network ID password reset has been processed. You may use the temporary password below to log into your account.
-
-
-
-
-
-
-
-
- | |
-
-
-
- | |
-
-
-
-
-
-
-
-
-
- |
-
-
- | |
-
-
-
-
-
- | |
-
-
-
- | |
-
-
- |
- Hello {{username}}.
- |
-
-
- | |
-
-
- |
- Your Splatfestival Network ID password reset has been processed.
- |
-
-
- |
- You may use the following temporary password to login:
- |
-
-
- | |
-
-
- |
- {{password}}
- |
-
-
- | |
-
-
- |
- Please change your password as soon as you can on your Wii U. (Click your mii on the top-left of the Wii U Menu and scroll to "Change Password")
- |
-
-
- | |
-
-
- |
- The SPFN team
- |
-
-
- | |
-
-
- |
- |
-
-
- |
-
-
- | |
-
-
- |
- Note: this email message was auto-generated, please do not respond. For further assistance, please join our Discord server.
- |
-
-
- | |
-
-
- |
-
-
- |
- |
-
-
- |
-
-
- |
-
-
-
-
\ No newline at end of file
diff --git a/src/account/account.rs b/src/account/account.rs
index 5dd5fe0..fd58a1b 100644
--- a/src/account/account.rs
+++ b/src/account/account.rs
@@ -64,7 +64,6 @@ pub struct User {
pub updated: NaiveDateTime,
pub nex_password: String,
pub verification_code: Option,
- pub eula_version: i32,
}
#[derive(sqlx::FromRow)]
@@ -118,10 +117,7 @@ pub fn generate_password(pid: i32, cleartext_password: &str) -> Option {
bcrypt::hash(password, 10).ok()
}
-pub async fn read_basic_auth_token(
- connection: &Pool,
- token: &str,
-) -> Option<(User, Option<[u8; 32]>)> {
+pub async fn read_basic_auth_token(connection: &Pool, token: &str) -> Option {
let data = match BASE64_STANDARD.decode(&token) {
Ok(d) => d,
Err(e) => {
@@ -165,69 +161,13 @@ pub async fn read_basic_auth_token(
let password_valid = user.verify_cleartext_password(&login_password);
if password_valid == Some(true) {
- Some((user, None))
+ Some(user)
} else {
None
}
}
-pub async fn read_hashed_basic_auth_token(
- connection: &Pool,
- token: &str,
-) -> Option<(User, Option<[u8; 32]>)> {
- let data = match BASE64_STANDARD.decode(token) {
- Ok(d) => d,
- Err(e) => {
- println!("Failed to decode base64: {:?}", e);
- return None;
- }
- };
-
- let decoded_token = match String::from_utf8(data) {
- Ok(s) => s,
- Err(e) => {
- println!("Failed to convert decoded bytes to UTF-8 string: {:?}", e);
- return None;
- }
- };
-
- let (login_username, login_hash) = match decoded_token.split_once(' ') {
- Some(parts) => parts,
- None => {
- println!("Failed to split hashed basic token into username and hash");
- return None;
- }
- };
-
- let user_result = sqlx::query_as!(
- User,
- "SELECT * FROM users WHERE username = $1",
- login_username
- )
- .fetch_one(connection)
- .await;
-
- let user = match user_result {
- Ok(u) => u,
- Err(e) => {
- println!("Failed to fetch user from database: {:?}", e);
- return None;
- }
- };
-
- let password_valid = user.verify_hashed_password(login_hash);
-
- if password_valid == Some(true) {
- Some((user, None))
- } else {
- None
- }
-}
-
-pub async fn read_bearer_auth_token(
- connection: &Pool,
- token: &str,
-) -> Option<(User, Option<[u8; 32]>)> {
+pub async fn read_bearer_auth_token(connection: &Pool, token: &str) -> Option {
let data = TokenData::decode(token)?;
let token_info = sqlx::query!(
@@ -249,11 +189,11 @@ pub async fn read_bearer_auth_token(
.await
.ok()?;
- Some((user, token_info.cert_hash.and_then(|v| v.try_into().ok())))
+ Some(user)
}
pub fn generate_nex_password() -> String {
- let mut rng = rand::rng();
+ let mut rng = rand::rng();
let mut output = String::with_capacity(16);
while output.len() < 16 {
@@ -274,7 +214,6 @@ pub fn generate_nex_password() -> String {
pub struct Auth(
pub User,
- pub Option<[u8; 32]>,
);
impl AsRef
@@ -339,7 +278,6 @@ pub async fn link_certificate_to_pid(
Ok(())
}
-// todo: make this more consistent by requiring a cert to be asociated to the token if USE_CERT is set
#[async_trait]
impl<'r, const FORCE_BEARER_AUTH: bool, const USE_CERT: bool> FromRequest<'r>
for Auth
@@ -359,14 +297,13 @@ impl<'r, const FORCE_BEARER_AUTH: bool, const USE_CERT: bool> FromRequest<'r>
let (auth_type, token) = request_try!(auth.split_once(' ').ok_or(INVALID_TOKEN_ERRORS));
- let data = match auth_type {
+ let user = match auth_type {
"Basic" if !FORCE_BEARER_AUTH => read_basic_auth_token(pool, token).await,
- "HashedBasic" if !FORCE_BEARER_AUTH => read_hashed_basic_auth_token(pool, token).await,
"Bearer" => read_bearer_auth_token(pool, token).await,
_ => return Outcome::Error((Status::BadRequest, INVALID_TOKEN_ERRORS)),
};
- let Some((user, cert)) = data else {
+ let Some(user) = user else {
return Outcome::Error((Status::BadRequest, INVALID_TOKEN_ERRORS));
};
@@ -379,7 +316,7 @@ impl<'r, const FORCE_BEARER_AUTH: bool, const USE_CERT: bool> FromRequest<'r>
// ..user
// };
- Outcome::Success(Self(user, cert))
+ Outcome::Success(Self(user))
}
}
diff --git a/src/email.rs b/src/email.rs
index b0ebd9f..255fe49 100644
--- a/src/email.rs
+++ b/src/email.rs
@@ -36,104 +36,3 @@ pub async fn send_verification_email(to: &str, code: i32, username: &str) -> Res
Ok(())
}
-
-pub async fn send_reset_email(to: &str, pwd: &str, username: &str) -> Result<(), String> {
- let smtp_user = env::var("SMTP_USER").map_err(|_| "SMTP_USER not set".to_string())?;
- let smtp_pass = env::var("SMTP_PASS").map_err(|_| "SMTP_PASS not set".to_string())?;
- let smtp_server = env::var("SMTP_SERVER").map_err(|_| "SMTP_SERVER not set".to_string())?;
-
- // Load template
- let template = fs::read_to_string("res/email/resetTemplate.html")
- .map_err(|e| format!("Failed to read email template: {}", e))?;
-
- // Replace placeholders
- let body = template
- .replace("{{username}}", username)
- .replace("{{password}}", pwd);
-
- let email = Message::builder()
- .from(smtp_user.parse().unwrap())
- .to(to.parse().unwrap())
- .subject("Password Reset for SPFN")
- .header(lettre::message::header::ContentType::TEXT_HTML)
- .body(body)
- .map_err(|e| e.to_string())?;
-
- let creds = Credentials::new(smtp_user, smtp_pass);
-
- let mailer = SmtpTransport::relay(&smtp_server)
- .map_err(|e| e.to_string())?
- .credentials(creds)
- .build();
-
- mailer.send(&email).map_err(|e| e.to_string())?;
-
- Ok(())
-}
-
-pub async fn send_pc_email(to: &str, serial: &str) -> Result<(), String> {
- let smtp_user = env::var("SMTP_USER").map_err(|_| "SMTP_USER not set".to_string())?;
- let smtp_pass = env::var("SMTP_PASS").map_err(|_| "SMTP_PASS not set".to_string())?;
- let smtp_server = env::var("SMTP_SERVER").map_err(|_| "SMTP_SERVER not set".to_string())?;
-
- // Load template
- let template = fs::read_to_string("res/email/parentalControlsTemplate.html")
- .map_err(|e| format!("Failed to read email template: {}", e))?;
-
- // Replace placeholders
- let body = template
- .replace("{{serial}}", serial);
-
- let email = Message::builder()
- .from(smtp_user.parse().unwrap())
- .to(to.parse().unwrap())
- .subject("Parental controls confirmation for SPFN")
- .header(lettre::message::header::ContentType::TEXT_HTML)
- .body(body)
- .map_err(|e| e.to_string())?;
-
- let creds = Credentials::new(smtp_user, smtp_pass);
-
- let mailer = SmtpTransport::relay(&smtp_server)
- .map_err(|e| e.to_string())?
- .credentials(creds)
- .build();
-
- mailer.send(&email).map_err(|e| e.to_string())?;
-
- Ok(())
-}
-
-pub async fn send_reset_pin_email(to: &str, serial: &str, master_key: &str) -> Result<(), String> {
- let smtp_user = env::var("SMTP_USER").map_err(|_| "SMTP_USER not set".to_string())?;
- let smtp_pass = env::var("SMTP_PASS").map_err(|_| "SMTP_PASS not set".to_string())?;
- let smtp_server = env::var("SMTP_SERVER").map_err(|_| "SMTP_SERVER not set".to_string())?;
-
- // Load template
- let template = fs::read_to_string("res/email/masterKeyTemplate.html")
- .map_err(|e| format!("Failed to read email template: {}", e))?;
-
- // Replace placeholders
- let body = template
- .replace("{{serial}}", serial)
- .replace("{{mkey}}", master_key);
-
- let email = Message::builder()
- .from(smtp_user.parse().unwrap())
- .to(to.parse().unwrap())
- .subject("Parental controls PIN reset for SPFN")
- .header(lettre::message::header::ContentType::TEXT_HTML)
- .body(body)
- .map_err(|e| e.to_string())?;
-
- let creds = Credentials::new(smtp_user, smtp_pass);
-
- let mailer = SmtpTransport::relay(&smtp_server)
- .map_err(|e| e.to_string())?
- .credentials(creds)
- .build();
-
- mailer.send(&email).map_err(|e| e.to_string())?;
-
- Ok(())
-}
\ No newline at end of file
diff --git a/src/json_api/admin/bans.rs b/src/json_api/admin/bans.rs
index fa211c6..94ebef5 100644
--- a/src/json_api/admin/bans.rs
+++ b/src/json_api/admin/bans.rs
@@ -1,7 +1,11 @@
+use rocket::serde::json::Json;
use rocket::{post, FromForm, State};
use rocket::form::Form;
+use rocket::futures::TryFutureExt;
use rocket::http::Status;
use crate::account::account::Auth;
+use crate::json_api::oauth::generate_token::TokenRequest;
+use crate::nnid::people::{build_oauth_profile, GetOwnOAuthProfileData};
use crate::Pool;
#[derive(FromForm)]
@@ -17,7 +21,7 @@ pub async fn ban_user(pool: &State, auth: Auth, request: Form = Lazy::new(|| {
+ env::var("OAUTH_CLIENT_SECRET").expect("OAUTH_CLIENT_SECRET not set")
+});
#[derive(Serialize)]
pub struct OAuthTokenResponse {
@@ -28,14 +34,17 @@ pub struct TokenRequest<'r> {
}
pub fn verify_nintendo_password(pid: i32, text_password: &str, db_bcrypt_hash: &str) -> bool {
+ // maple: binder, there's already a function for this, why duplicate code?
+ // binder: dear maple, with this function i can just hand it a pid, the password from the user and the db_bcrypt_hash and it gives me a true/false value.
let mut sha = Sha256::new();
sha.update(bytes_of(&pid));
sha.update(&[0x02, 0x65, 0x43, 0x46]);
sha.update(text_password.as_bytes());
let hashed_password_hex = hex::encode(sha.finalize());
- bcrypt::verify(hashed_password_hex, db_bcrypt_hash).unwrap_or(false)
+ bcrypt::verify(hashed_password_hex, db_bcrypt_hash).unwrap_or_else(|_| false)
}
+// dummy error responses
#[derive(Serialize)]
pub struct OAuthErrorResponse {
pub error: String,
@@ -43,92 +52,53 @@ pub struct OAuthErrorResponse {
#[post("/api/v2/oauth2/generate_token", data = "")]
pub async fn generate_token(
- pool: &State,
- form_data: Form>,
+ pool: &State,
+ form_data: Form>
) -> Result, (Status, Json)> {
- println!("redirect URI is: {:?}", form_data.redirect_uri);
-
- let client_id = form_data.client_id.ok_or((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_client".to_string(),
- }),
- ))?;
-
- let client_row = match sqlx::query(
- "SELECT client_secret, is_confidential FROM oauth_clients WHERE client_id = $1",
- )
- .bind(client_id)
- .fetch_optional(pool.inner())
- .await
- {
- Ok(Some(row)) => row,
+
+ match form_data.client_id {
+ Some("account") | Some("splatnet") => {
+ let cl_secret: String = CLIENT_SECRET.clone();
+ if form_data.client_secret != Some(&cl_secret) {
+ return Err((
+ Status::Unauthorized,
+ Json(OAuthErrorResponse { error: "invalid_client".to_string() })
+ ));
+ }
+ }
+ Some("website") => {
+ // no secret for this client, cant be kept confidential in the case of the website
+ }
_ => {
return Err((
- Status::Unauthorized,
- Json(OAuthErrorResponse {
- error: "invalid_client".to_string(),
- }),
- ));
- }
- };
-
- let db_client_secret: Option = client_row.get("client_secret");
- let is_confidential: bool = client_row.get("is_confidential");
-
- if is_confidential {
- let provided_secret = form_data.client_secret.ok_or((
- Status::Unauthorized,
- Json(OAuthErrorResponse {
- error: "invalid_client".to_string(),
- }),
- ))?;
-
- let matches = match db_client_secret {
- Some(secret) => secret == provided_secret,
- None => false,
- };
-
- if !matches {
- return Err((
- Status::Unauthorized,
- Json(OAuthErrorResponse {
- error: "invalid_client".to_string(),
- }),
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "invalid_client".to_string() })
));
}
}
- // i'm only supporting the password grant for the id server.
+ // i'm only supporting the password grant incase someone feels lazy.
let pid: i32 = match form_data.grant_type {
"password" => {
let username = form_data.username.ok_or((
Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_request".to_string(),
- }),
+ Json(OAuthErrorResponse { error: "invalid_request".to_string() })
))?;
let password = form_data.password.ok_or((
Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_request".to_string(),
- }),
+ Json(OAuthErrorResponse { error: "invalid_request".to_string() })
))?;
let user_row = match sqlx::query("SELECT pid, password FROM users WHERE username = $1")
.bind(username)
.fetch_optional(pool.inner())
- .await
+ .await
{
Ok(Some(row)) => row,
- _ => {
- return Err((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_grant".to_string(),
- }),
- ));
- }
+ _ => return Err((
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "invalid_grant".to_string() })
+ )),
};
let db_pid: i32 = user_row.get("pid");
@@ -137,39 +107,31 @@ pub async fn generate_token(
if !verify_nintendo_password(db_pid, password, &db_bcrypt_hash) {
return Err((
Status::Unauthorized,
- Json(OAuthErrorResponse {
- error: "invalid_grant".to_string(),
- }),
+ Json(OAuthErrorResponse { error: "invalid_grant".to_string() })
));
}
db_pid
- }
+ },
"authorization_code" => {
let incoming_code = form_data.code.ok_or((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_request".to_string(),
- }),
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "invalid_request".to_string() })
))?;
-
+
let code_row = match sqlx::query(
- "SELECT pid, expires_at, used FROM oauth_auth_codes WHERE code = $1",
+ "SELECT pid, expires_at, used FROM oauth_auth_codes WHERE code = $1"
)
.bind(incoming_code)
.fetch_optional(pool.inner())
.await
{
Ok(Some(row)) => row,
- _ => {
- return Err((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_grant".to_string(),
- }),
- ));
- }
+ _ => return Err((
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "invalid_grant".to_string() })
+ )),
};
let is_used: bool = code_row.get("used");
@@ -178,10 +140,8 @@ pub async fn generate_token(
if is_used || expires_at < Utc::now().naive_utc() {
return Err((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "invalid_grant".to_string(),
- }),
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "invalid_grant".to_string() })
));
}
@@ -191,23 +151,19 @@ pub async fn generate_token(
.await;
target_pid
- }
+ },
- _ => {
- return Err((
- Status::BadRequest,
- Json(OAuthErrorResponse {
- error: "unsupported_grant_type".to_string(),
- }),
- ));
- }
+ _ => return Err((
+ Status::BadRequest,
+ Json(OAuthErrorResponse { error: "unsupported_grant_type".to_string() })
+ ))
};
- let token = create_token(pool.inner(), pid, AUTH_TOKEN, None, None).await;
+ let token = create_token(pool.inner(), pid, AUTH_TOKEN, None).await;
Ok(Json(OAuthTokenResponse {
access_token: token,
token_type: "Bearer".to_string(),
expires_in: 3600,
}))
-}
\ No newline at end of file
+}
diff --git a/src/json_api/users/console.rs b/src/json_api/users/console.rs
deleted file mode 100644
index 7ab32c3..0000000
--- a/src/json_api/users/console.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-use rocket::serde::json::Json;
-use rocket::{get, State};
-use rocket::http::Status;
-use crate::account::account::Auth;
-use serde::Serialize;
-use crate::Pool;
-
-#[derive(Serialize)]
-pub struct ConsoleData {
- pub serial: String,
- pub cert_hash: String,
-}
-
-#[get("/api/v2/users/@me/console")]
-pub async fn get_own_console(pool: &State, auth: Auth) -> Result, (Status, &'static str)> {
- let hash = auth.1.ok_or((Status::BadRequest, "token needs cert hash"))?;
-
- let row = sqlx::query!(
- "select serial from certificates where hash = $1",
- &hash[..]
- )
- .fetch_one(pool.inner())
- .await
- .map_err(|e| {
- log::error!("failed to execute query: {:?}", e);
- (Status::InternalServerError, "error in database query")
- })?;
-
- let hex_hash = hex::encode(hash);
- let serial = row.serial.ok_or((Status::BadRequest, "we had no serial"))?;
-
- Ok(
- Json (
- ConsoleData {
- serial,
- cert_hash: hex_hash
- }
- )
- )
-}
\ No newline at end of file
diff --git a/src/json_api/users/mod.rs b/src/json_api/users/mod.rs
index a71fca3..b284f7e 100644
--- a/src/json_api/users/mod.rs
+++ b/src/json_api/users/mod.rs
@@ -1,4 +1,3 @@
pub mod profile;
pub mod mii;
-pub mod delete;
-pub mod console;
\ No newline at end of file
+pub mod delete;
\ No newline at end of file
diff --git a/src/main.rs b/src/main.rs
index 622d3ed..35a48df 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -101,21 +101,11 @@ async fn launch() -> _ {
nnid::support::validate,
nnid::support::verify_email,
nnid::support::resend_email,
- nnid::support::forgotten_password,
- nnid::support::send_parental_controls_pin,
- nnid::support::send_forgotten_pin,
nnid::people::create_account,
nnid::people::get_own_profile,
nnid::people::get_device_owner,
nnid::people::get_own_device,
nnid::people::change_mii,
- nnid::people::update_account,
- nnid::people::delete_account,
- nnid::people::get_user_devices,
- nnid::people::get_device_status,
- nnid::people::inactivate_current_device,
- nnid::people::get_own_emails,
- nnid::people::update_primary_email,
nnid::miis::get_miis,
nnid::oauth::generate_token::generate_token,
nnid::provider::get_nex_token,
@@ -129,7 +119,6 @@ async fn launch() -> _ {
json_api::oauth::authorize::authorize_page,
json_api::oauth::authorize::authorize_submit,
json_api::admin::bans::ban_user,
- json_api::users::console::get_own_console,
nnid::people::thing,
// graphql::graphiql,
// graphql::playground,
diff --git a/src/nnid/agreements.rs b/src/nnid/agreements.rs
index 4fa2d59..cc97c70 100644
--- a/src/nnid/agreements.rs
+++ b/src/nnid/agreements.rs
@@ -1,64 +1,37 @@
-use std::{env, io, fs};
-use serde::Deserialize;
+use std::{env, io};
+use std::collections::HashSet;
use once_cell::sync::Lazy;
use rocket::fs::NamedFile;
-use rocket::get;
+use rocket::{get, Request};
+use rocket::http::Status;
+use rocket::request::{FromRequest, Outcome};
use rocket::response::content::RawXml;
use tokio::fs::try_exists;
+use tokio::sync::RwLock;
+use rocket::async_trait;
use crate::dsresponse::Ds;
-// pub static EVIL_AGREEMENT_THING: Lazy>> = Lazy::new(|| Default::default());
+pub static EVIL_AGREEMENT_THING: Lazy>> = Lazy::new(|| Default::default());
-// pub struct CFIP(pub String);
+pub struct CFIP(pub String);
-// #[async_trait]
-// impl<'r> FromRequest<'r> for CFIP{
-// type Error = ();
+#[async_trait]
+impl<'r> FromRequest<'r> for CFIP{
+ type Error = ();
-// async fn from_request(request: &'r Request<'_>) -> Outcome {
-// match request.headers().get("CF-Connecting-IP").next(){
-// Some(v) => Outcome::Success(Self(v.to_owned())),
-// None => Outcome::Error((Status::ImATeapot, ()))
-// }
-// }
-// }
-
-#[derive(Debug, Deserialize)]
-struct Agreement {
- version: String,
+ async fn from_request(request: &'r Request<'_>) -> Outcome {
+ match request.headers().get("CF-Connecting-IP").next(){
+ Some(v) => Outcome::Success(Self(v.to_owned())),
+ None => Outcome::Error((Status::ImATeapot, ()))
+ }
+ }
}
-#[derive(Debug, Deserialize)]
-struct Agreements {
- #[serde(rename = "agreement")]
- agreements: Vec,
-}
-
-pub fn get_latest_eula_version() -> Result> {
- let mut path = std::env::current_dir()?;
- path.push("res");
- path.push("agreement");
- path.push("DEFAULT.xml");
-
- let content = fs::read_to_string(path)?;
- let parsed: Agreements = quick_xml::de::from_str(&content)?;
-
- parsed
- .agreements
- .first()
- .map(|a| a.version.clone())
- .ok_or_else(|| "No agreement found in XML".into())
-}
-
-pub static LATEST_EULA_VERSION: Lazy = Lazy::new(|| {
- get_latest_eula_version()
- .ok()
- .and_then(|v| v.parse::().ok())
- .unwrap_or(300)
-});
#[get("/v1/api/content/agreements/Nintendo-Network-EULA//@latest")]
-pub async fn get_agreement(lang: &str) -> io::Result>>{
+pub async fn get_agreement(lang: &str, ip: CFIP) -> io::Result>>{
+
+
let base_path = {
// if this crashes then something is wrong with the server setup so crashing here is fine imo
let mut path = env::current_dir().unwrap();
@@ -69,26 +42,38 @@ pub async fn get_agreement(lang: &str) -> io::Result>>{
path
};
- let requested_file_path = {
- let mut path = base_path.clone();
-
- path.push(format!("{}.xml", lang));
-
- path
- };
-
-
- if try_exists(&requested_file_path).await.is_ok_and(|v| v == true) {
- Ok(Ds(RawXml(NamedFile::open(&requested_file_path).await?)))
- } else {
- let fallback_path = {
+ if EVIL_AGREEMENT_THING.read().await.contains(&ip.0) {
+ let path = {
let mut path = base_path;
- path.push("DEFAULT.xml");
+ path.push("EVIL.xml");
path
};
- Ok(Ds(RawXml(NamedFile::open(&fallback_path).await?)))
+ Ok(Ds(RawXml(NamedFile::open(&path).await?)))
+ } else {
+ let requested_file_path = {
+ let mut path = base_path.clone();
+
+ path.push(format!("{}.xml", lang));
+
+ path
+ };
+
+
+ if try_exists(&requested_file_path).await.is_ok_and(|v| v == true) {
+ Ok(Ds(RawXml(NamedFile::open(&requested_file_path).await?)))
+ } else {
+ let fallback_path = {
+ let mut path = base_path;
+
+ path.push("DEFAULT.xml");
+
+ path
+ };
+
+ Ok(Ds(RawXml(NamedFile::open(&fallback_path).await?)))
+ }
}
}
\ No newline at end of file
diff --git a/src/nnid/oauth/generate_token.rs b/src/nnid/oauth/generate_token.rs
index d556928..a239ab3 100644
--- a/src/nnid/oauth/generate_token.rs
+++ b/src/nnid/oauth/generate_token.rs
@@ -1,50 +1,50 @@
#![allow(unused)]
-use crate::Pool;
+use rocket::{post, FromForm, State};
+use rocket::form::Form;
+use serde::{Serialize};
use crate::account::account::{Auth, DeviceCert, User, link_certificate_to_pid};
use crate::error::{Error, Errors};
-use crate::nnid::oauth::TokenData;
+use crate::nnid::agreements::{CFIP, EVIL_AGREEMENT_THING};
use crate::nnid::oauth::generate_token::token_type::{AUTH_REFRESH_TOKEN, AUTH_TOKEN};
-use crate::nnid::agreements::LATEST_EULA_VERSION;
+use crate::nnid::oauth::TokenData;
+use crate::Pool;
use crate::xml::Xml;
-use rocket::form::Form;
-use rocket::{FromForm, State, post};
-use serde::Serialize;
-pub mod token_type {
+pub mod token_type{
pub const AUTH_REFRESH_TOKEN: i32 = 1;
pub const AUTH_TOKEN: i32 = 0;
pub const NEX_TOKEN: i32 = 2;
}
-const ACCOUNT_ID_OR_PASSWORD_ERRORS: Errors = Errors {
- error: &[Error {
- code: "0106",
- message: "Invalid account ID or password",
- }],
+const ACCOUNT_ID_OR_PASSWORD_ERRORS: Errors = Errors{
+ error: &[
+ Error{
+ code: "0106",
+ message: "Invalid account ID or password"
+ }
+ ]
};
-const ACCOUNT_BANNED_ERRORS: Errors = Errors {
- error: &[Error {
- code: "0108",
- message: "Account banned from server",
- }],
+const ACCOUNT_BANNED_ERRORS: Errors = Errors{
+ error: &[
+ Error{
+ code: "0108",
+ message: "Account banned from server"
+ }
+ ]
};
-const ACCOUNT_TEMPBANNED_ERRORS: Errors = Errors {
- error: &[Error {
- code: "0132",
- message: "Account temporarily banned from server",
- }],
-};
-const REREAD_EULA_ERRORS: Errors = Errors {
- error: &[Error {
- code: "0109",
- message: "The EULA has been updated",
- }],
+const REREAD_EULA_EXTRABANNED_ERRORS: Errors = Errors{
+ error: &[
+ Error{
+ code: "0109",
+ message: "REREAD THE EULA LOL"
+ }
+ ]
};
#[derive(FromForm)]
-pub struct TokenRequestData<'a> {
+pub struct TokenRequestData<'a>{
grant_type: &'a str,
user_id: &'a str,
password: &'a str,
@@ -55,27 +55,17 @@ pub struct TokenRequestData<'a> {
pub struct TokenReturnData {
token: String,
refresh_token: String,
- expires_in: i32,
+ expires_in: i32
}
-pub async fn create_token(
- pool: &Pool,
- pid: i32,
- token_type: i32,
- title_id: Option<&str>,
- cert_hash: Option<&[u8]>,
-) -> String {
+pub async fn create_token(pool: &Pool, pid: i32, token_type: i32, title_id: Option<&str>) -> String{
let data = sqlx::query!(
- "insert into tokens (token_type, pid, title_id, cert_hash)
- values ($1, $2, $3, $4) returning token_id, random",
- token_type,
- pid,
- title_id,
- cert_hash
- )
- .fetch_one(pool)
- .await
- .unwrap();
+ "insert into tokens (token_type, pid, title_id)
+ values ($1, $2, $3) returning token_id, random",
+ token_type, pid, title_id
+ )
+ .fetch_one(pool)
+ .await.unwrap();
let token_id = data.token_id;
let random = data.random;
@@ -83,77 +73,61 @@ pub async fn create_token(
let token = TokenData {
token_id,
random,
- pid,
+ pid
};
token.encode().to_string()
}
+
impl TokenReturnData {
- async fn new(pid: i32, pool: &Pool) -> Self {
- let token = create_token(pool, pid, AUTH_TOKEN, None, None).await;
+ async fn new(pid: i32, pool: &Pool) -> Self{
+ let token = create_token(pool, pid, AUTH_TOKEN, None).await;
- let refresh_token = create_token(pool, pid, AUTH_REFRESH_TOKEN, None, None).await;
+ let refresh_token = create_token(pool, pid, AUTH_REFRESH_TOKEN, None).await;
- Self {
+ Self{
token,
refresh_token,
- expires_in: 3600,
- }
- }
- async fn new_with_cert(pid: i32, cert: Option<&[u8]>, pool: &Pool) -> Self {
- let token = create_token(pool, pid, AUTH_TOKEN, None, cert).await;
-
- let refresh_token = create_token(pool, pid, AUTH_REFRESH_TOKEN, None, cert).await;
-
- Self {
- token,
- refresh_token,
- expires_in: 3600,
+ expires_in: 3600
}
}
}
#[derive(Serialize)]
-#[serde(rename = "OAuth20")]
-pub struct TokenRequestReturnData {
- access_token: TokenReturnData,
+#[serde(rename="OAuth20")]
+pub struct TokenRequestReturnData{
+ access_token: TokenReturnData
}
-#[post("/v1/api/oauth20/access_token/generate", data = "")]
-pub async fn generate_token(
- pool: &State,
- data: Form>,
- cert: DeviceCert,
-) -> Result, Option>> {
+#[post("/v1/api/oauth20/access_token/generate", data="")]
+pub async fn generate_token(pool: &State, data: Form>, ip: CFIP, cert: DeviceCert) -> Result, Option>>{
let pool = pool.inner();
- let user = User::get_by_username(data.user_id, pool)
- .await
+ let user = User::get_by_username(data.user_id, pool).await
.ok_or(Some(ACCOUNT_ID_OR_PASSWORD_ERRORS))?;
- if !user
- .verify_hashed_password(&data.password)
- .is_some_and(|v| v)
- {
+ if !user.verify_hashed_password(&data.password).is_some_and(|v| v){
return Err(Some(ACCOUNT_ID_OR_PASSWORD_ERRORS));
}
- if user.eula_version != *LATEST_EULA_VERSION {
- return Err(Some(REREAD_EULA_ERRORS));
- }
-
- if user.account_level < 0 {
+ if user.account_level < 0{
if user.account_level == -2 {
- return Err(Some(ACCOUNT_TEMPBANNED_ERRORS));
+ return Err(Some(REREAD_EULA_EXTRABANNED_ERRORS));
+ }
+ if user.account_level == -3{
+ EVIL_AGREEMENT_THING.write().await.insert(ip.0);
+
+ return Err(Some(REREAD_EULA_EXTRABANNED_ERRORS));
}
return Err(Some(ACCOUNT_BANNED_ERRORS));
}
-
+
link_certificate_to_pid(&pool, &cert.0, user.pid).await?;
- let access_token =
- TokenReturnData::new_with_cert(user.pid, Some(&cert.0.hash()[..]), pool).await;
+ let access_token = TokenReturnData::new(user.pid, pool).await;
- Ok(Xml(TokenRequestReturnData { access_token }))
-}
+ Ok(Xml(TokenRequestReturnData{
+ access_token
+ }))
+}
\ No newline at end of file
diff --git a/src/nnid/people.rs b/src/nnid/people.rs
index c81b4b2..3c46925 100644
--- a/src/nnid/people.rs
+++ b/src/nnid/people.rs
@@ -1,31 +1,31 @@
#![allow(unused)]
-use crate::Pool;
-use crate::account::account::{Auth, User, generate_nex_password, generate_password};
-use crate::dsresponse::Ds;
-use crate::email::send_verification_email;
-use crate::error::{Error, Errors};
-use crate::mii_util::get_mii_img_url;
-use crate::nnid::timezones::OFFSET_FROM_TIMEZONE;
-use crate::xml::{Xml, YesNoVal};
use chrono::{NaiveDate, NaiveDateTime};
use gxhash::{gxhash32, gxhash64};
-use nex_account::grpc::{ActStageInfo, ActStageReturn};
-use nex_account::grpc_client;
-use rand::prelude::*;
+use rocket::{get, post, put, State};
use rocket::serde::{Deserialize, Serialize};
-use rocket::request::{FromRequest, Outcome, Request};
-use rocket::{State, get, post, put};
+use crate::account::account::{Auth, User, generate_nex_password, generate_password};
+use crate::dsresponse::Ds;
+use crate::error::{Error, Errors};
+use crate::nnid::pid_distribution::next_pid;
+use crate::nnid::timezones::{OFFSET_FROM_TIMEZONE};
+use crate::Pool;
+use crate::xml::{Xml, YesNoVal};
+use crate::email::send_verification_email;
+use rand::prelude::*;
+use crate::mii_util::get_mii_img_url;
-const DATABASE_ERROR: Errors = Errors {
- error: &[Error {
- code: "2001",
- message: "Internal server error",
- }],
+const DATABASE_ERROR: Errors = Errors{
+ error: &[
+ Error{
+ code: "9999",
+ message: "Internal server error"
+ }
+ ]
};
#[derive(Deserialize)]
-pub struct Email {
- address: Box,
+pub struct Email{
+ address: Box
}
#[derive(Deserialize)]
@@ -36,7 +36,7 @@ pub struct UpdateMiiData {
}
#[derive(Deserialize, Serialize)]
-pub struct Mii {
+pub struct Mii{
name: Box,
primary: YesNoVal,
data: Box,
@@ -44,7 +44,7 @@ pub struct Mii {
#[derive(Deserialize)]
#[serde(rename(serialize = "person"))]
-pub struct AccountCreationData {
+pub struct AccountCreationData{
birth_date: NaiveDate,
user_id: Box,
password: Box,
@@ -56,99 +56,24 @@ pub struct AccountCreationData {
gender: Box,
marketing_flag: YesNoVal,
off_device_flag: YesNoVal,
- region: i32,
+ region: i32
}
#[derive(Serialize)]
#[serde(rename(serialize = "person"))]
-pub struct AccountCreationResponseData {
- pid: i32,
+pub struct AccountCreationResponseData{
+ pid: i32
}
-#[derive(Serialize)]
-#[serde(rename = "device")]
-pub struct DeviceInfo {
- pub device_id: String,
- pub language: String,
- pub updated: NaiveDateTime,
- pub pid: i32,
- pub platform_id: String,
- pub region: String,
- pub serial_number: String,
- pub status: String,
- pub system_version: String,
- pub r#type: String,
- pub updated_by: String,
-}
-
-#[derive(Serialize)]
-pub struct DevicesWrapper {
- #[serde(rename = "device")]
- pub devices: Vec,
-}
-
-#[derive(Serialize)]
-pub struct EmptyDeviceResponse {
- pub device: String,
-}
-
-#[derive(Deserialize)]
-#[serde(rename = "person")]
-pub struct UpdateAccountData {
- pub gender: Option>,
- pub region: Option,
- pub country: Option>,
- pub language: Option>,
- pub tz_name: Option>,
- pub marketing_flag: Option,
- pub off_device_flag: Option,
- pub password: Option>,
-}
-
-#[derive(Serialize)]
-pub struct EmailWrapper {
- pub email: EmailInfoOwnProfileData,
-}
-
-#[derive(Serialize)]
-pub struct EmailsWrapper {
- #[serde(rename = "email")]
- pub emails: Vec,
-}
-
-#[derive(Deserialize)]
-pub struct UpdateEmailData {
- pub address: Box,
-}
-
-#[derive(Deserialize)]
-pub struct UpdateEmailRequest {
- pub email: UpdateEmailData,
-}
-
-#[post("/v1/api/people", data = "")]
-pub async fn create_account(
- database: &State,
- data: Xml,
-) -> Result, Option>> {
+#[post("/v1/api/people", data="")]
+pub async fn create_account(database: &State, data: Xml) -> Result, Option>>{
let database = database.inner();
- let nex_password = generate_nex_password();
-
- let mut client = grpc_client().await.expect("unable to connect to grpc");
-
- let Ok(ret) = client
- .stage_new_account(ActStageInfo {
- password: nex_password.clone().into_bytes(),
- })
- .await
- else {
- return Err(Some(DATABASE_ERROR));
- };
- let ActStageReturn { pid, .. } = ret.into_inner();
// its fine to crash here if we cant get the next pid as that is in my opinion a dead state
// anyways as noone can register anymore, EVER
+ let pid = next_pid(database).await;
+
let verification_code: i32 = rand::rng().random_range(100_000..1_000_000);
let AccountCreationData {
@@ -157,8 +82,14 @@ pub async fn create_account(
birth_date,
tz_name,
language,
- email: Email { address },
- mii: Mii { name, data, .. },
+ email: Email{
+ address
+ },
+ mii: Mii{
+ name,
+ data,
+ ..
+ },
marketing_flag,
gender,
region,
@@ -167,16 +98,17 @@ pub async fn create_account(
..
} = data.0;
- let account_level = if user_id.to_lowercase().contains("omey") {
+ let account_level = if user_id.to_lowercase().contains("omey"){
-1
} else {
0
};
- let password = generate_password(pid, &password).ok_or(None)?;
- sqlx::query!(
- "
+ let password = generate_password(pid, &password).ok_or(None)?;
+ let nex_password = generate_nex_password();
+
+ sqlx::query!("
INSERT INTO users (
pid,
username,
@@ -214,20 +146,19 @@ pub async fn create_account(
verification_code,
account_level,
nex_password
- )
- .execute(database)
- .await
- .unwrap();
+ ).execute(database).await.unwrap();
//generate_s3_images(pid, &data).await;
- if let Err(e) =
- send_verification_email(address.as_ref(), verification_code, user_id.as_ref()).await
- {
+ if let Err(e) = send_verification_email(address.as_ref(), verification_code, user_id.as_ref()).await {
println!("Failed to send verification email: {e}");
}
- Ok(Xml(AccountCreationResponseData { pid }))
+ Ok(
+ Xml(AccountCreationResponseData{
+ pid
+ })
+ )
}
// #[derive(Serialize)]
@@ -236,21 +167,21 @@ pub async fn create_account(
// }
#[derive(Serialize)]
-pub struct EmailInfoOwnProfileData {
- pub address: String,
- pub id: u32,
- pub parent: YesNoVal,
- pub primary: YesNoVal,
- pub reachable: YesNoVal,
+struct EmailInfoOwnProfileData{
+ address: String,
+ id: u32,
+ parent: YesNoVal,
+ primary: YesNoVal,
+ reachable: YesNoVal,
#[serde(rename = "type")]
- pub email_type: String,
- pub updated_by: String,
- pub validated: YesNoVal,
- pub validated_date: Option,
+ email_type: String,
+ updated_by: String,
+ validated: YesNoVal,
+ validated_date: Option
}
#[derive(Serialize)]
-struct EmailInfoOwnOAuthProfileData {
+struct EmailInfoOwnOAuthProfileData{
address: String,
id: u32,
parent: bool,
@@ -260,37 +191,40 @@ struct EmailInfoOwnOAuthProfileData {
email_type: String,
updated_by: String,
validated: bool,
- validated_date: Option,
+ validated_date: Option
}
#[derive(Serialize)]
-struct MiiImage {
+struct MiiImage{
cached_url: String,
id: u32,
url: String,
#[serde(rename = "type")]
- image_type: String,
+ image_type: String
+}
+
+
+#[derive(Serialize)]
+struct MiiImages{
+ mii_image: MiiImage
}
#[derive(Serialize)]
-struct MiiImages {
- mii_image: MiiImage,
-}
-
-#[derive(Serialize)]
-struct MiiDataOwnProfileData {
+struct MiiDataOwnProfileData{
status: String,
data: String,
id: u32,
mii_hash: String,
mii_images: MiiImages,
name: String,
- primary: YesNoVal,
+ primary: YesNoVal
}
+
+
#[derive(Serialize)]
#[serde(rename(serialize = "person"))]
-pub struct GetOwnProfileData {
+pub struct GetOwnProfileData{
active_flag: YesNoVal,
birth_date: NaiveDate,
country: String,
@@ -312,7 +246,7 @@ pub struct GetOwnProfileData {
#[derive(Serialize)]
#[serde(rename(serialize = "person"))]
-pub struct GetOwnOAuthProfileData {
+pub struct GetOwnOAuthProfileData{
active_flag: bool,
birth_date: NaiveDate,
country: String,
@@ -336,17 +270,17 @@ pub struct GetOwnOAuthProfileData {
}
#[get("/v1/api/people/@me/profile")]
-pub fn get_own_profile(user: Auth) -> Ds> {
+pub fn get_own_profile(user: Auth) -> Ds>{
Ds(Xml(build_profile(user.into())))
}
#[get("/v1/api/people/@me/devices/owner")]
-pub fn get_device_owner(user: Auth) -> Ds> {
+pub fn get_device_owner(user: Auth) -> Ds>{
Ds(Xml(build_profile(user.into())))
}
#[post("/v1/api/people/@me/devices")]
-pub fn get_own_device(user: Auth) -> Ds> {
+pub fn get_own_device(user: Auth) -> Ds>{
Ds(Xml(build_profile(user.into())))
}
@@ -380,58 +314,59 @@ pub fn build_profile(user: User) -> GetOwnProfileData {
.replace("\r", "")
.replace(" ", "");
- GetOwnProfileData {
- active_flag: YesNoVal(true),
- pid,
- user_id: username,
- gender,
- birth_date: birthdate,
- country,
- create_date: creation_date,
- tz_name: timezone,
- language,
- updated,
- marketing_flag: YesNoVal(marketing_allowed),
- email: EmailInfoOwnProfileData {
- id: gxhash32(email.as_bytes(), 0),
- address: email,
- validated: YesNoVal(email_verified_since.is_some()),
- validated_date: email_verified_since,
- email_type: "DEFAULT".to_string(),
- updated_by: "USER".to_string(),
- reachable: YesNoVal(true),
- primary: YesNoVal(true),
- parent: YesNoVal(false),
- },
- mii: MiiDataOwnProfileData {
- id: gxhash32(mii_data.as_bytes(), 0),
- mii_hash: hex::encode(bytemuck::bytes_of(
- &(gxhash64(mii_data.as_bytes(), 1) & !(0x1000000000000000)),
- )),
- name: crate::mii_util::MiiData::read(&mii_data)
+
+ GetOwnProfileData {
+ active_flag: YesNoVal(true),
+ pid,
+ user_id: username,
+ gender,
+ birth_date: birthdate,
+ country,
+ create_date: creation_date,
+ tz_name: timezone,
+ language,
+ updated,
+ marketing_flag: YesNoVal(marketing_allowed),
+ email: EmailInfoOwnProfileData {
+ id: gxhash32(email.as_bytes(), 0),
+ address: email,
+ validated: YesNoVal(email_verified_since.is_some()),
+ validated_date: email_verified_since,
+ email_type: "DEFAULT".to_string(),
+ updated_by: "USER".to_string(),
+ reachable: YesNoVal(true),
+ primary: YesNoVal(true),
+ parent: YesNoVal(false),
+ },
+ mii: MiiDataOwnProfileData {
+ id: gxhash32(mii_data.as_bytes(), 0),
+ mii_hash: hex::encode(bytemuck::bytes_of(
+ &(gxhash64(mii_data.as_bytes(), 1) & !(0x1000000000000000))
+ )),
+ name: crate::mii_util::MiiData::read(&mii_data)
.map(|v| v.name)
.unwrap_or_else(|| "INVALID".to_string()),
- primary: YesNoVal(true),
- data: mii_data,
- status: "COMPLETED".to_string(),
- mii_images: MiiImages {
- mii_image: {
- let image_url = get_mii_img_url(pid, "tga");
- let url_hash = gxhash32(image_url.as_bytes(), 0);
- MiiImage {
- image_type: "standard".to_string(),
- id: url_hash,
- url: image_url.clone(),
- cached_url: image_url,
+ primary: YesNoVal(true),
+ data: mii_data,
+ status: "COMPLETED".to_string(),
+ mii_images: MiiImages {
+ mii_image: {
+ let image_url = get_mii_img_url(pid, "tga");
+ let url_hash = gxhash32(image_url.as_bytes(), 0);
+ MiiImage {
+ image_type: "standard".to_string(),
+ id: url_hash,
+ url: image_url.clone(),
+ cached_url: image_url,
+ }
}
- },
+ }
},
- },
- off_device_flag: YesNoVal(off_device_allowed),
- region,
- utc_offset: timezone_offset,
- account_level,
- }
+ off_device_flag: YesNoVal(off_device_allowed),
+ region,
+ utc_offset: timezone_offset,
+ account_level,
+ }
}
pub fn build_oauth_profile(user: User) -> GetOwnOAuthProfileData {
@@ -469,61 +404,62 @@ pub fn build_oauth_profile(user: User) -> GetOwnOAuthProfileData {
.replace("\r", "")
.replace(" ", "");
- GetOwnOAuthProfileData {
- id,
- sub,
- uid,
- active_flag: true,
- pid,
- user_id: username,
- gender,
- birth_date: birthdate,
- country,
- create_date: creation_date,
- tz_name: timezone,
- language,
- updated,
- marketing_flag: marketing_allowed,
- email: EmailInfoOwnOAuthProfileData {
- id: gxhash32(email.as_bytes(), 0),
- address: email,
- validated: email_verified_since.is_some(),
- validated_date: email_verified_since,
- email_type: "DEFAULT".to_string(),
- updated_by: "USER".to_string(),
- reachable: true,
- primary: true,
- parent: false,
- },
- mii: MiiDataOwnProfileData {
- id: gxhash32(mii_data.as_bytes(), 0),
- mii_hash: hex::encode(bytemuck::bytes_of(
- &(gxhash64(mii_data.as_bytes(), 1) & !(0x1000000000000000)),
- )),
- name: crate::mii_util::MiiData::read(&mii_data)
+
+ GetOwnOAuthProfileData {
+ id,
+ sub,
+ uid,
+ active_flag: true,
+ pid,
+ user_id: username,
+ gender,
+ birth_date: birthdate,
+ country,
+ create_date: creation_date,
+ tz_name: timezone,
+ language,
+ updated,
+ marketing_flag: marketing_allowed,
+ email: EmailInfoOwnOAuthProfileData {
+ id: gxhash32(email.as_bytes(), 0),
+ address: email,
+ validated: email_verified_since.is_some(),
+ validated_date: email_verified_since,
+ email_type: "DEFAULT".to_string(),
+ updated_by: "USER".to_string(),
+ reachable: true,
+ primary: true,
+ parent: false,
+ },
+ mii: MiiDataOwnProfileData {
+ id: gxhash32(mii_data.as_bytes(), 0),
+ mii_hash: hex::encode(bytemuck::bytes_of(
+ &(gxhash64(mii_data.as_bytes(), 1) & !(0x1000000000000000))
+ )),
+ name: crate::mii_util::MiiData::read(&mii_data)
.map(|v| v.name)
.unwrap_or_else(|| "INVALID".to_string()),
- primary: YesNoVal(true),
- data: mii_data,
- status: "COMPLETED".to_string(),
- mii_images: MiiImages {
- mii_image: {
- let image_url = get_mii_img_url(pid, "png");
- let url_hash = gxhash32(image_url.as_bytes(), 0);
- MiiImage {
- image_type: "standard".to_string(),
- id: url_hash,
- url: image_url.clone(),
- cached_url: image_url,
+ primary: YesNoVal(true),
+ data: mii_data,
+ status: "COMPLETED".to_string(),
+ mii_images: MiiImages {
+ mii_image: {
+ let image_url = get_mii_img_url(pid, "png");
+ let url_hash = gxhash32(image_url.as_bytes(), 0);
+ MiiImage {
+ image_type: "standard".to_string(),
+ id: url_hash,
+ url: image_url.clone(),
+ cached_url: image_url,
+ }
}
- },
+ }
},
- },
- off_device_flag: off_device_allowed,
- region,
- utc_offset: timezone_offset,
- account_level,
- }
+ off_device_flag: off_device_allowed,
+ region,
+ utc_offset: timezone_offset,
+ account_level,
+ }
}
#[put("/v1/api/people/@me/miis/@primary", data = "")]
@@ -543,8 +479,8 @@ pub async fn change_mii(
mii_data,
pid
)
- .execute(db)
- .await;
+ .execute(db)
+ .await;
if let Err(e) = result {
println!("Failed to update Mii data for PID {}: {:?}", pid, e);
@@ -556,245 +492,8 @@ pub async fn change_mii(
Ok(())
}
-#[derive(Deserialize, Debug)]
-pub struct AgreedEulaData {
- pub agreement_date: NaiveDateTime,
- pub country: Box,
- pub location: Box,
- pub version: i32
+
+#[post("/v1/api/people/@me/agreements")]
+pub async fn thing(){
+
}
-
-#[post("/v1/api/people/@me/agreements", data = "")]
-pub async fn thing(
- database: &State,
- auth: Auth,
- data: Xml,
-) -> Result<(), Option>> {
- let db = database.inner();
- let version = data.version;
- let pid = auth.pid;
- println!("eula data: {:?}", data.version);
-
- let result = sqlx::query!(
- "UPDATE users SET eula_version = $1 WHERE pid = $2",
- version,
- pid
- )
- .execute(db)
- .await;
-
- if let Err(e) = result {
- println!("Failed to update EULA version for PID {}: {:?}", pid, e);
- return Err(Some(DATABASE_ERROR));
- }
-
- Ok(())
-}
-
-pub struct DeviceHeaders {
- pub device_id: String,
- pub accept_language: String,
- pub platform_id: String,
- pub region: String,
- pub serial_number: String,
- pub system_version: String,
-}
-
-#[rocket::async_trait]
-impl<'r> FromRequest<'r> for DeviceHeaders {
- type Error = Errors<'static>;
-
- async fn from_request(req: &'r Request<'_>) -> Outcome {
- let headers = req.headers();
-
- let get_h = |key: &str| headers.get_one(key).map(|s| s.to_string());
-
- match (
- get_h("x-nintendo-device-id"),
- get_h("accept-language"),
- get_h("x-nintendo-platform-id"),
- get_h("x-nintendo-region"),
- get_h("x-nintendo-serial-number"),
- get_h("x-nintendo-system-version"),
- ) {
- (
- Some(device_id),
- Some(accept_language),
- Some(platform_id),
- Some(region),
- Some(serial_number),
- Some(system_version),
- ) => Outcome::Success(DeviceHeaders {
- device_id,
- accept_language,
- platform_id,
- region,
- serial_number,
- system_version,
- }),
- _ => Outcome::Error((
- rocket::http::Status::BadRequest,
- Errors {
- error: &[Error {
- code: "1600",
- message: "Unable to process request",
- }],
- },
- )),
- }
- }
-}
-
-#[get("/v1/api/people/@me/devices")]
-pub fn get_user_devices(
- auth: Auth,
- headers: DeviceHeaders,
-) -> Xml {
- let now = chrono::Utc::now().naive_utc();
-
- Xml(DevicesWrapper {
- devices: vec![DeviceInfo {
- device_id: headers.device_id,
- language: headers.accept_language,
- updated: now,
- pid: auth.pid,
- platform_id: headers.platform_id,
- region: headers.region,
- serial_number: headers.serial_number,
- status: "ACTIVE".to_string(),
- system_version: headers.system_version,
- r#type: "RETAIL".to_string(),
- updated_by: "USER".to_string(),
- }],
- })
-}
-
-#[get("/v1/api/people/@me/devices/status")]
-pub fn get_device_status(_auth: Auth) -> Xml {
- Xml(EmptyDeviceResponse {
- device: String::new(),
- })
-}
-
-#[put("/v1/api/people/@me/devices/@current/inactivate")]
-pub fn inactivate_current_device(_auth: Auth) -> () {
- // just 200
-}
-
-#[post("/v1/api/people/@me/deletion")]
-pub async fn delete_account(
- database: &State,
- auth: Auth,
-) -> Result<(), Option>> {
- let db = database.inner();
-
- let result = sqlx::query!(
- "DELETE FROM users WHERE pid = $1",
- auth.pid
- )
- .execute(db)
- .await;
-
- if let Err(e) = result {
- println!("failed to delete PID {}: {:?}", auth.pid, e);
- return Err(Some(DATABASE_ERROR));
- }
-
- Ok(())
-}
-
-#[put("/v1/api/people/@me", data = "")]
-pub async fn update_account(
- database: &State,
- auth: Auth,
- data: Xml,
-) -> Result<(), Option>> {
- let db = database.inner();
- let pid = auth.pid;
- let data = data.0;
-
- let updated_password = if let Some(ref new_pass) = data.password {
- generate_password(pid, new_pass)
- } else {
- None
- };
-
- let result = sqlx::query!(
- "
- UPDATE users SET
- gender = COALESCE($1, gender),
- region = COALESCE($2, region),
- country = COALESCE($3, country),
- language = COALESCE($4, language),
- timezone = COALESCE($5, timezone),
- marketing_allowed = COALESCE($6, marketing_allowed),
- off_device_allowed = COALESCE($7, off_device_allowed),
- password = COALESCE($8, password)
- WHERE pid = $9
- ",
- data.gender.as_deref(),
- data.region,
- data.country.as_deref(),
- data.language.as_deref(),
- data.tz_name.as_deref(),
- data.marketing_flag.map(|v| v.0),
- data.off_device_flag.map(|v| v.0),
- updated_password,
- pid
- )
- .execute(db)
- .await;
-
- if let Err(e) = result {
- println!("failed to update account for PID {}: {:?}", pid, e);
- return Err(Some(DATABASE_ERROR));
- }
-
- Ok(())
-}
-
-#[get("/v1/api/people/@me/emails")]
-pub fn get_own_emails(user: Auth) -> Xml {
- let profile = build_profile(user.into());
- Xml(EmailsWrapper {
- emails: vec![profile.email],
- })
-}
-
-#[put("/v1/api/people/@me/emails/@primary", data = "")]
-pub async fn update_primary_email(
- database: &State,
- auth: Auth,
- data: Xml,
-) -> Result<(), Option>> {
- let db = database.inner();
- let pid = auth.pid;
- let new_address = data.0.email.address.to_lowercase();
- let verification_code: i32 = rand::rng().random_range(100_000..1_000_000);
-
- let result = sqlx::query!(
- "
- UPDATE users SET
- email = $1,
- email_verified_since = NULL,
- verification_code = $2
- WHERE pid = $3
- ",
- new_address,
- verification_code,
- pid
- )
- .execute(db)
- .await;
-
- if let Err(e) = result {
- println!("failed to update email for PID {}: {:?}", pid, e);
- return Err(Some(DATABASE_ERROR));
- }
-
- if let Err(e) = send_verification_email(&new_address, verification_code, &auth.username).await {
- println!("failed to send verification email: {e}");
- }
-
- Ok(())
-}
\ No newline at end of file
diff --git a/src/nnid/pid_distribution.rs b/src/nnid/pid_distribution.rs
index 4e7c48b..eb6ad00 100644
--- a/src/nnid/pid_distribution.rs
+++ b/src/nnid/pid_distribution.rs
@@ -1,6 +1,5 @@
-#![deprecated = "handled by nex-account now"]
-/*
use crate::Pool;
+
pub async fn next_pid(pool: &Pool) -> i32{
loop {
let next_pid = sqlx::query!("SELECT nextval('pid_counter') as pid")
@@ -27,5 +26,4 @@ pub async fn next_pid(pool: &Pool) -> i32{
-}
-*/
+}
\ No newline at end of file
diff --git a/src/nnid/provider.rs b/src/nnid/provider.rs
index 316d003..96809f1 100644
--- a/src/nnid/provider.rs
+++ b/src/nnid/provider.rs
@@ -1,112 +1,69 @@
-use crate::Pool;
+use std::net::Ipv4Addr;
+use rocket::{get, State};
+use serde::Serialize;
+use sqlx::types::ipnetwork::IpNetwork::V4;
use crate::account::account::Auth;
use crate::error::{Error, Errors};
-use crate::nnid::oauth::generate_token::create_token;
+use crate::nnid::oauth::generate_token::{create_token};
use crate::nnid::oauth::generate_token::token_type::NEX_TOKEN;
+use crate::Pool;
use crate::xml::Xml;
-use log::{info, warn};
-use nex_account::grpc::Pid;
-use rocket::http::Status;
-use rocket::request::{FromRequest, Outcome, Request};
-use rocket::{State, async_trait, get};
-use serde::Serialize;
-use sqlx::query;
-use sqlx::types::ipnetwork::IpNetwork::V4;
-use std::net::Ipv4Addr;
-const NO_IPV4_ERROR: Errors = Errors {
- error: &[Error {
- code: "1022",
- message: "Server is not a valid IPv4 address",
- }],
+const NO_IPV4_ERROR: Errors = Errors{
+ error: &[
+ Error{
+ code: "1022",
+ message: "Server is not a valid IPv4 address"
+ }
+ ]
};
-const SERVER_ERROR: Errors = Errors {
- error: &[Error {
- code: "9999",
- message: "Internal Server Error",
- }],
+const SERVER_ERROR: Errors = Errors{
+ error: &[
+ Error{
+ code: "9999",
+ message: "Internal Server Error"
+ }
+ ]
};
-const NO_SERVER_ERROR: Errors = Errors {
- error: &[Error {
- code: "1021",
- message: "The requested game server was not found",
- }],
+const NO_SERVER_ERROR: Errors = Errors{
+ error: &[
+ Error{
+ code: "1021",
+ message: "The requested game server was not found"
+ }
+ ]
};
-const MAINTENANCE_ERROR: Errors = Errors {
- error: &[Error {
- code: "2002",
- message: "The requested game server is under maintenance",
- }],
+const MAINTENANCE_ERROR: Errors = Errors{
+ error: &[
+ Error{
+ code: "2002",
+ message: "The requested game server is under maintenance"
+ }
+ ]
};
+
#[derive(Serialize)]
#[serde(rename = "nex_token")]
-pub struct NexToken {
+pub struct NexToken{
host: Ipv4Addr,
nex_password: String,
pid: i32,
port: u16,
- token: Box,
+ token: String
}
#[derive(Serialize)]
#[serde(rename = "service_token")]
-pub struct ServiceToken {
- token: String,
-}
-
-pub async fn store_or_check_serial(pool: &Pool, serial: &str, cert_hash: [u8; 32]) -> bool {
- let Ok(res) = query!(
- "select serial from certificates where hash = $1",
- &cert_hash[..]
- )
- .fetch_one(pool)
- .await
- else {
- warn!(
- "user tried to access a route which is locked behind a console asociated token without a console token"
- );
- return false;
- };
-
- let Some(stored_serial) = res.serial else {
- let _row = query!(
- "update certificates set serial = $1 where hash = $2",
- serial,
- &cert_hash[..]
- ).execute(pool)
- .await
- .ok();
- return true;
- };
-
- serial == stored_serial
-}
-
-pub struct Serial(pub String);
-
-#[async_trait]
-impl<'r> FromRequest<'r> for Serial {
- type Error = Errors<'static>;
- async fn from_request(request: &'r Request<'_>) -> Outcome {
- let Some(header) = request.headers().get("X-Nintendo-Serial-Number").next() else {
- warn!("serial number wasnt sent on request which expected a serial number");
- return Outcome::Error((Status::BadRequest, SERVER_ERROR));
- };
-
- Outcome::Success(Self(header.to_owned()))
- }
+pub struct ServiceToken{
+ token: String
}
#[get("/v1/api/provider/service_token/@me")]
-pub async fn get_service_token(
- pool: &State,
- auth: Auth,
- serial: Serial,
-) -> Result, Option>> {
+pub async fn get_service_token(pool: &State, auth: Auth) -> Result, Option>>{
// just gonna put this here as a side note for the future:
// we could also be using key derivation to derive the nex token as if it were a key
// that way we could reduce the data the database needs to store and also reduce the transfer
@@ -116,27 +73,19 @@ pub async fn get_service_token(
let pool = pool.inner();
- let Some(cert_hash) = auth.1 else {
- info!("attempt to generate service token using non wii u/certificate token");
- return Err(Some(SERVER_ERROR));
- };
+ let token = create_token(pool, auth.pid, NEX_TOKEN, None).await;
- if !store_or_check_serial(pool, &serial.0, cert_hash).await {
- info!("serial mismatched with certificate");
- return Err(Some(SERVER_ERROR));
- }
-
- let token = create_token(pool, auth.pid, NEX_TOKEN, None, Some(&cert_hash[..])).await;
-
- Ok(Xml(ServiceToken { token }))
+ Ok(
+ Xml(
+ ServiceToken{
+ token
+ }
+ )
+ )
}
#[get("/v1/api/provider/nex_token/@me?")]
-pub async fn get_nex_token(
- pool: &State,
- auth: Auth,
- game_server_id: &str,
-) -> Result, Option>> {
+pub async fn get_nex_token(pool: &State, auth: Auth, game_server_id: &str) -> Result, Option>>{
// just gonna put this here as a side note for the future:
// we could also be using key derivation to derive the nex token as if it were a key
// that way we could reduce the data the database needs to store and also reduce the transfer
@@ -159,40 +108,28 @@ pub async fn get_nex_token(
Some(row) => row,
None => return Err(Some(NO_SERVER_ERROR)),
}; // only crash on db failure (not missing row)
-
+
if server.maintenance_mode {
- return Err(Some(MAINTENANCE_ERROR));
+ return Err(Some(MAINTENANCE_ERROR))
}
+ let token = create_token(pool, auth.pid, NEX_TOKEN, None).await;
+
let V4(host) = server.address else {
return Err(Some(NO_IPV4_ERROR));
};
let host = host.ip();
- let mut client = nex_account::grpc_client().await.unwrap();
- let Ok(key) = client
- .get_nex_key_by_pid_maybe_staged(Pid { pid: auth.pid })
- .await
- else {
- println!("account does not exist on nex-account server");
- return Err(Some(SERVER_ERROR));
- };
-
- let token = nex_account::gen_nexact_token(
- auth.pid,
- key.into_inner()
- .key
- .try_into()
- .map_err(|_| Some(SERVER_ERROR))?,
+ Ok(
+ Xml(
+ NexToken{
+ host,
+ port: server.port as u16,
+ nex_password: auth.nex_password.clone(),
+ pid: auth.pid,
+ token
+ }
+ )
)
- .expect("NEX_ACCOUNT_KEYPAIR not set");
-
- Ok(Xml(NexToken {
- host,
- port: server.port as u16,
- nex_password: auth.nex_password.clone(),
- pid: auth.pid,
- token,
- }))
}
diff --git a/src/nnid/support.rs b/src/nnid/support.rs
index f119ef9..715ca1c 100644
--- a/src/nnid/support.rs
+++ b/src/nnid/support.rs
@@ -6,8 +6,6 @@ use rocket::form::Form;
use rocket::{FromForm, State, post, put, get, Request};
use rocket::request::{self, FromRequest};
use rocket::http::Status;
-use rand::RngExt;
-use rand::distr::Alphanumeric;
const BAD_CODE_ERROR: Errors = Errors {
error: &[Error {
@@ -16,13 +14,6 @@ const BAD_CODE_ERROR: Errors = Errors {
}],
};
-const UNAUTHORIZED_DEVICE_ERROR: Errors = Errors {
- error: &[Error {
- code: "0113",
- message: "Unauthorized device",
- }],
-};
-
#[derive(FromForm)]
pub struct ValidateEmailInput {
email: String,
@@ -54,6 +45,7 @@ pub async fn validate(
let email = data.email.trim();
+ // 1. Validate presence + basic format
if email.is_empty() || !email.contains('@') {
return Err(Errors {
error: &[Error {
@@ -63,6 +55,7 @@ pub async fn validate(
});
}
+ // 2. Extract domain safely
let domain = match email.split('@').nth(1) {
Some(d) if !d.is_empty() => d,
_ => {
@@ -75,7 +68,7 @@ pub async fn validate(
}
};
- // This shouldn't ever fail unless there's something wrong with the server
+ // 3. DNS resolver
let resolver = TokioAsyncResolver::tokio_from_system_conf()
.map_err(|_| Errors {
error: &[Error {
@@ -84,6 +77,7 @@ pub async fn validate(
}],
})?;
+ // 4. MX lookup
match resolver.mx_lookup(domain).await {
Ok(mx) if mx.iter().next().is_some() => Ok(()),
@@ -165,165 +159,5 @@ pub async fn resend_email(
BAD_CODE_ERROR
})?;
- Ok(())
-}
-
-#[get("/v1/api/support/forgotten_password/")]
-pub async fn forgotten_password(
- database: &State,
- pid: i32,
-) -> Result<(), Errors<'static>> {
- let db = database.inner();
-
- let user_data = sqlx::query!(
- "SELECT username, email FROM users WHERE pid = $1",
- pid
- )
- .fetch_optional(db)
- .await
- .map_err(|e| {
- eprintln!("database lookup error: {e}");
- UNAUTHORIZED_DEVICE_ERROR
- })?;
-
- let user = match user_data {
- Some(u) => u,
- None => return Err(UNAUTHORIZED_DEVICE_ERROR),
- };
-
- let cleartext_password: String = rand::rng()
- .sample_iter(&Alphanumeric)
- .take(10)
- .map(char::from)
- .collect();
-
- let nintendo_hash = crate::account::account::generate_password(pid, &cleartext_password)
- .ok_or(UNAUTHORIZED_DEVICE_ERROR)?;
-
- let update_result = sqlx::query!(
- "UPDATE users SET password = $1 WHERE pid = $2",
- nintendo_hash,
- pid
- )
- .execute(db)
- .await;
-
- if let Err(e) = update_result {
- eprintln!("failed to update password for PID {pid}: {e}");
- return Err(UNAUTHORIZED_DEVICE_ERROR);
- }
-
- crate::email::send_reset_email(&user.email, &cleartext_password, &user.username)
- .await
- .map_err(|e| {
- eprintln!("failed to send reset email: {e}");
- UNAUTHORIZED_DEVICE_ERROR
- })?;
-
- Ok(())
-}
-
-pub struct DeviceSerial(pub String);
-
-#[rocket::async_trait]
-impl<'r> FromRequest<'r> for DeviceSerial {
- type Error = Errors<'static>;
-
- async fn from_request(req: &'r Request<'_>) -> request::Outcome {
- match req.headers().get_one("x-nintendo-serial-number") {
- Some(val) if !val.trim().is_empty() => {
- request::Outcome::Success(DeviceSerial(val.to_string()))
- }
- _ => request::Outcome::Error((
- Status::BadRequest,
- Errors {
- error: &[Error {
- code: "0130",
- message: "Serial not found",
- }],
- },
- )),
- }
- }
-}
-
-#[get("/v1/api/support/send_confirmation/pin/")]
-pub async fn send_parental_controls_pin(
- database: &State,
- serial: DeviceSerial,
- email: &str,
-) -> Result<(), Errors<'static>> {
- let db = database.inner();
- let serial_number = serial.0;
- let email = email.trim().to_lowercase();
-
- if email.is_empty() || !email.contains('@') {
- return Err(Errors {
- error: &[Error {
- code: "0103",
- message: "Email format is invalid",
- }],
- });
- }
-
- let db_result = sqlx::query!(
- "
- INSERT INTO device_parental_controls (serial_number, email, updated_at)
- VALUES ($1, $2, NOW())
- ON CONFLICT (serial_number)
- DO UPDATE SET email = EXCLUDED.email, updated_at = NOW()
- ",
- serial_number,
- email
- )
- .execute(db)
- .await;
-
- if let Err(e) = db_result {
- eprintln!("Failed to associate serial {serial_number} with email {email}: {e}");
- return Err(Errors {
- error: &[Error {
- code: "0130",
- message: "PID has not been registered yet",
- }],
- });
- }
-
- crate::email::send_pc_email(&email, &serial_number)
- .await
- .map_err(|e| {
- eprintln!("Failed to send parental controls email to {email}: {e}");
- Errors {
- error: &[Error {
- code: "0130",
- message: "PID has not been registered yet",
- }],
- }
- })?;
-
- Ok(())
-}
-
-#[get("/v1/api/support/send_forgotten/pin//")]
-pub async fn send_forgotten_pin(
- serial: DeviceSerial,
- email: &str,
- master_key: &str,
-) -> Result<(), Errors<'static>> {
- let serial_number = serial.0;
- let email = email.trim().to_lowercase();
-
- crate::email::send_reset_pin_email(&email, &serial_number, &master_key)
- .await
- .map_err(|e| {
- eprintln!("Failed to send parental controls email to {email}: {e}");
- Errors {
- error: &[Error {
- code: "0130",
- message: "PID has not been registered yet",
- }],
- }
- })?;
-
Ok(())
}
\ No newline at end of file
|