mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-08 22:38:01 -06:00
Fix latency issue
This commit is contained in:
Generated
+692
-6
@@ -52,7 +52,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"getrandom",
|
"getrandom 0.3.4",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"serde",
|
"serde",
|
||||||
"version_check",
|
"version_check",
|
||||||
@@ -142,6 +142,12 @@ version = "1.1.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atomic_float"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "628d228f918ac3b82fe590352cc719d30664a0c13ca3a60266fe02c7132d480a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@@ -458,7 +464,7 @@ dependencies = [
|
|||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"core-foundation 0.9.4",
|
"core-foundation 0.9.4",
|
||||||
"core-graphics-types",
|
"core-graphics-types",
|
||||||
"foreign-types",
|
"foreign-types 0.5.0",
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -655,6 +661,19 @@ dependencies = [
|
|||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "egui-async"
|
||||||
|
version = "0.2.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f611c6c4c47a6786f77129c887e947410b1d23f0f222447c42a91a5f981fd9ed"
|
||||||
|
dependencies = [
|
||||||
|
"atomic_float",
|
||||||
|
"egui",
|
||||||
|
"tokio",
|
||||||
|
"tracing",
|
||||||
|
"wasm-bindgen-futures",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "egui-wgpu"
|
name = "egui-wgpu"
|
||||||
version = "0.33.2"
|
version = "0.33.2"
|
||||||
@@ -757,6 +776,15 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "encoding_rs"
|
||||||
|
version = "0.8.35"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "enum-map"
|
name = "enum-map"
|
||||||
version = "2.7.3"
|
version = "2.7.3"
|
||||||
@@ -835,6 +863,12 @@ version = "3.3.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
|
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fastrand"
|
||||||
|
version = "2.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fax"
|
name = "fax"
|
||||||
version = "0.2.6"
|
version = "0.2.6"
|
||||||
@@ -880,12 +914,27 @@ dependencies = [
|
|||||||
"miniz_oxide",
|
"miniz_oxide",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fnv"
|
||||||
|
version = "1.0.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "foldhash"
|
name = "foldhash"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "foreign-types"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||||
|
dependencies = [
|
||||||
|
"foreign-types-shared 0.1.1",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "foreign-types"
|
name = "foreign-types"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
@@ -893,7 +942,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
|
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"foreign-types-macros",
|
"foreign-types-macros",
|
||||||
"foreign-types-shared",
|
"foreign-types-shared 0.3.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -907,6 +956,12 @@ dependencies = [
|
|||||||
"syn 2.0.111",
|
"syn 2.0.111",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "foreign-types-shared"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "foreign-types-shared"
|
name = "foreign-types-shared"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@@ -922,6 +977,45 @@ dependencies = [
|
|||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-channel"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-core"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-sink"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-task"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-util"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
"futures-task",
|
||||||
|
"pin-project-lite",
|
||||||
|
"pin-utils",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "generic-array"
|
name = "generic-array"
|
||||||
version = "0.14.7"
|
version = "0.14.7"
|
||||||
@@ -942,6 +1036,17 @@ dependencies = [
|
|||||||
"windows-link",
|
"windows-link",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.3.4"
|
version = "0.3.4"
|
||||||
@@ -1043,6 +1148,25 @@ dependencies = [
|
|||||||
"gl_generator",
|
"gl_generator",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "h2"
|
||||||
|
version = "0.4.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
|
||||||
|
dependencies = [
|
||||||
|
"atomic-waker",
|
||||||
|
"bytes",
|
||||||
|
"fnv",
|
||||||
|
"futures-core",
|
||||||
|
"futures-sink",
|
||||||
|
"http",
|
||||||
|
"indexmap",
|
||||||
|
"slab",
|
||||||
|
"tokio",
|
||||||
|
"tokio-util",
|
||||||
|
"tracing",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "half"
|
name = "half"
|
||||||
version = "2.7.1"
|
version = "2.7.1"
|
||||||
@@ -1097,6 +1221,45 @@ dependencies = [
|
|||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "http"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"itoa",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "http-body"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"http",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "http-body-util"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"futures-core",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"pin-project-lite",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "httparse"
|
||||||
|
version = "1.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hybrid-array"
|
name = "hybrid-array"
|
||||||
version = "0.4.5"
|
version = "0.4.5"
|
||||||
@@ -1106,6 +1269,86 @@ dependencies = [
|
|||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper"
|
||||||
|
version = "1.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
|
||||||
|
dependencies = [
|
||||||
|
"atomic-waker",
|
||||||
|
"bytes",
|
||||||
|
"futures-channel",
|
||||||
|
"futures-core",
|
||||||
|
"h2",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"httparse",
|
||||||
|
"itoa",
|
||||||
|
"pin-project-lite",
|
||||||
|
"pin-utils",
|
||||||
|
"smallvec",
|
||||||
|
"tokio",
|
||||||
|
"want",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper-rustls"
|
||||||
|
version = "0.27.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
|
||||||
|
dependencies = [
|
||||||
|
"http",
|
||||||
|
"hyper",
|
||||||
|
"hyper-util",
|
||||||
|
"rustls",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"tokio",
|
||||||
|
"tokio-rustls",
|
||||||
|
"tower-service",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper-tls"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"http-body-util",
|
||||||
|
"hyper",
|
||||||
|
"hyper-util",
|
||||||
|
"native-tls",
|
||||||
|
"tokio",
|
||||||
|
"tokio-native-tls",
|
||||||
|
"tower-service",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper-util"
|
||||||
|
version = "0.1.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f"
|
||||||
|
dependencies = [
|
||||||
|
"base64",
|
||||||
|
"bytes",
|
||||||
|
"futures-channel",
|
||||||
|
"futures-core",
|
||||||
|
"futures-util",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"hyper",
|
||||||
|
"ipnet",
|
||||||
|
"libc",
|
||||||
|
"percent-encoding",
|
||||||
|
"pin-project-lite",
|
||||||
|
"socket2",
|
||||||
|
"system-configuration",
|
||||||
|
"tokio",
|
||||||
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
|
"windows-registry",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iana-time-zone"
|
name = "iana-time-zone"
|
||||||
version = "0.1.64"
|
version = "0.1.64"
|
||||||
@@ -1266,6 +1509,22 @@ dependencies = [
|
|||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ipnet"
|
||||||
|
version = "2.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iri-string"
|
||||||
|
version = "0.7.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.14.0"
|
version = "0.14.0"
|
||||||
@@ -1309,7 +1568,7 @@ version = "0.1.34"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
|
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom 0.3.4",
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1453,6 +1712,17 @@ dependencies = [
|
|||||||
"simd-adler32",
|
"simd-adler32",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mio"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "moxcms"
|
name = "moxcms"
|
||||||
version = "0.7.9"
|
version = "0.7.9"
|
||||||
@@ -1488,6 +1758,23 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "native-tls"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"openssl",
|
||||||
|
"openssl-probe",
|
||||||
|
"openssl-sys",
|
||||||
|
"schannel",
|
||||||
|
"security-framework",
|
||||||
|
"security-framework-sys",
|
||||||
|
"tempfile",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ndk"
|
name = "ndk"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
@@ -1833,6 +2120,50 @@ version = "1.21.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "openssl"
|
||||||
|
version = "0.10.75"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"cfg-if",
|
||||||
|
"foreign-types 0.3.2",
|
||||||
|
"libc",
|
||||||
|
"once_cell",
|
||||||
|
"openssl-macros",
|
||||||
|
"openssl-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "openssl-macros"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.111",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "openssl-probe"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "openssl-sys"
|
||||||
|
version = "0.9.111"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"libc",
|
||||||
|
"pkg-config",
|
||||||
|
"vcpkg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "orbclient"
|
name = "orbclient"
|
||||||
version = "0.3.49"
|
version = "0.3.49"
|
||||||
@@ -1950,6 +2281,12 @@ version = "0.2.16"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pin-utils"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pkg-config"
|
name = "pkg-config"
|
||||||
version = "0.3.32"
|
version = "0.3.32"
|
||||||
@@ -2120,7 +2457,7 @@ version = "0.9.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom 0.3.4",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2182,6 +2519,60 @@ version = "1.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "reqwest"
|
||||||
|
version = "0.12.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b4c14b2d9afca6a60277086b0cc6a6ae0b568f6f7916c943a8cdc79f8be240f"
|
||||||
|
dependencies = [
|
||||||
|
"base64",
|
||||||
|
"bytes",
|
||||||
|
"encoding_rs",
|
||||||
|
"futures-core",
|
||||||
|
"h2",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"http-body-util",
|
||||||
|
"hyper",
|
||||||
|
"hyper-rustls",
|
||||||
|
"hyper-tls",
|
||||||
|
"hyper-util",
|
||||||
|
"js-sys",
|
||||||
|
"log",
|
||||||
|
"mime",
|
||||||
|
"native-tls",
|
||||||
|
"percent-encoding",
|
||||||
|
"pin-project-lite",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"serde_urlencoded",
|
||||||
|
"sync_wrapper",
|
||||||
|
"tokio",
|
||||||
|
"tokio-native-tls",
|
||||||
|
"tower",
|
||||||
|
"tower-http",
|
||||||
|
"tower-service",
|
||||||
|
"url",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"wasm-bindgen-futures",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ring"
|
||||||
|
version = "0.17.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"cfg-if",
|
||||||
|
"getrandom 0.2.16",
|
||||||
|
"libc",
|
||||||
|
"untrusted",
|
||||||
|
"windows-sys 0.52.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ron"
|
name = "ron"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
@@ -2233,6 +2624,39 @@ dependencies = [
|
|||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls"
|
||||||
|
version = "0.23.35"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"rustls-webpki",
|
||||||
|
"subtle",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls-pki-types"
|
||||||
|
version = "1.13.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282"
|
||||||
|
dependencies = [
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls-webpki"
|
||||||
|
version = "0.103.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
|
||||||
|
dependencies = [
|
||||||
|
"ring",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"untrusted",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustversion"
|
name = "rustversion"
|
||||||
version = "1.0.22"
|
version = "1.0.22"
|
||||||
@@ -2254,6 +2678,15 @@ dependencies = [
|
|||||||
"winapi-util",
|
"winapi-util",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "schannel"
|
||||||
|
version = "0.1.28"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scoped-tls"
|
name = "scoped-tls"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
@@ -2266,6 +2699,29 @@ version = "1.2.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "security-framework"
|
||||||
|
version = "2.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"core-foundation 0.9.4",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"libc",
|
||||||
|
"security-framework-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "security-framework-sys"
|
||||||
|
version = "2.15.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
|
||||||
|
dependencies = [
|
||||||
|
"core-foundation-sys",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.228"
|
version = "1.0.228"
|
||||||
@@ -2309,6 +2765,18 @@ dependencies = [
|
|||||||
"serde_core",
|
"serde_core",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_urlencoded"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
|
||||||
|
dependencies = [
|
||||||
|
"form_urlencoded",
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha2"
|
name = "sha2"
|
||||||
version = "0.10.9"
|
version = "0.10.9"
|
||||||
@@ -2431,6 +2899,16 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "socket2"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"windows-sys 0.60.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
version = "1.2.1"
|
version = "1.2.1"
|
||||||
@@ -2471,6 +2949,12 @@ dependencies = [
|
|||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "subtle"
|
||||||
|
version = "2.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.109"
|
version = "1.0.109"
|
||||||
@@ -2493,6 +2977,15 @@ dependencies = [
|
|||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sync_wrapper"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "synstructure"
|
name = "synstructure"
|
||||||
version = "0.13.2"
|
version = "0.13.2"
|
||||||
@@ -2504,6 +2997,40 @@ dependencies = [
|
|||||||
"syn 2.0.111",
|
"syn 2.0.111",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "system-configuration"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"core-foundation 0.9.4",
|
||||||
|
"system-configuration-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "system-configuration-sys"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
|
||||||
|
dependencies = [
|
||||||
|
"core-foundation-sys",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tempfile"
|
||||||
|
version = "3.23.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
|
||||||
|
dependencies = [
|
||||||
|
"fastrand",
|
||||||
|
"getrandom 0.3.4",
|
||||||
|
"once_cell",
|
||||||
|
"rustix 1.1.2",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.69"
|
version = "1.0.69"
|
||||||
@@ -2568,6 +3095,53 @@ dependencies = [
|
|||||||
"zerovec",
|
"zerovec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio"
|
||||||
|
version = "1.48.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"libc",
|
||||||
|
"mio",
|
||||||
|
"pin-project-lite",
|
||||||
|
"socket2",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-native-tls"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
||||||
|
dependencies = [
|
||||||
|
"native-tls",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-rustls"
|
||||||
|
version = "0.26.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
|
||||||
|
dependencies = [
|
||||||
|
"rustls",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-util"
|
||||||
|
version = "0.7.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
|
||||||
|
dependencies = [
|
||||||
|
"bytes",
|
||||||
|
"futures-core",
|
||||||
|
"futures-sink",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_datetime"
|
name = "toml_datetime"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
@@ -2598,6 +3172,51 @@ dependencies = [
|
|||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
"futures-util",
|
||||||
|
"pin-project-lite",
|
||||||
|
"sync_wrapper",
|
||||||
|
"tokio",
|
||||||
|
"tower-layer",
|
||||||
|
"tower-service",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower-http"
|
||||||
|
version = "0.6.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.10.0",
|
||||||
|
"bytes",
|
||||||
|
"futures-util",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"iri-string",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tower",
|
||||||
|
"tower-layer",
|
||||||
|
"tower-service",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower-layer"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower-service"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing"
|
name = "tracing"
|
||||||
version = "0.1.41"
|
version = "0.1.41"
|
||||||
@@ -2606,14 +3225,35 @@ checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"tracing-attributes",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-attributes"
|
||||||
|
version = "0.1.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.111",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-core"
|
name = "tracing-core"
|
||||||
version = "0.1.34"
|
version = "0.1.34"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
|
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "try-lock"
|
||||||
|
version = "0.2.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ttf-parser"
|
name = "ttf-parser"
|
||||||
@@ -2667,7 +3307,7 @@ dependencies = [
|
|||||||
"aes",
|
"aes",
|
||||||
"block-padding 0.4.2",
|
"block-padding 0.4.2",
|
||||||
"cbc",
|
"cbc",
|
||||||
"getrandom",
|
"getrandom 0.3.4",
|
||||||
"hex",
|
"hex",
|
||||||
"hex-literal",
|
"hex-literal",
|
||||||
"regex",
|
"regex",
|
||||||
@@ -2681,9 +3321,11 @@ dependencies = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"eframe",
|
"eframe",
|
||||||
"egui",
|
"egui",
|
||||||
|
"egui-async",
|
||||||
"egui_extras",
|
"egui_extras",
|
||||||
"egui_tiles",
|
"egui_tiles",
|
||||||
"log",
|
"log",
|
||||||
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"unshell-lib",
|
"unshell-lib",
|
||||||
@@ -2714,6 +3356,12 @@ dependencies = [
|
|||||||
"unshell-crypt",
|
"unshell-crypt",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "untrusted"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "url"
|
name = "url"
|
||||||
version = "2.5.7"
|
version = "2.5.7"
|
||||||
@@ -2732,6 +3380,12 @@ version = "1.0.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "vcpkg"
|
||||||
|
version = "0.2.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.5"
|
version = "0.9.5"
|
||||||
@@ -2748,6 +3402,21 @@ dependencies = [
|
|||||||
"winapi-util",
|
"winapi-util",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "want"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
|
||||||
|
dependencies = [
|
||||||
|
"try-lock",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.11.1+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasip2"
|
name = "wasip2"
|
||||||
version = "1.0.1+wasi-0.2.4"
|
version = "1.0.1+wasi-0.2.4"
|
||||||
@@ -3160,6 +3829,17 @@ version = "0.2.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-registry"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
|
||||||
|
dependencies = [
|
||||||
|
"windows-link",
|
||||||
|
"windows-result",
|
||||||
|
"windows-strings",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-result"
|
name = "windows-result"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@@ -3608,6 +4288,12 @@ dependencies = [
|
|||||||
"synstructure",
|
"synstructure",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zeroize"
|
||||||
|
version = "1.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerotrie"
|
name = "zerotrie"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
|||||||
+18
-14
@@ -7,13 +7,17 @@ authors = ["ASTATIN3"]
|
|||||||
include = ["LICENSE-APACHE", "LICENSE-MIT", "**/*.rs", "Cargo.toml"]
|
include = ["LICENSE-APACHE", "LICENSE-MIT", "**/*.rs", "Cargo.toml"]
|
||||||
rust-version = "1.88"
|
rust-version = "1.88"
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[lib]
|
||||||
all-features = true
|
crate-type = ["cdylib"]
|
||||||
targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]
|
|
||||||
|
# [package.metadata.docs.rs]
|
||||||
|
# all-features = true
|
||||||
|
# targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
unshell-lib = {path="../unshell-lib"}
|
unshell-lib = {path="../unshell-lib"}
|
||||||
|
|
||||||
|
# Stuff for app functionality
|
||||||
egui = "0.33.0"
|
egui = "0.33.0"
|
||||||
eframe = { version = "0.33.0", default-features = false, features = [
|
eframe = { version = "0.33.0", default-features = false, features = [
|
||||||
# "accesskit", # Make egui compatible with screen readers. NOTE: adds a lot of dependencies.
|
# "accesskit", # Make egui compatible with screen readers. NOTE: adds a lot of dependencies.
|
||||||
@@ -23,27 +27,27 @@ eframe = { version = "0.33.0", default-features = false, features = [
|
|||||||
"wayland", # To support Linux (and CI)
|
"wayland", # To support Linux (and CI)
|
||||||
"x11", # To support older Linux distributions (restores one of the default features)
|
"x11", # To support older Linux distributions (restores one of the default features)
|
||||||
] }
|
] }
|
||||||
|
egui_extras = "0.33.2"
|
||||||
|
egui_tiles = "0.14.0"
|
||||||
|
egui-async = "0.2.6"
|
||||||
log = "0.4.27"
|
log = "0.4.27"
|
||||||
|
chrono = "0.4.42"
|
||||||
|
|
||||||
# You only need serde if you want app persistence:
|
# You only need serde if you want app persistence:
|
||||||
serde = { version = "1.0.219", features = ["derive"] }
|
serde = { version = "1.0.219", features = ["derive"] }
|
||||||
egui_extras = "0.33.2"
|
serde_json = "1.0.145"
|
||||||
egui_tiles = "0.14.0"
|
|
||||||
|
|
||||||
# native:
|
# Web Stuff
|
||||||
# [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
||||||
# pretty_env_logger = "0.5.0"
|
|
||||||
|
|
||||||
# web:
|
|
||||||
# [target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
||||||
wasm-bindgen-futures = "0.4.50"
|
wasm-bindgen-futures = "0.4.50"
|
||||||
wasm-bindgen = "0.2.106"
|
wasm-bindgen = "0.2.106"
|
||||||
web-sys = "0.3.70" # to access the DOM (to hide the loading text)
|
web-sys = {version = "0.3.70", features = ['Headers', 'Request', 'RequestInit', 'RequestMode', 'Response', 'Window']}
|
||||||
serde_json = "1.0.145"
|
|
||||||
chrono = "0.4.42"
|
reqwest = {version = "0.12.26", features=["json"]}
|
||||||
|
# tokio = {version = "1.48.0", features = ["full"]}
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = 2 # fast and small wasm
|
opt-level = 2 # fast and small wasm
|
||||||
|
# lto = true
|
||||||
|
|
||||||
# Optimize all dependencies even in debug builds:
|
# Optimize all dependencies even in debug builds:
|
||||||
[profile.dev.package."*"]
|
[profile.dev.package."*"]
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ impl eframe::App for TemplateApp {
|
|||||||
|
|
||||||
/// Called each time the UI needs repainting, which may be many times per second.
|
/// Called each time the UI needs repainting, which may be many times per second.
|
||||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||||
|
ctx.plugin_or_default::<egui_async::EguiAsyncPlugin>();
|
||||||
|
|
||||||
if !self.state.auth.logged_in() {
|
if !self.state.auth.logged_in() {
|
||||||
egui::CentralPanel::default()
|
egui::CentralPanel::default()
|
||||||
.frame(Frame::central_panel(&ctx.style()).inner_margin(0))
|
.frame(Frame::central_panel(&ctx.style()).inner_margin(0))
|
||||||
|
|||||||
@@ -0,0 +1,108 @@
|
|||||||
|
use serde::de::DeserializeOwned;
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::rc::Rc;
|
||||||
|
use wasm_bindgen::JsCast;
|
||||||
|
use wasm_bindgen::prelude::*;
|
||||||
|
use web_sys::js_sys::Promise;
|
||||||
|
|
||||||
|
pub struct PromiseWrapper<T> {
|
||||||
|
state: Rc<RefCell<PromiseState<T>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PromiseState<T> {
|
||||||
|
Pending,
|
||||||
|
Resolved(T),
|
||||||
|
Rejected(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: 'static> PromiseWrapper<T>
|
||||||
|
where
|
||||||
|
T: DeserializeOwned,
|
||||||
|
{
|
||||||
|
/// Create a new PromiseWrapper from a JavaScript Promise
|
||||||
|
/// The promise should resolve to a Response object (from fetch)
|
||||||
|
pub fn new(promise: Promise) -> Self {
|
||||||
|
let state = Rc::new(RefCell::new(PromiseState::Pending));
|
||||||
|
let state_clone = state.clone();
|
||||||
|
let state_clone2 = state.clone();
|
||||||
|
|
||||||
|
// Success callback
|
||||||
|
let success = Closure::once(move |value: JsValue| {
|
||||||
|
if let Ok(response) = value.dyn_into::<web_sys::Response>() {
|
||||||
|
if let Ok(json_promise) = response.json() {
|
||||||
|
let state_inner = state_clone.clone();
|
||||||
|
|
||||||
|
let json_success = Closure::once(move |json_value: JsValue| {
|
||||||
|
*state_inner.borrow_mut() = if let Some(body) = json_value.as_string() {
|
||||||
|
match serde_json::from_str(&body) {
|
||||||
|
Ok(data) => PromiseState::Resolved(data),
|
||||||
|
Err(e) => PromiseState::Rejected(format!("{:?}", e)),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PromiseState::Rejected(format!("Response was not a string"))
|
||||||
|
};
|
||||||
|
|
||||||
|
match serde_wasm_bindgen::from_value::<T>(json_value) {
|
||||||
|
Ok(data) => *state_inner.borrow_mut() = PromiseState::Resolved(data),
|
||||||
|
Err(e) => {
|
||||||
|
*state_inner.borrow_mut() =
|
||||||
|
PromiseState::Rejected(format!("{:?}", e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let _ = json_promise.then(&json_success);
|
||||||
|
json_success.forget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Error callback
|
||||||
|
let error = Closure::once(move |err: JsValue| {
|
||||||
|
*state_clone2.borrow_mut() = PromiseState::Rejected(
|
||||||
|
err.as_string()
|
||||||
|
.unwrap_or_else(|| "Unknown error".to_string()),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
let _ = promise.then2(&success, &error);
|
||||||
|
success.forget();
|
||||||
|
error.forget();
|
||||||
|
|
||||||
|
Self { state }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Poll the promise to check if it has completed
|
||||||
|
/// Returns Some(T) if resolved successfully, None if still pending or rejected
|
||||||
|
/// This is a lightweight check that's safe to call every frame
|
||||||
|
#[inline]
|
||||||
|
pub fn poll(&self) -> Option<T>
|
||||||
|
where
|
||||||
|
T: Clone,
|
||||||
|
{
|
||||||
|
match &*self.state.borrow() {
|
||||||
|
PromiseState::Resolved(value) => Some(value.clone()),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the promise is still pending (lightweight)
|
||||||
|
#[inline]
|
||||||
|
pub fn is_pending(&self) -> bool {
|
||||||
|
matches!(&*self.state.borrow(), PromiseState::Pending)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Check if the promise was rejected (lightweight)
|
||||||
|
#[inline]
|
||||||
|
pub fn is_rejected(&self) -> bool {
|
||||||
|
matches!(&*self.state.borrow(), PromiseState::Rejected(_))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get the error message if rejected
|
||||||
|
pub fn error(&self) -> Option<String> {
|
||||||
|
match &*self.state.borrow() {
|
||||||
|
PromiseState::Rejected(err) => Some(err.clone()),
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
impl Auth {
|
||||||
|
// pub fn get_test(url: String) -> Promise {
|
||||||
|
// let fut = Self::get_async(&url);
|
||||||
|
|
||||||
|
// // wasm_bindgen_futures::(fut)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// pub fn get_async<R>(&self, url: &str) -> PromiseWrapper<R>
|
||||||
|
// where
|
||||||
|
// // F: FnOnce(R) + 'static,
|
||||||
|
// R: DeserializeOwned + 'static,
|
||||||
|
// {
|
||||||
|
// let token = self.token.as_ref().unwrap();
|
||||||
|
|
||||||
|
// let opts = RequestInit::new();
|
||||||
|
// opts.set_method("GET");
|
||||||
|
|
||||||
|
// let request = Request::new_with_str_and_init(url, &opts).unwrap();
|
||||||
|
|
||||||
|
// let headers = request.headers();
|
||||||
|
|
||||||
|
// headers.set("content-type", "application/json").unwrap();
|
||||||
|
|
||||||
|
// headers
|
||||||
|
// .set("Authorization", &format!("Bearer {}", token.token))
|
||||||
|
// .unwrap();
|
||||||
|
|
||||||
|
// let window = web_sys::window().unwrap();
|
||||||
|
// let promise = window.fetch_with_request(&request);
|
||||||
|
|
||||||
|
// // wasm_bindgen_futures::spawn_local(async move {
|
||||||
|
// // let resp_value = JsFuture::from(window.fetch_with_request(&request))
|
||||||
|
// // .await
|
||||||
|
// // .unwrap();
|
||||||
|
|
||||||
|
// // // `resp_value` is a `Response` object.
|
||||||
|
// // assert!(resp_value.is_instance_of::<Response>());
|
||||||
|
// // let resp: Response = resp_value.dyn_into().unwrap();
|
||||||
|
|
||||||
|
// // // Convert this other `Promise` into a rust `Future`.
|
||||||
|
// // if let Ok(json) = resp.json() {
|
||||||
|
// // if let Ok(json) = JsFuture::from(json).await {
|
||||||
|
// // crate::log(&format!("{json:?}"));
|
||||||
|
// // // let json = ;
|
||||||
|
// // }
|
||||||
|
// // }
|
||||||
|
|
||||||
|
// // // crate::log(text);
|
||||||
|
// // // Any follow-up work here
|
||||||
|
// // });
|
||||||
|
|
||||||
|
// PromiseWrapper::new(promise)
|
||||||
|
|
||||||
|
// // Ok(())
|
||||||
|
// }
|
||||||
|
|
||||||
|
// pub fn get_async_callback<R, F>(&self, url: &str, callback: F) -> Result<()>
|
||||||
|
// where
|
||||||
|
// F: FnOnce(R) + 'static,
|
||||||
|
// R: DeserializeOwned + 'static,
|
||||||
|
// {
|
||||||
|
// if self.token.is_none() {
|
||||||
|
// return Err(ModuleError::Error("Not authenticated".into()));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let token = self.token.clone().unwrap();
|
||||||
|
|
||||||
|
// let url = url.to_string();
|
||||||
|
|
||||||
|
// let state_clone = self.auth_state.clone();
|
||||||
|
|
||||||
|
// wasm_bindgen_futures::future_to_promise(async move {
|
||||||
|
// let result = Self::get_async(&url, &token).await;
|
||||||
|
|
||||||
|
// match result {
|
||||||
|
// Ok(result) => callback(result),
|
||||||
|
// Err(err) => (*state_clone.lock()) = AuthState::Error(err.into()),
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Ok(JsValue::NULL)
|
||||||
|
// });
|
||||||
|
|
||||||
|
// Ok(())
|
||||||
|
// }
|
||||||
|
|
||||||
|
// async fn get_async<R>(url: &str, token: &Token) -> Result<R>
|
||||||
|
// where
|
||||||
|
// R: DeserializeOwned + 'static,
|
||||||
|
// {
|
||||||
|
// let res = reqwest::Client::new()
|
||||||
|
// .get(format!("http://localhost:8080{url}"))
|
||||||
|
// .bearer_auth(&token.token)
|
||||||
|
// .send()
|
||||||
|
// .await
|
||||||
|
// .map_err(|e| ModuleError::Error(e.to_string()))?;
|
||||||
|
|
||||||
|
// match res.error_for_status() {
|
||||||
|
// Ok(res) => res
|
||||||
|
// .json()
|
||||||
|
// .await
|
||||||
|
// .map_err(|e| ModuleError::Error(e.to_string())),
|
||||||
|
// Err(err) => Err(ModuleError::Error(format!(
|
||||||
|
// "Server returned error: {err:?}"
|
||||||
|
// ))),
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // .json::<R>()
|
||||||
|
// // .await
|
||||||
|
// // .map_err(|e| ModuleError::Error(e.to_string()))?;
|
||||||
|
|
||||||
|
// // serde_json::from_str(&res).map_err(|e| ModuleError::SerdeJsonError(e.to_string()))
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -1,21 +1,26 @@
|
|||||||
mod render_interface;
|
mod interface;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
use unshell_lib::Result;
|
use egui_async::Bind;
|
||||||
|
use log::debug;
|
||||||
use unshell_lib::config::TreeMessage;
|
use unshell_lib::config::TreeMessage;
|
||||||
|
use unshell_lib::{ModuleError, Result};
|
||||||
|
|
||||||
use crate::auth::Auth;
|
use crate::auth::Auth;
|
||||||
|
|
||||||
#[derive(serde::Deserialize, serde::Serialize)]
|
#[derive(serde::Deserialize, serde::Serialize)]
|
||||||
pub struct InterfaceWindow {
|
pub struct InterfaceWindow {
|
||||||
path: PathBuf,
|
path: PathBuf,
|
||||||
|
// #[serde(skip)]
|
||||||
|
// data_bind: Bind<String, ModuleError>,
|
||||||
#[serde(skip)]
|
#[serde(skip)]
|
||||||
state: Arc<Mutex<InterfaceWindowState>>,
|
state: Arc<Mutex<InterfaceWindowState>>,
|
||||||
|
// #[serde(skip)]
|
||||||
|
// promise: Option<PromiseWrapper<Result<TreeMessage>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct InterfaceWindowState {
|
pub struct InterfaceWindowState {
|
||||||
@@ -26,6 +31,8 @@ pub struct InterfaceWindowState {
|
|||||||
|
|
||||||
impl InterfaceWindow {
|
impl InterfaceWindow {
|
||||||
pub fn update(&mut self, auth: &mut Auth, ui: &mut egui::Ui) {
|
pub fn update(&mut self, auth: &mut Auth, ui: &mut egui::Ui) {
|
||||||
|
// let data_bind = Bind::<InterfaceWindowState, ModuleError>::new(false);
|
||||||
|
|
||||||
ui.heading("Interface");
|
ui.heading("Interface");
|
||||||
ui.label(self.path.to_string_lossy());
|
ui.label(self.path.to_string_lossy());
|
||||||
|
|
||||||
@@ -73,7 +80,8 @@ impl InterfaceWindow {
|
|||||||
Ok(item) => {
|
Ok(item) => {
|
||||||
state_lock.branch = Some(item);
|
state_lock.branch = Some(item);
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(err) => {
|
||||||
|
crate::log(&format!("Got error {err:?}"));
|
||||||
state_lock.is_error = true;
|
state_lock.is_error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,14 +101,14 @@ impl InterfaceWindow {
|
|||||||
|
|
||||||
let clear = match branch {
|
let clear = match branch {
|
||||||
TreeMessage::InterfaceAndValue(interface_struct, interface_data) => {
|
TreeMessage::InterfaceAndValue(interface_struct, interface_data) => {
|
||||||
render_interface::render(ui, interface_struct, interface_data);
|
interface::render(ui, interface_struct, interface_data);
|
||||||
|
|
||||||
if ui.button("Save").clicked() {
|
if ui.button("Save").clicked() {
|
||||||
auth.post(
|
auth.post(
|
||||||
&format!("/api/interface{}", self.path.display()),
|
&format!("/api/interface{}", self.path.display()),
|
||||||
&TreeMessage::State(interface_data.clone()),
|
&TreeMessage::State(interface_data.clone()),
|
||||||
move |response: Result<TreeMessage>| {
|
move |response: Result<TreeMessage>| {
|
||||||
crate::log(&format!("{response:?}"));
|
debug!("{response:?}");
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
@@ -129,6 +137,56 @@ impl InterfaceWindow {
|
|||||||
drop(state_lock)
|
drop(state_lock)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if ui.button("Go Up").clicked() {
|
||||||
|
// self.go_up();
|
||||||
|
// // self.data_bind.clear();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// match self.promise.as_mut() {
|
||||||
|
// Some(promise) => {
|
||||||
|
// if let Some(result) = promise.poll() {
|
||||||
|
// crate::log(&format!("{result:?}"));
|
||||||
|
// } else {
|
||||||
|
// crate::log("Poll failed");
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// None => {
|
||||||
|
// self.promise =
|
||||||
|
// Some(auth.get_async(&format!("/api/interface{}", self.path.to_str().unwrap())));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let future = Auth::get_async::<String>("/api/test").await;
|
||||||
|
// future.;
|
||||||
|
|
||||||
|
// if let Some(res) = self.data_bind.read_or_request(async || {
|
||||||
|
// // self.go_up();
|
||||||
|
// // auth.get("", |e: String| {});
|
||||||
|
|
||||||
|
// reqwest::get("https://icanhazip.com/")
|
||||||
|
// .await
|
||||||
|
// .map_err(|e| ModuleError::Error(e.to_string()))?
|
||||||
|
// .text()
|
||||||
|
// .await
|
||||||
|
// .map_err(|e| ModuleError::Error(e.to_string()))
|
||||||
|
// }) {
|
||||||
|
// match res {
|
||||||
|
// Ok(ip) => {
|
||||||
|
// ui.label(format!("OK {ip}"));
|
||||||
|
// }
|
||||||
|
// Err(err) => {
|
||||||
|
// ui.label(format!("ERR {err}"));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// ui.spinner();
|
||||||
|
// };
|
||||||
|
|
||||||
|
// if ui.button("Refresh").clicked() {
|
||||||
|
// Auth::get_async_callback::<String>("/api/interface");
|
||||||
|
// // self.data_bind.clear();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reset_path(&mut self) {
|
fn reset_path(&mut self) {
|
||||||
@@ -136,19 +194,25 @@ impl InterfaceWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn go_up(&mut self) {
|
fn go_up(&mut self) {
|
||||||
self.path = PathBuf::from(self.path.parent().unwrap());
|
if let Some(parent) = self.path.parent() {
|
||||||
|
self.path = PathBuf::from(parent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn go_down(&mut self, path: String) {
|
fn go_down(&mut self, path: String) {
|
||||||
self.path = self.path.join(path);
|
self.path = self.path.join(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn get() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for InterfaceWindow {
|
impl Default for InterfaceWindow {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
path: "/".into(),
|
path: "/".into(),
|
||||||
|
// promise: None,
|
||||||
state: Arc::new(Mutex::new(InterfaceWindowState::default())),
|
state: Arc::new(Mutex::new(InterfaceWindowState::default())),
|
||||||
|
// data_bind: Bind::new(false),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,54 @@ extern "C" {
|
|||||||
pub fn httpPostAuth(url: &str, auth: String, data: &str, ok_callback: JsValue);
|
pub fn httpPostAuth(url: &str, auth: String, data: &str, ok_callback: JsValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When compiling to web using trunk:
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
#[wasm_bindgen(start)]
|
||||||
|
pub async fn run() {
|
||||||
|
use wasm_bindgen::JsCast as _;
|
||||||
|
|
||||||
|
use app::TemplateApp;
|
||||||
|
|
||||||
|
// Redirect `log` message to `console.log` and friends:
|
||||||
|
eframe::WebLogger::init(log::LevelFilter::Debug).ok();
|
||||||
|
|
||||||
|
let web_options = eframe::WebOptions::default();
|
||||||
|
|
||||||
|
let document = web_sys::window()
|
||||||
|
.expect("No window")
|
||||||
|
.document()
|
||||||
|
.expect("No document");
|
||||||
|
|
||||||
|
let canvas = document
|
||||||
|
.get_element_by_id("the_canvas_id")
|
||||||
|
.expect("Failed to find the_canvas_id")
|
||||||
|
.dyn_into::<web_sys::HtmlCanvasElement>()
|
||||||
|
.expect("the_canvas_id was not a HtmlCanvasElement");
|
||||||
|
|
||||||
|
let start_result = eframe::WebRunner::new()
|
||||||
|
.start(
|
||||||
|
canvas,
|
||||||
|
web_options,
|
||||||
|
Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
// Remove the loading text and spinner:
|
||||||
|
if let Some(loading_text) = document.get_element_by_id("loading_text") {
|
||||||
|
match start_result {
|
||||||
|
Ok(_) => {
|
||||||
|
loading_text.remove();
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
loading_text.set_inner_html(
|
||||||
|
"<p> The app has crashed. See the developer console for details. </p>",
|
||||||
|
);
|
||||||
|
panic!("Failed to start eframe: {e:?}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// #[cfg(not(target_arch = "wasm32"))]
|
// #[cfg(not(target_arch = "wasm32"))]
|
||||||
// mod JsFunc {
|
// mod JsFunc {
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
#![warn(clippy::all, rust_2018_idioms)]
|
|
||||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
|
||||||
|
|
||||||
// When compiling natively:
|
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
|
||||||
fn main() -> eframe::Result {
|
|
||||||
// pretty_env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
|
||||||
|
|
||||||
// let native_options = eframe::NativeOptions {
|
|
||||||
// viewport: egui::ViewportBuilder::default()
|
|
||||||
// .with_inner_size([400.0, 300.0])
|
|
||||||
// .with_min_inner_size([300.0, 220.0]),
|
|
||||||
// ..Default::default()
|
|
||||||
// };
|
|
||||||
// eframe::run_native(
|
|
||||||
// "eframe template",
|
|
||||||
// native_options,
|
|
||||||
// Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))),
|
|
||||||
// )
|
|
||||||
todo!()
|
|
||||||
}
|
|
||||||
|
|
||||||
// When compiling to web using trunk:
|
|
||||||
#[cfg(target_arch = "wasm32")]
|
|
||||||
fn main() {
|
|
||||||
use eframe::wasm_bindgen::JsCast as _;
|
|
||||||
|
|
||||||
use unshell_gui::app::TemplateApp;
|
|
||||||
|
|
||||||
// Redirect `log` message to `console.log` and friends:
|
|
||||||
eframe::WebLogger::init(log::LevelFilter::Debug).ok();
|
|
||||||
|
|
||||||
let web_options = eframe::WebOptions::default();
|
|
||||||
|
|
||||||
wasm_bindgen_futures::spawn_local(async {
|
|
||||||
let document = web_sys::window()
|
|
||||||
.expect("No window")
|
|
||||||
.document()
|
|
||||||
.expect("No document");
|
|
||||||
|
|
||||||
let canvas = document
|
|
||||||
.get_element_by_id("the_canvas_id")
|
|
||||||
.expect("Failed to find the_canvas_id")
|
|
||||||
.dyn_into::<web_sys::HtmlCanvasElement>()
|
|
||||||
.expect("the_canvas_id was not a HtmlCanvasElement");
|
|
||||||
|
|
||||||
let start_result = eframe::WebRunner::new()
|
|
||||||
.start(
|
|
||||||
canvas,
|
|
||||||
web_options,
|
|
||||||
Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))),
|
|
||||||
)
|
|
||||||
.await;
|
|
||||||
|
|
||||||
// Remove the loading text and spinner:
|
|
||||||
if let Some(loading_text) = document.get_element_by_id("loading_text") {
|
|
||||||
match start_result {
|
|
||||||
Ok(_) => {
|
|
||||||
loading_text.remove();
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
loading_text.set_inner_html(
|
|
||||||
"<p> The app has crashed. See the developer console for details. </p>",
|
|
||||||
);
|
|
||||||
panic!("Failed to start eframe: {e:?}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#![warn(clippy::all, rust_2018_idioms)]
|
||||||
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
|
||||||
|
|
||||||
|
// When compiling natively:
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
fn main() -> eframe::Result {
|
||||||
|
// pretty_env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
||||||
|
|
||||||
|
// let native_options = eframe::NativeOptions {
|
||||||
|
// viewport: egui::ViewportBuilder::default()
|
||||||
|
// .with_inner_size([400.0, 300.0])
|
||||||
|
// .with_min_inner_size([300.0, 220.0]),
|
||||||
|
// ..Default::default()
|
||||||
|
// };
|
||||||
|
// eframe::run_native(
|
||||||
|
// "eframe template",
|
||||||
|
// native_options,
|
||||||
|
// Box::new(|cc| Ok(Box::new(TemplateApp::new(cc)))),
|
||||||
|
// )
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ use std::fmt;
|
|||||||
pub type Result<T> = std::result::Result<T, ModuleError>;
|
pub type Result<T> = std::result::Result<T, ModuleError>;
|
||||||
|
|
||||||
///Generic error type for module-related operations.
|
///Generic error type for module-related operations.
|
||||||
#[derive(Debug, serde::Serialize, serde::Deserialize)]
|
#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)]
|
||||||
pub enum ModuleError {
|
pub enum ModuleError {
|
||||||
LibLoadingError(String),
|
LibLoadingError(String),
|
||||||
// LogError(log::SetLoggerError),
|
// LogError(log::SetLoggerError),
|
||||||
@@ -54,3 +54,9 @@ impl fmt::Display for ModuleError {
|
|||||||
f.write_str(format!("{:?}", self).as_str())
|
f.write_str(format!("{:?}", self).as_str())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<ModuleError> for std::string::String {
|
||||||
|
fn from(value: ModuleError) -> Self {
|
||||||
|
value.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,15 +12,19 @@ unshell-lib = {path = "../unshell-lib", default-featues = false}
|
|||||||
unshell-obfuscate = {path = "../unshell-obfuscate", default-featues = false}
|
unshell-obfuscate = {path = "../unshell-obfuscate", default-featues = false}
|
||||||
unshell-manager = {path = "../unshell-manager", default-featues = false}
|
unshell-manager = {path = "../unshell-manager", default-featues = false}
|
||||||
|
|
||||||
|
|
||||||
|
clap = {version = "4.5.53", features = ["derive"]}
|
||||||
axum = "0.8.7"
|
axum = "0.8.7"
|
||||||
axum-extra = {version="0.12.2", features = ["typed-header"]}
|
axum-extra = {version="0.12.2", features = ["typed-header"]}
|
||||||
jsonwebtoken = {version = "10.2.0", features = ["aws_lc_rs"]}
|
tokio = {version="1.48.0", features = ["full"] }
|
||||||
|
|
||||||
serde = {version = "1.0.228", features = ["derive"]}
|
serde = {version = "1.0.228", features = ["derive"]}
|
||||||
serde_json = "1.0.145"
|
serde_json = "1.0.145"
|
||||||
tokio = {version="1.48.0", features = ["full"] }
|
|
||||||
bcrypt = "0.17.1"
|
|
||||||
chrono = "0.4.42"
|
chrono = "0.4.42"
|
||||||
static_init = "1.0.4"
|
static_init = "1.0.4"
|
||||||
clap = {version = "4.5.53", features = ["derive"]}
|
|
||||||
sled = "0.34.7"
|
|
||||||
toml = "0.9.9"
|
toml = "0.9.9"
|
||||||
|
|
||||||
|
jsonwebtoken = {version = "10.2.0", features = ["aws_lc_rs"]}
|
||||||
|
bcrypt = "0.17.1"
|
||||||
|
|
||||||
|
sled = "0.34.7"
|
||||||
|
|||||||
@@ -51,6 +51,11 @@ pub async fn start_api(address: &str, server: Server) {
|
|||||||
|
|
||||||
router = route_get!(router, "/api/interface/", Server::get_tree2_root);
|
router = route_get!(router, "/api/interface/", Server::get_tree2_root);
|
||||||
router = route_get!(router, "/api/interface/{*path}", Server::get_tree2);
|
router = route_get!(router, "/api/interface/{*path}", Server::get_tree2);
|
||||||
|
|
||||||
|
// router = router.route("/api/interface", get(Server::get_tree2_root));
|
||||||
|
|
||||||
|
// router = router.route("/api/interface/{*path}", post(Server::post_tree2));
|
||||||
|
|
||||||
router = route_post!(router, "/api/interface/{*path}", Server::post_tree2);
|
router = route_post!(router, "/api/interface/{*path}", Server::post_tree2);
|
||||||
|
|
||||||
// router = route_get_log(router);
|
// router = route_get_log(router);
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ pub async fn authorize(mut req: Request, next: Next) -> Result<Response<Body>, A
|
|||||||
|
|
||||||
let (_, token) = (header.next(), header.next());
|
let (_, token) = (header.next(), header.next());
|
||||||
|
|
||||||
let token_data: TokenData<Cliams> = match decode_jwt(token.unwrap().to_string()) {
|
let _token_data: TokenData<Cliams> = match decode_jwt(token.unwrap().to_string()) {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
return Err(AuthError {
|
return Err(AuthError {
|
||||||
@@ -68,18 +68,18 @@ pub async fn authorize(mut req: Request, next: Next) -> Result<Response<Body>, A
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Fetch the user details from the database
|
// // Fetch the user details from the database
|
||||||
let current_user = match retrieve_user_by_email(&token_data.claims.email) {
|
// let current_user = match retrieve_user_by_email(&token_data.claims.email) {
|
||||||
Some(user) => user,
|
// Some(user) => user,
|
||||||
None => {
|
// None => {
|
||||||
return Err(AuthError {
|
// return Err(AuthError {
|
||||||
message: "Unauthorized".to_string(),
|
// message: "Unauthorized".to_string(),
|
||||||
status_code: StatusCode::UNAUTHORIZED,
|
// status_code: StatusCode::UNAUTHORIZED,
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
};
|
// };
|
||||||
|
|
||||||
req.extensions_mut().insert(current_user);
|
// req.extensions_mut().insert(current_user);
|
||||||
Ok(next.run(req).await)
|
Ok(next.run(req).await)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,15 +15,15 @@ use crate::{Server, auth::structs::CurrentUser};
|
|||||||
impl Server {
|
impl Server {
|
||||||
pub async fn get_tree2_root(
|
pub async fn get_tree2_root(
|
||||||
State(server): State<Server>,
|
State(server): State<Server>,
|
||||||
Extension(extension): Extension<CurrentUser>,
|
// Extension(extension): Extension<CurrentUser>,
|
||||||
) -> Json<Value> {
|
) -> Json<Value> {
|
||||||
Self::get_tree2(State(server), Path("".into()), Extension(extension)).await
|
Self::get_tree2(State(server), Path("".into())).await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_tree2(
|
pub async fn get_tree2(
|
||||||
State(mut server): State<Server>,
|
State(mut server): State<Server>,
|
||||||
Path(path): Path<String>,
|
Path(path): Path<String>,
|
||||||
Extension(_): Extension<CurrentUser>,
|
// Extension(_): Extension<CurrentUser>,
|
||||||
) -> Json<Value> {
|
) -> Json<Value> {
|
||||||
debug!("GET /api/interface/{}", path);
|
debug!("GET /api/interface/{}", path);
|
||||||
|
|
||||||
@@ -37,10 +37,12 @@ impl Server {
|
|||||||
pub async fn post_tree2(
|
pub async fn post_tree2(
|
||||||
State(mut server): State<Server>,
|
State(mut server): State<Server>,
|
||||||
Path(path): Path<String>,
|
Path(path): Path<String>,
|
||||||
Extension(_): Extension<CurrentUser>,
|
// Extension(_): Extension<CurrentUser>,
|
||||||
Json(tree_message): Json<TreeMessage>,
|
Json(tree_message): Json<TreeMessage>,
|
||||||
) -> Json<Value> {
|
) -> Json<Value> {
|
||||||
debug!("POST /api/interface/{}", path);
|
debug!("POST /api/interface/");
|
||||||
|
|
||||||
|
// Json(Value::Null)
|
||||||
|
|
||||||
let result = server
|
let result = server
|
||||||
.get(&path, tree_message)
|
.get(&path, tree_message)
|
||||||
|
|||||||
Reference in New Issue
Block a user