diff --git a/Cargo.lock b/Cargo.lock index 8ca118705..83c80f758 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,49 +2,19 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "actix" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c616db5fa4b0c40702fb75201c2af7f8aa8f3a2e2c1dda3b0655772aa949666" -dependencies = [ - "actix_derive", - "bitflags 1.3.2", - "bytes 0.4.12", - "crossbeam-channel", - "failure", - "fnv", - "futures 0.1.31", - "libc", - "log 0.4.22", - "parking_lot 0.7.1", - "smallvec 0.6.14", - "tokio 0.1.22", - "tokio-codec", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-signal", - "tokio-tcp", - "tokio-timer", - "trust-dns-proto 0.5.0", - "trust-dns-resolver", - "uuid 0.7.4", -] - [[package]] name = "actix-codec" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 2.6.0", - "bytes 1.6.1", + "bitflags", + "bytes", "futures-core", "futures-sink", "memchr", "pin-project-lite", - "tokio 1.38.1", + "tokio", "tokio-util", "tracing", ] @@ -58,9 +28,9 @@ dependencies = [ "actix-http", "actix-service", "actix-utils", - "actix-web 4.8.0", - "bitflags 2.6.0", - "bytes 1.6.1", + "actix-web", + "bitflags", + "bytes", "derive_more", "futures-core", "http-range", @@ -69,7 +39,7 @@ dependencies = [ "mime_guess", "percent-encoding 2.3.1", "pin-project-lite", - "v_htmlescape 0.15.8", + "v_htmlescape", ] [[package]] @@ -84,28 +54,28 @@ dependencies = [ "actix-utils", "ahash", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags", "brotli", - "bytes 1.6.1", + "bytes", "bytestring", "derive_more", "encoding_rs", "flate2", "futures-core", - "h2 0.3.26", - "http 0.2.12", + "h2", + "http", "httparse", "httpdate", - "itoa 1.0.11", - "language-tags 0.3.2", + "itoa", + "language-tags", "local-channel", "mime", "percent-encoding 2.3.1", "pin-project-lite", "rand 0.8.5", - "sha1 0.10.6", - "smallvec 1.13.2", - "tokio 1.38.1", + "sha1", + "smallvec", + "tokio", "tokio-util", "tracing", "zstd", @@ -117,35 +87,10 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ - "quote 1.0.36", + "quote", "syn 2.0.71", ] -[[package]] -name = "actix-net" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bebfbe6629e0131730746718c9e032b58f02c6ce06ed7c982b9fef6c8545acd" -dependencies = [ - "actix", - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.22", - "mio 0.6.23", - "net2", - "num_cpus", - "slab", - "tokio 0.1.22", - "tokio-codec", - "tokio-current-thread", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tower-service", - "trust-dns-resolver", -] - [[package]] name = "actix-router" version = "0.5.3" @@ -153,8 +98,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" dependencies = [ "bytestring", - "cfg-if 1.0.0", - "http 0.2.12", + "cfg-if", + "http", "regex", "regex-lite", "serde", @@ -168,7 +113,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" dependencies = [ "futures-core", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -182,9 +127,9 @@ dependencies = [ "actix-utils", "futures-core", "futures-util", - "mio 0.8.11", - "socket2 0.5.7", - "tokio 1.38.1", + "mio", + "socket2", + "tokio", "tracing", ] @@ -209,59 +154,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "actix-web" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0ac60f86c65a50b140139f499f4f7c6e49e4b5d88fbfba08e4e3975991f7bf4" -dependencies = [ - "actix", - "actix-net", - "base64 0.10.1", - "bitflags 1.3.2", - "brotli2", - "byteorder", - "bytes 0.4.12", - "cookie 0.11.5", - "encoding", - "failure", - "flate2", - "futures 0.1.31", - "futures-cpupool", - "h2 0.1.26", - "http 0.1.21", - "httparse", - "language-tags 0.2.2", - "lazy_static", - "lazycell", - "log 0.4.22", - "mime", - "mime_guess", - "mio 0.6.23", - "net2", - "num_cpus", - "parking_lot 0.7.1", - "percent-encoding 1.0.1", - "rand 0.6.5", - "regex", - "serde", - "serde_json", - "serde_urlencoded 0.5.5", - "sha1 0.6.1", - "slab", - "smallvec 0.6.14", - "time 0.1.45", - "tokio 0.1.22", - "tokio-current-thread", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "url 1.7.2", - "v_htmlescape 0.4.5", - "version_check 0.1.5", -] - [[package]] name = "actix-web" version = "4.8.0" @@ -278,16 +170,16 @@ dependencies = [ "actix-utils", "actix-web-codegen", "ahash", - "bytes 1.6.1", + "bytes", "bytestring", - "cfg-if 1.0.0", - "cookie 0.16.2", + "cfg-if", + "cookie", "derive_more", "encoding_rs", "futures-core", "futures-util", - "itoa 1.0.11", - "language-tags 0.3.2", + "itoa", + "language-tags", "log 0.4.22", "mime", "once_cell", @@ -296,10 +188,10 @@ dependencies = [ "regex-lite", "serde", "serde_json", - "serde_urlencoded 0.7.1", - "smallvec 1.13.2", - "socket2 0.5.7", - "time 0.3.36", + "serde_urlencoded", + "smallvec", + "socket2", + "time", "url 2.5.2", ] @@ -310,22 +202,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f591380e2e68490b5dfaf1dd1aa0ebe78d84ba7067078512b4ea6e4492d622b8" dependencies = [ "actix-router", - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] -[[package]] -name = "actix_derive" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", -] - [[package]] name = "addr2line" version = "0.22.0" @@ -341,70 +222,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aead" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" -dependencies = [ - "generic-array", -] - -[[package]] -name = "aes" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" -dependencies = [ - "aes-soft", - "aesni", - "cipher", -] - -[[package]] -name = "aes-gcm" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - -[[package]] -name = "aes-soft" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" -dependencies = [ - "cipher", - "opaque-debug", -] - -[[package]] -name = "aesni" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" -dependencies = [ - "cipher", - "opaque-debug", -] - [[package]] name = "ahash" version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "getrandom 0.2.15", "once_cell", - "version_check 0.9.4", + "version_check", "zerocopy", ] @@ -468,15 +295,6 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" -[[package]] -name = "autocfg" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" -dependencies = [ - "autocfg 1.3.0", -] - [[package]] name = "autocfg" version = "1.3.0" @@ -491,28 +309,13 @@ checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -dependencies = [ - "byteorder", -] - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.7" @@ -525,27 +328,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -576,26 +364,6 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "brotli-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "brotli2" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" -dependencies = [ - "brotli-sys", - "libc", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -608,16 +376,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[package]] -name = "bytes" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -dependencies = [ - "byteorder", - "iovec", -] - [[package]] name = "bytes" version = "1.6.1" @@ -630,7 +388,7 @@ version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" dependencies = [ - "bytes 1.6.1", + "bytes", ] [[package]] @@ -643,12 +401,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -670,46 +422,12 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] - -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "convert_case" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" -[[package]] -name = "cookie" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2018768ed1d848cc4d347d551546474025ba820e5db70e4c9aaa349f678bd7" -dependencies = [ - "aes-gcm", - "base64 0.13.1", - "hkdf", - "hmac", - "percent-encoding 2.3.1", - "rand 0.8.5", - "sha2", - "time 0.1.45", -] - [[package]] name = "cookie" version = "0.16.2" @@ -717,8 +435,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding 2.3.1", - "time 0.3.36", - "version_check 0.9.4", + "time", + "version_check", ] [[package]] @@ -746,86 +464,13 @@ dependencies = [ "libc", ] -[[package]] -name = "cpuid-bool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" - [[package]] name = "crc32fast" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" -dependencies = [ - "crossbeam-utils 0.6.6", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg 1.3.0", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset", - "scopeguard 1.2.0", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-utils" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -dependencies = [ - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg 1.3.0", - "cfg-if 0.1.10", - "lazy_static", + "cfg-if", ] [[package]] @@ -838,25 +483,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "ctr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" -dependencies = [ - "cipher", -] - [[package]] name = "deranged" version = "0.3.11" @@ -872,8 +498,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -883,8 +509,8 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] @@ -895,9 +521,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", - "proc-macro2 1.0.86", - "quote 1.0.36", - "rustc_version 0.4.0", + "proc-macro2", + "quote", + "rustc_version", "syn 2.0.71", ] @@ -907,102 +533,23 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7" -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "crypto-common", ] -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -dependencies = [ - "encoding-index-japanese", - "encoding-index-korean", - "encoding-index-simpchinese", - "encoding-index-singlebyte", - "encoding-index-tradchinese", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" - [[package]] name = "encoding_rs" version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1024,37 +571,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "error-chain" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" -dependencies = [ - "backtrace", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 1.0.109", - "synstructure", -] - [[package]] name = "flate2" version = "1.0.30" @@ -1112,28 +628,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags 1.3.2", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - [[package]] name = "futures" version = "0.3.30" @@ -1165,16 +659,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" -[[package]] -name = "futures-cpupool" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -dependencies = [ - "futures 0.1.31", - "num_cpus", -] - [[package]] name = "futures-executor" version = "0.3.30" @@ -1198,8 +682,8 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] @@ -1240,7 +724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", - "version_check 0.9.4", + "version_check", ] [[package]] @@ -1259,7 +743,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1270,70 +754,36 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] -[[package]] -name = "ghash" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" -dependencies = [ - "opaque-debug", - "polyval", -] - [[package]] name = "gimli" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" -[[package]] -name = "h2" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -dependencies = [ - "byteorder", - "bytes 0.4.12", - "fnv", - "futures 0.1.31", - "http 0.1.21", - "indexmap 1.9.3", - "log 0.4.22", - "slab", - "string", - "tokio-io", -] - [[package]] name = "h2" version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ - "bytes 1.6.1", + "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.12", - "indexmap 2.2.6", + "http", + "indexmap", "slab", - "tokio 1.38.1", + "tokio", "tokio-util", "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -1346,57 +796,15 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -[[package]] -name = "hkdf" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" -dependencies = [ - "digest 0.9.0", - "hmac", -] - -[[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", -] - -[[package]] -name = "http" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -dependencies = [ - "bytes 0.4.12", - "fnv", - "itoa 0.4.8", -] - [[package]] name = "http" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes 1.6.1", + "bytes", "fnv", - "itoa 1.0.11", + "itoa", ] [[package]] @@ -1467,16 +875,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg 1.3.0", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.2.6" @@ -1484,29 +882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.5", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipconfig" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f7eadeaf4b52700de180d147c4805f199854600b36faa963d91114827b2ffc" -dependencies = [ - "error-chain", - "socket2 0.3.19", - "widestring", - "winapi 0.3.9", - "winreg", + "hashbrown", ] [[package]] @@ -1520,12 +896,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - [[package]] name = "itoa" version = "1.0.11" @@ -1550,22 +920,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "language-tags" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" - [[package]] name = "language-tags" version = "0.3.2" @@ -1578,24 +932,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "local-channel" version = "0.1.5" @@ -1613,33 +955,14 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" -[[package]] -name = "lock_api" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -dependencies = [ - "owning_ref", - "scopeguard 0.3.3", -] - -[[package]] -name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard 1.2.0", -] - [[package]] name = "lock_api" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ - "autocfg 1.3.0", - "scopeguard 1.2.0", + "autocfg", + "scopeguard", ] [[package]] @@ -1682,7 +1005,7 @@ dependencies = [ "log 0.4.22", "log-mdc", "once_cell", - "parking_lot 0.12.3", + "parking_lot", "rand 0.8.5", "serde", "serde-value", @@ -1691,51 +1014,21 @@ dependencies = [ "thiserror", "thread-id", "typemap-ors", - "winapi 0.3.9", + "winapi", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matches" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg 1.3.0", -] - [[package]] name = "mime" version = "0.3.17" @@ -1761,25 +1054,6 @@ dependencies = [ "adler", ] -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log 0.4.22", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - [[package]] name = "mio" version = "0.8.11" @@ -1792,50 +1066,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "mio-uds" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" -dependencies = [ - "iovec", - "libc", - "mio 0.6.23", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "net2" -version = "0.2.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "nom" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -dependencies = [ - "memchr", - "version_check 0.1.5", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -1848,7 +1078,7 @@ version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "autocfg 1.3.0", + "autocfg", ] [[package]] @@ -1876,29 +1106,23 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "opcua" version = "0.13.0" dependencies = [ "actix-files", - "actix-web 4.8.0", + "actix-web", "arbitrary", "arc-swap", "base64 0.21.7", - "bitflags 2.6.0", + "bitflags", "byteorder", - "bytes 1.6.1", + "bytes", "chrono", "derivative", "env_logger", "foreign-types", - "futures 0.3.30", + "futures", "gethostname", "lazy_static", "libc", @@ -1906,7 +1130,7 @@ dependencies = [ "opcua", "openssl", "openssl-sys", - "parking_lot 0.12.3", + "parking_lot", "regex", "rumqttc", "serde", @@ -1914,10 +1138,10 @@ dependencies = [ "serde_json", "serde_yaml", "tempdir", - "tokio 1.38.1", + "tokio", "tokio-util", "url 1.7.2", - "uuid 1.10.0", + "uuid", ] [[package]] @@ -1947,7 +1171,7 @@ dependencies = [ "opcua", "pico-args", "rand 0.7.3", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -1956,7 +1180,7 @@ version = "0.13.0" dependencies = [ "opcua", "pico-args", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -1965,7 +1189,7 @@ version = "0.13.0" dependencies = [ "opcua", "pico-args", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -1975,7 +1199,7 @@ dependencies = [ "chrono", "log 0.4.22", "opcua", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -1985,7 +1209,7 @@ dependencies = [ "opcua", "pico-args", "rumqttc", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -1994,7 +1218,7 @@ version = "0.13.0" dependencies = [ "opcua", "pico-args", - "tokio 1.38.1", + "tokio", ] [[package]] @@ -2006,29 +1230,14 @@ dependencies = [ "opcua", ] -[[package]] -name = "opcua-web-client" -version = "0.13.0" -dependencies = [ - "actix", - "actix-web 0.7.19", - "futures-util", - "opcua", - "pico-args", - "serde", - "serde_derive", - "serde_json", - "tokio 1.38.1", -] - [[package]] name = "openssl" version = "0.10.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2823eb4c6453ed64055057ea8bd416eda38c71018723869dd043a3b1186115e" dependencies = [ - "bitflags 2.6.0", - "cfg-if 1.0.0", + "bitflags", + "cfg-if", "foreign-types", "libc", "once_cell", @@ -2042,8 +1251,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] @@ -2084,72 +1293,14 @@ dependencies = [ "num-traits", ] -[[package]] -name = "owning_ref" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "parking_lot" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -dependencies = [ - "lock_api 0.1.5", - "parking_lot_core 0.4.0", -] - -[[package]] -name = "parking_lot" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.6.3", - "rustc_version 0.2.3", -] - [[package]] name = "parking_lot" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ - "lock_api 0.4.12", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "parking_lot_core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -dependencies = [ - "libc", - "rand 0.6.5", - "rustc_version 0.2.3", - "smallvec 0.6.14", - "winapi 0.3.9", -] - -[[package]] -name = "parking_lot_core" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66b810a62be75176a80873726630147a5ca780cd33921e0b5709033e66b0a" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "rustc_version 0.2.3", - "smallvec 0.6.14", - "winapi 0.3.9", + "lock_api", + "parking_lot_core", ] [[package]] @@ -2158,10 +1309,10 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "redox_syscall 0.5.3", - "smallvec 1.13.2", + "redox_syscall", + "smallvec", "windows-targets 0.52.6", ] @@ -2207,17 +1358,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" -[[package]] -name = "polyval" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" -dependencies = [ - "cpuid-bool", - "opaque-debug", - "universal-hash", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -2230,15 +1370,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.86" @@ -2248,28 +1379,13 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ - "proc-macro2 1.0.86", + "proc-macro2", ] [[package]] @@ -2282,39 +1398,7 @@ dependencies = [ "libc", "rand_core 0.3.1", "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.8", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2327,7 +1411,7 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] @@ -2341,16 +1425,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.3.1", -] - [[package]] name = "rand_chacha" version = "0.2.2" @@ -2404,15 +1478,6 @@ dependencies = [ "getrandom 0.2.15", ] -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rand_hc" version = "0.2.0" @@ -2422,59 +1487,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi 0.3.9", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.8", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rdrand" version = "0.4.0" @@ -2484,19 +1496,13 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "redox_syscall" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.6.0", + "bitflags", ] [[package]] @@ -2540,17 +1546,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "resolv-conf" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" -dependencies = [ - "hostname", - "quick-error", + "winapi", ] [[package]] @@ -2560,7 +1556,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "cfg-if 1.0.0", + "cfg-if", "getrandom 0.2.15", "libc", "spin", @@ -2574,7 +1570,7 @@ version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d8941c6791801b667d52bfe9ff4fc7c968d4f3f9ae8ae7abdaaa1c966feafc8" dependencies = [ - "bytes 1.6.1", + "bytes", "flume", "futures-util", "log 0.4.22", @@ -2582,7 +1578,7 @@ dependencies = [ "rustls-pemfile", "rustls-webpki", "thiserror", - "tokio 1.38.1", + "tokio", "tokio-rustls", ] @@ -2592,22 +1588,13 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.23", + "semver", ] [[package]] @@ -2668,12 +1655,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "scopeguard" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" - [[package]] name = "scopeguard" version = "1.2.0" @@ -2696,7 +1677,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -2713,27 +1694,12 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.204" @@ -2759,8 +1725,8 @@ version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] @@ -2770,23 +1736,11 @@ version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ - "itoa 1.0.11", + "itoa", "ryu", "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" -dependencies = [ - "dtoa", - "itoa 0.4.8", - "serde", - "url 1.7.2", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2794,7 +1748,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.11", + "itoa", "ryu", "serde", ] @@ -2805,20 +1759,11 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", - "itoa 1.0.11", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "sha1" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" -dependencies = [ - "sha1_smol", + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", ] [[package]] @@ -2827,28 +1772,9 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha1_smol" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -2866,16 +1792,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ - "autocfg 1.3.0", -] - -[[package]] -name = "smallvec" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", + "autocfg", ] [[package]] @@ -2884,17 +1801,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - [[package]] name = "socket2" version = "0.5.7" @@ -2911,39 +1817,7 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ - "lock_api 0.4.12", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "string" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -dependencies = [ - "bytes 0.4.12", -] - -[[package]] -name = "subtle" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" - -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", + "lock_api", ] [[package]] @@ -2952,8 +1826,8 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "unicode-ident", ] @@ -2963,23 +1837,11 @@ version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 1.0.109", - "unicode-xid 0.2.4", -] - [[package]] name = "tempdir" version = "0.3.7" @@ -3014,8 +1876,8 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] @@ -3026,18 +1888,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" dependencies = [ "libc", - "winapi 0.3.9", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -3047,7 +1898,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", - "itoa 1.0.11", + "itoa", "num-conv", "powerfmt", "serde", @@ -3086,30 +1937,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tokio" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "mio 0.6.23", - "num_cpus", - "tokio-codec", - "tokio-current-thread", - "tokio-executor", - "tokio-fs", - "tokio-io", - "tokio-reactor", - "tokio-sync", - "tokio-tcp", - "tokio-threadpool", - "tokio-timer", - "tokio-udp", - "tokio-uds", -] - [[package]] name = "tokio" version = "1.38.1" @@ -3117,101 +1944,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" dependencies = [ "backtrace", - "bytes 1.6.1", + "bytes", "libc", - "mio 0.8.11", + "mio", "num_cpus", - "parking_lot 0.12.3", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] -[[package]] -name = "tokio-codec" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "tokio-io", -] - -[[package]] -name = "tokio-current-thread" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" -dependencies = [ - "futures 0.1.31", - "tokio-executor", -] - -[[package]] -name = "tokio-executor" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", -] - -[[package]] -name = "tokio-fs" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" -dependencies = [ - "futures 0.1.31", - "tokio-io", - "tokio-threadpool", -] - -[[package]] -name = "tokio-io" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.22", -] - [[package]] name = "tokio-macros" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] -[[package]] -name = "tokio-reactor" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log 0.4.22", - "mio 0.6.23", - "num_cpus", - "parking_lot 0.9.0", - "slab", - "tokio-executor", - "tokio-io", - "tokio-sync", -] - [[package]] name = "tokio-rustls" version = "0.24.1" @@ -3219,110 +1974,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", - "tokio 1.38.1", -] - -[[package]] -name = "tokio-signal" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c34c6e548f101053321cba3da7cbb87a610b85555884c41b07da2eb91aff12" -dependencies = [ - "futures 0.1.31", - "libc", - "mio 0.6.23", - "mio-uds", - "signal-hook-registry", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "winapi 0.3.9", -] - -[[package]] -name = "tokio-sync" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" -dependencies = [ - "fnv", - "futures 0.1.31", -] - -[[package]] -name = "tokio-tcp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "mio 0.6.23", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-threadpool" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" -dependencies = [ - "crossbeam-deque", - "crossbeam-queue", - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "lazy_static", - "log 0.4.22", - "num_cpus", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-timer" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" -dependencies = [ - "crossbeam-utils 0.7.2", - "futures 0.1.31", - "slab", - "tokio-executor", -] - -[[package]] -name = "tokio-udp" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "log 0.4.22", - "mio 0.6.23", - "tokio-codec", - "tokio-io", - "tokio-reactor", -] - -[[package]] -name = "tokio-uds" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" -dependencies = [ - "bytes 0.4.12", - "futures 0.1.31", - "iovec", - "libc", - "log 0.4.22", - "mio 0.6.23", - "mio-uds", - "tokio-codec", - "tokio-io", - "tokio-reactor", + "tokio", ] [[package]] @@ -3331,20 +1983,11 @@ version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ - "bytes 1.6.1", + "bytes", "futures-core", "futures-sink", "pin-project-lite", - "tokio 1.38.1", -] - -[[package]] -name = "tower-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" -dependencies = [ - "futures 0.1.31", + "tokio", ] [[package]] @@ -3367,73 +2010,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "trust-dns-proto" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" -dependencies = [ - "byteorder", - "failure", - "futures 0.1.31", - "idna 0.1.5", - "lazy_static", - "log 0.4.22", - "rand 0.5.6", - "smallvec 0.6.14", - "socket2 0.3.19", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tokio-udp", - "url 1.7.2", -] - -[[package]] -name = "trust-dns-proto" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09144f0992b0870fa8d2972cc069cbf1e3c0fda64d1f3d45c4d68d0e0b52ad4e" -dependencies = [ - "byteorder", - "failure", - "futures 0.1.31", - "idna 0.1.5", - "lazy_static", - "log 0.4.22", - "rand 0.5.6", - "smallvec 0.6.14", - "socket2 0.3.19", - "tokio-executor", - "tokio-io", - "tokio-reactor", - "tokio-tcp", - "tokio-timer", - "tokio-udp", - "url 1.7.2", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9f877f7a1ad821ab350505e1f1b146a4960402991787191d6d8cab2ce2de2c" -dependencies = [ - "cfg-if 0.1.10", - "failure", - "futures 0.1.31", - "ipconfig", - "lazy_static", - "log 0.4.22", - "lru-cache", - "resolv-conf", - "smallvec 0.6.14", - "tokio 0.1.22", - "trust-dns-proto 0.6.3", -] - [[package]] name = "typemap-ors" version = "1.0.0" @@ -3464,7 +2040,7 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ - "version_check 0.9.4", + "version_check", ] [[package]] @@ -3488,28 +2064,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "universal-hash" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "unsafe-any-ors" version = "1.0.0" @@ -3537,7 +2091,6 @@ version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "encoding", "idna 0.1.5", "matches", "percent-encoding 1.0.1", @@ -3554,15 +2107,6 @@ dependencies = [ "percent-encoding 2.3.1", ] -[[package]] -name = "uuid" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -dependencies = [ - "rand 0.6.5", -] - [[package]] name = "uuid" version = "1.10.0" @@ -3572,37 +2116,6 @@ dependencies = [ "getrandom 0.2.15", ] -[[package]] -name = "v_escape" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "660b101c07b5d0863deb9e7fb3138777e858d6d2a79f9e6049a27d1cc77c6da6" -dependencies = [ - "v_escape_derive", -] - -[[package]] -name = "v_escape_derive" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ca2a14bc3fc5b64d188b087a7d3a927df87b152e941ccfbc66672e20c467ae" -dependencies = [ - "nom", - "proc-macro2 1.0.86", - "quote 1.0.36", - "syn 1.0.109", -] - -[[package]] -name = "v_htmlescape" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33e939c0d8cf047514fb6ba7d5aac78bc56677a6938b2ee67000b91f2e97e41" -dependencies = [ - "cfg-if 0.1.10", - "v_escape", -] - [[package]] name = "v_htmlescape" version = "0.15.8" @@ -3615,12 +2128,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" - [[package]] name = "version_check" version = "0.9.4" @@ -3633,12 +2140,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3651,7 +2152,7 @@ version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -3664,8 +2165,8 @@ dependencies = [ "bumpalo", "log 0.4.22", "once_cell", - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", "wasm-bindgen-shared", ] @@ -3676,7 +2177,7 @@ version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ - "quote 1.0.36", + "quote", "wasm-bindgen-macro-support", ] @@ -3686,8 +2187,8 @@ version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -3699,18 +2200,6 @@ version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" -[[package]] -name = "widestring" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7157704c2e12e3d2189c507b7482c52820a16dfa4465ba91add92f266667cadb" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -3721,12 +2210,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -3896,25 +2379,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "winreg" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "zerocopy" version = "0.7.35" @@ -3930,8 +2394,8 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ - "proc-macro2 1.0.86", - "quote 1.0.36", + "proc-macro2", + "quote", "syn 2.0.71", ] diff --git a/Cargo.toml b/Cargo.toml index 8a8a6647a..dc532e807 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,6 @@ members = [ "samples/simple-server", "samples/chess-server", "samples/discovery-client", - "samples/web-client", "samples/event-client", "tools/certificate-creator" ] diff --git a/README.md b/README.md index 4055a8570..e9e3d43b3 100644 --- a/README.md +++ b/README.md @@ -68,5 +68,4 @@ The full list of samples: 4. [`chess-server`](samples/chess-server) - an OPC UA server that connects to a chess engine as its back end and updates variables representing the state of the game. 5. [`demo-server`](samples/demo-server) - an OPC UA server that is more complex than the simple server and can be used for compliance testing. 6. [`mqtt-client`](samples/mqtt-client) - an OPC UA client that subscribes to some values and publishes them to an MQTT broker. -7. [`web-client`](samples/web-client) - an OPC UA client that subscribes to some values and streams them over a websocket. -8. [`event-client`](samples/event-client) - an OPC UA client that will connect to a server and subscribe to alarms / events. \ No newline at end of file +7. [`event-client`](samples/event-client) - an OPC UA client that will connect to a server and subscribe to alarms / events. diff --git a/docs/async_client.md b/docs/async_client.md index dab54afbe..61054bfdd 100644 --- a/docs/async_client.md +++ b/docs/async_client.md @@ -47,7 +47,7 @@ The old client, by accident or on purpose, did not support pipelining requests, The service traits are gone. They were entirely unused, except as a way to group services, and potentially as a way for users to have mocking? Keeping them would have been possible, but it would have required a higher MSRV. -Callbacks have changed slightly, mostly due to the way notifications are received. The subscription logic is similar, but the way `MonitoredItems` queued values seemed largely meaningless, as they were always immediately dequeued (or if they weren't that would be a user error?), it seemed like a feature that was mostly unhelpful. The connect/disconnect callbacks are also gone, though they could be reimplemented. It is possible to monitor the state of the session by watching the output of the event loop `poll` method, see the `web-client` sample for an example of how this could be done. +Callbacks have changed slightly, mostly due to the way notifications are received. The subscription logic is similar, but the way `MonitoredItems` queued values seemed largely meaningless, as they were always immediately dequeued (or if they weren't that would be a user error?), it seemed like a feature that was mostly unhelpful. The connect/disconnect callbacks are also gone, though they could be reimplemented. It is possible to monitor the state of the session by watching the output of the event loop `poll` method. The client is no longer behind a lock. Any locking is internal, except for access to the subscription cache directly. This should be a strictly positive change for usability. diff --git a/samples/web-client/Cargo.toml b/samples/web-client/Cargo.toml deleted file mode 100644 index 2e2f37056..000000000 --- a/samples/web-client/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "opcua-web-client" -version = "0.13.0" # OPCUARustVersion -authors = ["Adam Lock "] -edition = "2021" - -[dependencies] -actix = "0.7" -actix-web = "0.7" -serde = "1.0" -serde_derive = "1.0" -serde_json = "1.0" -pico-args = "0.5" -futures-util = "0.3.30" -tokio = { version = "1", features = ["full"] } - -[dependencies.opcua] -path = "../../lib" -version = "0.13.0" # OPCUARustVersion -features = ["client", "console-logging"] - diff --git a/samples/web-client/README.md b/samples/web-client/README.md deleted file mode 100644 index 20fd58581..000000000 --- a/samples/web-client/README.md +++ /dev/null @@ -1,35 +0,0 @@ -`web-client` is an OPC UA client which is also web server. - -Usage: - -Run the `demo-server` in one console: - -``` -cd opcua/samples/demo-server -cargo run -``` - -Then in another console run the `web-client` - -``` -cd opcua/samples/web-client -cargo run -- --url opc.tcp://localhost:4855 -``` - -Then open a web browser such as Firefox or Chrome and load the url `http://localhost:8686`. If all goes well you will see -a simple control page with buttons to Connect / Disconnect. - -Click "Connect" and the page will establish a websocket session with `web-client` which in turn will -connect to the OPC UA server. - -The page has a section to subscribe to a comma separated list of variables by node id. It has a section to - subscribe to events by a node id. These sections are prefilled with node ids that exist on the `demo-server`. - -The `web-client` maintains a separate OPC UA client session for each browser page so each has its own OPC UA client -session and subscription state. If the "Disconnect" button is clicked, the websocket is dropped and in turn the -OPC UA session will be dropped. - -Internally, the web-client consists of an `actix-web` server. There is an `OPCUASession` actor which is bound to a -websocket context. The actor is created by opening `ws://servername:8686/ws/` which connects to the OPC UA -server when it starts. The client session sends messages to the front end over a websocket as JSON and rendered -by the browser. \ No newline at end of file diff --git a/samples/web-client/html/index.html b/samples/web-client/html/index.html deleted file mode 100644 index ba37cd256..000000000 --- a/samples/web-client/html/index.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - Web Socket client - - - - - - -

