mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-01-31 07:55:23 +00:00
Update dependencies.
This commit is contained in:
parent
c426e48b8d
commit
56336fa685
230
Cargo.lock
generated
230
Cargo.lock
generated
@ -620,6 +620,12 @@ version = "0.21.7"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "base64"
|
||||||
|
version = "0.22.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "base64ct"
|
name = "base64ct"
|
||||||
version = "1.6.0"
|
version = "1.6.0"
|
||||||
@ -662,11 +668,11 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bindgen"
|
name = "bindgen"
|
||||||
version = "0.65.1"
|
version = "0.66.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
|
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 2.5.0",
|
||||||
"cexpr",
|
"cexpr",
|
||||||
"clang-sys",
|
"clang-sys",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
@ -680,7 +686,7 @@ dependencies = [
|
|||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"shlex",
|
"shlex",
|
||||||
"syn 2.0.53",
|
"syn 2.0.53",
|
||||||
"which",
|
"which 4.4.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -802,7 +808,7 @@ dependencies = [
|
|||||||
"async-trait",
|
"async-trait",
|
||||||
"aws-sign-v4",
|
"aws-sign-v4",
|
||||||
"backend",
|
"backend",
|
||||||
"base64 0.21.7",
|
"base64 0.22.0",
|
||||||
"bigdecimal",
|
"bigdecimal",
|
||||||
"bytes",
|
"bytes",
|
||||||
"chirpstack_api",
|
"chirpstack_api",
|
||||||
@ -813,6 +819,7 @@ dependencies = [
|
|||||||
"diesel-async",
|
"diesel-async",
|
||||||
"diesel_migrations",
|
"diesel_migrations",
|
||||||
"dotenv",
|
"dotenv",
|
||||||
|
"email_address",
|
||||||
"futures",
|
"futures",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"gcp_auth",
|
"gcp_auth",
|
||||||
@ -865,7 +872,7 @@ dependencies = [
|
|||||||
"tokio-postgres-rustls",
|
"tokio-postgres-rustls",
|
||||||
"tokio-reactor-trait",
|
"tokio-reactor-trait",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"toml",
|
"toml 0.8.12",
|
||||||
"tonic",
|
"tonic",
|
||||||
"tonic-reflection",
|
"tonic-reflection",
|
||||||
"tonic-web",
|
"tonic-web",
|
||||||
@ -875,7 +882,6 @@ dependencies = [
|
|||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
"urlencoding",
|
"urlencoding",
|
||||||
"uuid",
|
"uuid",
|
||||||
"validator",
|
|
||||||
"warp",
|
"warp",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -909,7 +915,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
"toml",
|
"toml 0.8.12",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
@ -1058,6 +1064,15 @@ version = "0.9.6"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "convert_case"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-segmentation",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie-factory"
|
name = "cookie-factory"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
@ -1506,6 +1521,15 @@ dependencies = [
|
|||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "email_address"
|
||||||
|
version = "0.2.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2153bd83ebc09db15bcbdc3e2194d901804952e3dc96967e1cd3b0c5c32d112"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ena"
|
name = "ena"
|
||||||
version = "0.14.2"
|
version = "0.14.2"
|
||||||
@ -1820,27 +1844,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gcp_auth"
|
name = "gcp_auth"
|
||||||
version = "0.9.0"
|
version = "0.11.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d3b20d3058763d26d88e6e7a49998841e5296735b00dbfb064ff7cb142933dd"
|
checksum = "0945a7cceec112dc8a4a0cfa10d1c3b7bc227652d09f7edcab42ef51cbfc46e3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base64 0.21.7",
|
"base64 0.22.0",
|
||||||
"dirs-next",
|
"chrono",
|
||||||
|
"home",
|
||||||
"hyper",
|
"hyper",
|
||||||
"hyper-rustls",
|
"hyper-rustls 0.25.0",
|
||||||
"ring 0.16.20",
|
"ring 0.17.8",
|
||||||
"rustls 0.21.10",
|
"rustls 0.22.2",
|
||||||
"rustls-pemfile 1.0.4",
|
"rustls-pemfile 2.1.1",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"time",
|
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-futures",
|
"tracing-futures",
|
||||||
"url",
|
"url",
|
||||||
"which",
|
"which 6.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1944,9 +1968,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "handlebars"
|
name = "handlebars"
|
||||||
version = "4.5.0"
|
version = "5.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225"
|
checksum = "ab283476b99e66691dee3f1640fea91487a8d81f50fb5ecc75538f8f8879a1e4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"pest",
|
"pest",
|
||||||
@ -2161,11 +2185,26 @@ dependencies = [
|
|||||||
"http",
|
"http",
|
||||||
"hyper",
|
"hyper",
|
||||||
"rustls 0.21.10",
|
"rustls 0.21.10",
|
||||||
"rustls-native-certs 0.6.3",
|
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-rustls 0.24.1",
|
"tokio-rustls 0.24.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper-rustls"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "399c78f9338483cb7e630c8474b07268983c6bd5acee012e4211f9f7bb21b070"
|
||||||
|
dependencies = [
|
||||||
|
"futures-util",
|
||||||
|
"http",
|
||||||
|
"hyper",
|
||||||
|
"rustls 0.22.2",
|
||||||
|
"rustls-native-certs 0.7.0",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"tokio",
|
||||||
|
"tokio-rustls 0.25.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper-timeout"
|
name = "hyper-timeout"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@ -2207,16 +2246,6 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "idna"
|
|
||||||
version = "0.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-bidi",
|
|
||||||
"unicode-normalization",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
@ -2533,7 +2562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada"
|
checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"toml",
|
"toml 0.7.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3253,7 +3282,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
|
checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"toml_edit",
|
"toml_edit 0.19.15",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-error-attr",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error-attr"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3317,7 +3370,7 @@ dependencies = [
|
|||||||
"regex",
|
"regex",
|
||||||
"syn 2.0.53",
|
"syn 2.0.53",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"which",
|
"which 4.4.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3544,7 +3597,7 @@ dependencies = [
|
|||||||
"http",
|
"http",
|
||||||
"http-body",
|
"http-body",
|
||||||
"hyper",
|
"hyper",
|
||||||
"hyper-rustls",
|
"hyper-rustls 0.24.2",
|
||||||
"ipnet",
|
"ipnet",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"log",
|
"log",
|
||||||
@ -3613,18 +3666,19 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rquickjs"
|
name = "rquickjs"
|
||||||
version = "0.3.1"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6db7788c2818f4546daabe9ae2d1ee2f4db61ab1998d4b483494c4193cc38dab"
|
checksum = "ad7f63201fa6f2ff8173e4758ea552549d687d8f63003361a8b5c50f7c446ded"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rquickjs-core",
|
"rquickjs-core",
|
||||||
|
"rquickjs-macro",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rquickjs-core"
|
name = "rquickjs-core"
|
||||||
version = "0.3.1"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b12cf8646fe0af5bcff2822ccd162990f0679a1f9287c7257f4f4193a9d31ea9"
|
checksum = "cad00eeddc0f88af54ee202c8385fb214fe0423897c056a7df8369fb482e3695"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"relative-path",
|
"relative-path",
|
||||||
@ -3632,10 +3686,28 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rquickjs-sys"
|
name = "rquickjs-macro"
|
||||||
version = "0.3.1"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b747058afd4d988d056e4972ec8516a5a86fdfc103c1c1485bfee8966a0743ae"
|
checksum = "f27b39e889cc951e3e5f6b74012f943e642fa0fac51a8552948751f19a9b62f8"
|
||||||
|
dependencies = [
|
||||||
|
"convert_case",
|
||||||
|
"fnv",
|
||||||
|
"ident_case",
|
||||||
|
"indexmap 2.2.5",
|
||||||
|
"proc-macro-crate",
|
||||||
|
"proc-macro-error",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"rquickjs-core",
|
||||||
|
"syn 2.0.53",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rquickjs-sys"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "120dbbc3296de9b96de8890091635d46f3506cd38b4e8f21800c386c035d64fa"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"cc",
|
"cc",
|
||||||
@ -4661,7 +4733,19 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"toml_edit",
|
"toml_edit 0.19.15",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "toml"
|
||||||
|
version = "0.8.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
"serde_spanned",
|
||||||
|
"toml_datetime",
|
||||||
|
"toml_edit 0.22.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4683,7 +4767,20 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"winnow",
|
"winnow 0.5.40",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "toml_edit"
|
||||||
|
version = "0.22.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c12219811e0c1ba077867254e5ad62ee2c9c190b0d957110750ac0cda1ae96cd"
|
||||||
|
dependencies = [
|
||||||
|
"indexmap 2.2.5",
|
||||||
|
"serde",
|
||||||
|
"serde_spanned",
|
||||||
|
"toml_datetime",
|
||||||
|
"winnow 0.6.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4941,6 +5038,12 @@ dependencies = [
|
|||||||
"tinyvec",
|
"tinyvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-segmentation"
|
||||||
|
version = "1.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-width"
|
name = "unicode-width"
|
||||||
version = "0.1.11"
|
version = "0.1.11"
|
||||||
@ -4978,7 +5081,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
|
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"idna 0.5.0",
|
"idna",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
@ -5005,21 +5108,6 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "validator"
|
|
||||||
version = "0.16.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b92f40481c04ff1f4f61f304d61793c7b56ff76ac1469f1beb199b1445b253bd"
|
|
||||||
dependencies = [
|
|
||||||
"idna 0.4.0",
|
|
||||||
"lazy_static",
|
|
||||||
"regex",
|
|
||||||
"serde",
|
|
||||||
"serde_derive",
|
|
||||||
"serde_json",
|
|
||||||
"url",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "valuable"
|
name = "valuable"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@ -5199,6 +5287,19 @@ dependencies = [
|
|||||||
"rustix 0.38.31",
|
"rustix 0.38.31",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "which"
|
||||||
|
version = "6.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"home",
|
||||||
|
"once_cell",
|
||||||
|
"rustix 0.38.31",
|
||||||
|
"windows-sys 0.52.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "whoami"
|
name = "whoami"
|
||||||
version = "1.5.1"
|
version = "1.5.1"
|
||||||
@ -5391,6 +5492,15 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winnow"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.50.0"
|
version = "0.50.0"
|
||||||
|
@ -16,7 +16,7 @@ rand = "0.8"
|
|||||||
aes-kw = "0.2"
|
aes-kw = "0.2"
|
||||||
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false }
|
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false }
|
||||||
chrono = { version = "0.4", features = ["serde"] }
|
chrono = { version = "0.4", features = ["serde"] }
|
||||||
tokio = { version = "1.32", features = ["macros" ] }
|
tokio = { version = "1.36", features = ["macros" ] }
|
||||||
chirpstack_api = { path = "../api/rust", default-features = false, features = ["json"] }
|
chirpstack_api = { path = "../api/rust", default-features = false, features = ["json"] }
|
||||||
|
|
||||||
# Development and testing
|
# Development and testing
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
], default-features = true }
|
], default-features = true }
|
||||||
async-trait = "0.1.73"
|
async-trait = "0.1.73"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
tokio = { version = "1.32", features = ["macros", "rt-multi-thread"] }
|
tokio = { version = "1.36", features = ["macros", "rt-multi-thread"] }
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
toml = "0.7"
|
toml = "0.8"
|
||||||
|
@ -467,7 +467,10 @@ mod test {
|
|||||||
sleep(Duration::from_millis(100)).await;
|
sleep(Duration::from_millis(100)).await;
|
||||||
|
|
||||||
let redis_client = redis::Client::open(redis_url).unwrap();
|
let redis_client = redis::Client::open(redis_url).unwrap();
|
||||||
let mut redis_conn = redis_client.get_async_connection().await.unwrap();
|
let mut redis_conn = redis_client
|
||||||
|
.get_multiplexed_async_connection()
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
println!("Uplink");
|
println!("Uplink");
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ license = "MIT"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# CLI interface
|
# CLI interface
|
||||||
clap = { version = "4.4", features = ["derive"] }
|
clap = { version = "4.5", features = ["derive"] }
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
serde = { version = "1.0", features = ["derive", "rc"] }
|
serde = { version = "1.0", features = ["derive", "rc"] }
|
||||||
@ -19,11 +19,11 @@ serde_yaml = "0.9"
|
|||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde_urlencoded = "0.7"
|
serde_urlencoded = "0.7"
|
||||||
humantime-serde = "1.1"
|
humantime-serde = "1.1"
|
||||||
toml = "0.7"
|
toml = "0.8"
|
||||||
handlebars = "4.4"
|
handlebars = "5.1"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
validator = "0.16"
|
email_address = "0.2"
|
||||||
diesel = { version = "2.1", features = [
|
diesel = { version = "2.1", features = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"uuid",
|
"uuid",
|
||||||
@ -65,7 +65,7 @@ hmac = "0.12"
|
|||||||
sha2 = "0.10"
|
sha2 = "0.10"
|
||||||
urlencoding = "2.1"
|
urlencoding = "2.1"
|
||||||
geohash = "0.13"
|
geohash = "0.13"
|
||||||
gcp_auth = "0.9"
|
gcp_auth = "0.11"
|
||||||
lapin = "2.3"
|
lapin = "2.3"
|
||||||
tokio-executor-trait = "2.1"
|
tokio-executor-trait = "2.1"
|
||||||
tokio-reactor-trait = "1.1"
|
tokio-reactor-trait = "1.1"
|
||||||
@ -89,7 +89,7 @@ futures = "0.3"
|
|||||||
futures-util = "0.3"
|
futures-util = "0.3"
|
||||||
http = "0.2"
|
http = "0.2"
|
||||||
http-body = "0.4"
|
http-body = "0.4"
|
||||||
rust-embed = "8.1"
|
rust-embed = "8.3"
|
||||||
mime_guess = "2.0"
|
mime_guess = "2.0"
|
||||||
tower-http = { version = "0.4", features = ["trace", "auth"] }
|
tower-http = { version = "0.4", features = ["trace", "auth"] }
|
||||||
|
|
||||||
@ -103,10 +103,10 @@ rand_core = { version = "0.6", features = ["std"] }
|
|||||||
jsonwebtoken = "9.2"
|
jsonwebtoken = "9.2"
|
||||||
rustls = "0.22"
|
rustls = "0.22"
|
||||||
rustls-native-certs = "0.7"
|
rustls-native-certs = "0.7"
|
||||||
rustls-pemfile = "2.0"
|
rustls-pemfile = "2.1"
|
||||||
rsa = "0.9"
|
rsa = "0.9"
|
||||||
rcgen = { version = "0.12", features = [ "x509-parser" ] }
|
rcgen = { version = "0.12", features = [ "x509-parser" ] }
|
||||||
openidconnect = { version = "3.3", features = ["accept-rfc3339-timestamps"] }
|
openidconnect = { version = "3.5", features = ["accept-rfc3339-timestamps"] }
|
||||||
oauth2 = "4.4"
|
oauth2 = "4.4"
|
||||||
|
|
||||||
# MQTT
|
# MQTT
|
||||||
@ -114,7 +114,7 @@ rumqttc = { version = "0.24", features = ["url"] }
|
|||||||
hex = "0.4"
|
hex = "0.4"
|
||||||
|
|
||||||
# Codecs
|
# Codecs
|
||||||
rquickjs = { version = "0.3", features = [
|
rquickjs = { version = "0.5", features = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"loader",
|
"loader",
|
||||||
"array-buffer",
|
"array-buffer",
|
||||||
@ -123,14 +123,14 @@ rquickjs = { version = "0.3", features = [
|
|||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
uuid = { version = "1.4", features = ["v4", "serde"] }
|
uuid = { version = "1.8", features = ["v4", "serde"] }
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
async-trait = "0.1"
|
async-trait = "0.1"
|
||||||
aes = "0.8"
|
aes = "0.8"
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
base64 = "0.21"
|
base64 = "0.22"
|
||||||
async-recursion = "1.0"
|
async-recursion = "1.0"
|
||||||
regex = "1.9"
|
regex = "1.10"
|
||||||
petgraph = "0.6"
|
petgraph = "0.6"
|
||||||
prometheus-client = "0.22"
|
prometheus-client = "0.22"
|
||||||
pin-project = "1.1"
|
pin-project = "1.1"
|
||||||
@ -138,7 +138,7 @@ pin-project = "1.1"
|
|||||||
# Development and testing
|
# Development and testing
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
httpmock = "0.7.0"
|
httpmock = "0.7.0"
|
||||||
bytes = "1.4"
|
bytes = "1.5"
|
||||||
dotenv = "0.15"
|
dotenv = "0.15"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
@ -52,16 +52,17 @@ impl Handler for Plugin {
|
|||||||
|
|
||||||
ctx.with::<_, Result<Response>>(|ctx| {
|
ctx.with::<_, Result<Response>>(|ctx| {
|
||||||
let m = ctx
|
let m = ctx
|
||||||
|
.clone()
|
||||||
.compile("script", self.script.clone())
|
.compile("script", self.script.clone())
|
||||||
.context("Compile script")?;
|
.context("Compile script")?;
|
||||||
let func: rquickjs::Function = m.get("handle").context("Get handle function")?;
|
let func: rquickjs::Function = m.get("handle").context("Get handle function")?;
|
||||||
|
|
||||||
let device_variables = rquickjs::Object::new(ctx)?;
|
let device_variables = rquickjs::Object::new(ctx.clone())?;
|
||||||
for (k, v) in &req.device_variables {
|
for (k, v) in &req.device_variables {
|
||||||
device_variables.set(k, v)?;
|
device_variables.set(k, v)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let input = rquickjs::Object::new(ctx)?;
|
let input = rquickjs::Object::new(ctx.clone())?;
|
||||||
input.set("regionConfigId", req.region_config_id.clone())?;
|
input.set("regionConfigId", req.region_config_id.clone())?;
|
||||||
input.set("regionCommonName", req.region_common_name.to_string())?;
|
input.set("regionCommonName", req.region_common_name.to_string())?;
|
||||||
input.set("devEui", req.dev_eui.to_string())?;
|
input.set("devEui", req.dev_eui.to_string())?;
|
||||||
@ -81,7 +82,7 @@ impl Handler for Plugin {
|
|||||||
let mut uplink_history: Vec<rquickjs::Object> = Vec::new();
|
let mut uplink_history: Vec<rquickjs::Object> = Vec::new();
|
||||||
|
|
||||||
for uh in &req.uplink_history {
|
for uh in &req.uplink_history {
|
||||||
let obj = rquickjs::Object::new(ctx)?;
|
let obj = rquickjs::Object::new(ctx.clone())?;
|
||||||
obj.set("fCnt", uh.f_cnt)?;
|
obj.set("fCnt", uh.f_cnt)?;
|
||||||
obj.set("maxSnr", uh.max_snr)?;
|
obj.set("maxSnr", uh.max_snr)?;
|
||||||
obj.set("maxRssi", uh.max_rssi)?;
|
obj.set("maxRssi", uh.max_rssi)?;
|
||||||
|
@ -249,7 +249,7 @@ pub fn ul_meta_data_to_rx_info(ul_meta_data: &ULMetaData) -> Result<Vec<gw::Upli
|
|||||||
fine_time_since_gps_epoch: if gw_info.fine_recv_time.is_some() {
|
fine_time_since_gps_epoch: if gw_info.fine_recv_time.is_some() {
|
||||||
let ts = ul_meta_data
|
let ts = ul_meta_data
|
||||||
.recv_time
|
.recv_time
|
||||||
.duration_round(Duration::try_seconds(1).unwrap_or_default())?;
|
.duration_round(Duration::try_seconds(1).unwrap())?;
|
||||||
let ts = ts + Duration::nanoseconds(gw_info.fine_recv_time.unwrap() as i64);
|
let ts = ts + Duration::nanoseconds(gw_info.fine_recv_time.unwrap() as i64);
|
||||||
|
|
||||||
Some(ts.to_gps_time().to_std()?.into())
|
Some(ts.to_gps_time().to_std()?.into())
|
||||||
|
@ -62,10 +62,10 @@ fn _rquickjs_to_struct_val(val: &rquickjs::Value) -> Option<pbjson_types::value:
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn struct_to_rquickjs<'js>(
|
pub fn struct_to_rquickjs<'js>(
|
||||||
ctx: rquickjs::Ctx<'js>,
|
ctx: &rquickjs::Ctx<'js>,
|
||||||
obj: &prost_types::Struct,
|
obj: &prost_types::Struct,
|
||||||
) -> rquickjs::Object<'js> {
|
) -> rquickjs::Object<'js> {
|
||||||
let out = rquickjs::Object::new(ctx).unwrap();
|
let out = rquickjs::Object::new(ctx.clone()).unwrap();
|
||||||
|
|
||||||
for (k, v) in &obj.fields {
|
for (k, v) in &obj.fields {
|
||||||
out.set(k, _struct_to_rquickjs(ctx, v)).unwrap();
|
out.set(k, _struct_to_rquickjs(ctx, v)).unwrap();
|
||||||
@ -75,27 +75,27 @@ pub fn struct_to_rquickjs<'js>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn _struct_to_rquickjs<'js>(
|
fn _struct_to_rquickjs<'js>(
|
||||||
ctx: rquickjs::Ctx<'js>,
|
ctx: &rquickjs::Ctx<'js>,
|
||||||
val: &prost_types::Value,
|
val: &prost_types::Value,
|
||||||
) -> rquickjs::Value<'js> {
|
) -> rquickjs::Value<'js> {
|
||||||
match &val.kind {
|
match &val.kind {
|
||||||
None => rquickjs::Value::new_null(ctx),
|
None => rquickjs::Value::new_null(ctx.clone()),
|
||||||
Some(val) => match val {
|
Some(val) => match val {
|
||||||
prost_types::value::Kind::NullValue(_) => rquickjs::Value::new_null(ctx),
|
prost_types::value::Kind::NullValue(_) => rquickjs::Value::new_null(ctx.clone()),
|
||||||
prost_types::value::Kind::NumberValue(v) => rquickjs::Value::new_float(ctx, *v),
|
prost_types::value::Kind::NumberValue(v) => rquickjs::Value::new_float(ctx.clone(), *v),
|
||||||
prost_types::value::Kind::StringValue(v) => {
|
prost_types::value::Kind::StringValue(v) => {
|
||||||
rquickjs::Value::from_string(rquickjs::String::from_str(ctx, v).unwrap())
|
rquickjs::Value::from_string(rquickjs::String::from_str(ctx.clone(), v).unwrap())
|
||||||
}
|
}
|
||||||
prost_types::value::Kind::BoolValue(v) => rquickjs::Value::new_bool(ctx, *v),
|
prost_types::value::Kind::BoolValue(v) => rquickjs::Value::new_bool(ctx.clone(), *v),
|
||||||
prost_types::value::Kind::StructValue(v) => {
|
prost_types::value::Kind::StructValue(v) => {
|
||||||
let out = rquickjs::Object::new(ctx).unwrap();
|
let out = rquickjs::Object::new(ctx.clone()).unwrap();
|
||||||
for (k, v) in &v.fields {
|
for (k, v) in &v.fields {
|
||||||
out.set(k, _struct_to_rquickjs(ctx, v)).unwrap();
|
out.set(k, _struct_to_rquickjs(ctx, v)).unwrap();
|
||||||
}
|
}
|
||||||
rquickjs::Value::from_object(out)
|
rquickjs::Value::from_object(out)
|
||||||
}
|
}
|
||||||
prost_types::value::Kind::ListValue(v) => {
|
prost_types::value::Kind::ListValue(v) => {
|
||||||
let out = rquickjs::Array::new(ctx).unwrap();
|
let out = rquickjs::Array::new(ctx.clone()).unwrap();
|
||||||
for (i, v) in v.values.iter().enumerate() {
|
for (i, v) in v.values.iter().enumerate() {
|
||||||
out.set(i, _struct_to_rquickjs(ctx, v)).unwrap();
|
out.set(i, _struct_to_rquickjs(ctx, v)).unwrap();
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ pub async fn decode(
|
|||||||
let out = ctx.with(|ctx| -> Result<pbjson_types::Struct> {
|
let out = ctx.with(|ctx| -> Result<pbjson_types::Struct> {
|
||||||
// We need to export the Buffer class, as eval / eval_with_options
|
// We need to export the Buffer class, as eval / eval_with_options
|
||||||
// does not allow using import statement.
|
// does not allow using import statement.
|
||||||
let buff: rquickjs::Module = ctx.compile(
|
let buff: rquickjs::Module = ctx.clone().compile(
|
||||||
"b",
|
"b",
|
||||||
r#"
|
r#"
|
||||||
import { Buffer } from "buffer";
|
import { Buffer } from "buffer";
|
||||||
@ -59,11 +59,11 @@ pub async fn decode(
|
|||||||
)?;
|
)?;
|
||||||
let buff: rquickjs::Function = buff.get("Buffer")?;
|
let buff: rquickjs::Function = buff.get("Buffer")?;
|
||||||
|
|
||||||
let input = rquickjs::Object::new(ctx)?;
|
let input = rquickjs::Object::new(ctx.clone())?;
|
||||||
input.set("bytes", b.into_js(ctx)?)?;
|
input.set("bytes", b.into_js(&ctx)?)?;
|
||||||
input.set("fPort", f_port.into_js(ctx)?)?;
|
input.set("fPort", f_port.into_js(&ctx)?)?;
|
||||||
input.set("recvTime", recv_time.into_js(ctx)?)?;
|
input.set("recvTime", recv_time.into_js(&ctx)?)?;
|
||||||
input.set("variables", variables.into_js(ctx)?)?;
|
input.set("variables", variables.into_js(&ctx)?)?;
|
||||||
|
|
||||||
let globals = ctx.globals();
|
let globals = ctx.globals();
|
||||||
globals.set("chirpstack_input", input)?;
|
globals.set("chirpstack_input", input)?;
|
||||||
@ -134,7 +134,7 @@ pub async fn encode(
|
|||||||
ctx.with(|ctx| {
|
ctx.with(|ctx| {
|
||||||
// We need to export the Buffer class, as eval / eval_with_options
|
// We need to export the Buffer class, as eval / eval_with_options
|
||||||
// does not allow using import statement.
|
// does not allow using import statement.
|
||||||
let buff: rquickjs::Module = ctx.compile(
|
let buff: rquickjs::Module = ctx.clone().compile(
|
||||||
"b",
|
"b",
|
||||||
r#"
|
r#"
|
||||||
import { Buffer } from "buffer";
|
import { Buffer } from "buffer";
|
||||||
@ -143,10 +143,10 @@ pub async fn encode(
|
|||||||
)?;
|
)?;
|
||||||
let buff: rquickjs::Function = buff.get("Buffer")?;
|
let buff: rquickjs::Function = buff.get("Buffer")?;
|
||||||
|
|
||||||
let input = rquickjs::Object::new(ctx)?;
|
let input = rquickjs::Object::new(ctx.clone())?;
|
||||||
input.set("fPort", f_port.into_js(ctx)?)?;
|
input.set("fPort", f_port.into_js(&ctx)?)?;
|
||||||
input.set("variables", variables.into_js(ctx)?)?;
|
input.set("variables", variables.into_js(&ctx)?)?;
|
||||||
input.set("data", convert::struct_to_rquickjs(ctx, s))?;
|
input.set("data", convert::struct_to_rquickjs(&ctx, s))?;
|
||||||
|
|
||||||
let globals = ctx.globals();
|
let globals = ctx.globals();
|
||||||
globals.set("chirpstack_input", input)?;
|
globals.set("chirpstack_input", input)?;
|
||||||
|
@ -46,7 +46,7 @@ impl Integration {
|
|||||||
pub async fn new(conf: &GcpPubSubConfiguration) -> Result<Integration> {
|
pub async fn new(conf: &GcpPubSubConfiguration) -> Result<Integration> {
|
||||||
trace!("Initializing GCP Pub-Sub integration");
|
trace!("Initializing GCP Pub-Sub integration");
|
||||||
let service_account = CustomServiceAccount::from_json(&conf.credentials_file)?;
|
let service_account = CustomServiceAccount::from_json(&conf.credentials_file)?;
|
||||||
let auth_manager = AuthenticationManager::from(service_account);
|
let auth_manager = AuthenticationManager::try_from(service_account)?;
|
||||||
|
|
||||||
Ok(Integration {
|
Ok(Integration {
|
||||||
json: match Encoding::try_from(conf.encoding)
|
json: match Encoding::try_from(conf.encoding)
|
||||||
|
@ -2,6 +2,7 @@ use anyhow::Result;
|
|||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use diesel::{dsl, prelude::*};
|
use diesel::{dsl, prelude::*};
|
||||||
use diesel_async::RunQueryDsl;
|
use diesel_async::RunQueryDsl;
|
||||||
|
use email_address::EmailAddress;
|
||||||
use pbkdf2::{
|
use pbkdf2::{
|
||||||
password_hash::{PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
|
password_hash::{PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
|
||||||
Algorithm, Pbkdf2,
|
Algorithm, Pbkdf2,
|
||||||
@ -9,7 +10,6 @@ use pbkdf2::{
|
|||||||
use rand_core::OsRng;
|
use rand_core::OsRng;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
use validator::validate_email;
|
|
||||||
|
|
||||||
use super::error::Error;
|
use super::error::Error;
|
||||||
use super::get_async_db_conn;
|
use super::get_async_db_conn;
|
||||||
@ -51,7 +51,7 @@ impl Default for User {
|
|||||||
|
|
||||||
impl User {
|
impl User {
|
||||||
pub fn validate(&self) -> Result<(), Error> {
|
pub fn validate(&self) -> Result<(), Error> {
|
||||||
if self.email != "admin" && !validate_email(&self.email) {
|
if self.email != "admin" && !EmailAddress::is_valid(&self.email) {
|
||||||
return Err(Error::InvalidEmail);
|
return Err(Error::InvalidEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user