This sample is intended to be run against the demo-server sample.

- -

Connection

- -

Connect or disconnect from a url

- - - - - - - - - -
-
-
-
- Actions:
- - -
-
Connection Status
Click "Connect"
- -

Monitor Items

- -

You must be connected to subscribe to values or create events

- -
-

Data Change

- -
- - - - - - - - - -
Action
- - -
-
-
- -
-

Events

- -
- - - - - - - - - - - - - - - - -
Event source:
Where the event matches this criteria: - - -
- - -
Select: - -
- -
-

To monitor events you must specify an Event source, i.e. a node that contains an Event Notifier attribute. - Then you specify the type of event to monitor, any criteria to monitor on, and then select - :

-

Note: Any Operand containing / will be treated as a path to an Object or Variable on the server leading from - the - BaseEventType.

-
-
- -

Notifications

- -

Notifications will appear here when they are received.

- -
- -
- -
- -
- - - \ No newline at end of file diff --git a/samples/web-client/src/main.rs b/samples/web-client/src/main.rs deleted file mode 100644 index c344ceea8..000000000 --- a/samples/web-client/src/main.rs +++ /dev/null @@ -1,529 +0,0 @@ -// OPCUA for Rust -// OPCUA for Rust -// SPDX-License-Identifier: MPL-2.0 -// Copyright (C) 2017-2024 Adam Lock - -#[macro_use] -extern crate serde_derive; - -use std::{ - str::FromStr, - sync::Arc, - time::{Duration, Instant}, -}; - -use actix_web::{ - actix::{Actor, ActorContext, AsyncContext, Handler, Message, Running, StreamHandler}, - fs, http, - server::HttpServer, - ws, App, Error, HttpRequest, HttpResponse, -}; -use futures_util::StreamExt; -use opcua::{ - client::{ - Client, ClientBuilder, DataChangeCallback, EventCallback, IdentityToken, Session, - SessionPollResult, - }, - crypto::SecurityPolicy, - types::{ - AttributeId, ContentFilter, ContentFilterElement, DataValue, EventFilter, ExtensionObject, - FilterOperator, MessageSecurityMode, MonitoredItemCreateRequest, NodeId, ObjectId, - ObjectTypeId, Operand, QualifiedName, ReferenceTypeId, SimpleAttributeOperand, - TimestampsToReturn, UAString, UserTokenPolicy, Variant, - }, -}; -use tokio::{pin, runtime::Runtime}; - -struct Args { - help: bool, - http_port: u16, -} - -impl Args { - pub fn parse_args() -> Result> { - let mut args = pico_args::Arguments::from_env(); - Ok(Args { - help: args.contains(["-h", "--help"]), - http_port: args - .opt_value_from_str("--http-port")? - .unwrap_or(DEFAULT_HTTP_PORT), - }) - } - - pub fn usage() { - println!( - r#"Web Client -Usage: - -h, --help Show help - --http-port The port number that this web server will run from (default: {})"#, - DEFAULT_HTTP_PORT - ); - } -} - -const DEFAULT_HTTP_PORT: u16 = 8686; - -fn main() -> Result<(), ()> { - let args = Args::parse_args().map_err(|_| Args::usage())?; - if args.help { - Args::usage(); - return Ok(()); - } - - let runtime = tokio::runtime::Builder::new_multi_thread() - .enable_all() - .build() - .unwrap(); - // Optional - enable OPC UA logging - opcua::console_logging::init(); - // Run the http server - run_server(format!("127.0.0.1:{}", args.http_port), Arc::new(runtime)); - Ok(()) -} - -#[derive(Serialize)] -struct DataChangeEvent { - pub node_id: String, - pub attribute_id: u32, - pub value: DataValue, -} - -impl Message for DataChangeEvent { - type Result = (); -} - -#[derive(Serialize, Message)] -enum Event { - ConnectionStatusChange(bool), - DataChange(Vec), - Event(Option>), -} - -const HEARTBEAT_INTERVAL: Duration = Duration::from_secs(5); -const CLIENT_TIMEOUT: Duration = Duration::from_secs(20); - -/// This is an Actix actor. The fields are the state maintained by the actor -struct OPCUASession { - /// Last ping received from client - hb: Instant, - /// The OPC UA client - client: Client, - /// The OPC UA session - session: Option>, - /// The tokio runtime - rt: Arc, -} - -impl Actor for OPCUASession { - type Context = ws::WebsocketContext; - - /// Method is called on actor start. We start the heartbeat process here. - fn started(&mut self, ctx: &mut Self::Context) { - // Heartbeat - self.hb(ctx); - } - - fn stopping(&mut self, ctx: &mut Self::Context) -> Running { - // Stop the OPC UA session - let rt = self.rt.clone(); - rt.block_on(self.disconnect(ctx)); - Running::Stop - } -} - -/// Handle messages from chat server, we simply send it to peer websocket -impl Handler for OPCUASession { - type Result = (); - - fn handle(&mut self, msg: Event, ctx: &mut Self::Context) { - // This is where we receive OPC UA events. It is here they are turned into JSON - // and sent to the attached web socket. - println!( - "Received event {}", - match &msg { - Event::ConnectionStatusChange(ref connected) => - format!("ConnectionStatusChangeEvent({})", connected), - Event::DataChange(_) => "DataChangeEvent".to_string(), - Event::Event(_) => "Event".to_string(), - } - ); - ctx.text(serde_json::to_string(&msg).unwrap()) - } -} - -/// Handler for `ws::Message` -impl StreamHandler for OPCUASession { - fn handle(&mut self, msg: ws::Message, ctx: &mut Self::Context) { - // process websocket messages - println!("WS: {:?}", msg); - let rt = self.rt.clone(); - match msg { - ws::Message::Ping(msg) => { - self.hb = Instant::now(); - ctx.pong(&msg); - } - ws::Message::Pong(_) => { - self.hb = Instant::now(); - } - ws::Message::Text(msg) => { - let msg = msg.trim(); - if let Some(msg) = msg.strip_prefix("connect ") { - rt.block_on(self.connect(ctx, msg)); - } else if msg.eq("disconnect") { - rt.block_on(self.disconnect(ctx)); - } else if let Some(msg) = msg.strip_prefix("subscribe ") { - // Node ids are comma separated - let node_ids: Vec = msg.split(',').map(|s| s.to_string()).collect(); - rt.block_on(self.subscribe(ctx, node_ids)); - println!("subscription complete"); - } else if let Some(msg) = msg.strip_prefix("add_event ") { - let args: Vec = msg.split(',').map(|s| s.to_string()).collect(); - rt.block_on(self.add_event(ctx, args)); - println!("add event complete"); - } - } - ws::Message::Binary(bin) => ctx.binary(bin), - ws::Message::Close(_) => { - ctx.stop(); - } - } - } -} - -impl OPCUASession { - fn hb(&self, ctx: &mut ::Context) { - // Run a ping-pong timer - ctx.run_interval(HEARTBEAT_INTERVAL, |act, ctx| { - if Instant::now().duration_since(act.hb) > CLIENT_TIMEOUT { - println!("Context is stopping for client timeout"); - ctx.stop(); - } else { - ctx.ping(""); - } - }); - } - - async fn connect(&mut self, ctx: &mut ::Context, opcua_url: &str) { - let _ = self.disconnect(ctx).await; - - let addr = ctx.address(); - let connected = match self - .client - .new_session_from_endpoint( - ( - opcua_url, - SecurityPolicy::None.to_str(), - MessageSecurityMode::None, - UserTokenPolicy::anonymous(), - ), - IdentityToken::Anonymous, - ) - .await - { - Ok((session, event_loop)) => { - let addr_for_connection_status_change = addr.clone(); - tokio::task::spawn(async move { - let stream = event_loop.enter(); - pin!(stream); - while let Some(msg) = stream.next().await { - match msg { - Ok(SessionPollResult::Reconnected(_)) => { - println!("Session is now connected"); - addr_for_connection_status_change - .do_send(Event::ConnectionStatusChange(true)); - } - Ok(SessionPollResult::ConnectionLost(s)) => { - println!("Lost connection with status: {s}"); - addr_for_connection_status_change - .do_send(Event::ConnectionStatusChange(false)); - } - Err(e) => { - println!("Session has been closed fatally, status = {}", e); - } - _ => {} - } - } - }); - self.session = Some(session.clone()); - session.wait_for_connection().await - } - Err(err) => { - println!( - "ERROR: Got an error while trying to connect to session - {}", - err - ); - false - } - }; - - addr.do_send(Event::ConnectionStatusChange(connected)); - } - - async fn disconnect(&mut self, _ctx: &mut ::Context) { - if let Some(ref session) = self.session { - let _ = session.disconnect().await; - } - self.session = None; - } - - fn lhs_operand(op: &str) -> Operand { - Operand::simple_attribute( - ReferenceTypeId::Organizes, - op, - AttributeId::Value, - UAString::null(), - ) - } - - fn rhs_operand(op: &str, lhs: &str) -> Option { - if op.is_empty() { - None - } else if op.contains('/') { - // Treat as a browse path to an event - // ObjectTypeId::BaseEventType - let base_event_type = NodeId::from((0, 2041)); - Some(Operand::simple_attribute( - base_event_type, - op, - AttributeId::Value, - UAString::null(), - )) - } else { - // A couple of lhs values should be parsed to types other than a string - match lhs { - // "SourceNode" => NodeId::from_str(op).map(|v| Operand::literal(v)).ok(), - // "Severity" => u16::from_str(op).map(|v| Operand::literal(v)).ok(), - op => Some(Operand::literal(op)), - } - } - } - - async fn add_event(&mut self, ctx: &mut ::Context, args: Vec) { - if args.len() != 3 { - return; - } - let event_node_id = args.first().unwrap(); - let where_clause = args.get(1).unwrap(); - let select_criteria = args.get(2).unwrap(); - - if let Some(ref mut session) = self.session { - let event_node_id = NodeId::from_str(event_node_id); - if event_node_id.is_err() { - return; - } - let event_node_id = event_node_id.unwrap(); - - let where_clause = if where_clause.is_empty() { - ContentFilter { elements: None } - } else { - let where_parts = where_clause.split('|').collect::>(); - if where_parts.len() != 3 { - println!("Where clause has wrong number of parts"); - return; - } - // Left and right operands - let lhs_str = where_parts.first().unwrap(); - let operator = where_parts.get(1).unwrap(); - let rhs_str = where_parts.get(2).unwrap(); - - let lhs = Self::lhs_operand(lhs_str); - let rhs = Self::rhs_operand(rhs_str, lhs_str); - if rhs.is_none() { - return; - } - - // Operator - let operator = match *operator { - "eq" => FilterOperator::Equals, - "lt" => FilterOperator::LessThan, - "gt" => FilterOperator::GreaterThan, - "lte" => FilterOperator::LessThanOrEqual, - "gte" => FilterOperator::GreaterThanOrEqual, - "like" => FilterOperator::Like, - _ => { - // Unsupported - println!("Unsupported operator"); - return; - } - }; - - // Where clause - ContentFilter { - elements: Some(vec![ContentFilterElement::from(( - operator, - vec![lhs, rhs.unwrap()], - ))]), - } - }; - - // Select clauses - let select_clauses = Some( - select_criteria - .split(',') - .map(|s| SimpleAttributeOperand { - type_definition_id: ObjectTypeId::BaseEventType.into(), - browse_path: Some(vec![QualifiedName::from(s)]), - attribute_id: AttributeId::Value as u32, - index_range: UAString::null(), - }) - .collect(), - ); - - let event_filter = EventFilter { - select_clauses, - where_clause, - }; - - let addr_for_events = ctx.address(); - let event_callback = EventCallback::new(move |evt, _item| { - // Handle events - addr_for_events.do_send(Event::Event(evt.clone())); - }); - - // create a subscription containing events - if let Ok(subscription_id) = session - .create_subscription( - Duration::from_millis(500), - 100, - 300, - 0, - 0, - true, - event_callback, - ) - .await - { - // Monitor the item for events - let mut item_to_create: MonitoredItemCreateRequest = event_node_id.into(); - item_to_create.item_to_monitor.attribute_id = AttributeId::EventNotifier as u32; - item_to_create.requested_parameters.filter = ExtensionObject::from_encodable( - ObjectId::EventFilter_Encoding_DefaultBinary, - &event_filter, - ); - if let Ok(result) = session - .create_monitored_items( - subscription_id, - TimestampsToReturn::Both, - vec![item_to_create], - ) - .await - { - println!("Result of subscribing to event = {:?}", result); - } else { - println!("Cannot create monitored event!"); - } - } else { - println!("Cannot create event subscription!"); - } - } - } - - async fn subscribe(&mut self, ctx: &mut ::Context, node_ids: Vec) { - if let Some(ref mut session) = self.session { - // Create a subscription - println!("Creating subscription"); - - // Creates our subscription - let addr_for_datachange = ctx.address(); - - let data_change_callback = DataChangeCallback::new(move |data_value, item| { - // Changes will be turned into a list of change events that sent to corresponding - // web socket to be sent to the client. - let item_to_monitor = item.item_to_monitor(); - let change = DataChangeEvent { - node_id: item_to_monitor.node_id.clone().into(), - attribute_id: item_to_monitor.attribute_id, - value: data_value, - }; - // Send the changes to the websocket session - addr_for_datachange.do_send(Event::DataChange(vec![change])); - }); - - if let Ok(subscription_id) = session - .create_subscription( - Duration::from_millis(500), - 10, - 30, - 0, - 0, - true, - data_change_callback, - ) - .await - { - println!("Created a subscription with id = {}", subscription_id); - // Create some monitored items - let items_to_create: Vec = node_ids - .iter() - .map(|node_id| { - let node_id = NodeId::from_str(node_id).unwrap(); // Trust client to not break this - node_id.into() - }) - .collect(); - if let Ok(_results) = session - .create_monitored_items( - subscription_id, - TimestampsToReturn::Both, - items_to_create, - ) - .await - { - println!("Created monitored items"); - } else { - println!("Cannot create monitored items!"); - } - } else { - println!("Cannot create a subscription!"); - } - } - } -} - -/// Handler for creating a new websocket -fn ws_create_request(r: &HttpRequest) -> Result { - let client = ClientBuilder::new() - .application_name("WebSocketClient") - .application_uri("urn:WebSocketClient") - .trust_server_certs(true) - .create_sample_keypair(true) - .session_retry_limit(3) - .client() - .unwrap(); - - ws::start( - r, - OPCUASession { - hb: Instant::now(), - client, - session: None, - rt: r.state().runtime.clone(), - }, - ) -} - -#[derive(Clone)] -struct HttpServerState { - runtime: Arc, -} - -fn run_server(address: String, rt: Arc) { - HttpServer::new(move || { - let base_path = "./html"; - let state = HttpServerState { - runtime: rt.clone(), - }; - App::with_state(state) - // Websocket - .resource("/ws/", |r| r.method(http::Method::GET).f(ws_create_request)) - // Static content - .handler( - "/", - fs::StaticFiles::new(base_path) - .unwrap() - .index_file("index.html"), - ) - }) - .bind(address) - .unwrap() - .run(); -}